|
|
동적 라우팅 프로토콜 (Dynamic Routing Protocol) 종류
- 거리 벡터 라우팅 프로토콜 (Distance Vector Routing Protocol)
- 링크 상태 라우팅 프로토콜 (Link-State Routing Protocol)
1. 거리 벡터 라우팅 프로토콜 (Distance Vector Routing Protocol)
- DVRP는 Bellman-Ford 알고리즘을 사용하여 라우팅 테이블을 자신과 직접 연결된 다른 이웃 라우터들에게 주기적(RIP:30초, IGRP:90초) 으로 브로드캐스트 주소(255.255.255.255)를 사용해 전송함
| PC | IPv4 | Subnet Mask | Default Gateway |
| PC0 | 203.230.7.2 | 255.255.255.0 | 203.230.7.1 |
| PC1 | 203.230.9.2 | 255.255.255.0 | 203.230.9.1 |
* 거리 벡터 라우팅 프로토콜의 동작 절차
| 단계별 설명 | R1 라우팅 테이블 | R2 라우팅 테이블 | R1 라우팅 테이블 |
| 초기 설정 | 203.230.7.0 203.230.8.0 | 203.230.8.0 203.230.10.0 | 203.230.9.0 203.230.10.0 |
| (1단계) R1의 업데이트 타이머 완료: R1은 203.230.7.0와 203.230.8.0의 정보를 R2로 전달; R2는 R1으로부터 받은 정보 중 자신이 가지고 있지 않은 203.230.7.0/24를 자신의 라우팅 테이블에 등록 | 203.230.7.0 203.230.8.0 | 203.230.8.0 203.230.10.0 203.230.7.0 | 203.230.9.0 203.230.10.0 |
| (2단계) R2의 업데이트 타이머 완료: R2는 자신의 라우팅 테이블 정보 203.230.8.0/24, 203.230.10.0/24와 203.230.7.0/24을 R1과 R3로 전달; R1과 R3는 라우팅 테이블을 갱신함 | 203.230.7.0 203.230.8.0 203.230.10.0 | 203.230.8.0 203.230.10.0 203.230.7.0 | 203.230.9.0 203.230.10.0 203.230.8.0 203.230.7.0 |
| (3단계) R3의 업데이트 타이머 완료: R3는 자신의 라우팅 테이블 정보; 즉, 203.230.9.0/24와 203.230.10.0/24, 203.230.8.0/24와 203.230.7.0/24을 R2로 전달; R2는 자신의 테이블을 갱신함 | 203.230.7.0 203.230.8.0 203.230.10.0 | 203.230.8.0 203.230.10.0 203.230.7.0 203.230.9.0 | 203.230.9.0 203.230.10.0 203.230.8.0 203.230.7.0 |
| (4단계) R1의 업데이트 타이머 완료: R1은 자신의 라우팅 테이블 정보; 즉, 203.230.7.0/24와 203.230.8.0/24 및 203.230.10.0/24을 R2로 전달; R2가 이미 모든 업데이트 정보를 가지고 있으므로 갱신하지 않음 | 203.230.7.0 203.230.8.0 203.230.10.0 | 203.230.8.0 203.230.10.0 203.230.7.0 203.230.9.0 | 203.230.9.0 203.230.10.0 203.230.8.0 203.230.7.0 |
| (5단계) R2의 업데이트 타이머 완료: R2는 라우팅 정보를 R1과 R3에게 전달함; R3의 테이블은 변함 없고, R1의 테이블에 203.230.9.0/24 네트워크가 새로 등록됨 | 203.230.7.0 203.230.8.0 203.230.10.0 203.230.9.0 | 203.230.8.0 203.230.10.0 203.230.7.0 203.230.9.0 | 203.230.9.0 203.230.10.0 203.230.8.0 203.230.7.0 |
2. 링크 상태 라우팅 프로토콜(Link State Routing Protocol)
- 링크상태 라우팅 프로토콜은 다익스트라(Dijkstra) 알고리즘 또는 최단 경로 우선(SPF; Shortest Path First) 알고리즘을 사용하여 목적지까지 최단 경로를 계산한 후 이를 기초로 패킷을 전송하는 방식
* 네트워크별 링크 비용
| 출발지 -> 목적지 | 경로 | 링크비용 |
| PC1->PC2 | R1->R2->R2 LAN | 25 |
| R1->R3->R2->R2 LAN | 40 | |
| PC1->PC3 | R1->R3->R3 LAN | 10 |
| R1->R2->R3->R3 LAN | 55 | |
| PC2->PC1 | R2->R1->R1 LAN | 25 |
| R2->R3->R1->R1 LAN | 40 | |
| PC2->PC3 | R2->R3->R3 LAN | 35 |
| R2->R1->R3->R3 LAN | 30 | |
| PC3->PC1 | R3->R1->R1 LAN | 10 |
| R3->R2->R1->R1 LAN | 55 | |
| PC3->PC2 | R3->R2->R2 LAN | 35 |
| R3->R1->R2->R2 LAN | 30 |
Hot count란
- 데이터가 출발지와 목적지 사이에서 통과해야 하는 중간 장치들의 개수를 가리킨다.
3. RIP (Routing Information Protocol) - 거리 벡터 라우팅 프로토콜
- RIP는 라우팅 정보 업데이트 시 UDP 포트 520번을 사용하며 경로 설정을 위해 홉 카운터(Hop count)를 사용함; 15보다 큰 홉 카운터는 지원하지 않고 이후 폐기됨
- 매 30초 주기로 라우팅 테이블을 이웃 라우터들에게 브로드캐스트하므로 복잡한 네트워크에 RIP를 적용할 경우 상당한 오버헤드 트래픽이 발생하는 단점
RIPv1
| PC | IPv4 | Subnet Mask | Default Gateway |
| PC0 | 203.230.9.2 | 255.255.255.0 | 203.230.9.1 |
| PC1 | 203.230.7.2 | 255.255.255.0 | 203.230.7.1 |
| PC2 | 203.230.8.2 | 255.255.255.0 | 203.230.8.1 |
| 단계 | 예제코드 | 설명 |
| R1 인터페이스 설정 | Router# conf t Router(config)# hostname R1 R1(config)# int Gi0/0 R1(config-if)# ip add 203.230.7.1 255.255.255.0 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# int se0/0/0 R1(config-if)# ip add 203.230.10.2 255.255.255.0 R1(config-if)# no shut R1(config-if)# exit R1(config)# int se0/0/1 R1(config-if)# ip add 203.230.11.2 255.255.255.0 R1(config-if)# clock rate 64000 R1(config-if)# no shut R1(config-if)# ^Z | |
| R2 인터페이스 설정 | Router> en Router# conf t Router(config)# hostname R2 R2(config)# int Gi0/0 R2(config-if)# ip add 203.230.9.1 255.255.255.0 R2(config-if)# no shutdown R2(config-if)# exit R2(config)# int se0/0/0 R2(config-if)# ip add 203.230.10.1 255.255.255.0 R2(config-if)# clock rate 64000 R2(config-if)# no shut R2(config-if)# exit R2(config)# int se0/0/1 R2(config-if)# ip add 203.230.12.1 255.255.255.0 R2(config-if)# clock rate 64000 R2(config-if)# no shut R2(config-if)# ^Z | |
| R3 인터페이스 설정 | Router> en Router# conf t Router(config)#hostname R3 R3(config)# int Gi0/0 R3(config-if)# ip add 203.230.8.1 255.255.255.0 R3(config-if)# no shutdown R3(config-if)# exit R3(config)# int se0/0/0 R3(config-if)# ip add 203.230.11.1 255.255.255.0 R3(config-if)# no shut R3(config-if)# exit R3(config)# int se0/0/1 R3(config-if)# ip add 203.230.12.2 255.255.255.0 R3(config-if)# clock rate 64000 R3(config-if)# no shut R3(config-if)# ^Z | |
| R1에 RIPv1 설정 | R1> en R1# conf t R1(config)# router rip R1(config-router)# network 203.230.7.1 (gi0/0) R1(config-router)# network 203.230.10.2 (s/0/0/1) R1(config-router)# network 203.230.11.2 (s/0/0/0) R1(config-router)# ^Z | network 삭제 no network 203.230.7.1 network 확인 show ip route rip |
| R2에 RIPv1 설정 | R2# conf t R2(config)# router rip R2(config-router)# network 203.230.9.1 (gi0/0) R2(config-router)# network 203.230.10.1 (s/0/0/0) R2(config-router)# network 203.230.12.1 (s/0/0/1) R2(config-router)# ^Z | |
| R3에 RIPv1 설정 | R3# conf t R3(config)# router rip R3(config-router)# network 203.230.8.1 (gi0/0) R3(config-router)# network 203.230.11.1 (s/0/0/1) R3(config-router)# network 203.230.12.2 (s/0/0/0) R3(config-router)# ^Z | |
| R1의 RIP 설정 확인 | R1# show run router rip network 203.230.7.0 network 203.230.10.0 network 203.230.11.0 R1# show ip route (sh ip ro) R 203.230.8.0/24 [120/1] via 203.230.11.1, 00:00:02, Serial0/0/0 R 203.230.9.0/24 [120/1] via 203.230.10.1, 00:00:08, Serial0/0/1 R1# show ip protocols (sh ip prot) Sending updates every 30 seconds, next due in 14 seconds Invalid after 180 seconds, hold down 180, flushed after 240 | 라우트 설정 확인 라우팅 프로토콜 확인 홀드 다운 - 이것은 죽은 네트워크를 발견한 라우터가 네트워크 정보가 업데이트되지 않는 기간인 ‘홀드다운’ 타이머를 즉시 작동시켜서 즉시 주변에 알리는 기법 |
| RIP 동작 상태 확인 (Debug 모드) | R1# debug ip rip (30초 마다 정보가 갱신되는지 살펴 본다.) RIP: build update entries ... R1# no debug all | debug: 동작 상태를 실시간으로 알아보기 |
| 업데이트 정보 발송 정지 | R1# conf t R1(config)# router rip R1(config-router)# passive-interface gi0/0 R1(config-router)# ^Z R1# sh ip protocols passive Interface(s): GigabitEthernet0/0 | 불필요한 정보 전달 방지로 passive로 변경 gi0/0에는 라우팅 정보를 보낼 필요가 없다. |
클래스풀 라우팅 프로토콜 (Class Full Routing Protocol)
- 클래스풀은 IP 주소 클래스 (A,B,C 클래스)를 의미한다.
- 라우팅 정보 전송시 서브넷 마스크 전달을 하지 않는다.
- 대표적인 프로토콜 RIPv1, IGRP
- 클래스풀 라우팅프로토콜에서 서브넷 마스크를 사용할때는 제약사항들이 있다.
클래스리스 라우팅 프로토콜 (Classless Routing Protocol)
- 라우팅 정보전송시 서브넷 마스크 정보도 포함
- 대표적인 프로토콜 RIPv2 , EIGRP, OSPF, BGP 프로토콜이 여기에 해당한다.
| 단계 | 예제 코드 | 설명 |
| PC 설정 | PC0: 1.1.1.2/24 GW: 1.1.1.1 PC1: 1.1.2.2/24 GW: 1.1.2.1 | |
| R1 인터페이스 설정 | Router>en Router>conf t Router(config)# hostname R1 R1(config)# interface gi0/0 R1(config-if)# ip address 1.1.1.1 255.255.255.0 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# interface se0/0/0 (DCE) R1(config-if)# ip address 203.230.7.1 255.255.255.0 R1(config-if)# clock rate 64000 R1(config-if)# no shutdown R1(config-if)# exit | |
| R2 인터페이스 설정 | Router> en Router> conf t Router(config)# hostname R2 R2(config)# interface gi0/0 R2(config-if)# ip address 1.1.2.1 255.255.255.0 R2(config-if)# no shutdown R2(config-if)# exit R2(config)# interface se0/0/0 (DTE) R2(config-if)# ip address 203.230.7.2 255.255.255.0 R2(config-if)# no shutdown R2(config-if)# exit | |
| R1에 RIP 적용 | R1(config)# router rip R1(config-router)# network 1.1.1.1 (gi0/0) R1(config-router)# network 203.230.7.1 (s/0/0/0) R1(config-router)# ^Z | |
| R2에 RIP 적용 | R2(config)# router rip R2(config-router)# network 1.1.2.1 (gi0/0) R2(config-router)# network 203.230.7.2 (s/0/0/0) R2(config-router)# ^Z | |
| Ping 테스트 | PC0> ping 1.1.2.2 -> 실패 PC1> ping 1.1.1.2 -> 실패 | |
| 원인분석 | R1# show ip route 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks (R2의 1.1.2.0/24 네트워크가 보이지 않는다.) R1# debug ip rip RIP: build update entries network 1.0.0.0 metirc 1 RIP: received v1 update from 203.230.7.2 on Serial0/0/0 1.0.0.0 in 1 hops R2# debug ip rip | 클래스풀 라우팅 프로토콜은 라우팅 업데이트시 서브넷 마스크 정보를 보내지 않고 네트워크 정보에 대한 자동요약 (automatic summarization)을 수행하기 때문에 서로 다른 네트워크 인데도 불구하고 1.0.0.0/8로 처리한다. |
경로요약 (Route Summarization)
- 연속된 IP 경로 정보들을 소유하고 있는 라우터가 이를 축약 (Summary)된 형태의 경로 정보로 변환하여 전달할 수 있는 기법
RIPv2
- RIPv2는 클래스리스 라우팅 프로토콜로 라우팅 업데이트 시 네트워크 정보와 서브넷 마스크 정보를 함께 전달 함
- RIPv1의 문제점을 해결함.
<RIPv1 의 문제점>
- 클래스풀은 라우팅 정보 업데이트 시 서브넷 마스크 정보를 보내지 않아 서브넷에서는 RIP는 제대로 동작하지 못함
- RIP을 서브넷에 올바로 적용해도 PC0와 PC1 간 핑테스트는 실패함
<RIPv1의 문제점을 R1의 라우팅 테이블로 확인>
- 직접 연결된 두 개의 네트워크(1.1.1.0/24, 203.230.7.0/24)는 보이나 R2의 로컬 LAN 구간인 1.1.2.0/24는 보이지 않음
- 이것은 RIPv1이 클래스풀 라우팅 프로토콜로서 라우팅 업데이트 시 서브넷 마스크 정보를 보내지 않기 때문임
- 결국 RIPv1은 1.1.1.0/24와 1.1.2.0/24가 다른 네트워크임에도 불구하고 이를 network 1.0.0.0/8 로 처리한 것임
| 단계 | 예제 코드 | 설명 |
| R1에 RIPv2 적용 | R1>en R1>conf t R1(config)# router rip R1(config-router)# version 2 R1(config-router)# no auto-summary R1(config-router)# ^Z R1#wr | version 2 이후 network 1.0.0.0 network 203.230.7.0 |
| R2에 RIPv2 적용 | R2> en R2> conf t R2(config)# router rip R2(config-router)# version 2 R2(config-router)# no auto-summary R2(config-router)# ^Z R2# wr | |
| 라우팅 테이블 확인 | R2# show ip protocols Routing Information Sources Gateway distance Last update 203.230.7.2 120 00:00:11 R2# show ip route R2# degug ip rip | 원격지 네트워크 정보가 나타남 |
| Ping | PC0->Desktop->Command Prompt ping 1.1.2.2 |
4. 라우트 포이즈닝(Route Poisoning)과 포이즈닝 리버스(Poisoning Riverse)
라우트 포이즈닝(Poisoning)
- RIP에서 메트릭 값 16은 무한대(도달 불가) 거리를 의미하는 것으로 이를 포이즌(Poison)이라고 함
- R1의 Gi0/0 인터페이스를 ‘shutdown’하게 하면 다운되었다는 정보가 R2에 전달됨
- R1은 자신의 Gi0/0에 정의된 네트워크 1.1.1.0/24에 대한 연결이 유실되어 패킷을 전송할 수 없다는 것을 알리기 위해 메트릭 값을 16으로 설정하여 R2를 업데이트시킴
포이즈닝 리버스(Poisoning Reverse)
- R1으로부터 1.1.1.0/24 네트워크에 대한 메트릭 값 16을 전달받은 R2가 R1에게 해당 네트워크에 연결할 다른 우회 경로가 없음을 알려주기 위해 이 네트워크에 대한 메트릭 값 16을 다시 R1에게 전달하여 Looping 이슈를 해결하는 것
| 단계 | 예제 코드 | 설명 |
| R1 debug 실행 R1 Gi0/0 다운시킴 | R1#debug ip rip R1(config)# interface GigabitEthernet0/0 R1(config-if)# shut (Gi0/0를 다운시킴) %LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to administratively down %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to down | |
| R2 디버그 실행 | R2# debug ip rip RIP: received v2 update from 203.230.7.1 on Serial0/0/0 1.1.1.0/24 via 0.0.0.0 in 16 hops RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/0 (1.1.2.1) | 16 hops로 변경됨 |
| R1 Gi0/0 활성화 시킴 | R1(config)# int g0/0 R1(config-if)# no shut (Gi0/0를 다시 활성화시킴) %LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to up %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up | Gi0/0를 다시 활성화됨 |
| R2 디버그 실행 | R2# debug ip rip RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/0 (1.1.2.1) RIP: received v2 update from 203.230.7.1 on Serial0/0/0 1.1.1.0/24 via 0.0.0.0 in 1 hops | 1 hops로 변경됨 |
5. 디폴트 경로(Default Route) 설정하기
- 외부인터넷의 방대한 라우터와 연결시 방대한 라우팅 정보를 교환할 필요가 없이 간소화 방법을 이용한다.
- 디폴트 경로의 개념은 복잡하게 커지는 라우팅 테이블을 간소화하기 위해 사용함
| 단계 | 예제 코드 | 설명 |
| R1에 디폴트 정적 경로 설정 | R1(config)# router rip R1(config-router)# ip route 0.0.0.0 0.0.0.0 loopback 0 R1(config-if)# exit R1(config)# router rip R1(config-router)# default-information originate R1(config-router)# ^Z R1# | default-information originate: R1에 외부 통신을 위한 디폴트 정적 경로가 있음을 알린다. |
| R2에서 라우팅 테이블을 확인 | R2# sh ip route R* 0.0.0.0/0 [120/1] via 203.230.7.1 00:00:13, Serial0/0/0 | R2가 이웃 라우터 인터페이스 203.230.7.1(출구 Serial0/0/0)을 통해 외부 네트워크와 통신할 수 있다는 디폴트(0.0.0.0/0) 경로임 |
|
|
