본문 바로가기

네트워크

라우팅 - 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 이해 및 사용

https://www.cisco.com/c/en/us/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/16406-eigrp-toc.html

 

- Metric 계산식

https://study-ccnp.com/eigrp-metric-calculation-formulas/

 

- EIGRP 정리

https://m.blog.naver.com/luexr/222441096481

 

- EIGRP 로드밸런싱

https://www.cisco.com/c/ko_kr/support/docs/ip/enhanced-interior-gateway-routing-protocol-eigrp/13677-19.html