본문 바로가기

네트워크 & 클라우드/라우팅 & 스위칭

[근본투어 - 02] RIPv2 한방에 끝내기

초심을 찾아보자

 

RIP
  • 평화속에서 안식을 찾는것이 아니다.
  • RIP는 홉카운트로 동작하는 디스턴스 벡터 라우팅 프로토콜이다.
  • RIP는 RIPv2가 주로 사용된다. RIPv1은 많은 한계로 인해 거의 사용되지 않는다. 
    대표적으로 Classful한 광고만 가능한 점브로드캐스트 방식으로 광고하여 RIP에 속하지 않는 장비까지 고통을 받는 점, 그 흔한 인증이 불가한 점이 RIPv1을 사양시켰다. 고로 RIPv2 기준으로 작성하려고한다.
  • 물론, RIPv2도 크게 선호되진 않는다. 축약도 주 네트워크를 할 수 없고, 네이버를 맺는게 아니라 일방향성 광고를 한다는 점도 다른 IGP와는 차별성을 둔다 ㄷㄷ
  • AD는 120. 참고로 OSPF 110, BGP (eBGP 20, iBGP 200), EIGRP(summary 5, internal 90, external 170), IS-IS 115
  • 최대 홉이 15개, 토폴로지 변화와 상관없이 주기적으로 라우팅 정보를 통으로 보내는 점은 동일하다.
    토폴로지 변화가 생겼을때만 광고할 수도 있는데, Serial 인터페이스만 가능하다.
    • 메트릭 16으로 세팅된 라우팅을 광고받으면 해당 라우팅을 DROP 시킨다.
    • 특정 경로가 사라지더라도, 자신이 그 경로에 대해 다른 라우터한테 광고한 것을 되돌아서 받을 수 있어 라우팅 뤂이 발생할 수 있다.
      • 라우터3이 라우터4에게 광고 받은 프리픽스를 라우터2에게 광고하고나서 라우터4의 경로가 삭제되었을 경우를 가정해보자. 라우터4에게 광고를 받지 않더라도 라우터 2가 계속 광고를 해준다. 광고 받은 걸 다시 라우터 2에게 업데이트하고 핑퐁치면서 메트릭 값을 상승시켜 결국 16에 도달하게 된다. 이로인해 라우팅 룹은 결론적으로 발생하진 않지만 굉장히 비효율 적이다. 그래서 스플릿 호라이즌이라는 개념이 필요하다. 고건 저어기 밑에 나온다.
int serial 0
 ip rip triggered

 

RIPv2 광고
  • RIP도 network 명령어를 통해 네트워크를 광고한다.
  • network 명령어는 인접 RIP 장비에게 광고를 전파하기 위한 출력 인터페이스를 지정하는 목적으로도 쓰인다.
    후자는 필수다.

 

RIPv2 유니캐스트 광고
  • 기본적으로 RIPv1은 브로드캐스트, RIPv2는 멀티캐스트(224.0.0.9)로 라우팅을 광고한다.
  • 그런데 유니캐스트도 가능하다
  • 출력 인터페이스에 passive-interface로 광고가 나가지 않도록 틀어막고, neighbor 명령어를 사용하여 유니캐스트로 광고가 가능하다.

<RIP_R1>
router rip
 version 2
 passive-interface Ethernet0/0
 network 1.0.0.0
 network 10.0.0.0
 neighbor 1.1.1.2
 no auto-summary


<RIP_R2>
router rip
 version 2
 passive-interface Ethernet0/0
 network 1.0.0.0
 network 20.0.0.0
 neighbor 1.1.1.1
 no auto-summary

 

  • 디버그를 떠보면 멀티캐스트(224.0.0.9)가 아닌 인터페이스 주소(1.1.1.0/30) 대역으로 서로 광고를 주거니 받거니 하는 것을 볼 수 있다.

 

RIPv2 Timer
  • Update (Default 30s) : 자신 및 인접 RIP L3의 광고를 전달함. 정확히 30초는 아님.ㅠ

 

  • Invalid (Default  180s) : Invalid 타이머 동안 광고를 받지 못하면 Holddown으로 빠진다.
<RIP_R1>
router rip
 passive-interface eth 0/0 # passive-interface로 광고 차단
 end

 

  • Holddown (Default  180s) : holddown 타이머 동안은 라우팅 정보를 받지 않는다. (possibly down)
    광고를 받아도 무시. 타이머 만료 혹은 플러시 타이머를 통해 라우팅 정보가 지워지면 해당 상태 끗

 

  • Flush (Default 240s) : holddown 상태에 있는 네트워크는 모두 RIB에서 삭제됨. Invalid (180s) + 60s 후에 garbage collect에 의해 RIB 라우팅 제거 됨.

 

  • Sleep (0ms) : 루트 포이즈닝과 같은 긴급 광고 수신시 다른 라우터에게 전파하는 시간.

 

RIPv2 Timer 조정
router rip
timers basic <Sec> <Sec> <Sec> <Sec> <msec> # update, invalid, holddown, flush, sleep 순서
  • 상기 타이머들은 조정이 가능하다.
  • 타이머가 인접 L3와 일치 하지 않아도 광고 송수신이 가능하다.

 

