如何去定位故障的原因以及准确的排除故障,都需要建立在对协议运作非常了解的基础上。
本文就是介绍OSPF故障排除的思路和操作。
用到的命令:
display ip routing-table //先看路由,确定故障位置
display ospf peer // 根据邻居关系,进一步确定故障点
display ospf error // 华为,华3路由器专有,思科不支持,很强大
display current-configuration //不推荐用,现网中配置数据量很大
display current-configuration configuration ospf
display ospf peer brief //查看状态,排除错误
一 区域内路由故障
先查看路由表,如果有路由,一般是由于上层配置引起的,如防火墙。
如果没有相关条目,通常是由于邻居关系建立错误引起的,首先根据命令display ospf error定位错误,然后根据错误检查OSPF的相关配置,最后修正配置错误即可
display ospf error,结果如下图
从图中可看出,故障原因是router id冲突,确故障点后,用相关配置命令解决即可。
下表列出,常见的错误的原因
二 区域间故障
区域间故障需要结合OSPF路由的宣告过程来排除。
最基本的一点,所有非骨干区域的路由都要通过area0来传递,这么做是为了防环。
看个例子,拓扑如下:
该例中三台路由器通过串口互连,RTA使用1.1.1.1做为Router ID;RTB使用2.2.2.2做为Router ID;RTC使用3.3.3.3做为Router ID。 网段10.1.1.0/30在Area 0中,网段10.2.1.0/30在Area 1中,网段10.3.1.0/30在Area 2中,所有链路使用相同的带宽,因此每台路由器到达对端网段应当有两条等值路径。但实际路由如下图:
原因:
区域间的路由信息只能通过Area 0发布,不能在非骨干区域之间直接发布。
在本例中,RTC不能将到达10.2.1.0/30的路由信息直接发布给RTA,只有Area 1的ABR(RTB)会将到达10.2.1.0/30的路由信息发布给RTA,因此在RTA的路由表中,下一跳只有10.1.1.2(RTB)。
同理 ,在RTB的路由表中,到达网段10.3.1.0/30的路由中,下一跳也只有一个,下一跳为10.1.1.1(RTA)。
解决方案:
在RTB和RTC之间配置一条虚连接(Virtual Link),虚连接使用的Transit Area为Area 1。 RTC可以在骨干区域中发布信息
在RTA和RTC之间再配置一条虚连接(Virtual Link),虚连接使用的Transit Area为Area 2。
在RTB和RTC之间配置虚连接之后,Area 1是Transit区域,RTC只会把Area 2的路由信息通过Area 1发布给RTB,不会把Area 1的路由信息通过Area 2发布给RTA,因此,需要和RTA也建立虚连接,将area1中的路由信息通过area2发布到area0。
三 路由汇聚故障
在有多个ABR地区域中配置路由汇聚地时候,所有的ABR上都要配置汇聚,不能只在一部分ABR上配置汇聚。
示例,拓扑如下:
在RTC上将所有网段配置在Area 1中,在Area 1的ABR上配置路由汇聚,把网段20.1.1.1/32和20.1.1.2/32汇聚成20.1.1.0/24,使ABR在向骨干区域通告时,只通告20.1.1.0/24,抑制明细路由20.1.1.1/32和20.1.1.2/32。
故障:查看RTA的路由表,发现路由不正确,去往明细网段的路由使用RTD做为下一跳,去往汇聚网段的路由使用RTB做为下一跳,两者同时存在。
故障原因分析: 由于去往明细网段的路由使用RTD做为下一跳,说明RTD只通告了明细路由,没有通告汇聚路由,甚至可能没有做路由汇聚;汇聚路由使用RTB做为下一跳,说明RTB正确地通告了路由。