目录

简介

先决条件

要求

使用的组件

背景信息

邻居抖动

网络问题

SIA

保持计时器超时

超过重试限制

对等体重新启动

收到 Hello 数据包前收到初次更新数据包

其他问题

配置更改

身份验证

主 IP 地址与辅助 IP 地址不匹配

DMVPN

Flag 值的含义

SIA

SIA 的定义

症状

可能的原因

故障排除提示

缺少前缀

RIB 中缺少前缀

前缀由具有更短管理距离的路由协议添加

分发列表阻止前缀

拓扑表中缺少前缀

为确保命令正确输出所应遵循的掩码规范

水平分割阻止前缀

指标

路由器 ID 重复

K 值不匹配/正常关机

非等价负载均衡（差异）

静态邻居

静态路由重新分布

用于度量值计算的可读性和负载参数

高 CPU 利用率

帧中继网络中的 EIGRP（广播队列）

AS 数量不匹配

自动汇总

EIGRP 事件日志

两个 EIGRP 自治系统检测到同一网络

相关信息

简介

本文档介绍如何对最常见的增强型内部网关路由协议 (EIGRP) 问题进行故障排除。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于Cisco IOS®，用于说明此协议可能遇到的各种行为。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

本文档中使用的拓扑如下：

接下来的部分将介绍一些最常见的EIGRP问题以及如何排除这些问题的一些提示。

邻居抖动

使用 EIGRP 时最常遇到的一个问题是，邻居关系无法正确建立。可能导致这个问题的原因有以下几种：

- 最大传输单位 (MTU) 问题

- 单向通信（单向链路）

- 链路中存在组播问题

- 单播问题

- 链路质量问题

- 身份验证问题

- 配置错误问题

如果没有收到 EIGRP Hello 消息，则无法在邻居列表中看到邻居。输入 show ip eigrp neighbors 命令可查看 EIGRP 邻居信息，从而帮助确定问题：

R2#show ip eigrp neighbors

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

(sec)         (ms)       Cnt Num

3   10.1.1.1                Et0/0             12 00:00:48    1  5000  1  0

2   10.1.1.3                Et0/0             12 02:47:13   22   200  0  339

1   10.2.1.4                Et1/0             12 02:47:13   24   200  0  318

0   10.2.1.3                Et1/0             12 02:47:13   20   200  0  338

如果您认为邻居关系已形成，但您没有必须从该邻居学习的前缀，请检查前一个命令的输出：如果 Q Cnt（重传数据包数）始终不是零，则可能表示一直在重传同一个 EIGRP 数据包。输入 show ip eigrp neighbors detail 命令可检查是否一直在发送同一个数据包。如果第一个数据包的“Seq Num”（序列号）始终相同，则表示同一个数据包在无限重传：

R2#show ip eigrp neighbors detail

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

(sec)         (ms)       Cnt Num

3   10.1.1.1                Et0/0             11 00:00:08    1  4500  1  0

Version 12.4/1.2, Retrans: 2, Retries: 2, Waiting for Init, Waiting for Init Ack

UPDATE seq 350 ser 0-0 Sent 8040 Init Sequenced

2   10.1.1.3                Et0/0             11 02:47:56   22   200  0  339

Version 12.4/1.2, Retrans: 11, Retries: 0, Prefixes: 10

1   10.2.1.4                Et1/0             10 02:47:56   24   200  0  318

Version 12.4/1.2, Retrans: 10, Retries: 0, Prefixes: 8

0   10.2.1.3                Et1/0             11 02:47:56   20   200  0  338

Version 12.4/1.2, Retrans: 11, Retries: 0, Prefixes: 2

从输出中可以看到，第一个邻居存在问题，而且 Uptime（邻居建立时间）被重置。

检查进程路由器 EIGRP 是否包含 eigrp log-neighbor-changes 命令也很重要。然而，思科漏洞 ID CSCdx67706 之后的软件版本默认包含这个命令，所以在那种情况下，它不会在配置中显示出来。请检查位于链路两侧的 EIGRP 邻居上的日志条目。至少在一个日志中，必须有有意义的条目。

下面列出了 EIGRP 邻居发生变化的所有可能原因及相应的日志条目：

- 在保持时间内未收到 EIGRP 数据包：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:

holding time expired

- 在限定的重试次数内，未完成可靠 EIGRP 数据包的确认：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:

retry limit exceeded

- EIGRP 发现接口处于 down（关闭）状态：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.3.1.6 (Serial2/0) is down:

interface down

- 路由器收到初始更新数据包，并重置了邻居关系：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:

peer restarted

- 路由器收到初始更新数据包，并建立了新的邻接关系：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is up:

new adjacency

- 由于输入了 clear ip eigrp neighbor 命令，导致发生 manual clear（手动清除）：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 172.16.1.4 (Serial2/0) is down:

manually cleared

- 接口的 IP 地址发生更改：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 192.168.1.5 (Serial3/0) is down:

address changed

- 接口上发生延迟/带宽更改：
注意：这种情况只会在较早的代码版本中出现。Cisco Bug ID CSCdp08764(思科漏洞ID为CSCdp08764)后没有邻居抖动。

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.3.1.6 (Serial2/0) is down:

metric changed

- K 值配置不正确或发生 graceful shutdown（正常关机）：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.4.1.5 (Ethernet1/0) is down:

K-value mismatch

- 发生正常关机：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:

Interface Goodbye received

- 接口上配置了 ip authentication mode eigrp 1 md5 命令：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.3 (Ethernet0/0) is down:

authentication mode changed

- 发生正常关机/不间断转发 (NSF)：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.2 (FastEthernet1) is resync:

peer graceful-restart

- 已向其发送查询但未收到应答的邻居被清除：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 192.168.1.16 (Serial3/0) is down:

stuck in active

网络问题

下列五种情况表明存在网络问题：

- 陷入主动状态 (SIA)

- 保持计时器超时

- 超过重试限制

- 对等体重新启动

- 收到 Hello 数据包前收到初次更新数据包

SIA

请参阅本文档的 SIA 部分。

保持计时器超时

保持计时器超时是指路由器在保持时间内未收到任何 EIGRP 数据包（无论是 EIGRP Hello 数据包，还是任何其他 EIGRP 数据包）。在这种情况下，有较大可能是链路出现问题。

请检查路由器是否在链路中收到 EIGRP Hello 数据包，以及是否收到邻居发送给它们的数据包。为了验证这一点，请输入debug eigrp packet hello命令。作为使用debug命令的替代方法，您可以ping IP地址224.0.0.10并验证该邻居是否应答。链路上出现组播问题的可能原因是接口问题，例如中间交换机阻止EIGRP Hello数据包。

您可以执行的其他快速测试包括，尝试执行使用其他组播 IP 地址的其他协议。例如：您可以配置使用组播 IP 地址 224.0.0.9 的路由信息协议 (RIP) 第 2 版。

超过重试限制

超过重试限制是指可靠 EIGRP 数据包多次未能确认。可靠的 EIGRP 数据包包括以下五种数据包类型：

- Update（更新）

- Query（查询）

- Reply（应答）

- SIA-Query（SIA 查询）

- SIA-Reply（SIA 应答）

可靠的 EIGRP 数据包已重传至少 16 次。每次重传超时 (RTO) 后，数据包都会重传。 RTO 的最小值为 200 毫秒，最大值为 5,000 毫秒。观察可靠 EIGRP 数据包的发送时间与确认接收时间之间的时间差，确认 RTO 是否动态增加或减少。在可靠数据包未能确认的情况下，RTO 会增加。如果这种情况持续存在，RTO 会迅速增加最多 5 秒，使重试时间限制达到 80 秒（16 x 5 秒）。但是，如果 EIGRP 保持时间大于 80 秒，在达到保持时间之前，邻居关系不会失效。例如，在默认保持时间为 180 秒的慢速 WAN 链路中，会出现这种情况。

在保持时间少于 80 秒的链路中，只要没有超过保持时间，RTO 增加必定是由 EIGRP Hello 数据包导致的。这会进而造成超过重试限制。这表示链路存在 MTU 问题或单播问题。EIGRP Hello 数据包很小，而且（第一个）EIGRP 更新数据包可能是整个 MTU。如果有足够的前缀来填充更新，则它可以是完整的MTU大小。可以通过接收EIGRP Hello数据包来获知邻居，但是如果未确认EIGRP更新数据包，则无法成功建立完全邻接关系。

这种情况下的常见输出示例如下：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:

