目录

硬件平台

软件版本

案例简介

故障诊断步骤

经验总结

相关命令

相关错误信息

其他相关文档

硬件平台

路由器及多层交换机

软件版本

所有

案例简介

在一些客户的实际网络中，存在一些由于策略配置而导致的在某些情况的下的路由震荡，路由环路。这些一般是由于一些特殊的需求配置已经不规则的拓扑导致。  通常情况下我们仔细分析选路规则，路由策略规则就可以解决问题。此类问题有明显的特征（路由环路/震荡），解决此类问题主要根据所学路由协议的基础，一步一步分析便可解决。  以下是一个真实案例， 为保护客户资料， 路由器输出信息是在实验环境中抓取。

信息及描述：

客户有两台路由器互联通过两条链路互联，F0/0是百兆链路，F1/0是十兆链路，网络协议是使用的是EIGRP协议

云网络（外部路由器）向下发送一条192.168.1.0的路由，在Router B上做了管理距离（AD）调整，要求去往192.168.1.0的流量必须优先选择ROUTER A

故障描述：

当网络云（外部路由器）与ROUTER A之间的链路断开后，发现两台路由器关于某个EIGRP路由192.168.1.0/24无法正常收敛，路由有震荡。

地址规划：

路由器接口 IP 地址 路由器接口 IP 地址

Router A F0/0 12.1.1.1/24 Router B F0/0 12.1.1.2/24

Router A F1/0 21.1.1.1/24 Router B F1/0 21.1.1.2/24

Router A F1/1 13.1.1.1/24 路由器云 F1/0 13.1.1.3/24

Router B F1/1 23.1.1.2/24 路由器云 F1/1 23.1.1.3/24

故障诊断步骤

首先检查故障现象，当Router A的上行链路down掉以后，发现Router A去往192.168.1.0/24的路由出现路由翻动，next hop 始终在12.1.1.2 (F0/0)和 21.1.1.2 (F1/0)之间切换

检查Router B的路由表发现Router B 关于192.168.1.0/24的next hop 也始终在21.1.1.1  和23.1.1.3之间切换

此时一定是出现了路由优选的环路即Router A 与 Router B之间在不同的时间相互优选了对方为最佳路由，导致路由震荡，此时我们细分析一下路由的选路原则即可发现问题：

当路由条目一致时，优先选择管理距离比较低的路由并添加进入路由表，此时在Router_B上进行了AD的修改（通过Router A的两个链路学到的这条路由的AD均为89，默认为90），所以正常时刻Router_B会有优选Router A作为next-hop，但是Router_A有两个不同的链路，所以需要继续比较，当AD一样时会优先选择Metric值最小的Next-hop作为最佳路由并且添加到路由表当中，所以正常时刻（即Router A上行链路没有down的时刻 ），Router B会优选Router A的F0/0 作为最优路由

检查Router_B的EIGRP 拓扑表

12.1.1.1 成为去往192.168.1.0/24的后继路由器（Successor），21.1.1.1 成为去往192.168.1.0/24的可行后继路由器（Feasible Successor）

当Router_A的上行链路down 掉以后，Router_A无可行后继路由器，会把192.168.1.0 /24置为不可达，(Metric 4294967295)，发送给所有的邻居

Router_B收到此不可达路由后会撤销掉此路由，并且优选从路由器云学习此路由，并且把去往外部路由器的接口作为next-hop （23.1.1.3），metric  156160 ，AD 90

此时路由器B收敛完成向Router_A宣告此路由,由于Router A 已经失去了Successor ，并且没有Feasible Successor，所以Router_A 会选择Router_B 作为新的Successor，同样的选举原则，Router_A会优选Fa0/0 （百兆链路）作为最佳路由,此时A的metric 为156160+256*10 （delay） =158720

同时由于Router_A学到了新的路由，需要向其所有邻居(除了Successor)通告此路由，向Successor 宣告一条毒性逆转路由（Metirc 为4294967295），所以Router_A 又通过Fa 1/0接口发送此路由更新，Router_B从Fa1/0收到此路由更新，会优选从此接口学到的路由(由于之前做过AD调整，从Router_A 学到的路由均为AD 89，优选于从路由器云学到的路由)，所以Router_B撤销掉之前的最佳路由（通过23.1.1.3），优选21.1.1.2 （F1/0） 作为最佳路由，此时metric 更大，为10M链路的带宽已经RouterA 和Router B之间的Delay之和 ，metric 为391680

由于B有了新的Successor ，所以向除Successor 之外所有邻居通告此路由(F0/0)，向Successor 宣告一条毒性逆转路由（Metirc 为4294967295），同样的道理Router_A会从F0/0 收到一个新的update 带有新的metric (391680)，此Metirc 要比原有Successor 的Metirc 158720要大，但是仍然是同一个successor (12.1.1.2)

由于此Metric比原有的Feasible Successor（21.1.1.2）的metric（391620）还要大，所有R1忽略这条update，优选21.1.1.2 作为新的Successor，并且向此接口发送毒性逆转路由，

Router B 上debug eigrp fsm

Router B收到此毒性逆转路由，删掉21.1.1.2 作为next-hop，并且重新选择23.1.1.3作为最优路由，产生选路环路，Router A的next hop 始终在12.1.1.2 和21.1.1.2 之间切换，Router B 的next hop 始终在23.1.1.2 和 21.1.1.2 之间切换，出现路由震荡

DUAL Rule 1:

Whenever a Router chooses a new successor, it informs all its other neighbors about the new reported distance.

DUAL Rule 2:

Every time a Router selects a successor, it sends a poison update to its successor (a poison reverse).

DUAL Rule 3:

A poison update is sent to all neighbors on the interface through which the successor is reachable unless split-horizon is turned

综上所述，因为拓扑中存在不对称链路百兆链路和十兆链路，并且做了特殊配置，两个链路上都做了AD优先级的配置，此问题的解决办法有很多，修改AD以及修改metric都可避免此类问题发生，不再赘述。

经验总结

对于路由协议相关命令的输出，逐跳查找，show  ip eigrp event可以记录协议内部计算的信息， 结合metric可以计算出所经过的路径，根据原理分析便可解决问题。

相关命令

show ip route

show ip route x.x.x.x

show ip eigrp topology

show ip eigrp {AS} topology x.x.x.x

show ip eigrp events

debug eigrp packet

debug eigrp fsm

相关错误信息

无

其他相关文档

EIGRP排错流程

http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a0080094613.shtml