네트워크, 보안

라우팅 - RIP (Routing Information Protocol)

daengsik 2022. 3. 29. 09:01

1. RIP (Routing Information Protocol)

 

앞서 거리벡터, 링크상태 라우팅의 특징과 알고리즘을 대략적으로 알아봤고 라우팅의 기본적인 내용들까지 숙지하셨다면 RIP는 동적 라우팅 프로토콜 중에서도 동작이 간단하기에 어렵지 않습니다. 혹시나 앞의 글들을 읽지 않으셨고 각 방식들의 알고리즘과 차이점을 모르신다면 읽고 오시는 것이 이해하는데에 도움이 되실겁니다.

 

 LINK  라우팅 개요
 LINK  벨만포드 알고리즘, 다익스트라 알고리즘

 

RIP가 분류되는 카테고리에서 프로토콜의 핵심적인 특징들은 거의 파악이 가능합니다. 카테고리를 하나씩 훑어보겠습니다.

 

  • Dynamic Routing - 라우팅 테이블을 라우터끼리 정보를 주고받아 갱신함.
  • Interior Gateway Protocol - AS 내부에서 동작하는 라우팅 프로토콜.
  • Distance Vector - 직접 연결된 이웃 장비가 보낸 정보를 기반으로 거리, 방향만을 기준삼아 라우팅.
  • Classful, Classless - VLSM 지원 관련.

 

기본적인 특징은 카테고리에서 벗어나지 않습니다. RIP만의 특징도 한번 훑어보겠습니다.

 

  • Maximum Hop Count - 15hop
  • Convergence Time - 30sec
  • 로드밸런싱
  • UDP - 520
  • AD - 120

 

 

2. RIPv1, RIPv2

RIPv1 RIPv2
Classful Classless
FLSM[각주:1] 지원 VLSM[각주:2] 지원
No Authentication Support Plain Text or MD5 인증 지원
Broadcast 광고 방식 Multicast 광고 방식
자동 축약 불가능 자동 축약 가능

 

RIP는 두가지 버전이 있습니다. 당연히 최신버전이 더 좋긴 하겠지만 차이점은 기억하셔야 합니다. RIPv1은 초기에 개발된만큼 Classful Routing 방식이므로 VLSM을 지원하지 않습니다. 즉, 라우팅 업데이트 수행시에 서브넷 마스크를 보내지 않으므로 Class로 구분된 주소나 같은 크기로 나뉘어진 네트워크로만 라우팅 업데이트를 수행합니다.

 

 

위 구성에서, Router1 은 131.108.5.0/24 네트워크에서 받은 RIPv1 라우팅 업데이트를 서브넷마스크가 다른 131.108.7.0/30 네트워크나 Router 2 방향으로 광고하지 않습니다. 반면 131.108.7.0/30 과 131.108.6.0/30 또는 131.108.2.0/30 네트워크로는 서브넷마스크가 같으므로 광고하고, 정상적인 라우팅 테이블 갱신이 이뤄지게 됩니다.

 

자세한 절차는 아래와 같습니다.

 

  1. 광고하려는 네트워크와 광고를 내보내는 네트워크의 Major Networks 가 같은지 비교.
  2. Major Networks 가 같은 경우, 서브넷 마스크가 같은지 비교.
  3. 서브넷 마스크가 같다면 광고하고, 다르다면 DROP 시켜 광고되지 않음.
  4. Major Networks 가 다른 경우, Major Networks로 자동축약하여 광고됨.

 

반면 RIPv2 는 VLSM을 지원합니다. 업데이트 수행시에 서브넷 마스크를 포함하기 때문에 위와 같은 구성에서도 모든 방향으로 광고가 이뤄질 수 있습니다. 

 

RIPv1 packet format

 

  • Command - 패킷유형. / Request <1> / Response <2> / Traceon[각주:3] <3> / Traceoff[각주:4] <4> / Reserved[각주:5] <5>
  • Version - 버전정보.
  • Address Family Identifier - 라우팅 정보 / Default <2> - IP를 의미함.
  • IP Address - 목적지 IP.
  • Metric - <1~16> / 16은 도달 불가능한 네트워크를 의미함.

 

RIPv2 packet format

 

