FA地址是LSA5和LSA7特有的,用来指导路由计算时的下一跳。
他通常有2种可选值 0 和非0
如果填0则表示内部路由器计算外部路由的COST如果是E1类的外部路由,则需要计算本路由器到ASBR直连段的COST。
如果填的是非0,则表示内部路由器计算外部路由的COST如果是E1类的外部路由,则需要计算本路由到ASBR所指定的非0地址的COST
--------------------------------------------
如果是E2类的外部路由,则先比较ASBR到外部路由的COST,如果一样再比较内部路由到达ASBR的开销。
-----------------------------------------
因此很可能会影响到路由的选路
如果某区域有2个ASBR同时通告了默认路由,此时应该会出现2条默认路由在区域内的路由器
但往往有的时候只有1条。WHY?
因为FA地址不一致导致COST计算不一致,引起路由无法形成ECMP形式
那OSPF对FA的地址是如何填写的呢?
一 如果是普通区域的LSA5,则存在如下情况:
1 如果引入的路由,下一跳地址上开启了OSPF,且链路类型为NBMA或广播形式,则FA地址填写引入路由的下一跳IP。
2 如果引入的路由,下一跳地址上开启了OSPF,且链路类型为P2P,或P2MP,则FA地址此时填写0,最后内部路由器计算时,是利用ASBR通告路由时所在接口的IP。
3 如果引入的路由,下一跳地市上未开启OSPF,或下一跳是个静默接口,则FA地址此时填写0,计算路由的时候会找到ASBR通告路由时所在接口的IP。
-------------------------------------------------------------------------------
二 如果是NSSA区域的LSA7,则存在如下情况:
1 如果引入的路由,下一跳地址在本NSSA区域,且开启了OSPF,链路类型为NBMA或广播,则FA地址填写引入路由的下一跳IP,同时在LSA7转换LSA5的时候将FA字段COPY至LSA5
2 如果引入的路由,下一跳地址在本NSSA区域,且开启了OSPF,链路类型为P2P或P2MP,同时LSA的P标志被标记(P标志表示该LSA可以进行7转5操作),则FA地址填写为本设备中LOOPBACK地址最大的IP,如果没有LOOPBACK,则填写物理接口最大的IP(只会找NSSA区域的接口IP)。
3 如果引入的路由,下一跳地址在本NSSA区域,且开启了OSPF,但此时是发布默认路由,则P标志不会被标记(因为NSSA的默认路由是不会被转换成LSA5的,不会FLOODING到其他的区域),则FA地址填写为本设备中LOOPBACK地址最大的IP,如果没有LOOPBACK,则填写物理接口最大的IP(只会找NSSA区域的接口IP)。所以在NSSA区域发布默认路由很不容易形成ECMP
-------------------------------------------------------------------------------NSSA之所以要这样做,是为了防止次优路由的出现
4 如果引入的路由,下一跳地址在不再本NSSA区域,或则没有开启OSPF,此时不管链路类型是那种,P标记有无被标记,FA的填写统一使用本路由器第一个使能OSPF的接口IP地址。
-------------------------------在NSSA区域中没有填写为0的时候
谢谢
sharpmind大师的OSPF学习笔记。