나의 IT일지
동적 라우팅 작업 - RIP 본문
네트워크에서 서로 다른 subnet으로 데이터를 전송할 때, 라우터를 통해 해당 subnet으로 전송할 수 있는 최적의 경로를 선택해서 데이터를 전송한다. 이때, 라우터는 라우팅 테이블을 기반으로 최적의 경로를 설정하는데, 이를 라우팅이라고 하며, 라우팅 테이블에 네트위크의 정보를 저장하는 것을 라우팅 작업이라고 한다.
라우팅 작업
라우터는 자신과 연결되어있는 네트워크 정보만 라우팅 테이블에 저장하고 있다. 그래서 라우팅하기 위해서는 직접 연결 되지 않은 네트워크 정보를 라우팅 테이블에 추가해야 한다. 즉, 최적 경로를 결정하기 위해서는 경로의 라우팅 정보를 라우팅 테이블에 저장해야 하며, 이 과정을 라우팅 작업이라고 한다.
라우팅 작업은 관리자가 직접 라우팅 정보를 추가하는 정적 라우팅과 라우팅 프로토콜을 통해 자동적으로 추가하는 동적 라우팅으로 나눌 수 있다. 이때, 라우팅 프로토콜이란 목적지 네트워크로 가는 최적 경로를 알아내기 위해 사용하는 프로토콜로, 라우팅 테이블에 올라오기 위해서는 라우팅 프로토콜이 필요하다.
IGP, EGP |
네트워크를 그룹별로 나눈다고 했을 때, 그룹 내부에서 라우터 정보 교환을 하기 위해 사용하는 프로토콜을 IGP라고 하며, 그룹 외부의 라우터와 내부의 라우터간의 정보교환을 하기위해 사용하는 프로토콜을 EGP라고 한다. 예시를 들면, 같은 ISP에서 사용하는 라우터 끼리 정보를 교환하는 경우에는 IGP를 사용하며, 다른 ISP에서 사용하는 라우터 끼리 정보를 교환하는 경우에는 EGP를 사용한다. |
동적 라우팅
관리자가 직접 경로를 입력하지 않아도 자동적으로 라우팅 테이블에 네트워크 정보가 저장되는 라우팅 작업으로, 동적 라우팅 프로토콜을 통해 구성 되어 있는 라우터의 네트워크 정보를 받아서 최적 경로를 탐색하고 라우팅 테이블에 올린다.
이때, 동적 라우팅에 사용하는 라우팅 프로토콜을 동적 라우팅 프로토콜이라고 하며, 무엇을 기준으로 최적 경로를 결정하냐에 따라서 동적 라우팅 프로토콜이 분류된다.
최적 경로 결정 기준 | 프로토콜 종류 | 해당 종류에 소속된 프로토콜 |
지나가는 라우터의 갯수(Hop의 수) | Distance Vector routing protocol | RIPv1, IGRF |
대역폭 속도 | Link state | OSPF,IS-IS, EIGRF |
동적 라우팅 프로토콜을 사용하는 경우, 라우터에 저장되어 있는 네트워크 정보를 프로토콜을 통해 교환하기에 때문에, 관리자 일일이 경로를 입력하지 않는다. 그리고 서로 네트워크 정보에 변화가 생기면 정보를 교환하도록 설정돠어 있기 때문에, 선택된 경로에 문제가 발생하거나 변화가 생기더라도 스스로 경로를 찾아서 데이터를 전송한다. 이때, 라우터끼리 네트워크 정보를 교환하기 위해서는 동적 라우팅 프로토콜은 두 라우터가 같은 라우팅 프로토콜이여야 한다.
하지만 라우터가 직접 최적 경로를 계산하기 때문에, 라우팅 속도가 느리며, 라우터의 CPU와 메모리를 많이 사용하기애 라우터의 성능이 정적 라우팅 보단 좋지않다. 그리고 동적 라우팅은 라우터 테이블을 주기적으로 교환하기에 대역폭의 일부를 사용한다.
RIP
동적 라우팅 작업은 라우터에 있는 동적 라우팅 프로토콜을 활성화해서 해당 라우터가 알고 있는 라우팅 정보(네트워크 정보 +목적 네트워크까지의 라우터 수의 정보 등등)를 동적 라우팅 프로토콜을 통해 다른 라우터에게 공유할 수 있도록 하는 작업으로, 라우팅 정보를 공유하기 위해서는 공유하는 라우터가 사용하는 라우팅 프로토콜은 모두 동일해야한다.
RIP는 경로상의 라우터 수(hop count)를 경로 설정값(metric값)으로 사용하는 프로토콜(distance vector routing protocol)로, 최대 hop-count가 15이기에 대형 네트워크에서는 사용이 불가능하다. 하지만 작은 규모의 네트워크나 대형 네트워크의 말단 지점에서 사용하기 좋다. 이때, RIP를 통해 라우팅 정보를 전송하는 경우 AD값(관리 거리)은 120를 사용하며, UDP포트 520번 사용해서 routing 정보 전송한다.
이때, 라우터의 갯수만 생각하기에 네트워크 속도가 다르더라도 같은 라우터 갯수를 지난다면 2중경로가 발생한다. 이때 데이터를 전송하게 되면, 네트워크 속도가 다르기에 도착하는 시간이 다르다. 그렇게 되면 네트워크가 불안정해 보일 수 있다. 그래서 AD값을 수동적으로 변경시켜서 이중경로를 발생하지 못하게 한다.
RIP에는 IP주소를 계층별로 구분해서 라우터 정보를 전송하는지에 따라 버전을 2개로 나눌 수 있다. 버전 1은 subnet mask 정보가 없는 classful 라우팅 프로토콜로, 정보 전송시 broadcast형식(255.255.255.255)을 사용하기에 RIP가 설정되어 있지 않은 장비는 불필요한 부하가 발생한다. 반면 버전 2는 subnet mask 정보가 있는 classless 라우팅 프로토콜로, VLSM 지원하며, 정보 전송시 Multicast형식(224.0.0.9)을 사용한다.
RIP설정
RIP는 동적 라우팅 작업을 하기 위한 프로토콜 중 하나로, 메트릭 값(경로상 라우터 수/ 네트워크의 비용)만 확인해서 최적 경로 결정하는 라우팅 프로토콜이다. 이때, RIP는 30초마다 네트워크 정보를 인접한 라우터에게 전송한다.
- router rip : 해당 라우터에 RIP를 활성화하며, RIP를 설정할 수 있는 설정모드로 진입하는 명령어
- version [1/2] : RIP의 버전을 선택하는 명령어
- network [라우터와 링크되어 있는 Subnet IP주소] : RIP에 해당 네트워크 정보 전달하도록 설정하는 명령어
//router 0
Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#network 192.168.10.0
Router(config-router)#net 1.1.12.0
Router(config-router)#no auto-summary
//router 1
Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#network 192.168.20.0
Router(config-router)#net 1.1.12.0
Router(config-router)#no auto-summary
라우터 0 | 라우터 1 |
RIP는 기본적으로 라우팅 정보를 자동적으로 축약해서 전송을 한다. 축약이란 네트워크 정보의 IP주소를 class별로 묶어서 한번에 전송하는 기능으로, IP주소를 class계층에 따라 묶어서 전송하기 때문에, subnetting한 IP주소를 입력하여도 classful의 형태로 라우팅 프로토콜이 이웃 라우터에게 전송을 하게 된다. 그래서 subnetting한 네트워크가 다운되어도 이웃 라우터에서는 알 수 없기에 오류가 발생하게 된다.
- no auto-summary : 자동 축약 해제 명령어
RIP를 디버깅하는 "debug ip rip" 명령어를 사용하면, RIP가 30초마다 네트워크 정보를 전송하고 타 라우터의 네트워크 정보를 받는 것을 확인할 수 있다.
Router#debug ip rip
RIP protocol debugging is on
RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (192.168.10.1)
RIP: build update entries
1.1.12.0/24 via 0.0.0.0, metric 1, tag 0
192.168.20.0/24 via 0.0.0.0, metric 2, tag 0
RIP: sending v2 update to 224.0.0.9 via Serial0/0/0 (1.1.12.1)
RIP: build update entries
192.168.10.0/24 via 0.0.0.0, metric 1, tag 0
RIP: received v2 update from 1.1.12.2 on Serial0/0/0
192.168.20.0/24 via 0.0.0.0 in 1 hops
이때, RIP가 타 라우터와 연결되어있는 Serial인터페이스뿐만 아니라 LAN에 연결된 FastEthernet인터페이스에도 RIP가 전송되는 것을 확인 할 수 있다. 이러한 불필요한 트래픽으로 인해 네트워크 속도가 느려지는 것이며, 보안으로도 좋지 않기 때문에, 해당 인터페이스가 정보를 전송하지 않도록 해당 인터페이스를 Active에서 Passive로 변경해야 한다.
- passive-interface [포트 인터페이스] : 해당 인터페이스로는 라우팅 정보가 전송되지 않도록 설정하는 명령어
Router(config-router)#passive-interface fastEthernet 0/0
Router(config-router)#do debug ip rip
RIP protocol debugging is on
Router(config-router)#
RIP: received v2 update from 1.1.12.2 on Serial0/0/0
192.168.20.0/24 via 0.0.0.0 in 1 hops
RIP: sending v2 update to 224.0.0.9 via Serial0/0/0 (1.1.12.1)
RIP: build update entries
192.168.10.0/24 via 0.0.0.0, metric 1, tag 0
RIP 경로 결정
RIP는 bandwidth와 metric값을 통해서만 최적 경로를 결정한다. 만약 해당 최적 경로가 오류로 인해 사용이 불가능할 경우, RIP는 자동적으로 metric값이 작은 경로를 라우팅 테이블에 저장한다.
//router 0
Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#network 192.168.10.0
Router(config-router)#net 1.1.12.0
Router(config-router)#net 1.1.23.0
Router(config-router)#no auto-summary
//router 1
Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#network 192.168.20.0
Router(config-router)#net 1.1.12.0
Router(config-router)#net 1.1.34.0
Router(config-router)#no auto-summary
//router 2
Router(config)#router rip
Router(config-router)#no au
Router(config-router)#ver 2
Router(config-router)#net 1.1.23.0
Router(config-router)#net 1.1.34.0
라우터 0 | 라우터 1 |
이때, 만약 "1.1.12.0" 네트워크가 사용할 수 없게 된다면, 라우터 0과 라우터 1의 라우팅 테이블이 다음과 같이 변경이 된다.
라우터 0 | 라우터 1 |
즉, 최적 경로 중에 있는 네트워크가 사용할 수 없게 된다면, RIP가 자동적으로 Metric값이 적은 경로로 라우팅 테이블에 경로를 저장한다.
1.1.12.0 네트워크 오류 전 | 1.1.12.0 네트워크 오류 후 |
RIP의 타이머
RIP는 topology의 변화와 상관없이 30초마다 라우터에 링크되어 있는 네트워크 정보를 다른 인접 라우터에게 전달하고, 다른 근접한 라우터의 네트워크 정보를 받아서 최적경로를 확인하고 라우팅 테이블에 저장한다.
즉, 서로 네트워크 정보를 주기적으로 교환하면서 업데이트하며, 네트워크에 변화가 발생할 경우에 모든 라우터가 네트워크 변화 상태에 대해 정확하고 일관된 정보를 유지하도록 한다.
이렇게 네트워크에 변화가 발생할 경우 모든 라우터가 네트워크 변화 상태에 대해 정확하고 일관된 정보를 유지하는 것을 "convergence"라고 하며, 네트워크에 변화가 생겼을 경우 그 변화된 정보를 서로 인식하고 수정하는 시간(30초)을 "convergence time"라고 한다.
만약, 라우터에 링크되어 있는 네트워크가 긴급적으로 다운되었다면, 트리거 업데이트를 통해 라우팅 테이블을 다시 설정한다.
하지만 링크 되어 있지 않은 네트워크가 다운이 되더거나, 링크는 살아 있지만 라우팅 정보를 받지 못하는 경우에는 다음과 같은 타이머가 작동하게 되며 해당 타이머가 종료가 되면, 라우팅 테이블에서 삭제된다.
- invalid timer : 네트워크 정보를 30초동안 받지 못할 경우에 180초 동안 작동하는 타이머로, 라우팅 정보를 다시 받을 수 있도록 최대 6번의 기회를 부여한다. 이때, 라우팅 테이블에 정보가 저장되어 있기에 라우팅은 진행되며, 정보를 받게 되면, 바로 적용시킨다.
- hold down timer : invalid timer가 종료되어도 받지 못할 경우 180초 동안 작동하는 타이머로, 라우팅 테이블에 "Possibly Down"으로 표기되지만, 라우팅 테이블에서는 삭제하지를 않는다. 이때, 라우팅 테이블에 정보가 저장되어 있기에 라우팅은 진행되며, 라우팅 정보가 오더라도, 기존의 라우팅 정보보다 최적 경로일 경우에만 적용시키며, 동일하거나 그 이하인 정보는 전부 드랍시킨다.
- Flush Timer : invalid timer와 동시에 작동되는 240초 타이머로, 해당 시간동안 라우팅 정보를 받지 못하면 라우팅 테이블에서 삭제가 된다.
invalid timer 작동 | hold down timer 작동 |