OSPF Forward Address地址的选择标准
苏函
目录
TOC \o "1-3" \h \z \u OSPF Forward Address地址的选择标准...
PAGEREF _Toc86999876 \h 1
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800370036000000
理论总结:...
PAGEREF _Toc86999877 \h 1
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800370037000000
实验拓扑...
PAGEREF _Toc86999878 \h 1
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800370038000000
实验目的...
PAGEREF _Toc86999879 \h 2
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800370039000000
实验步骤...
PAGEREF _Toc86999880 \h 2
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800380030000000
步骤1:基本环境搭建:...
PAGEREF _Toc86999881 \h 2
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800380031000000
步骤2:观察总体选举规则:...
PAGEREF _Toc86999882 \h 2
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800380032000000
步骤3:观察规则:环回口优先于物理接口。...
PAGEREF _Toc86999883 \h 3
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800380033000000
步骤4:测试有多个接口时的FA地址选举规则。...
PAGEREF _Toc86999884 \h 4
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800380034000000
步骤5:再次验证结论:...
PAGEREF _Toc86999885 \h 5
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800380035000000
结语:...
PAGEREF _Toc86999886 \h 8
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380036003900390039003800380036000000
理论总结:
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:基本环境搭建:
1. 如拓扑如示配置基本的OSPF
2. 在AR4上将RIP引入到OSPF进程
3. 配置Area 1区域为NSSA区域。
步骤2:观察总体选举规则:
被引入路由的下一跳IP > 回环口IP > 物理接口IP。
如下图所示,当AR4与AR6之间的链路被宣告到OSPF进程的时候,此时AR4携带的FA地址,一定是被引入路由6.1.1.1/32的下一跳46.1.1.6。
如下图所示:
但这也是有前题的,除去必须被宣告到OSPF以外,还有以下要求:
1. 此接口网络类型不能为P2P、P2MP.
2. 此接口不能配置为静默端口。
步骤3:观察规则:环回口优先于物理接口。
[AR4-GigabitEthernet0/0/0]undo ospf enable 1 a 1
[AR4-LoopBack0]ospf enable 1 a 1
去掉下一跳接口的宣告,并宣告一个回环接口,如下图所示。
此时一定会选择4.1.1.1为FA地址,如下所示:
步骤4:测试有多个接口时的FA地址选举规则。
注意:一定要是按首次参与时间排序。
特意重启设备后,做测试。
a) 先宣告loopback100接口:
[AR4-LoopBack100]ip address 4.1.1.100 32
[AR4-LoopBack100]ospf enable 1 area 1
b) 再宣告loopback1接口:
[AR4-LoopBack1]ip address 4.1.1.1 32
[AR4-LoopBack1]ospf enable 1 a 1
观察以上信息,可以发现,首先被宣告的会排上面。
c) 再添加一个接口:
[AR4-LoopBack200]ip address 4.1.1.200 32
[AR4-LoopBack200]ospf enable 1 a 1
d) 结论:而此时FA地址的选择将会是4.1.1.100 > 4.1.1.1 > 4.1.1.200
如下所示,按照参与到OSPF进程的顺序,优选最早参与到OSPF的接口。
步骤5:再次验证结论:
a) 去掉loopback100口的宣告,一定会选择loopback1口的4.1.1.1。
[AR4]interface LoopBack 100
[AR4-LoopBack100]undo ospf enable 1 a 1
b) 再恢复loopback100口的宣告,此接口将回归最早被宣告的位置:
[AR4-LoopBack100]ospf enable 1 a 1
c) 如何重置接口信息:undo掉此回环口,将重置ospf接口信息。
[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实验截图:
大家对此有什么意见和看法,欢迎评论。我将一一回复的。