EIGRP (Enhanced Interior Gateway Routing Protocol)
EIGRP(Enhanced Interior Gateway Routing Protocol)는 시스코에서 개발한 디스턴스 백터 라우팅 프로토콜이다. RIP과 같이 스플릿 호라이즌이 적용되고, 자동 축약 기능을 가지고 있다. 또한 RIP이나 OSPF 라우팅 프로토콜에서 지원하지 않는 언이퀄 코스트(unequal cost) 부하 분산을 지원하여 메트릭 값이 다른 여러개의 경로를 동시에 사용할 수 있어 대체 경로 대역폭까지 활용하면서 링크 활용도를 극대화 시킬 수 있다. 1
장비 기본 설정 & 기본 설정 파일
- Reference
- Cisco ROUTER - 라우터 기본 설정, 확인
Router>en
Router#conf t
Router(config)#hostname R1
R1(config)#enable secret cisco
R1(config)#no ip domain-lookup
R1(config)#line console 0
R1(config-li)#logging sync
R1(config-li)#exec-time 0
R1(config-li)#exit
ISP(config)#line vty 0 4
ISP(config-li)#password cisco
ISP(config-li)#exit
기본적인 EIGRP 설정
R1~R3에 network eigrp 명령어와 함께 AS(Autonomous Number) 이용하여 EIGRP를 설정해준다. AS를 설정할 때는 관리자가 설정하는 임의의 번호를 사용해도 무방하나 EIGRP가 동작하는 모든 라우터에서는 같은 AS를 설정해야 한다. 또한 와일드카드 서브넷마스크를 사용하여 EIGRP가 동작할 인터페이스를 지정한다.
R1(config)#router eigrp 100
R1(config-router)#network 1.1.10.1 0.0.0.0
R1(config-router)#network 1.1.12.1 0.0.0.0
R1(config-router)#network 1.1.13.1 0.0.0.0
R2(config)#router eigrp 100
R2(config-router)#network 1.1.12.1 0.0.0.0
R2(config-router)#network 1.1.23.2 0.0.0.0
R2(config-router)#network 1.1.20.2 0.0.0.0
R3(config)#router eigrp 100
R3(config-router)#network 1.1.13.3 0.0.0.0
R3(config-router)#network 1.1.23.3 0.0.0.0
sh ip route 명렁어를 통하여 라우팅 테이블에 EIGRP 라우팅 경로(D)가 있는 것을 확인할 수 있다.
R1#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
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
Gateway of last resort is not set
1.0.0.0/8 is variably subnetted, 8 subnets, 2 masks
C 1.1.10.0/24 is directly connected, Ethernet0/1
L 1.1.10.1/32 is directly connected, Ethernet0/1
C 1.1.12.0/24 is directly connected, Serial1/1
L 1.1.12.1/32 is directly connected, Serial1/1
C 1.1.13.0/24 is directly connected, Ethernet0/0
L 1.1.13.1/32 is directly connected, Ethernet0/0
D 1.1.20.0/24 [90/2195456] via 1.1.12.2, 00:17:31, Serial1/1
D 1.1.23.0/24 [90/2195456] via 1.1.13.3, 00:17:31, Ethernet0/0
EIGRP 네이버(Neighbor)
RIP 이후 개발된 라우팅 프로토콜들은 라우팅 정보를 전송하기 전 상대방 라우터와 네이버(neighbor) 관계를 맺은 후 라우팅 정보를 전송한다. 고로 네이버 관계가 맺어지지 않으면 라우팅 정보를 전송하지 않는다. show ip eigrp neighbors 명령어를 통하여 네이버 상태를 확인할 수 있다.
R1#show ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(100)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
1 1.1.13.3 Et0/0 14 00:02:55 12 100 0 7
0 1.1.12.2 Se1/1 10 00:03:21 19 114 0 9
EIGRP는 헬로(Hello) 패킷을 이용하여 네이버 관계를 맺는데, 헬로 패킷 안에 포함된 정보 중 AS 번호, 서브넷 마스크 길이, 암호, K상수 4 값이 패킷을 받은 라우터와 동일한 것이 확인된다면 자신의 네이버(neighbor)로 간주하고 자신의 라우팅 정보를 전송하게 되며, 이후 네트워크가 변경 될 시 변경된 정보만 광고하게 된다.
보통은 정상적인 경우 5초 또는 60초마다 헬로 패킷을 전송하여 자신이 동작 중이라는 것을 알리며, 3회 연속 헬로 패킷을 수신하지 못하면 네이버 관계를 해제하게 된다. 이 타이머를 홀드 타임(Hold Time)이라고 한다. EIGRP는 헬로 패킷의 목적지 주소를 멀티캐스트 주소인 224.0.0.10을 사용한다.
R1의 e0/0 Port의 패킷을 분석해보면 위의 내용과 같이 EIGRP에 대한 정보가 담겨진 헬로 패킷을 목적지 IP인 224.0.0.10로 약 5초마다 반복하여 전송하고 있는 것을 확인할 수 있다. AS 번호와 파라미터인 K상수 값까지 확인할 수 있다.
EIGRP 메트릭 (Metric)
EIGRP에서 메트릭을 계산할 때 사용하는 것은 목적지 방향 인터페이스의 대역폭(Bandwidth)과 지연(Delay)값을 이용한다. R1의 R2 1.1.20.0/24 네트워크로 가는 가장 빠른 경로 중 목적지 방향의 대역폭과 지연값을 확인해보면 각각 1,544kbps, 20,000μs이다. 5
R1#sh int s1/1
Serial1/1 is up, line protocol is up
Hardware is M4T
Internet address is 1.1.12.1/24
MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec,
reliability 255/255, txload 1/255, rxload 1/255
....
((10^7 / [가장 느린 대역폭 kbps]) + ([전체 라우터 지연 더한 값]/10)) * 256
위와 토플로지가 있을 때, R1에서 1.1.20.0/24로 가는 목적지 방향의 가장 느린 인터페이스 대역폭은 1,544kbps이다. 이 값을 10^7에서 나눈다. 610^7/1544 = 6,476 (소수값은 버린다.) 각 인터페이스 딜레이 값은 20,000μs, 1,000μs로, 모두 더한 뒤 10으로 나눈다. (20,000+1,000)/10 = 2100. 이렇게 계산한 두 값을 더한 뒤 256을 곱하면 EIGRP 메트릭이 된다. (6476+2100) * 256 = 2195456.
R1#sh ip route
....
D 1.1.20.0/24 [90/2195456] via 1.1.12.2, 00:17:31, Serial1/1
D 1.1.23.0/24 [90/2195456] via 1.1.13.3, 00:17:31, Ethernet0/0
대역폭 조정으로 인한 부하분산 설정
두 라우터 사이에 백업망을 위하여 속도가 다른(높거나 혹은 낮은) 회선을 하나 추가한다면, 라우터는 두 회선의 대역폭을 동일하게 가장 높은 회선의 대역폭으로 간주하고 그에 맞춰 부하분산을 하게 된다. 결과적으로 회선을 추가하기 전보다 속도가 느려지게 되므로, 대역폭을 똑같이 조정해줌으로써 속도 저하를 방지함과 동시에 백업망을 만들 수 있다.
R1(config)#interface s1/1
R1(config-if)#bandwidth 4096
R2(config)#interface s1/1
R2(config-if)#bandwidth 4096
EIGRP DUAL (Diffusing Update Algorithm)
EIGRP가 최적 경로를 계산하기 위해서 사용하는 알고리즘을 DUAL (Diffusing Update Algorithm)이라고 한다.
1. 피저블 디스턴스(FD, Feasible Distance) : 현재 라우터에서 특정 목적지 네트워크까지의 최적 메트릭을 말한다.
2. 석세서 (successor) : 최적 경로상의 넥스트 홉 라우터를 의미한다. 위의 그림처럼 R1에서 R2의 1.1.20.0/24로 가는 최적 경로의 successor는 1.1.12.2이다.
3. 리포티드 디스턴스 (RD, Reported Distance) : 넥스트 홉 라우터에서 목적지 네트워크까지의 메트릭 값을 말한다. 7
4. 피저블 석세서 (Feasible Successor) : 석세서가 아닌 라우터 중에서 'FD > RD' 조건을 만족하는 넥스트 홉 라우터를 말한다. 즉 'FD > RD' 조건이 피저블 석세서가 되기위한 조건 (Feasibility condition)이라고 한다. 석세서가 다운되면 피저블 석세서가 석세서의 역할을 이어받아 패킷을 전송한다.
5. 토플로지 테이블 (Topology Table) : 인접 라우터에서 수신한 네트워크와 그 네트워크의 메트릭 정보를 저장하는 데이터베이스를 의미한다.
show ip eigrp topology 명령어를 통해서 각 라우터의 EIGRP 토플로지 테이블을 확인할 수 있다.
R1#R1#show ip eigrp topology all-links
EIGRP-IPv4 Topology Table for AS(100)/ID(1.1.13.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 1.1.23.0/24, 1 successors, FD is 2195456, serno 9
via 1.1.13.3 (2195456/2169856), Ethernet0/0
via 1.1.12.2 (2681856/2169856), Serial1/1
P 1.1.13.0/24, 1 successors, FD is 281600, serno 6
via Connected, Ethernet0/0
P 1.1.20.0/24, 1 successors, FD is 2195456, serno 8
via 1.1.12.2 (2195456/281600), Serial1/1
via 1.1.13.3 (2221056/2195456), Ethernet0/0
P 1.1.10.0/24, 1 successors, FD is 281600, serno 4
via Connected, Ethernet0/1
P 1.1.12.0/24, 1 successors, FD is 2169856, serno 5
via Connected, Serial1/1
R1에서 1.1.20.0으로 가는 경로는 2가지 경로가 있으며, 1.1.12.2(s1/1)를 통하여 가는 경로가 현재 피저블 디스턴스(FD)로 설정되어 있다. 1.1.13.3(e0/0)을 통하여 가는 경로를 피저블 석세서로 만들고 싶다면 FD > RD의 조건을 만족시켜야하나 현재 FD의 값(2195459)과 RD의 값(2195456)이 같아 피저블 석세서의 조건을 충족하지 못한다. 이럴때는 위에서 언급한 메트릭 계산식을 응용하여 지연값을 조절해 R3를 피저블 석세서로 만들 수 있다.
R3(config)#int s1/2
R3(config-if)#delay 1999 8
R1의 지연값을 증가시키거나 R3의 지연값을 감소시켜서 메트릭값을 조정할 수 있다. 위와 같이 R3의 지연값을 19,990μs로 10 감소시킨 뒤 EIGRP 토플로지를 확인해보면 FD 2195456, RD 2195200으로 FD > RD인 2195456 > 2195200 조건을 충족시켜 R3의 1.1.13.3이 피저블 석세서가 된 것을 확인할 수 있다.
R1#show ip eigrp topology all-links
EIGRP-IPv4 Topology Table for AS(100)/ID(1.1.13.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 1.1.23.0/24, 1 successors, FD is 2195200, serno 10
via 1.1.13.3 (2195200/2169600), Ethernet0/0
via 1.1.12.2 (2681856/2169856), Serial1/1
P 1.1.13.0/24, 1 successors, FD is 281600, serno 6
via Connected, Ethernet0/0
P 1.1.20.0/24, 1 successors, FD is 2195456, serno 8
via 1.1.12.2 (2195456/281600), Serial1/1
via 1.1.13.3 (2220800/2195200), Ethernet0/0
P 1.1.10.0/24, 1 successors, FD is 281600, serno 4
via Connected, Ethernet0/1
P 1.1.12.0/24, 1 successors, FD is 2169856, serno 5
via Connected, Serial1/1
EIGRP 언이퀄 코스트 부하 분산 (UCLB (Unequal Cost Load Balancing))
EIGRP는 위에서 계산한 메트릭 값을 동일하게 갖는 경로에 대해 부하 분산을 지원한다. 그러나 다른 라우팅 프로토콜과는 다르게 맨 위에서 언급한 것 처럼 메트릭 값이 다른 경로에 대해서도 부하분산을 지원하는데 이를 언이퀄 코스트 부하 분산 (Unequal Cost Load balancing)이라고 한다. UCLB는 다음과 같은 두 가지 조건을 만족해야한다.
1. 피저블 석세서를 통하는 경로이어야 한다. 즉, FD > RD인 경로이여야 한다.
2. 부하 분산시키고자 하는 경로의 메트릭 값이 FD * Variance 값 이내여야한다. Variance는 1~128 사이의 값을 지정할 수 있으며, 부하분산 경로의 범위를 지정하는 역할을 수행하는 값이다.
현재 위, EIGRP DUAL에서 설정한 값처럼 FD > RD (2195456 > 2195200)을 만족시키는 조건 하에, 1.1.20.0/24로 가는 경로는 1개로 1.1.12.2를 통해서 가는 경로가 보여지고 있다. 여기서 variance 값을 2로 조정하여 4390912 값을 만들어줘서 2220800이 UCLB 조건하(variance*2 이내)에 들어오도록 설정한다.
R1(config)#router eigrp 100
R1(config-router)#variance 2
설정 후 라우팅 테이블을 확인하면 위의 사진의 D 경로에서 하나가 더 추가된, UCLB가 적용된 것을 확인할 수 있다.
R1(config)#do 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
....
D 1.1.20.0/24 [90/2220800] via 1.1.13.3, 00:00:04, Ethernet0/0
[90/2195456] via 1.1.12.2, 00:00:04, Serial1/1
EIGRP 라우팅 보안
위에서 확인한 것과 같이 패킷 캡쳐 프로그램으로 EIGRP 패킷을 캡처하면 패킷의 내용과 AS 번호 등을 확인할 수 있고, 동시에 네이버까지 맺을 수 있게 된다. 이와 같이 불법적으로 네이버를 맺을 수 없게 하기 위해서는 헬로 패킷을 인증하면 된다. 통신하는 라우터에 같은 암호를 지정하고, 그와 관련된 정보를 같이 보내게 되면 수신한 상대방이 암호 정보를 확인하여 자신과 같은 암호 정보면 네이버를 맺고, 암호 정보가 없거나 틀리면 네이버를 맺지 않는다.
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#key chain EIGRPKEY // Key 이름 지정
R1(config-keychain)#key 100 // Key 번호 지정
R1(config-keychain-key)#key-string net-study // Key 비밀 번호 지정
R1(config-keychain-key)#exit
R1(config-keychain)#exit
R1(config)#int e0/0
R1(config-if)#ip authentication key-chain eigrp 100 EIGRPKEY // Key Chain 적용
R1(config-if)#ip authentication mode eigrp 100 md5 // 보안성이 높은 MD5 인증 사용
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#key chain EIGRPKEY // 다른 Key 이름을 지정해도 된다
R3(config-keychain)#key 100 // Key 번호는 동일해야 한다
R3(config-keychain-key)#key-string net-study // Key 비밀 번호도 동일해야 한다
R3(config-keychain-key)#exit
R3(config-keychain)#exit
R3(config)#int e0/0
R3(config-if)#ip authentication key-chain eigrp 100 EIGRPKEY // Key Chain 적용
R3(config-if)#ip authentication mode eigrp 100 md5 // 보안성이 높은 MD5 인증 사용
R3에서 인터페이스에 키체인을 적용하기 전 debug 명렁어를 사용한 후 키 체인을 적용하면 헬로 패킷이 인증된 상태를 확인할 수 있다. 아래 디버그 메세지를 확인해보면 MD5 인증 헬로 패킷을 수신한 것을 확인할 수 있다. 또한 패킷을 캡쳐해보면 EIGRP 패킷 내부에 Authentication MD5가 추가된 것을 확인할 수 있다.
R1#debug eigrp packets hello
(HELLO)
EIGRP Packet debugging is on
*Feb 28 07:53:49.690: EIGRP: received packet with MD5 authentication, key id = 100
*Feb 28 07:53:49.690: EIGRP: Received HELLO on Et0/0 - paklen 70 nbr 1.1.13.3
*Feb 28 07:53:49.690: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0
- 표준 라우팅 프로토콜이 아니기 때문에 다른 회사의 ROUTER에서는 사용할 수 없다. [본문으로]
- ROUTER, SWITCH는 각각 L3 IOU, L2 IOU 이미지를 사용하였다. [본문으로]
- 복사하여 터미널 프로그램에 붙여넣기 하면 편하게 사용할 수 있다. [본문으로]
- K 상수란 EIGRP가 메트릭 값을 계산할 때 사용하는 미리 정해진 값들이며, K 상수를 수정하여 메트릭 값을 조정할 수 있다. [본문으로]
- 마이크로세컨드 [본문으로]
- 시스코 라우터 시리얼 인터페이스의 기본 대역폭 값은 1,544kbps이다. [본문으로]
- 애드버타이저드 디스턴스(AD, Advertised Distance)라고도 한다. [본문으로]
- 지연값을 입력할 때는 10으로 나눈 값을 입력해줘야한다. [본문으로]
'네트워크 > All about Network' 카테고리의 다른 글
Routing Protocol - BGP (Border Gateway Protocol) (720) | 2020.03.03 |
---|---|
Routing Protocol - OSPF (Open Shortest Path First) (906) | 2020.03.03 |
Routing Protocol - RIPv2 (Routing Information Protocol version 2) (0) | 2020.02.27 |
Routing Protocol - 정적 경로 (Static Route) (0) | 2020.02.20 |
Routing 개요 (2) - AS, IGP & EGP, Classful & Classless Routing Protocol, Metric & AD, 경로 결정 방법 & Longest Match Rule (0) | 2020.02.19 |