RIP(Routing Information Protocol)
RIP는 가장 오래된 다이나믹 라우팅 프로토콜 중 하나로, Distance-Vector 알고리즘을 사용합니다. 구성이 단순하고 라우터 메모리를 적게 사용하지만, 대규모 네트워크에서는 한계가 있습니다.
핵심 요약
- 프로토콜 분류: IGP (Interior Gateway Protocol), Distance-Vector
- 메트릭: 홉 카운트(Hop Count) — 목적지까지 거치는 라우터 수
- 최대 홉 카운트: 15 (16 이상은 Unreachable)
- 업데이트 주기: 30초마다 전체 라우팅 테이블 브로드캐스트
- AD(Administrative Distance): 120
- 로드 밸런싱: 동일 홉 카운트 경로 최대 4개(설정 시 6개)
- 표준 프로토콜: 모든 벤더의 라우터에서 지원
RIP의 한계
RIP는 경로 선택을 오직 홉 카운트에만 의존합니다. 대역폭, 지연, 신뢰성 등은 고려하지 않습니다.
28.8 Kbps
PC1 ── [R-A] ──────── [R-B] ── PC2
│ │
│ T1(1.544M) │
└── [R-C] ── [R-D]┘위 토폴로지에서 R-A → R-B 경로(1홉)는 28.8Kbps로 매우 느리고, R-A → R-C → R-D → R-B 경로(3홉)는 T1으로 빠릅니다. 하지만 RIP는 홉 카운트가 적은 위쪽 경로를 선택합니다.
RIP v1 vs RIP v2
| 구분 | RIP v1 | RIP v2 |
|---|---|---|
| 라우팅 방식 | Classful | Classless |
| 서브넷 마스크 전송 | 안 함 | 함께 전송 |
| 업데이트 전송 | 브로드캐스트 (255.255.255.255) | 멀티캐스트 (224.0.0.9) |
| VLSM/CIDR | 미지원 | 지원 |
RIP v1은 network 명령에 서브넷 마스크를 무시하고 클래스 기준으로 인식합니다. 예를 들어 network 150.150.100.0을 입력해도 클래스 B인 150.150.0.0으로 자동 변환되어, 150.150.x.x 대역 전체가 RIP에 포함됩니다.
설정
RIP 설정은 두 가지 명령으로 완료됩니다.
Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#no auto-summary
Router(config-router)#network [네트워크 주소]router rip: RIP 프로세스 시작version 2: RIP v2 사용 (VLSM 지원)no auto-summary: 자동 클래스풀 요약 비활성화network: RIP에 참여할 네트워크 지정
설정 예시
[R1] [R2] [R3]
G0/2: 1.1.1.1/16 G0/1: 1.1.12.2/24 G0/1: 1.1.23.3/24
G0/1: 1.1.12.1/24 G0/2: 1.1.23.2/24 G0/2: 1.1.2.1/16
│ │
PC1 (1.1.1.10) PC2 (1.1.2.10)R1
R1(config)#interface GigabitEthernet0/2
R1(config-if)#ip address 1.1.1.1 255.255.0.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface GigabitEthernet0/1
R1(config-if)#ip address 1.1.12.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#network 1.0.0.0R2
R2(config)#interface GigabitEthernet0/1
R2(config-if)#ip address 1.1.12.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#interface GigabitEthernet0/2
R2(config-if)#ip address 1.1.23.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
R2(config-router)#network 1.0.0.0R3
R3(config)#interface GigabitEthernet0/1
R3(config-if)#ip address 1.1.23.3 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#interface GigabitEthernet0/2
R3(config-if)#ip address 1.1.2.1 255.255.0.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#router rip
R3(config-router)#version 2
R3(config-router)#no auto-summary
R3(config-router)#network 1.0.0.0확인 명령어
show ip protocol
R1#show ip protocol
Routing Protocol is "rip"
Sending updates every 30 seconds, next due in 18 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Redistributing: rip
Default version control: send version 2, receive version 2
Automatic network summarization is not in effect
Maximum path: 4
Routing for Networks:
1.0.0.0
Routing Information Sources:
Gateway Distance Last Update
1.1.12.2 120 00:00:12
Distance: (default is 120)- Invalid after 180: 180초간 업데이트 미수신 시 경로를 의심
- Hold down 180: 다운된 경로에 대해 180초간 더 나쁜 경로 정보 거부
- Flushed after 240: 240초 후 라우팅 테이블에서 완전 삭제
show ip route
R1#show ip route
1.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C 1.1.1.0/16 is directly connected, GigabitEthernet0/2
C 1.1.12.0/24 is directly connected, GigabitEthernet0/1
R 1.1.23.0/24 [120/1] via 1.1.12.2, 00:00:15, GigabitEthernet0/1
R 1.1.2.0/16 [120/2] via 1.1.12.2, 00:00:15, GigabitEthernet0/1R: RIP으로 학습한 경로[120/1]: AD 120 / 메트릭(홉 카운트) 1[120/2]: 2홉 거리 (R2, R3 경유)
debug ip rip
R1#debug ip rip
*10:25:34: RIP: received v2 update from 1.1.12.2 on GigabitEthernet0/1
*10:25:34: 1.1.23.0/24 via 0.0.0.0 in 1 hops
*10:25:34: 1.1.2.0/16 via 0.0.0.0 in 2 hops
*10:25:45: RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/1 (1.1.12.1)
*10:25:45: network 1.1.1.0/16 metric 1디버그는 라우터 CPU에 부하를 줍니다. 확인 후 반드시
undebug all(줄여서u al)로 종료하세요.
Distance-Vector 알고리즘의 루핑 문제와 해결
Distance-Vector는 이웃 라우터의 라우팅 테이블을 주기적으로 복사하는 방식이므로, 네트워크 변화 전파가 느립니다(Slow Convergence). 이로 인해 라우팅 루프가 발생할 수 있습니다.
루핑 발생 과정
[5.1.0.0] ── [R-A] ── [R-B] ── [R-C]- 5.1.0.0 네트워크가 다운됨 → R-A가 라우팅 테이블에서 제거
- R-B는 아직 업데이트를 받지 못해 “5.1.0.0은 R-A를 통해 1홉”이라는 정보를 R-A에 전달
- R-A는 “5.1.0.0은 R-B를 통해 2홉”으로 잘못 학습
- R-B는 다시 R-A로부터 “2홉”을 받아 자신을 “3홉”으로 변경
- 홉 카운트가 계속 증가하며 패킷이 R-A ↔ R-B 사이를 무한 순환
해결 기법
| 기법 | 원리 |
|---|---|
| Maximum Hop Count | 홉 카운트 16 이상은 Unreachable로 처리하여 무한 루핑 차단 |
| Hold Down Timer | 경로 다운 인지 후 일정 시간 동안 더 나쁜 메트릭의 업데이트 거부 |
| Split Horizon | 라우팅 정보를 수신한 인터페이스로는 같은 정보를 재전송하지 않음 |
| Route Poisoning | 다운된 경로의 메트릭을 16(무한대)으로 설정하여 즉시 전파 |
| Poison Reverse | Split Horizon의 변형 — 수신 인터페이스로 메트릭 16을 되돌려 보냄 |
이러한 기법들을 조합하여 사용하면 루핑 문제를 효과적으로 방지할 수 있지만, Distance-Vector 알고리즘의 근본적 한계(느린 컨버전스)는 남아있습니다. 이를 해결하기 위해 Link-State 알고리즘 기반의 OSPF가 등장했습니다.