기본적으로 RIPv1 과 유사한 형태이므로 RIPv1과 호환됩니다. Route Entry 부분에서 조금 차이가 있습니다.

 

  • Address Family Identifier - 라우팅 정보 / 0xFFFF 값으로 설정되면 인증정보가 포함되었음을 의미함.
  • Route Tag - 경로 관리를 위해 마킹하는 용도로 내부, 외부경로의 구분 또는 라우팅 정책과 같이 사용되는지를 나타냄.
  • IP Address - 목적지 IP.
  • Subnet Mask - 패킷의 목적지 Address 의 서브넷 마스크. 명시되지 않으면 0으로 설정됨.
  • Next Hop - IP Address의 다음 홉을 나타냄.

RIPv2 의 인증과 관련된 내용은 따로 다루도록 하겠습니다.

 

 

3. 동작방식

 

위 구성에서 RIPv1 의 동작방식을 한번 살펴보겠습니다. 우선 모든 네트워크들은 Major Networks가 10.0.0.0/8 [A클래스] 로 동일합니다. perfix 역시 24비트로 동일하니, 모든 네트워크가 RIPv1의 광고를 주고받을 수 있겠습니다.

 

기본적으로 RIP는 30초마다 업데이트를 수행합니다. 업데이트 수행 방향이 존재하지는 않지만, 이해를 돕기위해 10.10.40.0/24 부터 업데이트된다고 가정하겠습니다.

 

 

Router 3 는 10.10.40.0 / 10.10.30.0 네트워크와는 Directly connected 입니다. RIP는 Hop을 기준으로 Metric 을 정하므로 40.0 / 30.0 네트워크의 Metric은 0입니다. 

30초 이후, Router 3는 40.0 네트워크의 업데이트를 Router 2 에게 광고합니다.

 

 

Router 2 는 40.0 네트워크와 직접적인 연결이 없습니다. 따라서 업데이트를 받은 방향, 10.10.30.1 방향에 40.0 네트워크가 1 Hop 너머에 존재한다는걸 인지하고, Metric 을 1로 지정합니다. [120/1] 여기서 120은 RIP의 AD값입니다. 

30초 후, Router 2 는 Router 1에게 마찬가지로 자신의 라우팅 정보를 광고합니다.

 

 

Router 1 은 10.10.20.2 방향에서 Metric 이 1인 40.0 네트워크의 정보를 받았고, 20.2 방향 2 Hop 너머에 40.0 네트워크의 존재를 인지합니다. 자신의 라우팅 테이블을 업데이트합니다. 

 

 

위 과정은 반대로도 발생합니다. 결과적으로 모든 라우팅 정보가 갱신되면 위와 같은 형태가 되겠습니다. Router 2 의 라우팅 정보를 확인해보면 아래와 같습니다.

 

Router# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
R        10.10.10.0/24 [120/1] via 10.10.20.2, 00:00:12, GigabitEthernet0/0
C        10.10.20.0/24 is directly connected, GigabitEthernet0/0
L        10.10.20.1/32 is directly connected, GigabitEthernet0/0
C        10.10.30.0/24 is directly connected, GigabitEthernet0/1
L        10.10.30.1/32 is directly connected, GigabitEthernet0/1
R        10.10.40.0/24 [120/1] via 10.10.30.2, 00:00:03, GigabitEthernet0/1

 

10.10.10.0/24 네트워크와 10.10.40.0/24 네트워크가 R - RIP 에 의해 갱신되고 [120/1] 의 AD와 Metric 을 가진것을 확인할 수 있습니다. via 는 해당 네트워크에 도달하기 위해 거치는 가장 가까운 인터페이스. 즉, Next hop 을 일컫습니다.

 

 

4. 루핑 방지

 

위 구성에서, 10.10.40.0/24 네트워크에 문제가 생겨 Router 3 의 테이블이 Drop 되었을 경우를 보겠습니다. RIP는 30초마다 업데이트를 수행하는데, Router 3 가 이 정보를 전파하기 전에 Router 2 에서 업데이트가 수행된다면 어떻게 될까요? 

 

 

Router 2 는 10.10.40.0/24 네트워크의 Down을 인지하지 못합니다. 방향과 거리만 알고 있을 뿐이죠. Distance Vector 방식은 무조건 수렴한다는 특징을 가지므로 Router 3 는 10.10.40.0/24 네트워크로 가는 다른 경로가 있다고 판단하고 자신의 라우팅 정보를 업데이트합니다. 

 

 

Router 2 는 또 자신의 정보를 Router 1 에게 광고합니다. 

 

 

