前言
动态路由协议OSPF在现网有广泛的应用。组网方案中经常涉及OSPF多进程路由互引场景。如果在部署OSPF协议互引的设备上没有配置路由策略,或者配置路由策略不合 理,可能会出现三层路由环路,导致业务受损。
如图 1 所示,DeviceA、DeviceB、DeviceC、DeviceD、DeviceE运行OSPF 1,DeviceD、DeviceE、DeviceF、DeviceG运行OSPF 2。在DeviceD、DeviceE设备上,OSPF 1和OSPF 2做路由的互相引入,且未配置引入路由策略,或者配置路由策略不合理,如匹配前缀错误、Tag值不匹配等,OSPF 1发布的路由,通过OSPF 2重新发布回OSPF 1。由于新发布的路由的Cost值更小,成为优选路由,从而导致环路。
图 1 OSPF多进程互引典型组网
2.1 数据准备
为完成上述组网场景的配置,需准备如下数据:
2.2 环路原理详细介绍
各设备配置数据参见数据准备和互相引入时未配置引入策略错误示例。以DeviceA发布的路由10.0.0.1/32为例,形成稳定环路的过程可分为如下阶段:
阶段一:
如图 2 所示,DeviceA上OSPF 1通过配置import-route static type 1引入静态路由10.0.0.1,发布5类LSA,在OSPF 1进程域内洪泛。DeviceD和DeviceE的OSPF 1收到这条LSA后,会分别计算出到10.0.0.1的路由,其出接口为各自设备的interface1,cost值为102。此时DeviceD和DeviceE路由表中的OSPF 1到10.0.0.1的路由活跃。
图 2 阶段一图示
阶段二:
DeviceD和DeviceE的OSPF 2上配置引入OSPF 1路由,且未配置引入路由策略,或者配置路由策略不合理。如图 3 所示,以DeviceE为例,在阶段一DeviceE路由表中的OSPF 1到10.0.0.1的路由活跃,此时会触发OSPF 2 引入OSPF 1到10.0.0.1的路由,并发布5类LSA在OSPF 2进程域中洪泛。DeviceD的OSPF 2收到这条LSA后,会计算到10.0.0.1的路由,计算得到的路由cost值为2,小于OSPF 1计算的cost值为102的路由,因此DeviceD路由表中到10.0.0.1的活跃路由由OSPF 1更新为OSPF 2,此时出接口为subinterface2.1。
图 3 阶段二图示
阶段三:
如图 4 所示,DeviceD的OSPF 2到10.0.0.1的路由活跃后,触发OSPF 1引入OSPF 2到10.0.0.1的路由,生成5类LSA并在OSPF 1进程域内洪泛。DeviceE的OSPF 1收到这条LSA后,重新计算到10.0.0.1的路由,得到的cost值为2,小于之前计算的cost值102,因此DeviceE上OSPF 1到10.0.0.1的路由更新为DeviceD发布的cost值更小的路由,此时出接口为interface2。
图 4 阶段三图示
阶段四:
DeviceE上10.0.0.1的路由更新后,因为还是OSPF 1的路由活跃,所以OSPF 2引入OSPF 1路由的行为未受影响,会继续发布/更新5类LSA。
至此,形成稳定环路。假设流量从DeviceF注入,环路发生时的流量走向如图 5 所示。
图 5 环路发生时的流量走向
此时在环路发生设备DeviceD和DeviceE设备上分别查询10.0.0.1路由的结果如下:
3.1 互相引入时未配置引入策略错误示例
3.2 互相引入时指定的引入策略配置不合理错误示例
4.1 Tag防环
配置思路:
- OSPF 2引入OSPF 1路由时,通过Tag过滤掉原OSPF 2进程的路由,在继承原路由cost的基础上,cost加1。
- OSPF 1引入OSPF 2路由时,通过Tag过滤掉原OSPF 1进程的路由,在继承原路由cost的基础上,cost加1。
以DeviceA的OSPF 1上引入10.0.0.1/32路由为例,关键配置如下:
检查配置结果:
分别在各台设备上查询到10.0.0.1/32路由,以检查配置结果:
4.2 ip-prefix防环
配置思路:
- OSPF 2引入OSPF 1路由时,通过前缀过滤掉原OSPF 2进程的路由,在继承原路由cost的基础上,cost加1。
- OSPF 1引入OSPF 2路由时,通过前缀过滤掉原OSPF 1进程的路由,在继承原路由cost的基础上,cost加1。
以DeviceA的OSPF 1上引入10.0.0.1/32,DeviceF的OSPF 2引入10.0.0.6/32为例,关键配置如下:
检查配置结果:
以上仅列举了一种OSPF进程互引导致的环路问题,在具体组网方案中,一定还存在其他场景,资料中无法一一列举。以上建议配置需要根据现网场景精细化配置决定。但是只要在互引设备上通过合理规划,配置正确的路由策略,控制好路由的发布方向,就可以避免由于配置OSPF进程互引导致的环路问题。