본문 바로가기

네트워크

[네트워크] 17. RIP 실습

이 게시물은 후니의 쉽게 쓴 CISCO 네트워킹 4판을 공부한 내용을 바탕으로 작성됨.


RIP (Routing Information Protocol)

 

앞에서는 Static 라우팅 프로토콜에 대해서 공부해봤었다. 이제는 Dynamic 라우팅 프로토콜을 공부해보자. 그 첫 번째 예시로 RIP(Routing Information Protocol)에 대해 알아보도록 하자.

 

 

먼저 RIP의 특성을 정리하면 다음과 같다.

 

  • 라우팅 프로토콜이다. (라우티드가 아님) ➜ 직접 최적경로를 찾는 운전사 역할이다.
  • Dynamic 라우팅 프로토콜이다. ➜ 사용자가 아닌 Router가 직접 최적경로를 찾는다.
  • 내부용 라우팅 프로토콜 (IGP)이다. ➜ 한 AS 내의 라우터 간 경로를 찾는다.
  • Distance Vector 라우팅 프로토콜이다. ➜ AS 내의 라우터를 전체 파악하지 않고, 하나하나 이동하며 홉을 계산한다.
  • 홉 Hop 카운트를 기준으로 거리가 짧은 길을 선택한다.
  • 홉 카운트 15개까지 도착할 수 있다. 16개부터는 도착이 불가능하다.
  • RIP의 디폴트 라우팅 업데이트는 30초이다.

 

RIP는 단순한 프로토콜이지만 오랜기간 많은 사랑을 받아온 Standard 라우팅 프로토콜으로, 초보자가 설정하여 사용하기에 가장 알맞다. 또한 메모리 사용량이 적다는 경제적 장점을 가진다. 

 

RIP를 이용하여 최적경로를 찾는 방법은 아주 단순한데, 출발지부터 목적지까지 도달하는 데 있어 몇 개의 네트워크를 거쳐야 하는지를 '홉 카운트'로 계산한다. 그리고 가장 낮은 홉 카운트 경로를 가장 좋은 경로라고 판단한다.

 

 

 

 

 

RIP (Routing Information Protocol) : A Fundamental Overview (fossbytes.com)

 

알고리즘이 매우 간단하기 때문에 약점이 존재한다. 위 같은 네트워크가 있다고 할 때, 왼쪽 PC에서 오른쪽 PC로 도달하는 경로 중 홉 카운트가 가장 적은 것은 일직선 경로이다. 하지만 아래로 돌아가는 경로가 속도가 훨씬 빠르다면? 일직선 경로는 최적이 아니게 된다.

 

오로지 홉 카운트로만 최적경로를 판단하기 때문에 회선의 상태, 속도를 확인할 수 없다. 또한 출발지에서 목적지까지 15개 이상의 라우터를 거치는 경우에는 Unreachable로 정의하고 경로를 사용하지 않기 때문에 대규모 네트워크에서는 사용하기 어렵다.

 

하지만 소규모 네트워크에서 효율이 좋고, 메모리 사용량도 적으며 구성이 간편하기 때문에 여전히 자주 사용된다. 뿐만 아니라 모든 라우터에서 지원하는 Standard 라우팅 프로토콜이다.

 

 

 

 

RIP를 이용한 실습을 진행해보자.

 

Router (config) #router rip
Router (config-router) #network network-number

 

RIP 명령은 위 두 줄로 끝난다. conf mode에서 router rip를 입력하여 이제부터 RIP 라우팅을 사용하겠다는 명령을 내린다. RIP를 사용하기 위해서 반드시 위 절차를 거쳐야 한다. conf-router (라우터 구성모드)로 진입한 후 RIP 라우팅에 참가하는 네트워크를 지정해준다.

 

RIP에서 network-number를 입력할 때 subnet mask를 입력하지 않는다는 점을 주의해야 한다. 따라서 network IP주소를 입력하면 이것이 어떤 Class인지 알 수 없게 되는데, 예를 들어 150.150.100.0/24는 Class B를 subnet mask로 쪼개서 Class C처럼 사용하고 있는 것이다. 하지만 이를 150.150.100.0으로 입력하면 Class B로 인식해서 150.150.0.0가 입력된다. 

 

이 경우 150.150.100.0의 네트워크 하나에만 RIP를 수행하고 싶었던 것인데, 150.150.0.0에 존재하는 모든 네트워크에 RIP를 수행하게 되는 참사가 발생한다. 이 부분은 살짝 복잡하기 때문에 뒤에서 다뤄보도록하고, 일단 기초부분을 공부해본다.

 

 

 

 

먼저 위같은 네트워크를 구성한다. 한 가지 알고 넘어가야 할 점은, 라우터 A와 B를 이어주는 전용선에도 하나의 네트워크 (IP주소)가 소모된다는 것이다. 이 전용선에 공인 IP주소를 사용하는 것은 큰 문제가 되는데, 일단 여기서는 전용선에도 네트워크가 필요하다는 것만 알고 넘어가도록 한다. VLSM(Variable Length Subnet Mask)를 배울 때 이 문제에 대해 다뤄보도록 한다.

 

 

 

