简介

本文章包括多进程、BGP联动问题(延迟收敛)、FA地址。

本教程参考华为认证系列PPT。

OSPF 多进程

  • OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。
  • 路由器的一个接口只能属于某一个OSPF进程。

  • 应用场景:
  • OSPF多进程的一个典型应用就是在VPN场景。
  • 如图,同一台PE设备连接了两个不同的VPN客户,并且PE和CE之间均部署OSPF,因此可以通过在PE设备上部署多进程实现VPN客户之间的隔离。

PS:

  • VPN:Virtual Private Network,虚拟专用网络。这里单指MPLS VPN
  • 创建OSPF进程时,如果指定了VPN实例,那么OSPF进程属于此实例,否则属于全局实例 (路由表)。
  • OSPF的进程号仅有本地意义。OSPFv3可以配置实例ID,通过报文区分。

OSPF与BGP联动(等待收敛)

现象说明

  • 当有新的设备加入到网络中,或者设备重启时,可能会出现在BGP收敛期间内网络流量丢失的现象。这是IGP收敛速度比BGP快造成的。
  • 当OSPF收敛完成的时候,BGP并没有收敛完成,造成路由黑洞,而OSPF收敛完成后会把流量引用过来,导致丢包。

R1、R2、R3和R4运行OSPF,并建立IBGP全互联。其中R3是R2的备份设备。

当网络环境稳定时,R1访问10.1.5.5/32的流量路径为:R1-R2-R4-R5。

  1. 当R2故障时,流量路径切换到:R1-R3-R4-R5。
  2. 当R2故障恢复后,由于IGP收敛速度比BGP快,因此OSPF先收敛。此时R1若要访问10.1.5.5/32,先查BGP路由,下一跳为R5;再查IGP路由,会根据IGP路由传递给R2。
  3. R2收到该流量后,会查BGP路由。由于BGP还未完成收敛,发现没有到达10.1.5.5/32的路由,则不会转发数据,造成流量丢失。

解决BGP收敛慢导致路由黑洞的解决配置

  • 通过使能OSPF与BGP联动特性,可以解决流量丢失问题。
  • 使能了OSPF与BGP联动特性的设备会在设定的联动时间内保持为Stub路由器,也就是说,该设备发布的LSA中的链路度量值为最大值(65535),从而告知其它OSPF设备不要使用这个路由器来转发数据。

在R2上使能BGP联动,这样,在BGP收敛完成前,R1不把流量转发到R2上,而是继续使用备份设备R3转发流量,直到R2上的BGP路由完成收敛。

配置Stub路由器:

1
2
3
4
5
6
[Huawei-ospf-1] stub-router[on-startup[interval] ]
[Huawei-ospf-1] stub-routeron-startup 100

配置Stub路由器是一种特殊的路由选路,配置了Stub路由器的路径不被优选。
实现方法是将度量值设为最大(65535),尽量避免数据从此路由器转发。用于保护此路由器链路,通常使用在升级等维护操作的场景。

命令:[Huawei-ospf-1] stub-router[on-startup[interval] ]

on-startup [ interval ]:设备在发生重启或故障时保持为Stub路由器的时间间隔。整数形式,取值范围是5~65535,单位是秒,缺省值是500秒。

如果未配置on-startup参数,则表示该设备始终保持为Stub路由器,即所有来自这个设备的路由条目Cost值均设为65535。

如果配置了on-startup参数,则表示该设备仅在重启或者故障时保持为Stub路由器,保持时间由interval参数决定。此时若未配置interval参数,则使用interval的缺省值500秒。

OSPF转发地址-FA

介绍

  • FA(Forwarding Address,转发地址):

到达所通告的目的地的数据包应该被转发到的地址,如果转发地址为0.0.0.0,那么数据包将被转发到始发ASBR上。

Type5 AS-External-LSA 和 Type7 NSSA LSA:

注意OSPF的Type5 LSA和Type7 LSA中包含一个特别的字段FA,FA的引入使得OSPF在某些特殊的场景下可以避免次优路径问题。

没有FA引发的问题

  • R2、R3和R4运行OSPF,均部署在Area0中。其中R2和R3的GE0/0/1接口都激活OSPF并建立邻接关系,但是两者与外部路由器R1并不建立OSPF邻接关系。
  1. R2配置到达10.1.1.1/32的静态路由,下一跳为10.1.123.1。
  2. R2将静态路由引入OSPF,产生Type5 LSA在区域内泛洪。
  3. R3接收到R2产生的5类LSA,计算出到达10.1.1.1/32的外部路由,并且将路由的下一跳指定为R2(10.1.123.2)。
  • OSPF域内的路由器如R4到达10.1.1.1/32的路径是:R4-R3-R2-R1,该路径是次优路径的。

利用FA解决次优路径问题

  • R2向OSPF域内通告到达10.1.1.1/32的外部路由时,为对应的Type5 LSA设置FA,值为其自己到达该外部路由的下一跳:10.1.123.1。
  • 当R3收到该LSA后,计算到达10.1.1.1/32的路由时,发现FA为非0,因此它认为到达目标地址10.1.1.1/32的下一跳为FA所指定的地址,即:10.1.123.1。
  • 有FA地址后路径:R4-R3-R1

FA的取值

  • 当ASBR引入外部路由时,若Type5 LSA中的FA字段为0,表示路由器认为到达目的网段的数据包应该发往该ASBR;若Type5 LSA中的FA字段不为0,表示路由器认为到达目的网段的数据包应该发往这个FA所标识的设备。
  • 当以下条件全部满足时,FA字段才可以被设置为非0:

ASBR在其连接外部网络的接口(外部路由的出接口)上激活了OSPF;

该接口没有被配置为Silent-Interface;

该接口的OSPF网络类型为Broadcast或NBMA;

该接口的IP地址在OSPF配置的network命令指定的网段范围内;

到达FA地址的路由必须是OSPF区域内部路由或区域间路由,这样接收到该外部LSA的路由器才能够加载该LSA进入路由表。加载的外部LSA生成的路由条目下一跳与到达FA地址的下一跳相同。

  • NSSA区域Type7 LSA转化为Type5 LSA:

为了将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。

注意:所有的OSPF LSA有相同的LSA头部,P-bit在LSA头部中的Options字段。

案例:NSSA场景下FA的典型应用

  • 当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。