泰涨知识 | 路由协议系列之六:OSPF FA地址

2023-06-26 08:00:20

OSPF中的5类和7类LSA中包含了一个特殊的内容,叫Forwarding Address(以下简称FA),FA有什么用呢?


很简单,OSPF协议在计算路由时总是希望能找到“最优路径”,但在引入外部路由时,有些情况并不能如其所愿,于是FA地址华丽登场,协助OSPF找到“真·最优路径”。


背景介绍


FA是Forwarding Address(转发地址)的简写。FA是ASBR通告的TYPE 5 LSA和TYPE 7 LSA中的字段,它的作用是告诉OSPF域内的 路由器如何能够更快捷地到达LSA 5所通告路由的下一跳地址。


以免OSPF内部路由器在MA网络上以ASBR为下一跳,再由ASBR自己转发到正确的下一跳,而产生额外的路由,具有避免次优路径的产生以及防止环路的功能。


当FA为0.0.0.0时,则到达该外部网段的流量会被发往引入这条外部路由的ASBR。而如果FA不为0.0.0.0,则流量会被发往这个转发地址。



一、背景


没有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的取值


当ASBR引入外部路由时,若Type5 LSA中的FA字段为0,表示路由器认为到达目的网段的数据包应该发往该ASBR;若Type5 LSA中的FA字段不为0,表示路由器认为到达目的网段的数据包应该发往这个FA所标识的设备。


当以下条件全部满足时,FA字段才可以被设置为非0:


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

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

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

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


在RFC中规定,到达FA的路由必须是区域内或区域间路由,这样接收到该外部LSA的路由器才能够加载该LSA进入路由表。为什么要做这样一个检查呢。


我们知道OSPF是一个无环的链路状态协议,区域内的无环是依靠最短路径树来保证,而区域间的无环是依靠非骨干区域和骨干区域连接来实现,这些方法保证了AS内部路由计算的可靠性。


但是OSPF无法控制AS外部的路由信息是否可靠,FA本身就是用于转发到达外部网络的地址,如果用一个外部路由来迭代查找FA并进行路由计算,那么很可能会导致路由问题。所以才有了以上要求。




三、NSSA场景下FA的典型应用


当NSSA区域中有多个ABR时,系统会根据规则自动选择一个ABR作为转换器,将Type7 LSA转换为Type5 LSA,其他ABR不做LSA转换。


缺省情况下,转换路由器是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字段)。


如图所示,如果不考虑FA,由于R3的Router ID比R2大,因此它将执行7转5的动作,如此一来,R1将认为必须经由ABR(R3)到达目的网络。这样,流量便会被引导到低带宽链路,即R1-R3-R4-R5。


引入FA地址后:

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。




四、组网中需要注意的问题


在组网中可能遇到不同厂家的设备或者是相同厂家不同版本的设备,在对FA的处理上可能会存在不同,所以需要在配置规划中注意一些问题:


1、尽量在ASBR处对外部路由进行聚合;


2、如果不在ASBR处进行路由聚合,那么进行路由过滤,只引入希望引入的外部路由;


3、如果ASBR连接外部网络的接口上使能了OSPF,并且该接口连接了一个多点可达的网络,那么在所有OSPF内的路由器,要可以通过区域内或者区域间路由访问ASBR连接外部网络的接口地址;


4、如果路由器并不存在与ASBR的直接邻接,并且FA直连可达。为了使FA实现转发的优化,必须在直连FA的接口也使能OSPF,可以同时将该接口配置为被动接口以减少对网络的影响。




五、总结



总体来说,FA地址的存在能让OSPF域内的路由器如何能够更快捷地到达通告外部路由的下一跳地址,以免内部路由器在广播网络上以自己为下一跳路由到自己,自己再转发到同一广播网络上的外部路由域的路由器上,而产生"额外"的一跳,确定最优路径。