■ 辽宁 高大伟
编者按: OSPF协议作为一种成熟的内部网关协议,被大量厂商实现,与BGP一起成为网络协议规划的首选。笔者单位在网络规划建设时,网络路由协议采用了OSPF。然而在使用中出现网速现象,这是什么原因呢?
OSPF(Open Shortest Path First,开 放 式最短路径优先)是一个内部网关协议,应用于自治系统内路由的分发。MPLS(MultiProtocol Label Switching)最初是为提高路由器转发速度而提出的一个协议,它融合了IP路由技术灵活和ATM交换技术简洁性,MPLS虚拟专用网是网络应用商为用户提供的一种专用通道。
单位在建设应急通信时,充分考虑保密性和覆盖范围的需求,租用了运营商的MPLS虚拟专用链路,互联关系如图1所示。甲站的业务单路连接在丙站的PE1设备上,乙站的业务通过传输双链路连接在丙站的PE1和PE2设备上,PE设备上运行BGP协议并配置MPLS虚拟专用网实例,PE设备和CE设备运行OSPF协议。
图2 DN位示意图
某天,乙站用户反映虚拟专用网业务缓慢,同时,甲站用户也反映虚拟专用网业务出现缓慢问题。
虚拟专用网业务缓慢,必然是路由出现问题,应该检查丙站与甲站、乙站的路由是否正确。在确认甲站、乙站的路由时,发现虚拟专用网路由并没有按照规划过BGP路由,而是通过乙站的OSPF路由,由于乙站的传输链路带宽有限,两个站的业务量超过了链路带宽两个造成大量数据包拥塞在链路上,导致两个站的虚拟专用网业务出现缓慢。
两个虚拟专用网业务数据,为什么不按照规划走BGP路由,而是通过乙站的OSPF路由进行转发呢?笔者试着从OSPF协议的防环原理中寻找其中的原因。OSPF协议的防环机制原理是在OSPF多实例进程使用一个bit位称为DN位,其在hello包和每个链路状态通告(LSA)中的位置如图2所示。
当PE生成Type3、Type5与Type7 LSA发布给CE时,将DN标志位置为1,其他类型LSA的DN标志位置为0,PE路由器的OSPF进程在进行SPF计算时,忽略DN标志位 置 1的 Type3、Type5与Type7 LSA。因此,当甲站的路由通过OSPF发给丙站时,PE1将通过OSPF学到的甲站路由,由Type3的LSA发给乙 站 时,DN标志位置1,当乙站将这些路由通过OSPF发给PE2时,PE2只会将这些路由存放在OSPF的数据库中,而不会放入路由表之中,因此不会将这些路由重新发布到BGP中,从而实现路由防环。
然而实际情况是,PE2收到了乙站发过来的甲站的路由,由于OSPF的管理距离比BGP管理距离小,导致甲站的数据直接优先选择乙站发过来的OSPF路由进行分发。既然Type3的LSA DN标志位置1,为什么还将这些路由放进路由表呢?检查CE、PE的配置,发现每个虚拟专用网的OSPF配置中,都有“capability vrf-lite”这一命令,此命令的作用是关闭DN位监听,也就是说,不管DN位是否置1,都将学习到的路由放进路由表。
发现故障原因后,将PE2上各个虚拟专用网配置中undo capability vrf-lite,并在乙站的CE上各个虚拟专用网OSPF配置中,配置capability vrf-lite,重启OSPF进程,故障排除。