关于OSPF LSA7中FA字段的选址规则

由于本人一直不清楚LSA7中FA字段的选址规则,可能我查资料的水平不够,没找到什么比较详细的材料,只看到有句话写着在路由器会选择先up的接口,作为FA,但是这句话好像不是那么清晰。还有就是找的是思科的,选址规则应该是不一致的。所以自己做了一些对比试验,推测其选址规则。有知道得更加详细的大佬务必评论留言教教我~谢谢!
在这里插入图片描述

FA字段选址规则实验

R5上有loopback0: 10.10.10.10/32,无其他loopback接口。
R6、R7上仅配置了IP地址,无OSPF配置。

1、在R5上针对Loopback0在OSPF Area1(NSSA)做了引入。

此状态下,display ospf lsdb nssa 查看FA字段,发现为0.0.0.0。

2、宣告56.1.1.5后,FA变为56.1.1.5。
3、undo network 56.1.1.5 0.0.0.0后,宣告57.1.1.5,FA变为57.1.1.5。

到此其实都能想到。只有一个物理口up,肯定选择这个借口作为FA。

4、undo network 57.1.1.5 0.0.0.0后,(即现在R5无地址宣告在Area1中)。现按57.1.1.5,56.1.1.5的顺序宣告进Area1。FA最终为56.1.1.5。

也就是它记录了第一个up的接口,当这个接口down后再次up,会重新被选择成为FA。
我怀疑它把第一个up的接口缓存了,我想知道会不会因为进程重启,或者路由器重启,导致FA优选的接口IP改变。

5、在对两个网段undo network后,使用reset ospf process命令,刷新ospf进程,并且save之后重新启动了路由器,再重新按57、56的顺序宣告网段,最终FA字段仍为56.1.1.5。

刷新进程、重启路由器,它还是记录了之前 步骤2 第一个up的接口IP。(我不是很懂,不清楚他是怎么记录的,记录在哪。或者还是模拟器bug,如果有大神,务必指点一下)
可能有人会怀疑是不是它默认优选IP地址小的接口,所以我又做了实验

6、我将拓扑删除,重新搭建,按上面的实验步骤,按相反的宣告顺序重新做了一遍,实验结果也相反,路由器优选了57网段。

所以LSA7的FA字段与接口地址大小无关。
然后我又想到,如果不只是两个网段,而是三个或以上的网段,会出现怎样的情况,它是否只会记录第一个up的接口,如果只会记录第一个up的接口,那如果第一个up接口down了,剩余其他的接口谁会被优选。

7、在步骤6的基础上(即先宣告了57,后宣告了56),我新添加了一个路由器R8,网段设为58.1.1.0/24。对56,57网段进行undo network,然后将58网段宣告进OSPF(此时FA=58.1.1.5),宣告57(FA=57.1.1.5),宣告56(FA=57.1.1.5)。

发现57抢占了58,56没有抢占57。

8、在步骤7基础上,将56,57,58网段undo network后,宣告58(FA=58.1.1.5),宣告56(FA=56.1.1.5),宣告57(FA=57.1.1.5)。

发现56抢占了58,57抢占了56。优先级正好符合各网段宣告顺序,即先宣告的优先顺序高,并且路由器会记录这个顺序。(具体能记录多少条我没有去实验,目前只知道它记录了3个接口地址的宣告顺序,也许正好就只记录3条,也许还能记录更多,如果有知道的希望能评论留言)。

同时我又重新读了一下那句话“没有环回口的情况下,FA字段选择先up的接口”,这个up能否等同于ospf的宣告。所以又做了个实验

9、删除了拓扑重新搭建,先宣告了网段57、56再配置接口的IP地址56、57,结果优选56作为FA。

所以“先up的接口”应该理解为,先有效宣告进OSPF的接口,而不是单纯的宣告顺序。
而我查到的关于思科的选路规则,写的是FA字段会选择最后宣告的地址。

扫描二维码关注公众号,回复: 14614278 查看本文章

次优路径

大家再学习的时候,会被告诉LSA7中的FA字段可以用来防止次优路径,但我根据以上选路原则,我觉得可能在没有loopback宣告进OSPF的情况下,FA字段未必能解决次优路径。
在这里插入图片描述
在这里插入图片描述
蓝色部分为Area0,黄色部分为Area 1 NSSA区域。R1-R2、R1-R3、R2-R4的路径开销为1,R3-R4的路径开销为10。R4上引入了loopback0:10.10.10.10/32
由于在R4的Area 1内宣告网段时,先宣告了34.1.1.0/24网段,所以FA字段优选34.1.1.4。

这就导致R1上去往10.10.10.10的路由下一跳选择为34.1.1.4,而去往34.1.1.0/24网段的路由下一跳为13.1.1.3,开销为1。于是可以在路由表中发现,10.10.10.10.路由的下一跳为13.1.1.3。数据到达R3,查找路由表,下一跳34.1.1.4,开销为10,路径总开销为11。而R1-R2-R4路径开销为2。于是产生次优路径。

所以最好的解决办法就是在R4上配置环回口,宣告进Area 1,才能真正避免次优路径。

我认为华为这种选择第一个up的接口作为FA的方式,可以在后续配置过程中,避免LSA重新生成和泛洪,路由重新计算。

文章如有错误,敬请指出,谢谢。

猜你喜欢

转载自blog.csdn.net/qq_43924087/article/details/104778385