Enhanced Interior Gateway Routing Protocol
Cisco에서 만든 EIGRP.
그대로 해석하면, 향상된 내부 라우팅 프로토콜이다. 기존 IGRP에서 업그레이드된 버전(?)이라고 생각하자. 그럼 EIGRP에 대해 알아보도록 한다.
1. EIGRP 기본 개념
2. EIGRP 동작 과정
3. EIGRP 패킷 종류
4. EIGRP 네트워크 축약과 보안
5. EIGRP 부하 분산
1. EIGRP 기본 개념
– Cisco에서 만든 거리 벡터 라우팅 프로토콜이다.
– IPv4 프레임 내 IP Protocol 필드 번호 88을 사용한다.(포트 번호 아님.)
– Multicast 224.0.0.10을 사용한다.
– EIGRP의 신뢰성 획득 과정은 TCP 3way-handshake와 비슷하다. EIGRP와 관련된 패킷을 주고 받는 과정에서 신뢰성을 획득한다.
[장점]
– ‘Update Cost’를 지원한다. 즉, 메트릭이 다른 다수 개의 경로를 동시에 사용할 수있다.
– 설정이 간단하다.
[단점]
– Cisco 라우터에서만 동작한다.
– 대규모 네트워크에서 운용 시 “SIA 현상”이 발생한다.
[메트릭]
– Bandwidth, Delay, Reliability, Load, MTU 및 Hop Count를 특정 공식에 대입하여 계산한다. 이 값을 비교하여 경로의 우선 순위를 결정한다.
– 특정 공식에 K 상수 5개가 들어가 있고, 순서대로 ‘1 0 1 0 0’의 기본 값을 가지고 있다.
EIGRP 설정
Router(config)# router eigrp <AS> Router(config-router)# eigrp router-id <IP> Router(config-router)# network <IP> <WILDCARD>
1: EIGRP를 사용하는 라우터는 동일한 AS 번호를 갖고 있어야 한다.
2: 별도로 설정하지 않는다면, (1) 가장 높은 루프백 IP (2) 물리 인터페이스 중 가장 높은 IP로 자동 할당된다.
2. EIGRP 동작 과정
(1) Neighbor 관계 수립
EIGRP 설정 이후 인정한 라우터와 Hello 패킷을 주고 받는다.
AS번호, K 상수 값, EIRP 암호 값 등이 다르면 Neighbor를 수립하지 않는다.
(2) Neighbor Table 생성
Neighbor 관계 수립 후 Neighbor Table에 인접한 라우터 정보를 저장한다. 주기적으로 Hello 패킷을 보내서 Neighbor를 유지한다.
(3) 라우팅 정보 교환 및 Topology Table 구성
Neighbor를 맺은 라우터끼리 Update 패킷을 이용해 라우팅 정보를 교환한다. 이 Update 패킷과 EIGRP 로컬 정보를 합쳐 Topology Table을 구성한다.
(4) 라우팅 경로 계산 및 Routing Table 저장
처음 Topology Table에 등록된 EIGRP 경로는 Active 상태이다.
Passive 상태가 되면 Routing Table에 해당 경로를 저장할 수 있다.
(Active 상태란, 해당 경로를 최적 경로로 사용하기 위한 계산 과정이 진행 중인 상태이다. 계산이 끝나면 Passive 상태로 바뀐다.)
※ EIGRP 운용 중 토폴로지 변동사항 발생
(ex. 로컬 정보가 삭제된 경우, 최적 경로에 장애가 발생한 경우)
(1) 라우팅 정보 요청
Query 패킷을 전송하여, 목적지까지의 대체 경로나 목적지까지의 도달하는지 확인을 요청한다.
(2) 라우팅 정보 수신
상대 라우터로부터 Reply 패킷을 받는다.
3. EIGRP 패킷 종류
(1) 패킷 종류
Hello 패킷
– Neighbor를 구성하고 유지하는데 사용된다.
– 목적지 주소로 Multicast 224.0.0.10 을 사용한다.
Update 패킷
– 라우팅 정보를 전송하는데 사용된다.
– NBMA 네트워크의 경우 목적지 주소로 Neighbor IP,
BMA 네트워크의 경우 Multicast 224.0.0.10을 사용한다.
– Update 패킷 전송 후 Ack를 못받으면 최대 16번까지 다시 전송한다. 그래도 응답이 없으면 Neighbor 관계를 끊는다.
Query 패킷
– 라우팅 정보를 요청하는데 사용된다.
(로컬 정보가 삭제되거나 메트릭이 변경된 때, Topology Table에 대체 경로가 없을 때)
– 목적지는 위와 같다.
Reply 패킷
– Query(라우팅 정보 요청)에 응답할 때 사용된다.
– Ack 패킷과 다른 패킷이다.
Ack 패킷
– Update, Query, Reply 패킷 수신 시 확인했다고 응답하는 패킷이다.
(2) 패킷 포맷