그러면 Router 1 은 또 다시 Router 2 에게 라우팅 정보를 광고하고,, Router 3 에게 광고하고,, 위 과정들이 반복되며 Metric 값이 1씩 점점 증가하며 주고받게 됩니다.

 

 

다행인 점은 RIP에서 이러한 무한루프를 막기위해 Metric 16 이 되면 도달 불가능한 네트워크로 판단하고 DROP 시킨다는 점입니다. 하지만 16번의 루프 역시 네트워크 성능 저하에 영향을 미칩니다. RIP 에서는 이러한 루프 방지를 위해 여러 기술들이 사용됩니다.

 

 

Split Horizon

내 정보에 대한 착각을 방지하기 위해 내정보는 받지 않는 방법입니다. 이 기능은 PC, 허브, 스위치 등 대부분의 장비에 존재하며 스위치가 어떠한 정보를 플러딩할 때, 정보를 받은 인터페이스로 다시 돌려보내지 않는 기능과 거의 유사합니다.

 

이 경우에는 Router 3 가 10.10.40.0/24 네트워크의 정보를 전파한 방향(10.10.30.0/24)으로 10.10.40.0/24 네트워크의 정보를 받지 않음으로써 루핑의 방지가 가능합니다.

 

Route Poisoning

한 라우터 네트워크에 문제가 발생했을 때, 즉시 해당 네트워크의 Metric 을 Infinity로 선언하고 대체경로를 찾기위해 이웃 라우터에 정보를 요청하는 방법입니다. 전파시에는 Metric 을 16으로 전파하여 네트워크가 다운되었음을 알리고, 대체경로가 없다면 Poison Reverse 가 발생합니다.

 

Poison Reverse

Route Poisoning 을 받은 인접 라우터는 자신의 RIP DB를 살펴 대체경로를 찾습니다. 대체경로가 있다면 전파하되, 대체경로가 없으면 Poison Reverse 로 응답합니다. 결과적으로 이 두가지 절차는 네트워크가 Down 되었을 때 즉시 전파하고 대체경로를 찾는 절차입니다. 

 

Hold Down Timer

장애가 발생한 네트워크로부터 오는 정보를 일정시간 무시하고 대기합니다. 이는 네트워크가 다운되었을 때 해당 경로를 Routing Table 에서 삭제하기 전 대기시간을 가져 정보의 사실을 확인하고 토폴로지의 변화정보를 검증하는 용도입니다.

 

  • Update Timer - 30sec
  • Invalid Timer - 30 ~ 180sec
  • Hold Down Timer - 180 ~ 240sec
  • Flush Timer - 240sec

Router 3 은 10.10.40.0/24 네트워크가 다운되었다는 사실을 Router 2 에게 전파합니다. 이 때, Router 2 는 Invalid Timer 를 시작하여 180초를 대기하며 이 시간동안 가진 경로의 Metric 보다 더 나은 경로의 정보를 받을 시 라우팅 정보를 갱신하고 Hold Down Timer를 해제합니다.

 

180초의 대기시간을 거친 후 검증을 위해 Route Poisoning 을 보내고, 새로운 경로가 있다면 모든 라우터가 정기적 업데이트를 수행하며 대체경로가 없다면 Poison Reverse 가 이뤄지며 이후 240초까지 기다렸다가 갱신되는 정보가 없다면 라우팅 테이블에서 삭제됩니다. 즉, 경로 삭제에 240초가 소요됩니다.

 

Triggered Update

Distance Vector 라우팅은 정기적인 업데이트로 정보를 파악하지만 네트워크가 다운되는 상황에서는 예외적으로 Triggered Update 를 수행하여 최대한 빨리 반영합니다. 

 

 

Command

Router(config)# router rip			//RIP 설정
Router(config-router)# version [1-2]		//RIP 버전 설정
Router(config-router)# network [A.B.C.D]	//RIP 프로토콜에 참여시킬 네트워크ID

//Classful 기반 동작 활성화, RIPv2 에서 비활성화
Router(config-router)# [no] auto-summary

//해당 인터페이스로는 불필요한 정보를 차단
Router(config-router)# passive-interface [Interface]

//split-horizon 활성화
Router(config-if)# ip split-horizon

Router# show ip route
Router# show ip protocols

  1. Fixed-Length Subnet Mask [본문으로]
  2. Variable-Length Subnet Mask [본문으로]
  3. 사용되지 않음 [본문으로]
  4. 사용되지 않음 [본문으로]
  5. SUN 마이크로시스템즈사 전용 [본문으로]