Router A의 설정은 다음과 같이 이루어진다.

A(config)#interface GigabitEthernet 0/0
A(config-if)#ip address 203.240.100.1 255.255.255.0

A(config)#interface Serial 0/3/0
A(config-if)#ip address 203.240.150.1 255.255.255.0
A(config-if)#clock rate 2000000

A(config)#router rip
A(config-router)#network 203.240.100.0
A(config-router)#network 203.240.150.0

 

Router A가 사용중인 두 port에 IP 주소를 할당해준 후, 그것들을 RIP에 입력하였다. sh run을 이용하여 잘 설정됐는지 확인해본다. 패킷 트레이서를 이용하여 두 라우터를 Serial DCE로 연결하는 경우에 clock rate를 지정해주어야 한다. Serial interface가 통신할 때 한 쪽에서 통신 규격 속도를 지정해줘야 하기 때문. DCE (Clock을 보내는 쪽)에서 설정해주면 DTE Clock을 받는 쪽)에서는 자동으로 설정된다.

 

(사실 패킷트레이서에서 Serial 연결 어떻게 하는지 이제서야 알았다 ㅎㅎㅋ)

 

 

...

router rip
 network 203.240.100.0
 network 203.240.150.0

...

 

RIP table에 두 network가 잘 설정되어있다.

 

 

 

Router#sh ip protocol
Routing Protocol is "rip"
Sending updates every 30 seconds, next due in 16 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Redistributing: rip
Default version control: send version 1, receive any version
  Interface             Send  Recv  Triggered RIP  Key-chain
  Serial0/3/0           12 1
  GigabitEthernet0/0    12 1
Automatic network summarization is in effect
Maximum path: 4
Routing for Networks:
	203.240.100.0
	203.240.150.0
Passive Interface(s):
Routing Information Sources:
	Gateway         Distance      Last Update
	203.240.150.2        120      00:00:10
Distance: (default is 120)

 

show ip protocols라는 명령어를 입력하면 현재 작동중인 라우팅 프로토콜에 대한 정보를 출력한다. 맨 윗줄에서 확인할 수 있듯이 현재 작동중인 Routing Protocol은 RIP이다. 또한 매 30초마다 라우팅 업데이트가 발생한다. 만약 30초 동안 업데이트 정보를 받지 못했어도 180초 동안은 느긋하게 기다린다. 이것을 Invalid time이라고 한다. 여기서 180초니까 총 6번까지 상대방으로부터 업데이트 정보를 받지 못해도 기다려준다는 것이다.

 

 

만일 180초 동안 상대로부터 업데이트를 받지 못하면 Hold Down 상태가 되어 상대방이 down되었다고 생각한다. Defualt version control은 현재 사용중인 RIP 버전을 보여준다. RIP version 2가 더 좋지만 여기서는 version 1을 사용하고 있다.

 

 

맨 아래 Routing Information Sources에는 Router B의 시리얼 주소가 담겨있다. Distance가 120으로 설정되어 있는데, 이는 Administrative Disitance로 라우팅 정보에 대한 신뢰도를 의미한다. 이 값이 작을수록 그 정보를 더 신뢰하는데, static 라우팅의 경우 이 값이 1이다. 따라서 만약 같은 목적지에 대해 RIP로 찾아낸 경로와 Static을 이용하여 찾아낸 경로가 동시에 존재한다면 distance가 작은 Static 경로를 선택하게 된다.

 

 

 

 

Router#sh 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, E - EGP
       i - IS-IS, 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

Gateway of last resort is not set

     203.240.100.0/24 is variably subnetted, 2 subnets, 2 masks
C       203.240.100.0/24 is directly connected, GigabitEthernet0/0
L       203.240.100.1/32 is directly connected, GigabitEthernet0/0
     203.240.150.0/24 is variably subnetted, 2 subnets, 2 masks
C       203.240.150.0/24 is directly connected, Serial0/3/0
L       203.240.150.1/32 is directly connected, Serial0/3/0
R    203.240.200.0/24 [120/1] via 203.240.150.2, 00:00:10, Serial0/3/0

 

show ip route를 입력하면 라우팅 테이블을 출력한다. 마지막 3줄이 라우팅 테이블이다. R이 붙은 주소는 RIP로 찾아낸 경로를 의미한다. [120/1]은 distance/홉 카운트를 의미한다. 여기서는 홉 카운트가 1이므로 목적지가 1홉 떨어진 거리에 위치한다는 것이다.

 

 

 

 

Router#debug ip rip
RIP protocol debugging is on
Router#RIP: sending  v1 update to 255.255.255.255 via Serial0/3/0 (203.240.150.1)
RIP: build update entries
      network 203.240.100.0 metric 1
RIP: sending  v1 update to 255.255.255.255 via GigabitEthernet0/0 (203.240.100.1)
RIP: build update entries
      network 203.240.150.0 metric 1
      network 203.240.200.0 metric 2
