此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍如何对最常见的增强型内部网关路由协议 (EIGRP) 问题进行故障排除。
本文档没有任何特定的要求。
本文档中的信息基于Cisco IOS®,用于说明此协议可能遇到的各种行为。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
本文档中使用的拓扑如下:
接下来的部分将介绍一些最常见的EIGRP问题以及如何排除这些问题的一些提示。
使用 EIGRP 时最常遇到的一个问题是,邻居关系无法正确建立。可能导致这个问题的原因有以下几种:
如果没有收到 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-count始终非零,则表明相同的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 邻居发生变化的所有可能原因及相应的日志条目:
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.1 (Ethernet0/0) is down:
holding time expired
%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.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
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 172.16.1.4 (Serial2/0) is down:
manually cleared
%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
%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
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.1.1.3 (Ethernet0/0) is down:
authentication mode changed
%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 部分。
保持计时器超时是指路由器在保持时间内未收到任何 EIGRP 数据包(无论是 EIGRP Hello 数据包,还是任何其他 EIGRP 数据包)。在这种情况下,有较大可能是链路出现问题。
请检查路由器是否在链路中收到 EIGRP Hello 数据包,以及是否收到邻居发送给它们的数据包。要确认这一点,请输入 debug eigrp packet hello 命令。 除了使用调试命令,您也可以通过 ping IP 地址 224.0.0.10 来检查邻居是否有应答。 链路中的组播问题可能是由接口问题导致的,例如中间交换机阻止了 EIGRP Hello 数据包。
您可以执行的其他快速测试包括,尝试执行使用其他组播 IP 地址的其他协议。例如:您可以配置使用组播 IP 地址 224.0.0.9 的路由信息协议 (RIP) 第 2 版。
超过重试限制是指可靠 EIGRP 数据包多次未能确认。可靠的 EIGRP 数据包包括以下五种数据包类型:
可靠的 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 datawill
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等待第一个更新数据包(init bit
set
)来自IP地址为10.1.1.1的邻居。
在下一个输出中,R2等待第一个更新数据包(init bit
set
)来自IP地址为10.1.1.1的邻居。
注:RTO的最大值为5,000 ms,这表明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 数据包前收到初始更新数据包的示例:
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 数据包。
其他类型的问题包括:
这些问题将在后续章节中详细介绍。
注意:如果改为配置否定(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 <>时也会如此。
%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)
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 网络中,检查是否出现 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
EIGRP 数据包报头中有一个 32 位的 Flags 字段,了解各个 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
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
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
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(标记)以十六进制数字表示,因此,标志0x5表示设置了标志4和1;标志0x9表示设置了标志8和1;标志0xA表示设置了标志8和2。
您可以使用以下命令来排查邻居抖动问题:
本节概括介绍 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 状态的部分原因:
如果出现 SIA 问题,则说明网络中的某个位置出现问题,但具体的原因可能很难发现。确定这类问题有两个途径:
确定返回 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 发起查询,R4 继而变为活动状态,向 R5 发出查询。最终,路由器 R5 变为活动状态,并向 R6 发出查询。路由器R6必须向R5返回应答。路由器 R5 变为被动状态并向 R4 做出应答,R4 继而变为被动状态,并向 R2 和 R3 发出应答。最终,R2 和 R3 变为被动状态并向 R1 发出应答,然后 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 之间的链路上。在较早的代码版本中,SIA可在路径上的任何路由器(例如R2上)上声明,而此路径与问题相距甚远。这是因为 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 问题进行故障排除:
下面是一些可能有助于解决 SIA 问题的解决方案:
缺少前缀有两种类型:路由表中缺少的前缀(或路由信息库[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)的正确运行,而不是因为EIGRP是链路状态路由协议;因此,它需要数据库。之所以需要使用拓扑表,是因为路由表中只添加了最佳路由,而 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和跳数。
计算路由的路径指标所使用的公式具体如下:
K值是用于对EIGRP度量的四个组成部分进行加权的权重:延迟、带宽、可靠性和负载。默认的 K 值具体如下:
使用默认K值(仅使用带宽和延迟),公式变为:
EIGRP 指标 = 256 * (带宽 + 延迟)
带宽 = (10^7/最小带宽 [kb/秒])
注:延迟以十微秒测量;但在接口上,延迟以微秒测量。
使用 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
延迟值按累积值计算,也就是说,您需要将路径中每条链路的延迟值加在一起。带宽值不累积,公式中使用的带宽为路径中任何链路的最小带宽。
要查看 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:
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 值不同时,可以看到如下消息:
%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 值不匹配问题时的消息完全相同。
以下情况会触发正常关机:
使用正常关机功能是为了更快检测到邻居关闭状态。如果不使用正常关机,路由器必须等待保持时间结束,才会声明邻居已关闭。
在使用 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邻居的一些原因:
注意:请勿将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)。
EIGRP 会同时运行三个进程:
下面是包含全部三个进程的示例输出:
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 路由和邻居之间的稳定性。
在一个点对多点接口上存在多个邻居路由器的帧中继网络中,可能有许多需要传输的广播或组播数据包。因此,每个广播队列都有自己的缓冲区。当广播队列以低于配置的最大值的速率传输时,它有优先级且具有保证的最小带宽分配。
在这种情况下,可以使用下面的命令排查问题:
frame-relay broadcast-queue size byte-rate packet-rate
作为一般原则,每数据链路连接标识符 (DLCI) 的数据包数最初为 20 个。字节速率必须小于以下两者:
如果遇到大量 EIGRP 邻居出现抖动的情况,应提高帧中继广播队列的大小。如果设置了帧中继子接口,则不会出现这个问题,因为每个邻居路由器都使用一个具有不同 IP 子网号的子接口。如果您使用的是大型全网帧中继网络,请考虑此解决方法。
输入 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,因为because both 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 事件日志只有 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 进程可以在 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
版本 | 发布日期 | 备注 |
---|---|---|
3.0 |
04-Dec-2023 |
重新认证 |
1.0 |
20-Sep-2021 |
初始版本 |