라우팅 - EIGRP (Enhanced Interior Gateway Protocol)
오랫만에 찾아뵙습니다..
근 1년간 업무량이 너무 많아서 블로그를 소홀히 했는데도 부족한 게시글이지만 기다려 주시는 분들.. 질문해주시는 분들.. 간간히 봐주시는 분들이 계시니 또 차마 안할수는 없겠더라구요..
간간히 작성하여 기초 게시글은 모두 완료해놓고 또 확장해 나갈 수 있도록 하겠습니다. OSPF도 조만간....
1. EIGRP
이전 게시글인 IGRP의 개선된(Enhanced) 프로토콜 입니다. 기본적으로는 IGRP와 유사하므로, IGRP 게시글을 참조하시면 이해하시기나 부족한 부분을 채우시는데에 도움이 되실거라 생각합니다.
REFERENCE 라우팅 - IGRP (Internet Gateway Routing Protocol)
- Cisco 전용 프로토콜
- Dynamic Routing - 라우터끼리 라우팅 테이블을 주고받아 정보를 갱신.
- Interior Gateway Protocol - AS 내부에서 동작하는 라우팅 프로토콜.
- Hybrid - Distance Vector + Link State 방식이 결합된 방식.
- Classless - CIDR, VLSM 지원
- Protocol Number - 88
- Maximum Hop Count - (default 100) 255
- AD - Internal 90 / External 170
2. 동작방식
프로토콜이라는게 사실 거의 비슷한 동작방식을 가집니다. EIGRP 역시 동작방식을 살펴보기 위해서 주고받는 패킷의 종류를 나눠보면 아래와 같은데,
패킷 종류 | 설명 |
Hello | 인접 라우터간 연결 상태 확인과 이웃(Neighbor) 관계를 형성할때 사용됨. 일정 주기로 전송. |
Update | 라우팅 정보의 변경 내용을 이웃에게 전달하기 위해 사용됨. |
Query | 라우팅 테이블 정보를 요청할때 사용됨. |
Reply | Query 패킷에 대한 응답. 상세한 라우팅 정보를 제공함. |
Ack | Update, Query, Reply 패킷을 수신한 라우터가 패킷을 수신하였음을 알리는 용도로 사용됨. |
일상에서 우리가 주고받는 말과 별로 다를게 없습니다. 프로토콜에 대한 예시를 설명할때 항상 전화, 우편, 메일 같은 요소들로 비유하는것이 이러한 이유 때문이기도 합니다.
이렇게 이웃을 맺게 되면, 필요에따라 Update, Query, Reply, Ack 등의 패킷을 주고받으며 라우팅 테이블을 갱신하며 동작하게됩니다.
Packet Header Format
필드 | 설명 |
Version | EIGRP 버전, Cisco IOS 10.3 이후 펌웨어에서 버전2를 지원하기 시작함. |
Opcode | EIGRP 패킷의 유형을 지정하는 필드. |
Checksum | 오류 검출 및 확인을 위한 필드. |
Flags | 패킷의 상세유형을 나타내는 플래그. |
Sequence Number | 패킷의 수신순서를 보장하는 순서번호. |
Acknowledgement | 수신한 패킷의 순서를 보장하는 일련번호. |
Virtual Router ID | 가상 라우터 ID. |
AS Number | AS번호. |
헤더 포맷은 프로토콜별로 다 아실 필요는 없지만, 형태나 구조를 대강 기억해두시면 추후에 트러블슈팅에 있어서 많은 도움이 됩니다. 대충 보고 넘어가셨다가 필요하실때 찾아보셔도 됩니다.
3. DUAL (Diffusing Update Algorithm)
라우팅 테이블의 관리 알고리즘입니다. 사용되는 용어는 아래와 같습니다.
용어 | 설명 |
Successor | 후속 라우터. 목적지로 가는 최적경로(Best Path) 또는 라우터. |
Feasible Distance(FD) | 최소비용. 최적경로가 가지는 전체 Metric 값. |
Feasible Successor | 후속 라우터를 대체할 수 있는 Loop가 발생하지 않는 Backup 경로상의 라우터. |
Advertised Distance(AD) | 이웃 라우터부터 목적지 네트워크까지의 부분 Metric 값. |
용어 자체는 좀 거창해보이는데, 단순한 개념입니다. 아래 예시 구성과 토폴로지를 한번 보겠습니다.
위와 같은 구성에서, R1이 192.168.20.0/24 네트워크로 가는 방법은 R2를 경유하는것과, R3로 바로 가는 경로가 존재합니다. R1에서 EIGRP 토폴로지를 확인해보면,
R1# sh ip eigrp topology
EIGRP-IPv4 Topology Table for AS(1)/ID(192.168.0.254)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 192.168.10.0/24, 1 successors, FD is 3328
via 10.10.10.2 (3328/3072), GigabitEthernet0/1
via 10.10.10.6 (28416/2816), GigabitEthernet0/2
P 192.168.0.0/24, 1 successors, FD is 2816
via Connected, GigabitEthernet0/0
P 10.10.10.8/30, 1 successors, FD is 3072
via 10.10.10.2 (3072/2816), GigabitEthernet0/1
via 10.10.10.6 (28416/2816), GigabitEthernet0/2
P 10.10.10.4/30, 1 successors, FD is 28160
via Connected, GigabitEthernet0/2
P 10.10.10.0/30, 1 successors, FD is 2816
via Connected, GigabitEthernet0/1
P 192.168.20.0/24, 1 successors, FD is 3072
via 10.10.10.2 (3072/2816), GigabitEthernet0/1
정보를 요약해서 살펴보면 아래와 같습니다.
P 192.168.10.0/24, 1 successors, FD is 3328 // 수렴상태의 목적지 네트워크, 하나의 석세서, FD가 3328인 경로 사용.
via 10.10.10.2 (3328/3072), GigabitEthernet0/1 // 선택된 경로. (Successor), FD/AD, 출구인터페이스
via 10.10.10.6 (28416/2816), GigabitEthernet0/2 // 백업경로. (Feasible Successor), FD/AD, 출구인터페이스
Metric 계산방식은 아래와 같습니다.
Metric = [ K1 × Bandwidth + ( K2 × Bandwidth ) / ( 256 - Load ) + K3 × Delay ] × [ K5 / ( Reliability + K4 ) ]
인자 | 설명 | 기본값 |
K1 | 대역폭(Bandwidth) | 1 |
K2 | 부하(Loading) | 0 |
K3 | 지연(Delay) | 1 |
K4 | 신뢰성(Reliability) | 0 |
K5 | 최대 전송 단위(MTU) | 0 |
K값은 임의로 설정이 가능하지만, 아주 특수한 경우가 아니라면 손댈일이 없습니다.
또한, K값이 일치하지 않으면 이웃 협상에 실패하여 네트워크가 수렴되지 않습니다.
R1# sh ip protocols
Routing Protocol is "eigrp 1" << EIGRP AS
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
EIGRP-IPv4 Protocol for AS(1)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0 << K 기본값
Soft SIA disabled
NSF-aware route hold timer is 240
Router-ID: 192.168.0.254
Topology : 0 (base)
Distance: internal 90 external 170
Maximum path: 4
Maximum hopcount 100
Maximum metric variance 1
R1# sh int g0/2
GigabitEthernet0/2 is up, line protocol is up
Hardware is iGbE, address is 5000.0007.0002 (bia 5000.0007.0002)
Internet address is 10.10.10.5/30
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
...
방정식은 아래와 같습니다.
K 기본값을 대입하면 축약하여 아래와 같은 식으로 나옵니다
수식이 많이 나오니까 복잡한데, 그냥 단순하게 모든 대역폭이 1Gbps일때는 256*(10+링크개수) 입니다.. 스크롤 그만내리십시오..
라우팅 테이블에서 Internal AD, Metric, 선택경로의 확인이 가능합니다. 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, p - overrides from PfR
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
C 10.10.10.0/30 is directly connected, GigabitEthernet0/1
L 10.10.10.1/32 is directly connected, GigabitEthernet0/1
C 10.10.10.4/30 is directly connected, GigabitEthernet0/2
L 10.10.10.5/32 is directly connected, GigabitEthernet0/2
D 10.10.10.8/30 [90/3072] via 10.10.10.6, 00:00:12, GigabitEthernet0/2
[90/3072] via 10.10.10.2, 00:00:12, GigabitEthernet0/1
192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.0.0/24 is directly connected, GigabitEthernet0/0
L 192.168.0.254/32 is directly connected, GigabitEthernet0/0
D 192.168.10.0/24 [90/3072] via 10.10.10.6, 00:00:12, GigabitEthernet0/2
D 192.168.20.0/24 [90/3072] via 10.10.10.2, 00:00:12, GigabitEthernet0/1
Metric 값 보시면,
256*(10+2)=3072
256*(10+3)=3328
인걸 보실수 있습니다.
맺어진 이웃은 neighbors 커맨드로 확인이 가능합니다.
R1# sh ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
1 10.10.10.6 Gi0/2 13 00:44:37 10 100 0 21
0 10.10.10.2 Gi0/1 14 00:45:10 15 100 0 22
H | 학습 순서. |
Address | 이웃 라우터의 주소. |
Interface | 해당 이웃 라우터로 향하는 출구 인터페이스. |
Hold | 인접관계 유지시간. Hello 패킷을 수신할때마다 최대로 초기화함. (15초). |
Uptime | 이웃을 맺은 후 경과한 시간. |
SRTT (Smoothed Routnd Trip Timer) |
해당 이웃에게 갔다가 돌아오는 시간. |
RTO (Retransmit Timeout Interval) |
재전송 Timeout 정보. RTO 시간 내에 Ack가 오지 않으면 16회 반복후 이웃을 끊음. |
Q Cnt (Queue Count) |
전송을 기다리는 Queue에 저장된 패킷의 개수. 양수일시 네트워크 점검이 필요. |
Seq Num (Sequence Number) |
순서 번호. |
4. EIGRP 로드밸런싱
EIGRP는비용이 동일한 경로로는 기본적으로 로드밸런싱을 수행할 수 있습니다.
R1# show ip protocols | sec Max
Maximum path: 32
Maximum path: 4
Maximum hopcount 100
Maximum metric variance 1
Maximum path: 4
R1# show ip route | sec 10.10.10.8/30
D 10.10.10.8/30 [90/3072] via 10.10.10.6, 00:01:02, GigabitEthernet0/2
[90/3072] via 10.10.10.2, 00:01:02, GigabitEthernet0/1
192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
위 로그에서 비용이 동일한 두개의 경로가 라우팅 테이블에 지정된 것을 확인할 수 있습니다.
비용이 다른 경로로는, variance 설정을 통해 로드밸런싱 수행이 가능합니다. (Default Max path : 4, Maximum path : 16)
동작은 variance 설정값에 따라 (Metric * variance n) 값 미만의 경로를 로드밸런싱 경로로 추가적으로 사용할 수 있으며, 비용이 같지 않은 경로로 로드밸런싱 한다고 하여 Unequal cost load balancing 이라고 하지만 실무에서는 아무도 그렇게 부르지 않으니 신경쓰실 필요는 없습니다.
R1(config)# router eigrp 1
R1(config-router)# variance ?
<1-128> Metric variance multiplier
최대 128배 높은 Metric의 경로까지 지정이 가능하고, 부가적으로 경로가 여러가지더라도 최소비용을 가지는 경로로만 트래픽을 보낸다거나, 다른 경로를 백업 경로로 지정이 가능하고 또한 Metric 값이 낮은 쪽으로 더 많은 트래픽을, Metric 값이 높은 쪽으로는 적은 트래픽을 분산하는 트래픽 쉐어링 또한 사용 가능합니다.
Command
커맨드 양이 방대하여.. 하위커맨드들은 포함하지 않았으며 향후에도 설정방법을 직접 기입하지는 않을 생각입니다..
참고만 하시기 바랍니다.
Router# show ip route
Router# show ip protocols
Router# show ip eigrp ?
<1-65535> Autonomous System
accounting Prefix Accounting
events Events logged
interfaces interfaces
neighbors Neighbors
timers Timers
topology Select Topology
traffic Traffic Statistics
vrf Select a VPN Routing/Forwarding instance
Router(config)# router eigrp ?
<1-65535> Autonomous System
WORD EIGRP Virtual-Instance Name
Router(config-router)# ?
Router configuration commands:
address-family Enter Address Family command mode
auto-summary Enable automatic network number summarization
bfd BFD configuration commands
default Set a command to its defaults
default-information Control distribution of default information
default-metric Set metric of redistributed routes
distance Define an administrative distance
distribute-list Filter entries in eigrp updates
eigrp EIGRP specific commands
exit Exit from routing protocol configuration mode
maximum-paths Forward packets over multiple paths
metric Modify metrics and parameters for advertisement
neighbor Specify a neighbor router
network Enable routing on an IP network
no Negate a command or set its defaults
offset-list Add or subtract offset from EIGRP metrics
passive-interface Suppress routing updates on an interface
redistribute Redistribute IPv4 routes from another routing protocol
shutdown Shutdown this instance of EIGRP
summary-metric Specify summary to apply metric/filtering
timers Adjust routing timers
traffic-share How to compute traffic share over alternate paths
variance Control load balancing variance
Reference
- EIGRP 이해 및 사용
- Metric 계산식
https://study-ccnp.com/eigrp-metric-calculation-formulas/
- EIGRP 정리
https://m.blog.naver.com/luexr/222441096481
- EIGRP 로드밸런싱