RIPv2 Topology Change
  • 라우팅 정보를 수신받지 못하면 상기의 Timer 들이 동작하게 된다.
  • Timer들은 순차가 아닌 병행으로 동작한다.
    Invalid Timer 가 동작하는 동시에 Flush Timer가 동작하고, invalid Timer가 끝나면 라우팅 룹을 방지하기 위해 Holddown이 동작한다. 
  • Invalid Timer, Holddown Timer는 네트워크 장애 시 라우팅 Loop을 방지하기 위해 동작한다. (라우팅 처리는 계속됨)
  • Flush Timer는 라우팅 삭제를 위해 동작한다.

 

루트 포이즈닝
  • 특정 네트워크가 다운되면 RIP L3들에게 라우팅 삭제를 지시하기 위한 목적으로 사용됨
  • 최대홉을 초과한 16으로 Metric을 설정하여 광고 전송

RIP_R1 10.10.10.0/24 네트워크 다운
R2에서 Debug 결과, 16 hops의 inaccessible 광고를 받음
10.10.10.0/24가 RIB에서 삭제됨

 

포이즌 리버스
  • 루트 포이즈닝을 받아 RIB에서 라우팅이 삭제되었지만, 해당 경로에 대한 대체 경로가 없는 경우 루트 포이즈닝은 보낸 L3에게 루트 리버스를 역으로 보낸다. 루트 포이즈닝에 대한 응답으로 보면 되며, 대체 경로가 있으면 응답도 다른 친구에게 루트 포이즈닝도 하지 않는다.

 

스플릿 호라이즌
  • 광고를 받은 인터페이스로 동일한 광고를 하지 않는 것이당.
  • 스플릿 호라이즌은 EIGRP나 BGP에도 적용 됨. 디스턴스 벡터 친구들끼리는 유사하나  BGP 와는 상이하다.
  • NBMA 네트워크는 스플릿 호라이즌이 적용되지 않는다. 서브 인터페이스를 사용하지 않으면 동일 인터페이스로 광고를 해서 다른 L3에게 전달해야 하는데 그게 불가하니 적용되지 않는다고 본다.
  • 기본적으로 스플릿 호라이즌은 enable 되어 있다.
  • 풀 메시가 아닌  멀티포인트 서브 인터페이스의 경우 스플릿 호라이즌을 disable 시켜야 정신건강에 이롭다.

 

디폴트 라우팅
  • default-information originate, redistribute 로 가능
  • ip default-network 는 사장된듯...먹히지도 않고 ㅜ

 

Summary
# 1.1.1.0/24, 1.1.2.0/24 두 네트워크를 축약하는 경우
int eth0/0
 ip summary-address rip 1.1.0.0 255.255.0.0
  • auto-summary 기본 탑재로 classful하게 광고하기에 문제가 많음.
  • no auto-summary를 넣고 ip summary-address도 넣어주면 classless하게 광고 가능. (당연히 RIP v2)
  • 하지만 OSPF, BGP 와 같은 라우팅 프로토콜과 다르게 주 네트워크 내에서만 축약이 가능하고, 주 네트워크 이상 범위는 축약이 불가하다.

1.0.0.0/8, 10.0.0.0/8 은 축약이 불가하다. 각각의 주 네트워크 내에서만 가능.ㅠ

 

RIP 보안설정
  • 다른 라우팅 프로토콜은 네이버 관계를 형성해야만 광고를 하지만, RIP는 passive-interface를 박아도 수신은 가능하다. 
  • 라우팅 정보를 인증하기 위해서 Authentication을 사용해야한다.
# 키 체인 생성
key chain RIP_R1 # 키체인 명은 다른 장비와 일치 할 필요 없다
 key 1
  key-string testkimtest
  
 interface Ethernet0/0
  description # RIP_R2, 1.1.1.2/30 #
  ip address 1.1.1.1 255.255.255.252
  ip rip advertise 5
  ip rip authentication mode md5 # 인증 방식 md5 와 평문만 존재
  ip rip authentication key-chain RIP_R1 # 키 체인 적용

key sting이 일치하지 않거나 한쪽만 설정되어 있으면 광고를 무시한다

 

  • 또한, 라우팅 정보를 필터링 함으로써 보안성을 올릴 수 있다.

Before


ip prefix-list Permit_List seq 5 permit 10.10.10.0/24 le 32 # RIP_R1이 광고하는 대역 해당 대역만 허용
ip prefix-list Permit_List seq 10 deny 0.0.0.0/0 le 32 # 나머진 전부 디나이

router rip
 version 2
 distribute-list prefix Permit_List in Ethernet0/0 # Eth0/0 ingress에 적용

After

  • 참고로 Prefix-list seq 5에서 le 32를 빼도 동작은 하지만, 정확히 10.10.10.0/24를 의미한다. 만약 10.10.10.0/23을 넣을 경우 광고를 받지 못해 flush timer 종료 후 라우팅은 삭제된다.

 

메트릭 조정
router rip
 offset-list <ACL> <in/out> <metric> <interface> 
 # ACL 부분을 0으로 바꾸면 RIP로 광고하는 전체 대역의 Metric이 조정됨

RIP_R1 ACL 생성 및 Offset-list 적용
Metric 기존 1hop + Offset-List 14hop