苏函
目录
OSPF的5类LSA中,有一个Forward Address字段,此字段会带上一个FA地址,它的作用主要有二点:
1. 优化选路。
2. 防环。
此文章中并不是要探讨此二点具体如何实现,而是想搞清楚,此FA地址究竟会携带哪个地址呢?
FA地址的选择遵循以下规则:
1. 大前提:此FA地址必须通过OSPF可达,也就是说,此地址一定要被宣告到OSPF进程中,才会被选择。
2. 被引入路由的下一跳IP > 回环口IP > 物理接口IP。
而比较难的是,当有多个回环口,或多个物理接口的时候,又是如何选择的呢?
此时的选择是:首次最早参与到OSPF进程的接口!特别要注意的是,一定是首次,什么意思呢?也就是说一个接口被宣告到OSPF后,又去掉此宣告,再宣告其它接口,然后又将此接口再次宣告进OSPF的时候。它依然是最早参与到OSPF进程的接口。这也是我们会对此理解混乱的原因。
进一步理解一下,为什么要做出此选择呢。其实也是说得通的,因为一切都应该是稳定为前提,所以一个最早被宣告的接口,应该是最老的,最稳定的,选择它也是合理的了。
接下来用实验的方式,验证上面的结果。实验比较复杂,各位看官可以酌情观看。
l 验证FA地址选举规范
1. 如拓扑如示配置基本的OSPF
2. 在AR4上将RIP引入到OSPF进程
3. 配置Area 1区域为NSSA区域。
被引入路由的下一跳IP > 回环口IP > 物理接口IP。
如下图所示,当AR4与AR6之间的链路被宣告到OSPF进程的时候,此时AR4携带的FA地址,一定是被引入路由6.1.1.1/32的下一跳46.1.1.6。
如下图所示:
但这也是有前题的,除去必须被宣告到OSPF以外,还有以下要求:
1. 此接口网络类型不能为P2P、P2MP.
2. 此接口不能配置为静默端口。
[AR4-GigabitEthernet0/0/0]undo ospf enable 1 a 1
[AR4-LoopBack0]ospf enable 1 a 1
去掉下一跳接口的宣告,并宣告一个回环接口,如下图所示。
此时一定会选择4.1.1.1为FA地址,如下所示:
注意:一定要是按首次参与时间排序。
特意重启设备后,做测试。
[AR4-LoopBack100]ip address 4.1.1.100 32
[AR4-LoopBack100]ospf enable 1 area 1
[AR4-LoopBack1]ip address 4.1.1.1 32
[AR4-LoopBack1]ospf enable 1 a 1
观察以上信息,可以发现,首先被宣告的会排上面。
[AR4-LoopBack200]ip address 4.1.1.200 32
[AR4-LoopBack200]ospf enable 1 a 1
如下所示,按照参与到OSPF进程的顺序,优选最早参与到OSPF的接口。
[AR4]interface LoopBack 100
[AR4-LoopBack100]undo ospf enable 1 a 1
[AR4-LoopBack100]ospf enable 1 a 1
[AR4]undo interface LoopBack 100
[AR4-LoopBack100]ip address 4.1.1.100 32
[AR4-LoopBack100]ospf enable 1 a 1
如上所示,此时loopback1被认为是最新参与到OSPF的接口了,而此时4.1.1.1将被选为FA地址:
由于华为文档并没有提及FA地址的选举,所以文档信息来源来一篇Cisco文档。同样,我也用Cisco设备做了验证,都符合以上规则。
下面附上Cisco文档截图。
不过以上Cisco文档中也有一个错误,是最先被宣告的排上面,而不是最后被宣告的排上面。如下图所示:
R4(config)#int loo100
R4(config-if)#ip address 4.1.1.100 255.255.255.255
R4(config-if)#ip ospf 1 a 1
R4(config-if)#int lo 1
R4(config-if)#ip address 4.1.1.1 255.255.255.255
R4(config-if)#ip ospf 1 a 1
R4(config-if)#do show ip ospf int b
附下Cisco实验截图:
大家对此有什么意见和看法,欢迎评论。我将一一回复的。