填充总结
| 作用 | 默认情况 | 非默认情况填充方式 |
5类LSA填充 | 能够更快捷地到达LSA 5所通告路由的下一跳地址 | 默认填充为0.0.0.0, | 满足以下3个条件填充非0 |
7类LSA填充 | 能够更快捷地到达LSA 5所通告路由的下一跳地址 | 默认填充非0.0.0.0 ,默认优先填充ASBR中启用OSPF的loopback接口 | 可以在ABR进行7转5时(ABR配置命令 NSSA suppress-forwarding-address)强制填充为0.0.0.0 |
摘要
本文介绍了OSPF协议中对于 AS-External-LSA 中的Forwarding Address如何处理以及Forwarding Address 如何影响OSPF路由选路包括Forwarding Address 可能导致的次优路径问题。
介绍
Forwarding Address 是OSPF AS-External-LSA(以下简称5类LSA)中携带的标识外部转发地址的信息。通常情况下Forwarding Address 填写为0.0.0.0,通告给其他OSPF 路由器达到这条外部路由需要经过自己,其他路由器通过OSPF路由计算可以得知如何到达该ASBR。在满足一定条件的情况下Forwarding Address 可以填写为非零的IP地址,其他路由器如果存在到达该IP地址的合法路由,则可以通过该地址到达目的地而不一定要经过ASBR,从而达到路径优选目的。
Forwarding Address路由合法性
如果OSPF 路由器通过Forwarding Address(以下简称FA)计算到达外部路由的路径,那么必须确保自身的路由表中存在到达该FA的OSPF AS 内部路由(OSPF intra-area route or OSPF inter-area route),否则该外部路由无效。
Forwarding Address填写原则
在满足如下所有条件的情况下FA设置为非0.0.0.0
OSPF在ASBR的下一跳接口被启动(ASBR引入的这条外部路由,其对应的出接口启用了OSPF)
ASBR的下一跳接口没有被设置为被动接口
ASBR的下一跳接口不是OSPF P2P或P2MP类型的
除此之外,其它情况FA都填为0.0.0.0
通过Forwarding Address 实现路径优选
考虑如下组网:
Router A同Router B、Router C通过多点访问的网络相连,Router A同Router B之间运行的是非OSPF的路由协议,Router B、Router C、Router D之间运行OSPF路由协议,假设Router B的2.2.2.1接口和Router C的2.2.2.3接口都没有启动OSPF路由协议,Router B 作为ASBR将Route a引入至OSPF域,在发布Route a时FA将填写为0.0.0.0,Router D在访问a时将查找到达ASBR Route B的路由,最终将通过Router C-Router B-Router A访问a。如果在Router B和Router C的2.2.2.1及2.2.2.3接口启动OSPF协议,那么Router B同样作为ASBR发布 a路由的5类LSA,这时Router B在填写FA时已经满足了非零FA的填写条件(见上文),因此FA填写为2.2.2.2,Router D在访问a网段,则会直接计算到达2.2.2.2的路由,最终通过Router C直接到达Router A,实现了路径优选的目的。那么如果 Router C的2.2.2.3网段并没有启动OSPF,Router D如何访问 a网段呢?这时Router B发布a时依然将FA填写为2.2.2.2,Router D依然会计算到达 2.2.2.2 的OSPF AS 内部路由,计算结果表明可以通过Router B到达2.2.2.2,因此最终的转发路径依然是Router C-Router B-Router A。
理解Forwading Address 路由合法性
如果OSPF路由器在计算到达 FA地址的路径时无法找到OSPF区域内或区域间的路由,那么相应的外部路由将不能被加入到路由表中,导致路由黑洞。
考虑如下组网:
Router A 同Router B、Router C运行非OSPF路由协议,Router B 作为 area N和area 0的ABR出于特殊原因不能向area 0发布2.2.2.0网段的路由信息,因此做了汇聚且不发布。Router C通过Router A学习到2.2.2.0的外部路由,并且发布到OSPF中。Router B 通过 Router A学习到外部路由Route a并且注入OSPF的时候将FA填写为2.2.2.2。位于area 0中的Router D能否到达Route a呢?Router D收到Route a的5类LSA,发现FA地址是2.2.2.2因此查找路由表中是否存在到达2.2.2.2的AS内部路由,因为Route C发布了2.2.2.2的外部路由,因此这时Router D是知道如何到达2.2.2.2的,但是由于这是一条外部路由,而不是AS 内部路由,与FA路由合法性相背,因此Router D最终还是不能将Route a加入到自己的路由表中,导致了路由黑洞。
Forwarding Address 导致次优路径
Forwarding Address 的设置本意是希望路由器能够选择一条最快捷的路径到达目的地,但是有时设置不当也可能导致次优路径的发生。
考虑如下组网:
Router B、Router C、Router D、Router E运行OSPF协议,并且Router B在2.2.2.1接口上没有启用OSPF,Router C在2.2.2.3接口上开启OSPF。Router A和Router B、Router C通过以太网相连,Router B和Router C通过外部路由学习到路由Route a,并且都作为ASBR将这条路由注入到OSPF域中。对于Router E,他将学习到两条关于Route a的5类LSA,所不同的是Router B发布的LSA中FA地址为全零,而Router C发布的LSA中FA地址为2.2.2.2 Router E 查找路由表后发现自己有到达2.2.2.2的AS 内部路由,也有到达ASBR Router B的路由,因此两条路由都是有效路由,通过比较路径cost,Router E发现到达2.2.2.2的cost为30而到达Router B的cost为25,因此Router E选择了到达Router B的路径。但是从网络实际拓扑来看,Router E选择了一条次优路径。
NSSA中Forwarding Address的处理
对于NSSA区域中ASBR产生的7类LSA,如果需要转换为5类LSA发布到其他OSPF区域,那么FA必须要填写非零的IP地址, RFC3101对此进行了明确要求:
NSSA AS boundary routers may only originate Type-7 LSAs into NSSAs.。An NSSA internal AS boundary router must set the P-bit in the LSA。header’s option field of any Type-7 LSA whose network it wants advertised into the OSPF domain’s full transit topology. The LSAs of these networks must have a valid non-zero forwarding address.
对于7类LSA中FA的填写分为两种情况:
如果发布该7类LSA的ASBR满足上文提到的非零FA填写规则,那么就按照该规则填写。
如果发布该7类LSA的ASBR不满足上述条件,那么需要从该路由器上启用OSPF协议的接口中选择一个进行填写。
对于情况2虽然RFC3101对FA的填写进行了要求,但是并未明确如何填写该FA。在某些组网环境中由于该FA地址的填写不当,有可能会产生次优路由。
考虑如下组网:
Router A、Router B、Router C形成NSSA区域,Router A引入外部路由Route a,通过7类LSA通告给Router B和Router C,因为RFC并未明确要求这种情况下该7类LSA中的FA如何填写,Router A可能会选择Int 1的IP地址填写FA,那么对于Router C来讲,到达Int 1有两条路径,一条是通过RouterA到达路径 Cost为100,令一条是通过Router B到达路径Cost为80,因此Router C将选择通过Router B的路径,很明显它实际上选择了一条次优路径。
如果在填写FA时,使用Loopback接口地址进行填写,可以解决上述问题。
参考资料:
RFC 2328 (OSPF)
RFC 3101 (NSSA)
ENSP实验
配置信息:
OSPF邻居信息:dis ospf pe br
dis ospf pe br
Area Id Interface Neighbor id State
0.0.0.1 GigabitEthernet0/0/0 1.1.1.1 Full
0.0.0.1 GigabitEthernet0/0/1 2.2.2.2 Full
** OSPF接口信息 dis ospf int g0/0/1 **
Interface: 10.11.1.5 (GigabitEthernet0/0/1)
Cost: 1 State: BDR Type: Broadcast MTU: 1500
Priority: 1
Designated Router: 10.11.1.6
Backup Designated Router: 10.11.1.5
Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
静态路由配置:
[Area1R1-GigabitEthernet0/0/1]dis ip rou p
Destination/Mask Proto Pre Cost Flags NextHop Interface
222.2.2.2/32 Static 60 0 RD 10.11.1.6 GigabitEthernet0/0/1
OSPF进程引入静态路由配置
dis cu conf ospf
[V200R003C00]
#
ospf 1
import-route direct type 1
import-route static type 1
area 0.0.0.0
area 0.0.0.1
#
return
查看通告的这条静态路由引入OSPF的5类LSA信息,有Forwarding Address : 10.11.1.6
<AR2>dis ospf lsdb ase 222.2.2.2
OSPF Process 1 with Router ID 1.1.1.2
Link State Database
Type : External
Ls id : 222.2.2.2
Adv rtr : 2.2.2.1
Ls age : 67
Len : 36
Options : E
seq# : 80000002
chksum : 0x444
Net mask : 255.255.255.255
TOS 0 Metric: 1
E type : 1
Forwarding Address : 10.11.1.6
Tag : 1
Priority : Medium
结论:
router 2.2.2.1 已成功生成5类LSA (222.2.2.2)中携带了Forwarding Address : 10.11.1.6 参数。
如果router 2.2.2.1 的GigabitEthernet0/0/1不启用OSPF,我们在看生成的5 LSA还有Forwarding Address没有?
<AR2>dis ospf lsdb ase 222.2.2.2
OSPF Process 1 with Router ID 1.1.1.2
Link State Database
Type : External
Ls id : 222.2.2.2
Adv rtr : 2.2.2.1
Ls age : 11
Len : 36
Options : E
seq# : 80000003
chksum : 0xadb5
Net mask : 255.255.255.255
TOS 0 Metric: 1
E type : 1
Forwarding Address : 0.0.0.0
Tag : 1
Priority : Medium