retry limit exceeded

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is up:

new adjacency

注意：从Cisco Bug ID CSCsc72090开始，EIGRP也使用接口的IP MTU设置。在未修复此缺陷的情况下，如果将 IP MTU 配置为小于 1500 的值，EIGRP 数据包会被分段。此问题通常会出现在动态多点 VPN (DMVPN) 网络中。

第二种可能性是EIGRP Hello数据包之所以能成功，是因为它们通过组播发送到IP地址224.0.0.10。某些EIGRP更新数据包可以成功，因为它们可以采用组播。但是，重传的可靠 EIGRP 数据包一定会以单播方式传输。如果与邻居之间的单播数据路径中断，重传的可靠数据包将无法正确处理。要进行检查，可尝试 ping EIGRP 邻居单播 IP 地址（将 ping 的大小设置为链路的整个 MTU 大小，并设置不分段位 [DF-bit]）。

此外，单向链路也可能导致超过重试限制问题。EIGRP路由器可以接收EIGRP Hello数据包，但是从该邻居发送的数据包无法通过该链路。如果 Hello 数据包无法通过链路传输，路由器将不会发现 Hello 数据包，因为 Hello 数据包不是可靠数据包。无法确认发送的EIGRP更新数据包。

这样，EIGRP 可靠数据包或确认便会受到影响。通过发送带有应答验证的 ping 命令可以进行快速测试：

R1#ping

Protocol [ip]:

Target IP address: 10.1.1.2

Repeat count [5]: 10

Datagram size [100]:

Timeout in seconds [2]:

Extended commands [n]: y

Source address or interface:

Type of service [0]:

Set DF bit in IP header? [no]:

Validate reply data? [no]: yes

Data pattern [0xABCD]:

Loose, Strict, Record, Timestamp, Verbose[none]:

Sweep range of sizes [n]:

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 10.1.1.2, timeout is 2 seconds:

Reply data will be validated

!!!!!!!!!!

Success rate is 100 percent (10/10), round-trip min/avg/max = 1/24/152 ms

使用 debug eigrp packets 命令检查 EIGRP Hello 数据包的发送和接收情况，以及 EIGRP 更新数据包是否满足最低大小要求：

R1#debug eigrp packets ?

SIAquery  EIGRP SIA-Query packets

SIAreply  EIGRP SIA-Reply packets

ack       EIGRP ack packets

hello     EIGRP hello packets

ipxsap    EIGRP ipxsap packets

probe     EIGRP probe packets

query     EIGRP query packets

reply     EIGRP reply packets

request   EIGRP request packets

retry     EIGRP retransmissions

stub      EIGRP stub packets

terse     Display all EIGRP packets except Hellos

update    EIGRP update packets

verbose   Display all EIGRP packets

下面是 retry limit exceeded 问题的典型示例：

R2#show ip eigrp neighbors

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

(sec)         (ms)       Cnt Num

3   10.1.1.1                Et0/0             12 00:00:48    1  5000  1  0

2   10.1.1.3                Et0/0             12 02:47:13   22   200  0  339

1   10.2.1.4                Et1/0             12 02:47:13   24   200  0  318

0   10.2.1.3                Et1/0             12 02:47:13   20   200  0  338

注意：队列中始终有至少一个数据包（Q Cnt 不为零）。

R2#show ip eigrp neighbors detail

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

(sec)         (ms)       Cnt Num

3   10.1.1.1                Et0/0             10 00:00:59    1  5000  1  0

Version 12.4/1.2, Retrans: 12, Retries: 12, Waiting for Init, Waiting for Init Ack

UPDATE seq 349 ser 0-0 Sent 59472 Init Sequenced

2   10.1.1.3                Et0/0             11 02:47:23   22   200  0  339

Version 12.4/1.2, Retrans: 11, Retries: 0, Prefixes: 10

1   10.2.1.4                Et1/0             11 02:47:23   24   200  0  318

Version 12.4/1.2, Retrans: 10, Retries: 0, Prefixes: 8

0   10.2.1.3                Et1/0             10 02:47:23   20   200  0  338

Version 12.4/1.2, Retrans: 11, Retries: 0, Prefixes: 2

如输出所示，R2等待来自IP地址为10.1.1.1的邻居的第一个更新数据包(init bit set)。

在下一个输出中，R2等待来自IP地址为10.1.1.1的邻居的第一个更新数据包(init bit set)的确认。

注意：RTO 已达到最大值 5,000 毫秒，这表示未能在 5 秒内确认 EIGRP 可靠数据包。

R2#show ip eigrp neighbors detail

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

(sec)         (ms)       Cnt Num

3   10.1.1.1                Et0/0             11 00:01:17    1  5000  1  0

Version 12.4/1.2, Retrans: 16, Retries: 16, Waiting for Init, Waiting for Init Ack

UPDATE seq 349 ser 0-0 Sent 77844 Init Sequenced

2   10.1.1.3                Et0/0             12 02:47:42   22   200  0  339

Version 12.4/1.2, Retrans: 11, Retries: 0, Prefixes: 10

1   10.2.1.4                Et1/0             10 02:47:42   24   200  0  318

Version 12.4/1.2, Retrans: 10, Retries: 0, Prefixes: 8

0   10.2.1.3                Et1/0             11 02:47:42   20   200  0  338

Version 12.4/1.2, Retrans: 11, Retries: 0, Prefixes: 2

重传次数稳定增加，而且队列中始终存在相同的数据包 (seq 349)。 R2 发送该数据包 16 次后，邻居关系将会失效：

R2#

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:

retry limit exceeded

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is up:

new adjacency

相同的过程再次开始：

R2#show ip eigrp neighbors detail

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

(sec)         (ms)       Cnt Num

3   10.1.1.1                Et0/0             11 00:00:08    1  4500  1  0

Version 12.4/1.2, Retrans: 2, Retries: 2, Waiting for Init, Waiting for Init Ack

UPDATE seq 350 ser 0-0 Sent 8040 Init Sequenced

2   10.1.1.3                Et0/0             11 02:47:56   22   200  0  339

Version 12.4/1.2, Retrans: 11, Retries: 0, Prefixes: 10

1   10.2.1.4                Et1/0             10 02:47:56   24   200  0  318

Version 12.4/1.2, Retrans: 10, Retries: 0, Prefixes: 8

0   10.2.1.3                Et1/0             11 02:47:56   20   200  0  338

Version 12.4/1.2, Retrans: 11, Retries: 0, Prefixes: 2

debug eigrp packets terse 命令的输出显示，R2 反复发送同一个数据包：

注意：重试值增加，Flags值为0x1 ，并且已设置Init位。

R2#debug eigrp packets terse

EIGRP Packets debugging is on

(UPDATE, REQUEST, QUERY, REPLY, IPXSAP, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)

R2#

EIGRP: Sending UPDATE on Ethernet0/0 nbr 10.1.1.1, retry 14, RTO 5000

AS 1, Flags 0x1, Seq 350/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1

EIGRP: Sending UPDATE on Ethernet0/0 nbr 10.1.1.1, retry 15, RTO 5000

AS 1, Flags 0x1, Seq 350/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1

由于 Hello 数据包可以正常发送和接收，保持时间不会超时：

R2#debug eigrp packets hello

EIGRP Packets debugging is on

(HELLO)

EIGRP: Received HELLO on Ethernet0/0 nbr 10.1.1.1

AS 1, Flags 0x0, Seq 0/0 idbQ 0/0

对等体重新启动

如果您在一个路由器上观察到对等体反复重新启动，则表示该路由器从邻居处收到初始更新数据包。请注意收到的更新数据包中的 Flag 1。

R2#debug eigrp packets terse

EIGRP Packets debugging is on

(UPDATE, REQUEST, QUERY, REPLY, IPXSAP, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)

R2#

EIGRP: Received Sequence TLV from 10.1.1.1

10.1.1.2

address matched

clearing CR-mode

EIGRP: Received CR sequence TLV from 10.1.1.1, sequence 479

EIGRP: Received UPDATE on Ethernet0/0 nbr 10.1.1.1

AS 1, Flags 0xA, Seq 479/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0,

not in CR-mode, packet discarded

EIGRP: Received UPDATE on Ethernet0/0 nbr 10.1.1.1

AS 1, Flags 0x1, Seq 478/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:

peer restarted

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is up:

new adjacency

EIGRP: Enqueueing UPDATE on Ethernet0/0 nbr 10.1.1.1 iidbQ un/rely 0/1

