增强型内部网关路由协议 (EIGRP) 是一种基于扩散更新算法 (DUAL) 的增强型距离矢量协议。 它能够根据邻居的路由通告(适当地)查找通向任何给定目标的所有无环路径。具有通向目标的最佳路径的一个或多个邻居称为后继路由。具有通向目标的无环路径的其余邻居称为可行后继路由。为减少网络上的流量负载,EIGRP 仅按照需要维护邻居关系和交换路由信息,它会在通向目标的所有无环路径全部失败的情况下使用查询进程来查找替代路径。
本文档没有任何特定的要求。
本文档中的信息基于 Cisco IOS® 软件版本 12.0。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
具有有效后继路由的路由被认为处于“被动”状态。如果由于某种原因,路由器丢失了通过其后继路由的某个路由,且该路由没有可行后继路由,则该路由将转换为“活动”状态。处于活动状态时,路由器将向其邻居发送查询,请求通向丢失路由的路径。
EIGRP 邻居收到路由查询时,将会采取以下行为:
如果 EIGRP 拓扑表当前不包含针对该路由的条目,则路由器将立即以 unreachable message 回复查询,说明该路由没有通过此邻居的路径。
如果 EIGRP 拓扑表将查询路由器作为该路由的后继路由列出,且存在可行后继路由,则将安装可行后继路由,且路由器将立即回复查询。
如果 EIGRP 拓扑表将查询路由器作为该路由的后继路由列出,但不存在可行后继路由,则路由器将对其所有 EIGRP 邻居(除了那些发出与该路由的先前后继路由相同的接口的邻居)进行查询。路由器收到它为该路由发出的所有查询的回复后,才会回复查询路由器。
如果从邻居处收到了查询,但该邻居不是此目标的后继路由,则路由器将使用其后继路由信息进行回复。
DUAL-3-SIA 错误消息表明某个 EIGRP 路由“停滞在活动状态”(SIA)。
SIA 状态意味着,在指定的时间(约为 3 分钟)内,EIGRP 路由器没有收到一个或多个邻居的查询回复。 发生这种情况时,EIGRP 将清除未发送回复的邻居,并为已进入活动状态的路由记录 DUAL-3-SIA 错误消息。
请参考以下拓扑示例:
R2 通过 R1 获得有关网络 10.1.2.0/24 的信息。
R1 和 R2 之间的链路断开。R2 丢失了用于访问 10.1.2.0/24 的后继路由 (R1)。
R2 检查 EIGRP 拓扑表中是否存在可行后继路由(具有到 10.1.2.0/24 的路由、符合可行性条件的其他邻居);拓扑表中没有这样的可行后继路由。
针对 10.1.2.0/24,R2 从被动状态转换为活动状态。
R2向R3和R5发送查询,询问它们是否有通往10.1.2.0/24的其他路径。SIA计时器开始。
R5 检查 EIGRP 拓扑表中是否存在可行后继路由;拓扑表中没有这样的可行后继路由。
针对 10.1.2.0/24,R5 从被动状态转换为活动状态。
R5 对其 EIGRP 邻居表进行检查,只发现了 R2 对面的接口中的 EIGRP 邻居(R2 以前的 10.1.2.0/24 后继路由)。
由于没有替代路径,也没有其他邻居可供查询,因此 R5 回复 unreachable message。
针对 10.1.2.0/24,R5 从活动状态转换为被动状态。
R3 检查 EIGRP 拓扑表中是否存在可行后继路由;拓扑表中没有这样的可行后继路由。
针对 10.1.2.0/24,R3 从被动状态转换为活动状态。
R3 对其 EIGRP 邻居表进行检查,查找到了 R4。
R3向R4发送网络10.1.2.0/24的查询。SIA计时器开始。
R4 未曾收到此查询,这可能是由于 R3 和 R4 之间的链路问题引起的,也可能是由于拥塞引起的。可在 R3 上发出 show ip eigrp neighbor 或 show ip eigrp topology active 命令查看此问题;R4 的队列计数应高于常值。
R2 上的 SIA 计时器已计时约 3 分钟。
在收到 R4 的回复之前,R3 无法回复 R2 的查询。
R2 对网络 10.1.2.0/24 记录 DUAL-3-SIA 错误,并清除与 R3 的邻接关系。
DEC 20 12:12:06: %DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.1.4.3 (Serial0) is down: stuck in active DEC 20 12:15:23: %DUAL-3-SIA: Route 10.1.2.0/24 stuck-in-active state in IP-EIGRP 1. Cleaning up
R3 的针对 R4 的重试计时器到期。
注意:此事件防止R3也报告DUAL-3-SIA错误,因为R3的SIA计时器可能也即将达到3分钟。
R3 清除其与 R4 的邻接关系。
R3 向其日志报告以下错误:
DEC 20 12:12:01: %DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.1.5.4 (Serial1) is down: retry limit exceeded
此时,R3 以 unreachable message 回复 R2 的查询。
R4 向其日志报告以下错误:
DEC 20 12:12:06: %DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.1.5.3 (Serial0) is down: peer restarted
注意:只有在EIGRP进程下配置了eigrp log-neighbor-changes命令,才会显示DUAL-5-NBRCHANGE消息。为排除 EIGRP SIA 问题,建议在所有的 EIGRP 路由器上都配置此命令。如果不使用此命令,则无法说明为什么要重置 EIGRP 邻居,或哪个路由器进行了邻接关系重置。
正如上面所看到的,DUAL-3-SIA 错误是由以下并发但却不相关的问题引起的:
R1和R2之间的接口问题,导致10.1.2.0/24路由从R2消失。路由抖动可能是由实际链路故障以外的原因引起的(例如,远程用户断开连接,然后删除PPP派生的主机路由)。
R3 和 R4 之间的接口、拥塞或延迟问题。
出现 SIA 错误消息时,说明针对指定路由的 EIGRP 路由协议收敛未能成功进行。此故障通常是由抖动的接口、配置更改或拨号客户端(路由损失是正常的)造成的。 EIGRP 进程因指定路由而处于活动状态时,到其他目标的路由不会受影响。针对未进行回复的邻居的 SIA 计时器到期时,该邻居将被清除(EIGRP 不信任超出计时器时间的邻居的状态)。 于是,拓扑表中通过该邻居的路由都将被清除,必须进行重新收敛。这意味着,转发表可能会受到 SIA 的影响,且可能会在网络进行收敛时发生数据包丢弃。
本部分提供了排除 SIA 问题所需的步骤以及 SIA 问题的常见原因。
尽管 SIA 问题可能会以多种不同的方式发生,但始终应采用相同的方式来解决发生的问题。
无论何时对 SIA 错误进行故障排除,您应当回答以下两个问题(按紧急程度列出),以确定 SIA 问题的可能原因。
为什么路由器无法从其所有邻居处得到响应?
路由为什么消失了?
注意:使用Cisco Bug ID CSCdp33034(仅注册客户) — 对Cisco IOS软件版本12.1(4.4)E有效 — 已进行以下增强,以帮助解决SIA问题:
路由器会对 SIA 事件源留下追踪线索。
SIA 事件的检测与纠正被局限于故障链路。
使用以下命令收集更多故障排除详细信息:
从两端显示ip eigrp neighbors
show log |在DUAL中
show ip eigrp topology active
很不幸,此问题是 SIA 故障排除工作中最困难的部分。默认情况下,由于 SIA 计时器的计时时间稍稍多于 3 分钟,因此需要在此时间段内查找出无响应的路由器。要执行此操作,请确保您具有网络拓扑图,且该图包括网络中的所有路由器及其 IP 地址。您还应该具有每个路由器的远程登录口令。
掌握这些信息之后,找到报告 SIA 的路由器,并留心观察该路由或其他路由变为活动状态。发出 show ip eigrp topology active 命令可以确定路由器上处于活动状态的路由。正常情况下,此命令会列出一些处于活动状态的路由。活动路由的存在本身并不能说明有问题;请特别注意处于活动状态超过一分钟的路由。
R2# show ip eigrp topology active IP-EIGRP Topology Table for process 1 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - Reply status A 10.1.2.0 255.255.255.0, 1 successors, FD is 2733056 1 replies, active 0:00:38, query-origin: Multiple Origins !--- The output above will appear on one line. via 10.1.4.3 (Infinity/Infinity), r, Serial0, serno 1232 via 10.1.6.5 (Infinity/Infinity), Serial1, serno 1227
以上输出告诉您,EIGRP已激活10.1.2.0/24 38秒,已查询两个邻居,并且仍在等待来自10.1.4.3的回复。小写r 表示路由器正在等待对查询的回复。大写的 R 表示路由器收到了该邻居的回复。根据您发出此命令时的拓扑表状态,您可能还可以在名为“Remaining Replies”的单独部分中查看到邻居。
一旦确定了 EIGRP 在等待哪个路由器的响应,您可以远程登录到该路由器,以确定 EIGRP 所等待的内容。通过此过程,最终应找出没有对查询作出响应的实际路由器。确定此路由器后,请对其不响应查询的原因进行故障排除。下面解释了几种常见的原因。
EIGRP 在 Cisco IOS 软件版本 10.3(11)、11.0(8) 和 11.1(3) 中得到了增强。 其中一项增强功能可防止任何单个 EIGRP 进程使用该链路可用带宽的 50% 以上。您可以调整此百分比,此百分比在多点接口上可能有所不同。此增强功能采用了步调功能,允许在拥塞链路上更可靠地传送 EIGRP 数据包。有关数据包定步的详细信息,请参阅增强型内部网关路由协议白皮书。
如果接口或子接口的带宽说明未正确配置,则 EIGRP 无法正确地对 EIGRP 数据包进行步调调整。串行接口的带宽参数默认值为 T1 或 1500 kbps。对于除 T1 以外的串行接口(包括也称为信道化 T1 接口的部分 T1 接口),必须手动设置此参数,从而在接口时钟频率的基础上反映正确的带宽。切勿使用带宽参数影响 EIGRP 路径选择。
在冗余路径情况下,要迫使路由协议选择某一路径而非其他路径,常见做法是修改接口上的带宽参数。在一个接口上人为配置较低的带宽值可以防止路由协议使用通过该接口的路径。应避免对 EIGRP 采用此方法,因为 EIGRP 也会使用该带宽设置来调整 EIGRP 数据包步调。要在接口基础上影响 EIGRP 路径选择,请使用 delay 接口配置参数。
应始终确保将带宽参数设置为接口或子接口的实际可用的带宽。
路由环路也可能导致 SIA 错误。可使用 show ip eigrp topology active 命令确定此问题。如果看到循环模式的未应答 EIGRP 查询,请按照路由环路问题继续对此问题进行故障排除。
--- R1 --- interface Ethernet0 ip address 10.1.1.1 255.255.255.0 ip address 10.2.1.1 255.255.255.0 secondary ! --- R2 --- interface Ethernet0 ip address 10.2.1.2 255.255.255.0 !
在上面的示例中,R1 收到来自 R2 的 EIGRP Hello 数据包,并将 R2 显示为 EIGRP 邻居。但 R2 并没有将 R1 视为邻居,因为 R1 的 Hello 数据包来自 10.1.1.1,而 10.1.1.1 不是 R2 可识别的子网。在 Cisco IOS 软件的较新版本中,R2 将返回 neighbor not on common subnet 错误。此错误会导致 SIA 问题,因为 R1 向 R2 发送的查询不会得到应答。要查看 R1 是否持续将 R2 作为邻居进行清除,请使用 show ip eigrp neighbor 命令。
缺乏系统资源(例如 CPU、内存或缓冲区)也可能会阻止路由器回复查询或处理任何类型的数据包。要确定是否为资源问题,请 ping 受影响的路由器并像排除其他路由器资源问题那样对该路由器进行故障排除。
路由抖动有几种常见原因,解释如下。
链路抖动。
请使用 show interface 命令查找值不断增长的“接口重置”或“载波变迁”计数器。
WAN 链路性能下降。
请使用 show interface 命令查找值不断增长的“输入错误”或“输出错误”计数器。
未将拨号服务器(例如 Cisco AS5800)配置为对拨号 PPP 链路创建的主机路由进行总结。
默认情况下,PPP 连接会为 PPP 链路的远程端安装 32 位的主机路由。如果这些路由没有聚合,则每个拨号用户断开连接时 EIGRP 都将变为活动状态。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
10-Aug-2005 |
初始版本 |