RIP: received v1 update from 203.240.150.2 on Serial0/3/0
      203.240.200.0 in 1 hops
RIP: sending  v1 update to 255.255.255.255 via Serial0/3/0 (203.240.150.1)
RIP: build update entries
      network 203.240.100.0 metric 1
RIP: sending  v1 update to 255.255.255.255 via GigabitEthernet0/0 (203.240.100.1)
RIP: build update entries
      network 203.240.150.0 metric 1
      network 203.240.200.0 metric 2
RIP: received v1 update from 203.240.150.2 on Serial0/3/0
      203.240.200.0 in 1 hops
u al
All possible debugging has been turned off
Router#

 

 

위는 디버그를 통하여 실제 라우팅 업데이트가 어떻게 일어나는지 살펴본 것이다. debug ip rip 명령어를 입력하면 30초마다 라우팅 테이블이 업데이트 되는 과정을 출력으로 보여준다. 디버그를 통하여 원하는 정보를 다 관측한 후에는 디버그 명령을 꺼주어야 한다. 꺼주지 않으면 계속 출력된다. 여기서는 u al을 입력하여 디버그를 꺼주었다.

 

 

 

 

 

 

위 RIP 실습에서 어려움을 겪었는데 아래 블로그를 통해서 잘 해결했다. 글쓴이님에게 감사를..

[허언증/실습] Rip 동적 라우팅 ( 패킷트레이서 , RiPv1 , Distance Vector Routing) :: 이론과 실습 사이 (tistory.com)

 

[허언증/실습] Rip 동적 라우팅 ( 패킷트레이서 , RiPv1 , Distance Vector Routing)

안녕하세요 허언증입니다. Rip라우팅 프로토콜을 실습한 게시글입니다. -설정방법- Ronuter>en :관리자 진입 Ronuter#conf t :전역 설정 모드 진입 Ronuter(config)#router rip :라우팅 프로토콜로 RIP를 사용할

min-310.tistory.com

 

 

 

 

 

 

 

 

두 번째 실습으로 넘어가본다.

 

위와 같은 네트워크를 구성하였다. 그리고 라우터 A, B, C는 자신과 연결되어있는 interface들을 RIP network로 입력하였다. Router C에서 가장 오른쪽에 있는 PC4까지 연결이 잘 되어있나 확인하기 위해 C의 라우팅 테이블을 출력해본다.

 

 

C#sh ip ro
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, E - EGP
       i - IS-IS, 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

Gateway of last resort is not set

     150.150.0.0/16 is variably subnetted, 2 subnets, 2 masks
C       150.150.0.0/16 is directly connected, GigabitEthernet0/0
L       150.150.1.1/32 is directly connected, GigabitEthernet0/0
R    172.70.0.0/16 [120/2] via 203.210.200.1, 00:00:08, Serial0/3/0
R    203.210.100.0/24 [120/1] via 203.210.200.1, 00:00:08, Serial0/3/0
     203.210.200.0/24 is variably subnetted, 2 subnets, 2 masks
C       203.210.200.0/24 is directly connected, Serial0/3/0
L       203.210.200.2/32 is directly connected, Serial0/3/0
R    210.240.10.0/24 [120/1] via 203.210.200.1, 00:00:08, Serial0/3/0

 

Router C의 라우팅 테이블에 PC4의 네트워크인 172.70.0.0이 담겨있다. 

 

 

 

이제 Router B에서 가장 왼쪽 단말인 PC4의 네트워크가 라우팅 테이블에 존재하는지 확인해본다.

 

B#sh ip ro
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, E - EGP
       i - IS-IS, 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

Gateway of last resort is not set

R    150.150.0.0/16 [120/2] via 203.210.100.1, 00:00:30, Serial0/3/0
     172.70.0.0/16 is variably subnetted, 2 subnets, 2 masks
C       172.70.100.0/24 is directly connected, GigabitEthernet0/0
L       172.70.100.1/32 is directly connected, GigabitEthernet0/0
     203.210.100.0/24 is variably subnetted, 2 subnets, 2 masks
C       203.210.100.0/24 is directly connected, Serial0/3/0
L       203.210.100.2/32 is directly connected, Serial0/3/0
R    203.210.200.0/24 [120/1] via 203.210.100.1, 00:00:30, Serial0/3/0
R    210.240.10.0/24 [120/1] via 203.210.100.1, 00:00:30, Serial0/3/0

 

Router B의 라우팅 테이블에 PC2의 네트워크 150.150.0.0이 존재하는 것을 확인할 수 있다.

 

 

B에서 150.150.0.0으로 ping을 찍어보면 당연히 잘 된다.

B#ping 150.150.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 150.150.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/7/20 ms

 

 

 

 

사실 이 전까지 네트워크 구성이 (기본적인 것들임에도 불구하고) 제법 어려웠는데 이것저것 서치하면서, 그리고 책에서 나온 명령어들 따라하면서 제법 익숙해진 것 같다.