OSPF多进程的一个典型应用就是在VPN场景。
如图,同一台PE设备连接了两个不同的VPN客户,并且PE和CE之间均部署OSPF,因此可以通过在PE设备上部署多进程实现VPN客户之间的隔离。
当有新的设备加入到网络中,或者设备重启时,可能会出现在BGP收敛期间内网络流量丢失的现象。这是由于IGP收敛速度比BGP快而造成的。
当R2故障时,流量路径切换到:R1-R3-R4-R5。
当R2故障恢复后,由于IGP收敛速度比BGP快,因此OSPF先收敛。此时R1若要访问10.1.5.5/32,先查BGP路由,下一跳为R5;再查IGP路由,会根据IGP路由传递给R2。
R2收到该流量后,会查BGP路由。由于BGP还未完成收敛,发现没有到达10.1.5.5/32的路由,则不会转发数据,造成流量丢失。
R1、R2、R3和R4运行OSPF,并建立IBGP全互联。其中R3是R2的备份设备。
当网络环境稳定时,R1访问10.1.5.5/32的流量路径为:R1-R2-R4-R5。
在R2上使能BGP联动,这样,在BGP收敛完成前,R1不把流量转发到R2上,而是继续使用备份设备R3转发流量,直到R2上的BGP路由完成收敛。
配置Stub路由器:
[Huawei-ospf-1] stub-router [ on-startup [ interval ] ]
配置Stub路由器是一种特殊的路由选路,配置了Stub路由器的路径不被优选。
实现方法是将度量值设为最大(65535),尽量避免数据从此路由器转发。用于保护此路由器链路,通常使用在升级等维护操作的场景。
命令:[Huawei-ospf-1] stub-router [ on-startup [ interval ] ]
▪on-startup [ interval ]:设备在发生重启或故障时保持为Stub路由器的时间间隔。整数形式,取值范围是5~65535,单位是s,缺省值是500s。
▪如果未配置on-startup参数,则表示该设备始终保持为Stub路由器,即所有来自这个设备的路由条目Cost值均设为65535。
▪如果配置了on-startup参数,则表示该设备仅在重启或者故障时保持为Stub路由器,保持时间由interval参数决定。此时若未配置interval参数,则使用interval的缺省值500s。
FA(Forwarding Address,转发地址):
OSPF的Type5 LSA和Type7 LSA中包含一个特别的字段FA,FA的引入使得OSPF在某些特殊的场景下可以避免次优路径问题。
R2配置到达10.1.1.1/32的静态路由,下一跳为10.1.123.1。
R2将静态路由引入OSPF,产生Type5 LSA在区域内泛洪。
R3接收到R2产生的5类LSA,计算出到达10.1.1.1/32的外部路由,并且将路由的下一跳指定为R2(10.1.123.2)。
ASBR在其连接外部网络的接口(外部路由的出接口)上激活了OSPF;
该接口没有被配置为Silent-Interface;
该接口的OSPF网络类型为Broadcast或NBMA;
该接口的IP地址在OSPF配置的network命令指定的网段范围内。
为了将NSSA区域引入的外部路由发布到其它区域,需要把Type7 LSA转化为Type5 LSA以便在整个OSPF网络中通告。缺省情况下,转换路由器是NSSA区域中Router ID最大的区域边界路由器(ABR)。
LSA头部Options字段中的P-bit(Propagate bit)用于告知转化路由器该条Type7 LSA是否需要转化为Type5 LSA。只有P-bit置位并且FA不为0的Type7 LSA才能转化为Type5 LSA。
区域边界路由器产生的Type7 LSA不会置位P-bit。
当NSSA区域中有多个ABR时,系统会根据规则自动选择一个ABR作为转换器,将Type7 LSA转换为Type5 LSA,其他ABR不做LSA转换。
如图所示,如果不考虑FA,由于R3的Router ID比R2大,因此它将执行7转5的动作,如此一来,R1将认为必须经由ABR(R3)到达目的网络。这样,流量便会被引导到低带宽链路,即R1-R3-R4-R5。
R5引入直连外部路由,且将FA设为自己访问目的网段10.1.5.0/24的地址:10.1.45.5。
R3执行Type7 LSA转换Type5 LSA动作,继续携带FA:10.1.45.5。
R1收到后,会在自己的OSPF路由表中查询到达这个FA的路由,发现在OSPF路由表中能够找到匹配这个FA的路由,就使用到达这个FA的下一跳地址作为这条外部路由的下一跳地址。
因此,R1最终会通过R1-R2-R4-R5路径,访问目的网段10.1.5.0/24。