– Version: EIGRP 버전, 현재 EIGRP 버전은 2이다.
– Opcode: EIGRP 패킷 종류를 지정한다. Update (0x01), Query (0x03), Reply (0x04), Hello (0x05) 이다. EIGRP Header 뒤에 오는 TLV를 결정한다. Ack는 0이 아닌 ACK번호를 포함한 Hello 패킷이다.
– Checksum: IP 헤더를 제외한 EIGRP 전체 패킷의 체크섬이다.
– Flags: 첫번째 LSB bit (0x00000001) – 시작 비트, 새로운 Neighbor 관계를 수립할 때 라우팅 업데이트의 첫번째 세트를 나타낸다.
두번째 LSB bit (0x00000002) – 조건부 수신 비트, RTP에서 사용된다.
*다른 비트들은 사용하지 않는다.
– Sequence & ACK number: 신뢰성있는 EIGRP 메세지 교환을 위한 RTP에서 사용한다.
– AS number: EIGRP AS 번호이다.
– TLV: 16bit의 Type 필드, 16bit의 Length 필드, TLB 종류에 따른 다양한 필드 개수로 구성되어 있다. TLV 값은 아래 사진 참고, 더 자세한 정보는 이 사이트 참고.

4. EIGRP 네트워크 축약과 보안
(1) 네트워크 축약
EIGRP에서도 네트워크 축약 기능을 지원한다. 자동 축약이 기본 값이므로 해당 기능을 사용하지 않으려면, ‘no auto-summary’를 해야한다.
축약을 하게 되면 축약된 네트워크의 GW가 null 0으로 된다. 라우팅 루프를 방지 하기 위함이다.
[Default Route 생성]
Router(config)# ip route 0.0.0.0 0.0.0.0 <NEXT_HOP_IP> Router(config)# router eigrp <AS> Router(config-router)# redistribute static
[수동 축약]
축약된 정보를 내보내고자 하는 인터페이스에서 설정한다.
Router(config)# int <INTERFACE> Router(config-if)# ip summary-address eigrp <AS> <SUMMARY_IP> <SUBNET>
* 축약하면 GW가 null 0으로 잡히는 이유

R1의 네트워크 정보를 받아 축약 후 R3에게 전파.
이 상황에서 R1의 30.30.30.0/24 네트워크가 다운된다면 R2까지만 통보된다. R3는 축약되어있고, R2에서 30.0.0.0/8 모두 다운되어야 통보하기 때문이다.
그 다음, R3가 30.30.30.X로 가는 패킷을 전달 받으면 라우팅 테이블을 보고 R2로 보낸다. 하지만 R2는 30.0.0.0/8의 게이트웨이가 null 0과 매칭된 것을 보고 해당 패킷을 폐기한다.
null 0으로 설정되지 않았다면, R2와 R3는 서로 계속 패킷을 주고받았을 것이다. ( = 루핑 )
(2) 네트워크 보안
EIGRP 네트워크 상에서 보안 침해가 많은 곳은 PC와 연결된 망, 서버와 연결되는 네트워크다. 이런 네트워크에서 EIGRP 보안을 위해 두 가지 방법을 적용할 수 있다. EIGRP 패킷을 인증하는 것과 액세스 네트워크는 재분배시키는 것이다.
[EIGRP 패킷 인증]
MD5, HMAC-SHA-256 방식을 통해 패킷의 무결성을 확인할 수 있다.
Router(config)# key chain <CHAIN_NAME> Router(config-keychain)# key [0-2147483647] Router(config-keychain-key)# key-string <WORD> Router(config-keychain-key)# exit Router(config-keychain)# exit Router(config)# Router(config)# int <INTERFACE> Router(config-if)# ip authentication key-chain eigrp <AS> <CHAIN_NAME> Router(config-if)# ip authentication mode eigrp <AS> [MD5|SHA]
1: 키 체인 이름은 라우터 간 동일하지 않아도 된다.
2: 키 번호는 라우터 간 동일해야 한다.
3: 암호는 라우터 간 동일해야 한다.
7: eigrp 인증 설정을 적용할 인터페이스로 진입한다.
8-9: 인증 설정
[액세스 네트워크 재분배]
PC가 연결된 종단 부분은 EIGRP 패킷을 보낼 필요가 없다. 이런 네트워크로 EIGRP 패킷을 전송하지 않도록 한다.
Router(config)# router eigrp <AS> Router(config-router)# redistribute connected
위와 비슷한 설정이 있다. Passive interface를 설정하여, 해당 인터페이스로 EIGRP Hello 패킷을 송수신하지 않는 것이다.
Router(config)# router eigrp <AS> Router(config-router)# passive-interface <INTERFACE>
5. EIGRP 부하분산
EIGRP는 동일 메트릭 값을 가진 경로 32개까지 부하 분산을 지원한다.
Equal Cost MultiPath ; ECMP
‘동일 메트릭 경로에 대한 부하 분산’
동일 메트릭 경로가 여러 개면, 별도 설정없이 자동으로 동작한다. 기본값은 최대 4개로 설정되어 있다. 최대 부하분산 경로 지정은 아래와 같이 한다.
Router(config)# router eigrp <AS> Router(config)# maximum-paths [1-32]
Unequal Cost MultiPath ; UCMP
‘메트릭 값이 서로 다른 경로에 대한 부하 분산’
UCMP가 동작하기 위해선 2가지 조건을 만족해야 한다.
① Feasible Successor를 통하는 경로
② ‘Feasible * variance’ 보다 작아야한다.