硬件平台
软件版本
案例简介
故障诊断步骤
经验总结
相关命令
相关错误信息
其他相关文档
路由器及多层交换机
所有
在一些客户的实际网络中,存在一些由于策略配置而导致的在某些情况的下的路由震荡,路由环路。这些一般是由于一些特殊的需求配置已经不规则的拓扑导致。 通常情况下我们仔细分析选路规则,路由策略规则就可以解决问题。此类问题有明显的特征(路由环路/震荡),解决此类问题主要根据所学路由协议的基础,一步一步分析便可解决。 以下是一个真实案例, 为保护客户资料, 路由器输出信息是在实验环境中抓取。
信息及描述:
故障描述:
当网络云(外部路由器)与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