OSPF 中的FA是做什么用的? FA 是Forwarding Address的简写。FA是ASBR通告的TYPE 5 LSA中的字段,它的作用是告诉OSPF域内的路由器如何能够更快捷地到达LSA 5所通告路由的下一跳地址。以免OSPF 内部路由器在广播网络上以ASBR为下一跳,再由ASBR自己转发到正确的下一跳,而产生额外的路由。简单来说,FA字段的作用类似于BGP协议中的“第三方下一跳”概念,主要在广播共享网络中起作用。FA字段可以为全0或者非0两种选择,有以下几个规则: 1、 当与引入路由的下一跳关联(互连)的接口没有启动OSPF时,FA设置为0; 例如在上面图中,R8引入直连接口E1的路由,此接口没有启动OSPF,因此TYPE 5 的LSA中 FA字段为0。 2、当下列所有条件均满足的情况下,TYPE 5 LSA中FA字段设置为非0: 1、在ASBR上,与引入外部路由下一跳关联的接口启动了OSPF,即位于Network命令范围内。 2、在ASBR上,与引入外部路由下一跳关联的接口不能配置被动接口; //前两个规则是确保LSA能够被通告。 3、在ASBR上,与引入外部路由下一跳关联的接口配置的OSPF网络类型不能是P2P或P2MP。 //确保网络类型是Broadcast或NBMA 的共享网络。 以上说了FA字段可能设置为非0,那么到底是一个什么值呢? 它是数据包应该被路由到的出口的接口地址。并不是loopback接口的IP地址,或者ROUTER ID指示的值什么的? 1 OSPF协议中FA地址是如何影响外部路由选路的? 上面提到TYPE 5 LSA的FA字段要么为0,要么非0。那么对于路由选路有何影响吗? 又有哪些注意点呢? 概括起来讲就是在计算由TYPE 5 LSA描述的某个外部路由时,会查找生成该LSA的ASBR,如果不存在这个ASBR的表项,忽略这个LSA。 否则,检查这个LSA的FA地址,这个地址就是转发数据包应该被发送到的地址。如果FA为0,数据包应该被发送到ASBR;如果FA非0,在OSPF路由表中查找到FA地址的表项,而且该表项必须被域内或者域间路由覆盖,否则不考虑这个LSA。 前面卖了这么多的关子,到底ospf在计算路由时如何参考FA地址? 一句话:如果FA非0,根据计算到FA地址的metric,而不是计算到ASBR的metric进行路由优选。那么在计算外部路由时又是如何依据它进行选路呢? 1、 计算外部路由时,首先检查通告TYPE 5 LSA的ASBR是否存在,否则忽略该LSA; 本文来源:https://www.wddqw.com/doc/c662e5b632687e21af45b307e87101f69f31fb4f.html