peerQ un/rely 0/0

收到 Hello 数据包前收到初次更新数据包

下面提供了在收到 Hello 数据包前收到初始更新数据包的示例：

EIGRP: Received UPDATE on Ethernet0/0 nbr 10.1.1.2

AS 1, Flags 0x1, Seq 3/0 idbQ 0/0

EIGRP: Neighbor(10.1.1.2) not yet found

如果是在发生邻居抖动时遇到此问题，则属于正常情况。但是，如果此问题经常出现，则表示链路中能够正常进行单播，但组播遇到问题。换而言之，就是路由器能够收到单播更新数据包，但是未能收到 Hello 数据包。

其他问题

其他类型的问题包括：

- 配置更改

- 身份验证问题

- 主 IP 地址与辅助 IP 地址不匹配

- DMVPN 问题

这些问题将在后续章节中详细介绍。

配置更改

注意：如果您采用协商配置（no 命令），本节中使用的命令的运行结果不会有变化。

如果您在接口上配置了 Summary 语句（或 auto-summary），则会在路由器上看到如下消息：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.3 (Ethernet0/0) is resync:

summary configured

为 EIGRP 进程配置 global（全局）分发列表的命令示例如下：

R1(config-router)#distribute-list 1 out

R1(config-router)#

您会在路由器上看到如下消息：

注意：如果配置 distribute-list <> in，也会遇到同样的情况。

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.3 (Ethernet0/0) is resync:

route configuration changed

如果为 EIGRP 进程配置 interface 分发列表，所有 EIGRP 邻居都会失效：

R1(config-router)#distribute-list 1 out ethernet 0/0

在这种情况下，只有此接口上的 EIGRP 邻居关系会重置。

注意：在Cisco Bug ID CSCdy20284之后，邻居关系不会因手动更改（例如汇总和过滤器）而重置。

身份验证

您可能会遇到身份验证配置错误或缺失的情况。这可能会导致 EIGRP 邻居关系因为超过重试限制而失效。启用debug eigrp packets命令以确认导致问题的是消息摘要5(MD5)身份验证：

R1#debug eigrp packets

EIGRP Packets debugging is on

(UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, SIAQUERY,

SIAREPLY)

EIGRP: Ethernet0/0: ignored packet from 10.1.1.3, opcode = 1 (missing

authentication or key-chain missing)

主 IP 地址与辅助 IP 地址不匹配

EIGRP 从主 IP 地址发出 Hello 数据包和所有其他数据包。如果源 IP 地址处于接口的主 IP 地址范围或其中一个辅助 IP 地址范围内，即可从其他路由器上收到这些数据包。否则，您会收到如下错误消息（如果已启用 eigrp log-neighbor-warnings）：

IP-EIGRP(Default-IP-Routing-Table:1): Neighbor 10.1.1.2 not on common subnet

for Ethernet0/0

DMVPN

在 DMVPN 网络中，检查是否出现 IPSec 问题。如果加密不正确，IPSec 会导致 EIGRP 出现抖动问题：

show crypto ipsec sa

protected vrf:

local  ident (addr/mask/prot/port):  (10.10.110.1/255.255.255.255/47/0)

remote ident (addr/mask/prot/port):  (10.10.101.1/255.255.255.255/47/0)

current_peer: 144.23.252.1:500

PERMIT, flags={origin_is_acl,}

#pkts encaps: 190840467, #pkts encrypt: 190840467, #pkts digest 190840467

#pkts decaps: 158102457, #pkts decrypt: 158102457, #pkts verify 158102457

#pkts compressed: 0, #pkts decompressed: 0

#pkts not compressed: 0, #pkts compr. failed: 0

#pkts not decompressed: 0, #pkts decompress failed: 0

#send errors 5523, #recv errors 42

Flag 值的含义

EIGRP 数据包报头中有一个 32 位的 Flags 字段，了解各个 Flag 值的含义很有帮助。

- Flag 0x1 初始位

此 Flag 在初始更新数据包中设置。

EIGRP: Received UPDATE on Ethernet0/0 nbr 10.1.1.1

AS 1, Flags 0x1, Seq 478/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

- Flag 0x2

此 Flag 表示条件接收模式 (CR-mode)。 这是可靠的 EIGRP 组播过程的一部分，用于使尚未确认前一个可靠数据包的邻居获得一个共享链路。序列类型长度值(TLV)中的地址是对等体，必须忽略组播数据包，直到它们通过单播数据包赶上。

EIGRP: Received UPDATE on Ethernet0/0 nbr 10.1.1.2

AS 1, Flags 0x2, Seq 21/0 idbQ 1/0 iidbQ un/rely 0/0 peerQ un/rely 0/1,

not in CR-mode, packet discarded

- Flag 0x4

此 Flag 为重启位 (RS bit)。 如果链路中存在 NSF 信号，此 Flag 将在 Hello 数据包和更新数据包中设置。能够识别 NSF 信号的路由器会查看此位来检测邻居路由器是否重启。这样，检测路由器将了解需要保持 EIGRP 邻接关系。重启路由器也会查看此 Flag 来确定是否对等体会帮助执行重启。

EIGRP: Received HELLO on Ethernet0/0 nbr 10.1.1.2

AS 1, Flags 0x4, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

- Flag 0x8

此 Flag 为表尾 (EOT) 位，用于指示已将完整的路由表发送至邻居。支持 NSF 的路由器会查看此位来确定邻居路由器是否完成重启。支持 NSF 的路由器会等待此位，再判定重启路由器的路由是否失效且需要删除。

EIGRP: Received UPDATE on Ethernet0/0 nbr 10.1.1.2

AS 1, Flags 0x8, Seq 4/33 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1

EIGRP: NSF: AS1. Receive EOT from 10.1.1.2

Flag（标记）以十六进制数字表示，Flag 0x5 表示设置了 Flag 4 和 Flag 1，Flag 0x9 表示设置了 Flag 8 和 Flag 1，Flag 0xA 表示设置了 Flag 8 和 Flag 2。

您可以使用以下命令来排查邻居抖动问题：

- show eigrp interface detail

- show ip eigrp neighbor detail

- ping unicast

- ping with size full MTU

- 使用验证应答数据执行ping

- ping multicast

- debug eigrp packet (hello)

- show ip eigrp traffic

- show ip traffic | begin EIGRP

SIA

本节概括介绍 SIA 状态、一些可能的症状和原因，以及相应的故障排除方法。

SIA 的定义

SIA 状态意味着 EIGRP 路由器在分配的时间内（约三分钟）未收到一个或多个邻居的查询应答。 发生这种情况时，EIGRP会清除未发送回复的邻居，并为进入活动状态的路由记录“DUAL-3-SIA”错误消息。

症状

在一个或多个路由器上看到以下消息：

%DUAL-3-SIA: Route 10.100.1.1/32 stuck-in-active state in IP-EIGRP(0) 1.  Cleaning up

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 192.168.1.6 (Serial3/0) is down:

stuck in active

如果这种情况只是偶然发生，可不必在意。如果这种情况频繁发生，则表示存在持续的网络问题。

可能的原因

以下是可能导致 SIA 状态的部分原因：

- 链路抖动

- 链路故障

- 路由抖动

- 链路拥塞

- 网络直径较大（查询范围大）

- 内存不足

- 高 CPU 利用率

- 配置错误（带宽值错误）

故障排除提示

如果出现 SIA 问题，则说明网络中的某个位置出现问题，但具体的原因可能很难发现。确定这类问题有两个途径：

1. 查看持续返回 SIA 状态的路由的前缀，找出共同点。

2. 找出一直未能应答这些路由查询的路由器。

确定返回 SIA 状态的路由的前缀是否存在共同点。例如，它们都可以是来自网络边缘的/32路由（例如在拨号网络中）。 如果是，它可以指出问题在网络中的位置（即这些前缀的源头）。

如果下游路由器未处于 SIA 状态，您最终必须找出一个或多个路由器发出查询但未收到应答的位置。例如，路由器可以发送查询而且已被确认，但未收到下游路由器的应答。

使用 show ip eigrp topology active 命令，可以对 SIA 问题进行故障排除。在命令输出中寻找小写字母 r。它表示路由器正在查询来自该邻居的前缀并等待应答。

下面是一个示例。查看拓扑。链路 R1-R6 和 R1-R5 已关闭。当路由器 R1 的环回接口关闭时，R1 会向 R2 和 R3 发送对前缀 10.100.1.1/32 的查询。 对于此前缀，路由器 R1 当前处于活动状态。路由器R2和R3依次主动查询，路由器R4主动向R5发送查询。路由器R5最终主动向R6发送查询。路由器R6必须向R5返回应答。路由器R5被动回复R4,R4反过来被动回复R2和R3。最后，R2和R3被动回复R1，再次被动。

如果遇到问题，路由器会长时间保持活动状态，因为它必须等待应答。为了防止路由器等待永远无法接收的应答，路由器可以声明SIA并终止等待应答的邻居关系。要排查问题原因，请查看 show ip eigrp topology active 命令出中，小写 r 以后的内容。

下面是路由器 R1 的输出：

R1#show ip eigrp topology active

IP-EIGRP Topology Table for AS 1)/ID(10.100.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

A 10.100.1.1/32, 1 successors, FD is Inaccessible

1 replies, active 00:01:11, query-origin: Local origin

via Connected (Infinity/Infinity), Loopback0

Remaining replies:

via 10.1.1.2, r, Ethernet0/0

路由器 R1 处于活动状态，正在等待 R2 的应答。 下面是路由器 R2 的输出：

R2#show ip eigrp topology active

IP-EIGRP Topology Table for AS(1)/ID(10.100.1.2)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

A 10.100.1.1/32, 1 successors, FD is Inaccessible

1 replies, active 00:01:01, query-origin: Successor Origin

via 10.1.1.1 (Infinity/Infinity), Ethernet0/0

via 10.2.1.4 (Infinity/Infinity), r, Ethernet1/0, serno 524

via 10.2.1.3 (Infinity/Infinity), Ethernet1/0, serno 523

路由器 R2 处于活动状态，正在等待 R4 的应答。 下面是路由器 R4 的输出：

R4#show ip eigrp topology active

IP-EIGRP Topology Table for AS(1)/ID(10.100.1.4)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

A 10.100.1.1/32, 1 successors, FD is Inaccessible

1 replies, active 00:00:56, query-origin: Successor Origin

via 10.2.1.2 (Infinity/Infinity), Ethernet1/0

via 172.16.1.5 (Infinity/Infinity), r, Serial2/0, serno 562

via 10.2.1.3 (Infinity/Infinity), Ethernet1/0, serno 560

路由器 R4 处于活动状态，正在等待 R5 的应答。 下面是路由器 R5 的输出：

R5#show ip eigrp topology active

IP-EIGRP Topology Table for AS(1)/ID(172.16.1.5)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

A 10.100.1.1/32, 1 successors, FD is Inaccessible, Q

1 replies, active 00:00:53, query-origin: Successor Origin

via 172.16.1.4 (Infinity/Infinity), Serial2/0

Remaining replies:

via 192.168.1.6, r, Serial3/0

路由器 R5 处于活动状态，正在等待 R6 的应答。 下面是路由器 R6 的输出：

R6#show ip eigrp topology active

IP-EIGRP Topology Table for AS(1)/ID(192.168.1.6)

R6#

如图所示，路由器R6的前缀未处于活动状态，因此问题必然发生在路由器R5和R6之间。一段时间后，您会看到R5终止了与R6的邻居关系并声明了SIA状态：

R5#

%DUAL-3-SIA: Route 10.100.1.1/32 stuck-in-active state in IP-EIGRP(0) 1.

Cleaning up

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 192.168.1.6 (Serial3/0) is down:

stuck in active

通过查看路由器 R5 的输出，可以看到它与 R6 之间的链路出现问题。

我们提供的是新版 SIA 代码，SIA 出现在问题所在位置附近的路由器上。在本例中，这是路由器R5和R6之间的链路。在较早的代码版本中，可以在路径上的任何路由器（如R2上）上声明SIA，该路径可能远离问题。这是因为 SIA 计时器设置为三分钟，整个路径中的任何路由器都有可能先进入 SIA 状态，并终止邻居关系。 而在新版代码中，等待应答的路由器会直接向邻居发送 SIA 查询，而邻居会直接做出 SIA 应答。例如，路由器 R4 在处于活动状态时，会向 R5 发送 SIA 查询，R5 会做出 SIA 应答。

R5#

EIGRP: Received SIAQUERY on Serial2/0 nbr 172.16.1.4

AS 1, Flags 0x0, Seq 456/447 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

EIGRP: Enqueueing SIAREPLY on Serial2/0 nbr 172.16.1.4 iidbQ un/rely 0/1

peerQ un/rely 0/0 serno 374-374

EIGRP: Sending SIAREPLY on Serial2/0 nbr 172.16.1.4

AS 1, Flags 0x0, Seq 448/456 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1

serno 374-374

路由器R5也向R6发送SIA查询，但它不会收到来自R6的SIA应答。

R5#

EIGRP: Enqueueing SIAQUERY on Serial3/0 nbr 192.168.1.6 iidbQ un/rely 0/2

peerQ un/rely 5/0 serno 60-60

当路由器发出 SIA 查询但未收到 SIA 应答时，路由器就会对该邻居显示 s：

R5#show ip eigrp topology active

IP-EIGRP Topology Table for AS(1)/ID(172.16.1.5)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

A 10.100.1.1/32, 1 successors, FD is Inaccessible, Qqr

1 replies, active 00:02:36, query-origin: Successor Origin, retries(1)

via 1172.16.1.4 (Infinity/Infinity), Serial2/0, serno 61

via 192.168.1.6 (Infinity/Infinity), rs, q, Serial3/0, serno 60, anchored

使用新的SIA代码时，当路由器R5未收到SIA应答时，必须在R5上声明SIA。然后必须启用这两个EIGRP SIA数据包的调试：

R2#debug eigrp packets SIAquery SIAreply

EIGRP Packets debugging is on

(SIAQUERY, SIAREPLY)

R2#show debug

EIGRP:

EIGRP Packets debugging is on

(SIAQUERY, SIAREPLY)

总而言之，您可以使用以下命令对 SIA 问题进行故障排除：

- show ip eigrp topology active

- show ip eigrp event（可能会增加事件日志的大小）

- show ip eigrp traffic（搜索多个 SIA 查询和 SIA 应答）

- show proc mem

- show mem sum

下面是一些可能有助于解决 SIA 问题的解决方案：

- 修复链路问题。

- 在具有多个前缀或查询范围较广的网络中应用汇总（手动或自动）。

- 使用分发列表来缩小查询范围。

- 将远程路由器定义为 Stub（末节）路由器。

缺少前缀

缺少前缀问题分为两种类型：那些在路由表或路由信息库 (RIB) 中丢失的前缀，以及在拓扑表中丢失的前缀。

RIB 中缺少前缀

RIB 中缺少前缀的原因有以下几种：

- 前缀由具有更短管理距离的其他路由协议添加到路由表。

- 分发列表阻止前缀。

- 水平分割阻止前缀。

前缀由具有更短管理距离的路由协议添加

在下面的示例中，前缀由具有更短管理距离的静态路由或路由协议添加到路由表。

在这种情况下，虽然前缀存在于拓扑表中，但是通常没有后继。您可以使用 show ip eigrp topology zero-successors 命令查看所有此类条目。可行距离(FD)必须具有无限值。

要解决此问题，请输入 show ip route<prefix> 命令，确认在 RIB 中拥有该路由的路由协议：

R1#show ip eigrp topology 192.168.100.6 255.255.255.255

IP-EIGRP (AS 1): Topology entry for 192.168.100.6/32

State is Passive, Query origin flag is 1, 0 Successor(s), FD is 4294967295

Routing Descriptor Blocks:

10.3.1.6 (Serial2/0), from 10.3.1.6, Send flag is 0x0

Composite metric is (2297856/128256), Route is Internal

Vector metric:

Minimum bandwidth is 1544 Kbit

Total delay is 25000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 1

R1#show ip eigrp topology zero-successors

IP-EIGRP Topology Table for AS(1)/ID(10.100.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

P 192.168.1.0/24, 0 successors, FD is Inaccessible

via 10.3.1.6 (2681856/2169856), Serial2/0

P 192.168.100.6/32, 0 successors, FD is Inaccessible

via 10.3.1.6 (2297856/128256), Serial2/0

分发列表阻止前缀

EIGRP 是距离矢量路由协议。您可以使用任何路由器的分发列表来阻止前缀。可以在接口上使用它来停止前缀传输或接收，也可以在路由器EIGRP进程下全局配置distribute-list，以便在所有启用EIGRP的接口上应用路由过滤器。

例如：

R1#show running-config | begin router eigrp

router eigrp 1

network 10.0.0.0

distribute-list 1 in

no auto-summary

!

access-list 1 deny   192.168.100.6

access-list 1 permit any

拓扑表中缺少前缀

本节介绍拓扑表中缺少前缀的部分原因。

为确保命令正确输出所应遵循的掩码规范

一个需要避免的常见错误是，在验证拓扑表中的前缀时，需始终指定掩码。如果未指定掩码，则会看到以下消息：

R1#show ip eigrp topology 192.168.100.6

% IP-EIGRP (AS 1): Route not in topology table

在指定了掩码的情况下，show ip eigrp topology 命令的输出如下所示：

R1#show ip eigrp topology 192.168.100.6 255.255.255.255

IP-EIGRP (AS 1): Topology entry for 192.168.100.6/32

State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2297856

Routing Descriptor Blocks:

10.3.1.6 (Serial2/0), from 10.3.1.6, Send flag is 0x0

Composite metric is (2297856/128256), Route is Internal

Vector metric:

Minimum bandwidth is 1544 Kbit

Total delay is 25000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 1

10.4.1.5 (Ethernet1/0), from 10.4.1.5, Send flag is 0x

Composite metric is (2323456/2297856), Route is Internal

Vector metric:

Minimum bandwidth is 1544 Kbit

Total delay is 26000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 2

可以看到，前缀已存在于路由表中。

水平分割阻止前缀

本节介绍另一个常见错误。EIGRP 不是链路状态路由协议，而是一种距离矢量路由协议。因此，为了使弥散更新算法 (DUAL) 正确工作，必须使用拓扑表，这就需要具备数据库。之所以需要使用拓扑表，是因为路由表中只添加了最佳路由，而 DUAL 也需要监控可行路由。这些路由存储在拓扑表中。

拓扑表中必须始终包含后继路由和可行路由。否则，就会出现 bug。但是，拓扑表中也会添加所有已收到的非可行路由。如果这类路由不是从邻居收到的，则会使用水平分割来阻止该前缀。

show ip eigrp topology 命令的输出仅显示指向后继路由和可行后继路由的前缀条目。如果要查看经由所有路径收到的前缀（即也包括非可行路径），则需要改为使用 show  ip eigrp topology all-links 命令。

例如：

R1#show ip eigrp topology

IP-EIGRP Topology Table for AS(1)/ID(10.100.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

P 10.3.1.0/24, 1 successors, FD is 2169856

via Connected, Serial2/0

P 10.2.1.0/24, 2 successors, FD is 307200

via 10.1.1.2 (307200/281600), Ethernet0/0

via 10.1.1.3 (307200/281600), Ethernet0/0

P 10.1.1.0/24, 1 successors, FD is 281600

via Connected, Ethernet0/0

P 172.16.1.0/24, 1 successors, FD is 2195456

via 10.4.1.5 (2195456/2169856), Ethernet1/0

P 192.168.1.0/24, 1 successors, FD is 2195456

via 10.4.1.5 (2195456/2169856), Ethernet1/0

via 10.3.1.6 (2681856/2169856), Serial2/0

P 10.4.1.0/24, 1 successors, FD is 281600

via Connected, Ethernet1/0

P 172.16.100.5/32, 1 successors, FD is 409600

via 10.4.1.5 (409600/128256), Ethernet1/0

P 10.100.1.4/32, 2 successors, FD is 435200

via 10.1.1.2 (435200/409600), Ethernet0/0

via 10.1.1.3 (435200/409600), Ethernet0/0

P 10.100.1.3/32, 1 successors, FD is 409600

via 10.1.1.3 (409600/128256), Ethernet0/0

P 10.100.1.2/32, 1 successors, FD is 409600

via 10.1.1.2 (409600/128256), Ethernet0/0

P 10.100.1.1/32, 1 successors, FD is 128256

via Connected, Loopback0

P 192.168.100.6/32, 1 successors, FD is 2297856

via 10.3.1.6 (2297856/128256), Serial2/0

在下面的输出中，您可以看到命令的 all-links 部分包括多个路径：

R1#show ip eigrp topology all-links

IP-EIGRP Topology Table for AS(1)/ID(10.100.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

P 10.3.1.0/24, 1 successors, FD is 2169856, serno 43

via Connected, Serial2/0

P 10.2.1.0/24, 2 successors, FD is 307200, serno 127

via 10.1.1.2 (307200/281600), Ethernet0/0

via 10.1.1.3 (307200/281600), Ethernet0/0

P 10.1.1.0/24, 1 successors, FD is 281600, serno 80

via Connected, Ethernet0/0

P 172.16.1.0/24, 1 successors, FD is 2195456, serno 116

via 10.4.1.5 (2195456/2169856), Ethernet1/0

via 10.3.1.6 (3193856/2681856), Serial2/0

via 10.1.1.2 (2221056/2195456), Ethernet0/0

via 10.1.1.3 (2221056/2195456), Ethernet0/0

P 192.168.1.0/24, 1 successors, FD is 2195456, serno 118

via 10.4.1.5 (2195456/2169856), Ethernet1/0

via 10.3.1.6 (2681856/2169856), Serial2/0

P 10.4.1.0/24, 1 successors, FD is 281600, serno 70

via Connected, Ethernet1/0

P 172.16.100.5/32, 1 successors, FD is 409600, serno 117

via 10.4.1.5 (409600/128256), Ethernet1/0

via 10.3.1.6 (2809856/2297856), Serial2/0

P 10.100.1.4/32, 2 successors, FD is 435200, serno 128

via 10.1.1.2 (435200/409600), Ethernet0/0

via 10.1.1.3 (435200/409600), Ethernet0/0

P 10.100.1.3/32, 1 successors, FD is 409600, serno 115

via 10.1.1.3 (409600/128256), Ethernet0/0

P 10.100.1.2/32, 1 successors, FD is 409600, serno 109

via 10.1.1.2 (409600/128256), Ethernet0/0

P 10.100.1.1/32, 1 successors, FD is 128256, serno 4

via Connected, Loopback0

P 192.168.100.6/32, 1 successors, FD is 2297856, serno 135

via 10.3.1.6 (2297856/128256), Serial2/0

via 10.4.1.5 (2323456/2297856), Ethernet1/0

请注意上面的输出中的最后一个前缀，通过 10.4.1.5 建立的路径有 (2323456/2297856)。 报告的距离（通告指标）为 2297856，不小于 FD 2297856，因此该路径不可行。

P 192.168.100.6/32, 1 successors, FD is 2297856, serno 135

via 10.3.1.6 (2297856/128256), Serial2/0

via 10.4.1.5 (2323456/2297856), Ethernet1/0

下面是水平分割导致路径从路由的拓扑表中排除的示例。如果查看拓扑，可以看到路由器 R1 通过拓扑表中的 R6 和 R5 收到前缀 192.168.100.6/32，而不是通过 R2 或 R3 收到该前缀：

R1#show ip eigrp topology 192.168.100.6 255.255.255.255

IP-EIGRP (AS 1): Topology entry for 192.168.100.6/32

State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2297856

Routing Descriptor Blocks:

10.3.1.6 (Serial2/0), from 10.3.1.6, Send flag is 0x0

Composite metric is (2297856/128256), Route is Internal

Vector metric:

Minimum bandwidth is 1544 Kbit

Total delay is 25000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 1

10.4.1.5 (Ethernet1/0), from 10.4.1.5, Send flag is 0x0

Composite metric is (2323456/2297856), Route is Internal

Vector metric:

Minimum bandwidth is 1544 Kbit

Total delay is 26000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 2

这是因为路由器R1从未通过R2或R3收到前缀192.168.100.6/32，因为它在路由表中通过R1收到前缀192.168.100.6/32。

R2#show ip route 192.168.100.6 255.255.255.255

Routing entry for 192.168.100.6/32

Known via "eigrp 1", distance 90, metric 2323456, type internal

Redistributing via eigrp 1

Last update from 10.1.1.1 on Ethernet0/0, 00:02:07 ago

Routing Descriptor Blocks:

* 10.1.1.1, from 10.1.1.1, 00:02:07 ago, via Ethernet0/0

Route metric is 2323456, traffic share count is 1

Total delay is 26000 microseconds, minimum bandwidth is 1544 Kbit

Reliability 255/255, minimum MTU 1500 bytes

Loading 1/255, Hops 2

R3#show ip route 192.168.100.6 255.255.255.255

Routing entry for 192.168.100.6/32

Known via "eigrp 1", distance 90, metric 2323456, type internal

Redistributing via eigrp 1

Last update from 10.1.1.1 on Ethernet0/0, 00:01:58 ago

Routing Descriptor Blocks:

* 10.1.1.1, from 10.1.1.1, 00:01:58 ago, via Ethernet0/0

Route metric is 2323456, traffic share count is 1

Total delay is 26000 microseconds, minimum bandwidth is 1544 Kbit

Reliability 255/255, minimum MTU 1500 bytes

Loading 1/255, Hops 2

要确认这一点，可在查看拓扑表时对 R1 使用 all-links 关键字。这样即可显示所有前缀的所有路径，包括非可行路径。您会看到，R1 没有从 R2 或 R3 收到前缀 192.168.100.6/32。

指标

注意：MTU 和跳数未包含在指标计算中。

计算路由的路径指标所使用的公式具体如下：

- 如果 K5 不等于零：

EIGRP 指标 = 256*(((K1*带宽) + (K2*带宽)/(256-负载) + (K3*延迟))*(K5/(可读性 + K4)))

- 如果 K5 等于零：

EIGRP 指标 = 256*((K1*带宽) + (K2*带宽)/(256-负载) + (K3*延迟))

K 值是用于对 EIGRP 指标的 4 个参数进行加权的加权值，即：延迟、带宽、可读性和负载。默认的 K 值具体如下：

- K1 = 1

- K2 = 0

- K3 = 1

- K4 = 0

- K5 = 0

使用默认K值（仅使用带宽和延迟），公式变为：

EIGRP 指标 = 256 * (带宽 + 延迟)

带宽 = (10^7/最小带宽 [kb/秒])

注意：延迟值以 10 倍的微秒数纳入算式，但是在接口上测得的延迟值以毫秒为单位。

使用 show interface 命令可以确认全部 4 个参数：

R1#show interface et 0/0

Ethernet0/0 is up, line protocol is up

Hardware is AmdP2, address is aabb.cc00.0100 (bia aabb.cc00.0100)

Internet address is 10.1.1.1/24

MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation ARPA, loopback not set  Keepalive set (10 sec)

ARP type: ARPA, ARP Timeout 04:00:00  Last input 00:00:02, output 00:00:02,

output hang never

Last clearing of "show interface" counters never

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0

Queueing strategy: fifo

Output queue: 0/40 (size/max)

5 minute input rate 0 bits/sec, 0 packets/sec

5 minute output rate 0 bits/sec, 0 packets/sec

789 packets input, 76700 bytes, 0 no buffer

Received 707 broadcasts, 0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 input packets with dribble condition detected

548 packets output, 49206 bytes, 0 underruns

0 output errors, 0 collisions, 1 interface resets

0 unknown protocol drops

0 babbles, 0 late collision, 0 deferred

0 lost carrier, 0 no carrier

0 output buffer failures, 0 output buffers swapped out

延迟值按累积值计算，也就是说，您需要将路径中每条链路的延迟值加在一起。带宽值不累积，公式中使用的带宽为路径中任何链路的最小带宽。

路由器 ID 重复

要查看 EIGRP 使用的路由器 ID，请在路由器上输入 show ip eigrp topology 命令，并查看输出的第一行：

R1#show ip eigrp topology

IP-EIGRP Topology Table for AS(1)/ID(10.100.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

r - reply Status, s - sia Status

P 10.3.1.0/24, 1 successors, FD is 2169856

via Connected, Serial2/0

在较早的 Cisco IOS 版本中，EIGRP 路由器 ID 在所有内部路由中均未使用。如果仅使用内部路由，则EIGRP的路由器ID重复一定不会导致任何问题。在较新版本的 Cisco IOS 软件中，EIGRP 内部路由会包含 EIGRP 路由器 ID 信息。

外部路由的路由器 ID 可以通过以下命令输出进行确认：

R1#show ip eigrp topology 192.168.1.4 255.255.255.255

IP-EIGRP (AS 1): Topology entry for 192.168.1.4/32

State is Passive, Query origin flag is 1, 2 Successor(s), FD is 435200

Routing Descriptor Blocks:

10.1.1.2 (Ethernet0/0), from 10.1.1.2, Send flag is 0x0

Composite metric is (435200/409600), Route is External

Vector metric:

Minimum bandwidth is 10000 Kbit

Total delay is 7000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 2

External data&colon;

Originating router is 10.100.1.4

AS number of route is 0

External protocol is Connected, external metric is 0

Administrator tag is 0 (0x00000000)

如果（外部）EIGRP 路由与收到该路由的路由器具有相同的 EIGRP 路由器 ID，路由器不会生成日志条目，但是 EIGRP 事件日志会捕捉到这个信息。在检查（外部）EIGRP 路由时，它不会显示在拓扑表中。

查看 EIGRP 事件日志可确认可能存在的路由器 ID 重复问题：

R1#show ip eigrp events

Event information for AS 1:

1    08:36:35.303 Ignored route, metric: 10.33.33.33 3347456

2    08:36:35.303 Ignored route, neighbor info: 10.3.1.6 Serial2/1

3    08:36:35.303 Ignored route, dup router: 10.100.1.1

4    08:36:35.303 Rcv EOT update src/seq: 10.3.1.6 143

5    08:36:35.227 Change queue emptied, entries: 2

6    08:36:35.227 Route OBE net/refcount: 10.100.1.4/32 3

7    08:36:35.227 Route OBE net/refcount: 10.2.1.0/24 3

8    08:36:35.227 Metric set: 10.100.1.4/32 435200

9    08:36:35.227 Update reason, delay: nexthop changed 179200

10   08:36:35.227 Update sent, RD: 10.100.1.4/32 435200

11   08:36:35.227 Route install: 10.100.1.4/32 10.1.1.3

12   08:36:35.227 Route install: 10.100.1.4/32 10.1.1.2

13   08:36:35.227 RDB delete: 10.100.1.4/32 10.3.1.6

K 值不匹配/正常关机

当 K 值与邻居路由器上的 K 值不同时，可以看到如下消息：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.4.1.5 (Ethernet1/0) is down:

K-value mismatch

使用下面的命令可以配置 K 值（可用的 K 值范围介于 0 到 255 之间）：

metric weights tos k1 k2 k3 k4 k5

!

router eigrp 1

network 10.0.0.0

metric weights 0 1 2 3 4 5

!

上面的消息表明，由于 K 值不匹配，EIGRP 邻居关系未建立。在同一个自治系统中，所有 EIGRP 路由器的 K 值必须相同，以防不同的路由器之间指标计算不一致造成路由问题。

要进行故障排除，可以检查邻居路由器上的 K 值是否相同。如果K值相同，则问题可能由EIGRP平滑关闭功能引起。在这种情况下，路由器会发送 K 值为 255 的 EIGRP Hello 数据包，有意造成 K 值不匹配，这表示邻居EIGRP路由器已关闭。在邻居路由器上，您可以看到如下 goodbye message：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:

Interface Goodbye received

但是，如果邻居路由器运行较早版本的软件（含有思科 bug ID CSCdr96531 的版本），则不会将此消息视为正常关机消息，而是视为 K 值不匹配消息：

%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.4.1.5 (Ethernet1/0) is down:

K-value mismatch

此消息与邻居路由器上真正出现 K 值不匹配问题时的消息完全相同。

以下情况会触发正常关机：

- 输入 no router eigrp 命令。

- 输入 no network 命令。

- 输入 clear ip eigrp neighbor 命令。

- 路由器重新加载。

使用正常关机功能是为了更快检测到邻居关闭状态。如果不使用正常关机，路由器必须等待保持时间结束，才会声明邻居已关闭。

非等价负载均衡（差异）

在使用 variance 命令，但指定必须同时满足差异和可行性条件时，EIGRP 中可能会发生非等价负载均衡。

差异条件表示路由指标不超过最佳指标乘以差异值。要使路由被视为可行路由，该路由的报告距离必须小于可行距离 (FD)。 例如：

!

router eigrp 1

variance 2

network 10.0.0.0

no auto-summary

!

路由器 R1 上配置了 variance 2。这意味着，如果路由器具有另一条路由路径，其度量不大于该路由最佳度量的两倍，则该路由必须存在不等价负载均衡。

R1#show ip eigrp topology 172.16.100.5 255.255.255.255

IP-EIGRP (AS 1): Topology entry for 172.16.100.5/32

State is Passive, Query origin flag is 1, 1 Successor(s), FD is 409600

Routing Descriptor Blocks:

10.4.1.5 (Ethernet1/0), from 10.4.1.5, Send flag is 0x0

Composite metric is (409600/128256), Route is Internal

Vector metric:

Minimum bandwidth is 10000 Kbit

Total delay is 6000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 1

10.3.1.6 (Serial2/0), from 10.3.1.6, Send flag is 0x0

Composite metric is (435200/409600), Route is Internal <<< RD = 409600

Vector metric:

Minimum bandwidth is 10000 Kbit

Total delay is 7000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 2

如果路由表中添加了第二个拓扑条目，第二个拓扑条目的指标为 435200。 由于最佳指标的两倍为 819200 (2 x 409600)，而 435200 < 819200，所以第二个拓扑条目在差异范围内。第二个拓扑条目的报告距离为 409600，不小于 FD 409600， 因此第二个条件（可行性）未满足，所以第二个拓扑条目不会添加到 RIB。

R1#show ip route 172.16.100.5

Routing entry for 172.16.100.5/32

Known via "eigrp 1", distance 90, metric 409600, type internal

Redistributing via eigrp 1

Last update from 10.4.1.5 on Ethernet1/0, 00:00:16 ago

Routing Descriptor Blocks:

* 10.4.1.5, from 10.4.1.5, 00:00:16 ago, via Ethernet1/0

Route metric is 409600, traffic share count is 1

Total delay is 6000 microseconds, minimum bandwidth is 10000 Kbit

Reliability 255/255, minimum MTU 1500 bytes

Loading 1/255, Hops 1

如果第二个拓扑条目的 RD 小于 FD（如下面的示例所示），则应存在非等价负载均衡。

R1#show ip eigrp topology 172.16.100.5 255.255.255.255

IP-EIGRP (AS 1): Topology entry for 172.16.100.5/32

State is Passive, Query origin flag is 1, 1 Successor(s), FD is 409600

Routing Descriptor Blocks:

10.4.1.5 (Ethernet1/0), from 10.4.1.5, Send flag is 0x0

Composite metric is (409600/128256), Route is Internal

Vector metric:

Minimum bandwidth is 10000 Kbit

Total delay is 6000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 1

10.3.1.6 (Serial2/0), from 10.3.1.6, Send flag is 0x0

Composite metric is (434944/409344), Route is Internal <<< RD = 409344

Vector metric:

Minimum bandwidth is 10000 Kbit

Total delay is 6990 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 2

这样，两个拓扑条目都会添加到路由表中：

R1#show ip route 172.16.100.5

Routing entry for 172.16.100.5/32

Known via "eigrp 1", distance 90, metric 409600, type internal

Redistributing via eigrp 1

Last update from 10.3.1.6 on Serial2/0, 00:00:26 ago

Routing Descriptor Blocks:

* 10.4.1.5, from 10.4.1.5, 00:00:26 ago, via Ethernet1/0

Route metric is 409600, traffic share count is 120

Total delay is 6000 microseconds, minimum bandwidth is 10000 Kbit

Reliability 255/255, minimum MTU 1500 bytes

Loading 1/255, Hops 1

10.3.1.6, from 10.3.1.6, 00:00:26 ago, via Serial2/0

Route metric is 434944, traffic share count is 113

Total delay is 6990 microseconds, minimum bandwidth is 10000 Kbit

Reliability 255/255, minimum MTU 1500 bytes

Loading 1/255, Hops 2

静态邻居

EIGRP 支持在同一个接口上配置一个或多个静态邻居。一旦在接口上配置了一个静态EIGRP邻居，路由器便不再在该接口上将EIGRP数据包作为组播发送，也不再处理收到的组播EIGRP数据包。这意味着 Hello 数据包、更新数据包和查询数据包都将以单播方式处理。除非使用 static neighbor 命令在该接口上显式配置其他邻居，否则无法建立其他邻居关系。

配置静态 EIGRP 邻居的命令如下所示：

router eigrp 1

passive-interface Loopback0

network 10.0.0.0

no auto-summary

neighbor 10.1.1.1 Ethernet0/0

!

如果链路两侧的路由器都配置了 static neighbor 命令，邻居关系便会建立：

R1#show ip eigrp neighbors detail

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

(sec)         (ms)       Cnt Num

1   10.1.1.2                Et0/0             14 00:00:23   27   200  0  230

Static neighbor

Version 12.4/1.2, Retrans: 0, Retries: 0, Prefixes: 1

0   10.3.1.6                Se2/0             14 1d02h      26   200  0  169

Version 12.4/1.2, Retrans: 0, Retries: 0, Prefixes: 12

3   10.4.1.5                Et1/0             10 1d02h      16   200  0  234

Version 12.4/1.2, Retrans: 0, Retries: 0, Prefixes: 7

如果只有一个路由器配置了static neighbor命令，则可以观察到路由器忽略组播EIGRP数据包，而另一个路由器忽略单播EIGRP数据包：

R1#

EIGRP: Received HELLO on Ethernet0/0 nbr 10.1.1.2

AS 1, Flags 0x0, Seq 0/0 idbQ 0/0

EIGRP: Ignore multicast Hello Ethernet0/0 10.1.1.2

R2#

EIGRP: Received HELLO on Ethernet0/0 nbr 10.1.1.1

AS 1, Flags 0x0, Seq 0/0 idbQ 0/0

EIGRP: Ignore unicast Hello from Ethernet0/0 10.1.1.1

EIGRP 静态邻居有一个专用的调试命令：

R2#debug eigrp neighbors static

EIGRP Static Neighbors debugging is on

R2#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

R2(config)#router eigrp 1

R2(config-router)#neighbor 10.1.1.1 et 0/0

R2(config-router)#end

R2#

EIGRP: Multicast Hello is disabled on Ethernet0/0!

EIGRP: Add new static nbr 10.1.1.1 to AS 1 Ethernet0/0

以下是配置静态EIGRP邻居的一些原因：

- 您需要在非广播多路访问 (NBMA) 网络中限制或避免广播。

- 您需要在广播介质（以太网）中限制或避免组播。

- 用于进行故障排除（使用单播而非组播）。

警告：请勿同时配置 passive-interface 命令和 static EIGRP neighbor 命令。

静态路由重新分布

如果您对某个接口配置了静态路由，而该路由覆盖在路由 EIGRP 的网络语句之下，则 EIGRP 会将该静态路由视为已连接的路由并进行通告。在这种情况下无需使用 redistribute static 命令或默认指标。

router eigrp 1

network 10.0.0.0

network 172.16.0.0

no auto-summary

!

ip route 172.16.0.0 255.255.0.0 Serial2/0

!

R1#show ip eigrp top 172.16.0.0 255.255.0.0

IP-EIGRP (AS 1): Topology entry for 172.16.0.0/16

State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2169856

Routing Descriptor Blocks:

0.0.0.0, from Rstatic, Send flag is 0x0

Composite metric is (2169856/0), Route is Internal

Vector metric:

Minimum bandwidth is 1544 Kbit

Total delay is 20000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 0

用于度量值计算的可读性和负载参数

警告：请不要使用可读性和/或负载参数来计算指标。

可读性和负载参数显示在 show interface 命令输出中。当负载和可读性发生变化时，这些参数不会动态更新。所以即使负载和可读性发生变化，也不会使指标即时变化。只有当EIGRP由于负载和可靠性的拓扑变化而决定向邻居发送更新时，才能传播更新。此外，如果执行自适应路由，使用负载和可读性参数计算指标会造成计算不稳定。如果您希望根据流量负载更改路由，则必须考虑使用多协议标签交换(MPLS)流量工程或性能路由(PfR)。

高 CPU 利用率

EIGRP 会同时运行三个进程：

1. 路由器 (Router)：此进程会占用共享内存池。

2. Hello：这个进程发送和接收 Hello 数据包，并维护对等连接。

3. 协议相关模块 (PDM)：EIGRP 支持四个协议套件。IP、IPv6、IPX 和 AppleTalk。每个协议族都有各自的 PDM。PDM 的主要功能具体如下：

- 维护属于该协议族的 EIGRP 路由器的邻居表和拓扑表。

- 为 DUAL（EIGRP 数据包的发送和接收）创建和转换协议特定的数据包。

- 将 DUAL 关联到协议特定的路由表。

- 计算指标，并将信息传送到 DUAL（DUAL 仅提取后继路由器和可行后继路由器的信息）。

- 实施过滤和访问列表。

- 对其他路由协议执行重分布功能。

下面是包含全部三个进程的示例输出：

R1#show process cpu | include EIGRP

89           4        24        166  0.00%  0.00%  0.00%   0 IP-EIGRP Router

90        1016      4406        230  0.00%  0.03%  0.00%   0 IP-EIGRP: PDM

91        2472      6881        359  0.00%  0.07%  0.08%   0 IP-EIGRP: HELLO

EIGRP 造成的高 CPU 利用率并不正常。如果出现这种情况，可能是因为 EIGRP 执行的任务过多或者 EIGRP 中出现 bug。如果是第一种情况，可以检查拓扑表中的前缀数和对等体数。如果是第二种情况，可以检查 EIGRP 路由和邻居之间的稳定性。

帧中继网络中的 EIGRP（广播队列）

在一个点对多点接口上存在多个邻居路由器的帧中继网络中，可能有许多需要传输的广播或组播数据包。因此，每个广播队列都有自己的缓冲区。当广播队列以低于配置的最大值的速率传输时，它有优先级且具有保证的最小带宽分配。

在这种情况下，可以使用下面的命令排查问题：

frame-relay broadcast-queue size byte-rate packet-rate

作为一般原则，每数据链路连接标识符 (DLCI) 的数据包数最初为 20 个。 字节速率必须小于以下两者：

- 最低远程访问速率的 N/4（以每秒字节数测量），其中 N 为广播必须复制到的 DLCI 的数量。

- 本地访问速率的四分之一（以每秒字节数测量）。

如果遇到大量 EIGRP 邻居出现抖动的情况，应提高帧中继广播队列的大小。如果设置了帧中继子接口，则不会出现这个问题，因为每个邻居路由器都使用一个具有不同 IP 子网号的子接口。如果您使用的是大型全网帧中继网络，请考虑此解决方法。

AS 数量不匹配

输入 debug eigrp packets hello 命令时，输出显示路由器未收到 Hello 数据包。

自动汇总

默认情况下，EIGRP 用于在主要网络（网络 A、B 和 C）的边界执行汇总。这意味着，除了 A 类主要网络的前缀 /8、B 类主要网络的前缀 /16 和 C 类主要网络的前缀 /24 外，会有其他特定路由在跨越这些网络的边界时丢失。下面是自动汇总功能造成的问题的一个示例：

可以看到，路由器 R1 和 R3 在路由器 EIGRP 下配置了 auto-summary。路由器 R2 从路由器 R1 和 R3 收到 10.0.0.0/8，因为 R1 和 R3 都是 A 类主要网络 10.0.0.0/8 和 172.16.0.0/16 之间的边界路由器。 如果指标恰巧相同，路由器 R2 可以通过 R1 和 R3 两个路由器路由到 10.0.0.0/8。如果指标不相同，R2 会通过 R1 或 R3 路由到 10.0.0.0/8（具体取决于哪个路径成本最低）。无论是哪种情况，如果 R2 需要向 10.0.0.0/8 的特定子网发送流量，它都无法完全确定流量可以抵达目的地，因为 10.0.0.0/8 的子网只能位于网络中的一个方向。

要避免这个问题，只需在路由器的 EIGRP 进程下输入 no auto-summary。这样，路由器就会跨边界传播主要网络的子网。在较新版本的 Cisco IOS 软件中，no auto-summary 设置为默认行为。

EIGRP 事件日志

EIGRP 事件日志会捕捉各种 EIGRP 事件，其作用与为 EIGRP 启用调试功能相似。不过，此功能的影响较小，而且默认启用，因此适合用于捕捉较难进行故障排除或间歇出现的事件。默认情况下，EIGRP 事件日志只有 500 行。要增加行数，可输入 eigrp event-log-size<0 – 209878> 命令。您可以根据需要随意增加此日志的大小，但需要记住的是，路由器上必须为此日志保留一部分内存。要清除 EIGRP 事件日志，只需输入 clear ip eigrp events 命令。

例如：

R1#show ip eigrp events

Event information for AS 1:

1    09:01:36.107 Poison squashed: 10.100.1.3/32 reverse

2    09:01:35.991 Update ACK: 10.100.1.4/32 Serial2/0

3    09:01:35.967 Update ACK: 10.100.1.4/32 Ethernet0/0

4    09:01:35.967 Update ACK: 10.100.1.4/32 Ethernet1/0

5    09:01:35.943 Update delay/poison: 179200 FALSE

6    09:01:35.943 Update transmitted: 10.100.1.4/32 Serial2/0

7    09:01:35.943 Update delay/poison: 179200 TRUE

8    09:01:35.943 Update transmitted: 10.100.1.4/32 Ethernet0/0

9    09:01:35.943 Update delay/poison: 179200 FALSE

10   09:01:35.943 Update transmitted: 10.100.1.4/32 Ethernet1/0

11   09:01:35.923 Update packetized: 10.100.1.4/32 Ethernet0/0

12   09:01:35.923 Update packetized: 10.100.1.4/32 Ethernet1/0

13   09:01:35.923 Update packetized: 10.100.1.4/32 Serial2/0

14   09:01:35.903 Change queue emptied, entries: 1

15   09:01:35.903 Route OBE net/refcount: 10.100.1.4/32 3

16   09:01:35.903 Metric set: 172.16.1.0/24 2195456

17   09:01:35.903 Route install: 172.16.1.0/24 10.4.1.5

18   09:01:35.903 FC sat rdbmet/succmet: 2195456 2169856

19   09:01:35.903 FC sat nh/ndbmet: 10.4.1.5 2195456

20   09:01:35.903 Find FS: 172.16.1.0/24 2195456

最新的事件显示在日志顶部。您可以过滤特定类型的 EIGRP 事件，例如 dual、xmit 和 transport：

eigrp log-event-type {dual | xmit | transport}

此外，您可以针对这三种事件类型中的一种、两种或全部三种启用日志记录。下面是为两种类型的事件启用日志记录的示例：

router eigrp 1

redistribute connected

network 10.0.0.0

no auto-summary

eigrp log-event-type dual xmit

eigrp event-logging

eigrp event-log-size 100000

!

警告：启用 eigrp event-logging 后，系统会输出事件日志记录，并将其存储到事件表。这会在控制台上产生大量输出，与启用重度 EIGRP 调试时的情况相似。

两个 EIGRP 自治系统检测到同一网络

如果一个路由可以通过两个 EIGRP 进程获取，只有其中一个 EIGRP 进程可以在 RIB 中安装该路由，即管理距离最低的进程。如果管理距离相同，则具有最低指标的进程将安装该路由。如果指标也完全相同，则具有最小 EIGRP 进程 ID 的 EIGRP 进程将在 RIB 中安装该路由。其他EIGRP进程的拓扑表可以安装带有零后继路由和无限FD值的路由。

例如：

R1#show ip eigrp topology 192.168.1.0 255.255.255.0

IP-EIGRP (AS 1): Topology entry for 192.168.1.0/24

State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2681856

Routing Descriptor Blocks:

10.3.1.6 (Serial2/0), from 10.3.1.6, Send flag is 0x0

Composite metric is (2681856/2169856), Route is Internal

Vector metric:

Minimum bandwidth is 1544 Kbit

Total delay is 40000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 1

IP-EIGRP (AS 2): Topology entry for 192.168.1.0/24

State is Passive, Query origin flag is 1, 0 Successor(s), FD is 4294967295

Routing Descriptor Blocks:

10.4.1.5 (Ethernet1/0), from 10.4.1.5, Send flag is 0x0

Composite metric is (2681856/2169856), Route is Internal

Vector metric:

Minimum bandwidth is 1544 Kbit

Total delay is 40000 microseconds

Reliability is 255/255

Load is 1/255

Minimum MTU is 1500

Hop count is 1

R1#show ip route 192.168.1.0 255.255.255.0

Routing entry for 192.168.1.0/24

Known via "eigrp 1", distance 90, metric 2681856, type internal

Redistributing via eigrp 1

Last update from 10.3.1.6 on Serial2/0, 00:04:16 ago

Routing Descriptor Blocks:

* 10.3.1.6, from 10.3.1.6, 00:04:16 ago, via Serial2/0

Route metric is 2681856, traffic share count is 1

Total delay is 40000 microseconds, minimum bandwidth is 1544 Kbit

Reliability 255/255, minimum MTU 1500 bytes

Loading 1/255, Hops 1

相关信息

- 思科技术支持和下载