某金融单位地市公司采用一台AR4620和一台C2621路由器连接省公司两台友商骨干路由器,地市核心交换机采用两台S3952P做IRF堆叠,然后交叉双上行连接上联路由器。下行通过防火墙连接下联路由器。省公司局域网、省市骨干网和地市局域网均运行OSPF协议。其中地市路由器上联接口在骨干区域area 0,地市路由器内网口、内网交换机及下联路由器均在普通区域area n。
省核心交换、省上联路由器运行BGP协议。在OSPF和BGP边界做双向路由重分发。比如省行两台上联路由器将从EBGP学到路由25.0.0.0/8重分布到OSPF中,使得地市公司可以学习到该OSPF外部路由。
OSPF组网简图
某日该单位省公司上联BGP路由调整,发现其中一个地市公司的S3900 OSPF外部路由学习异常,正常情况下应该从上联两台路由器学习到3条等价的路由,现在只从AR4620学习到两条等价路由。
<3952p>dis ip routing-table 25.0.0.0
Destination/Mask Protocol Pre Cost Nexthop Interface
25.0.0.0/8 O_ASE 150 1 49.76.101.1 Vlan-interface101
49.76.101.9 Vlan-interface102
1、将S3900连接AR4620的两个vlan虚接口(Vlan-interface101、Vlan-interface102)shutdown
发现依然可以学习到两条等价路由,但是下一跳指向上联路由器C2621
<3952p>dis ip rou 25.0.0.0
Destination/Mask Protocol Pre Cost Nexthop Interface
25.0.0.0/8 O_ASE 150 1 49.76.101.5 Vlan-interface103
49.76.101.13 Vlan-interface104
2、将S3900连接AR4620的两个vlan虚接口undo shut恢复正常,发现上述ASE路由又切回从AR46学到。
查看外部路由的优先级和cost均相同,为何S3900选择从AR4620学习该ASE路由,而不从C2621学习该路由呢?
首先看看产生该路由的LSA:
<AR4620>dis ospf lsdb ase 25.0.0.0
OSPF Process 1 with Router ID 110.120.27.113
Link State Database
Type : ASE
Ls id : 25.0.0.0
Adv rtr : 192.168.41.2
Ls age : 875
Len : 36
Seq# : 80000074
Chksum : 0x7eec
Options : (DC)
Net mask : 255.0.0.0
Tos 0 metric: 1
E type : 2
Forwarding Address :0.0.0.0
Tag: 64512
Type : ASE
Ls id : 25.0.0.0
Adv rtr : 192.168.41.1
Ls age : 359
Len : 36
Seq# : 80000059
Chksum : 0xbacc
Options : (DC)
Net mask : 255.0.0.0
Tos 0 metric: 1
E type : 2
Forwarding Address :0.0.0.0
Tag: 64512
先明确两个概念:
a)一类外部路由和二类外部路由:
外部路由是根据OSPF AS-External-LSA(以下简称5类LSA)生成的,描述了应该如何选择到AS以外目的地址的路由,根据是否计算AS内部路径开销分为第一类和第二类外部路由。第一类外部路由的开销=本路由器到相应的ASBR的开销+ASBR到该路由目的地址的开销,第二类外部路由的开销=ASBR到该路由目的地址的开销。
OSPF协议认为第一类外部路由可信度高高一些,在对于同一个目的地址同时存在第一类外部路由和第二类外部路由时,不管这两条外部路由的花费是多少,均优选第一类外部路由。
对于TYPE 1类的外部路由,该路由的COST值为该路由引入OSPF时的COST加上本路由器到达ASBR/Forwarding Address的COST值;对于TYPE 2类的外部路由,仅计算该路由引入OSPF时的COST值。
b) Forwarding Address
Forwarding Address 是OSPF AS-External-LSA(以下简称5类LSA)中携带的标识外部转发地址的信息。通常情况下Forwarding Address 填写为0.0.0.0,通告给其他OSPF 路由器达到这条外部路由需要经过自己,其他路由器通过OSPF路由计算可以得知如何到达该ASBR。
在Forwarding Address地址填写为0.0.0.0的情况下,ospf外部路由如何进行优选呢?
H3C COMWARE V3/V5平台规定如下:
AS External 路由计算时,External LSA的FA为空,从到ASBR的路由中继承下一跳信息。即选取最优的到ASBR的路由。
经过细致排查发现,该地市公司两台上联路由器C2621和AR4620计算到ASBR的cost不一致。
从110.120.27.25这台CISCO设备router lsa 的link来看它的Serial0/0接口cost是64
LS age: 723
Options: (No TOS-capability, DC)
LS Type: Router Links
Link State ID: 110.120.27.25
Advertising Router: 110.120.27.25
LS Seq Number: 80000137
Checksum: 0x3C99
Length: 48
Area Border Router
Number of Links: 2
Link connected to: another Router (point-to-point)
(Link ID) Neighboring Router ID: 110.120.27.50
(Link Data) Router Interface address: 9.38.57.94
Number of TOS metrics: 0
TOS 0 Metrics: 64
而对应位置的110.120.27.113(AR4620)的Serial0/0接口cost是50
Type : Router
Ls id : 110.120.27.113
Adv rtr : 110.120.27.113
Ls age : 1412
Len : 72
Seq# : 80007325
Chksum : 0x73e3
Options : (DC) ABR
Link count: 4
Link ID: 110.120.27.60
Data : 9.38.37.94
Type : Point-to-Point
Metric : 50
由于这个差异,导致两台设备生成到区域8的描述ASBR的4类LSA metric不同,一个是150,一个是164,进而在S
S3952P计算ASBR生成外部路由路由无法形成等价。
Type : SumASB
Ls id : 192.168.41.1
Adv rtr : 110.120.27.113
Ls age : 1120
Len : 28
Seq# : 80000320
Chksum : 0x18f
Options : (DC)
Tos 0 metric: 150
Type : SumASB
Ls id : 192.168.41.1
Adv rtr : 110.120.27.25
Ls age : 485
Len : 28
Seq# : 80000124
Chksum : 0x7f57
Options : (DC)
Tos 0 metric: 164
解决方法: 在C2621的Serial0/0接口上配置bandwidth 2000解决问题。
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
1. OSPF在ASBR的下一跳接口被启动
2. ASBR的下一跳接口没有被设置为被动接口
3. ASBR的下一跳接口不是OSPF P2P或P2MP类型的
除此之外,其它情况FA都填为0.0.0.0
l AS External 路由计算时,External LSA的FA为空,从到ASBR的路由中继承下一跳信息。
选取最优的ASBR的路由遵循规则如下:
ü 兼容RFC1583的OSPF进程中,非骨干区的OSPF Intra Area路由优先级最高;不兼容RFC1583的OSPF进程中,非骨干区的OSPF Intra Area路由、骨干区的OSPF Intra Area路由、OSPF Inter Area路由的优先级相同。
ü 选择优先级较高的路由。
ü 优先级相同的情况下,Cost较小的路由优先。
ü 优先级相同、Cost相同的情况下,路由相关区域的Area ID最大的优先。
l OSPF AS External路由计算时,External LSA的FA不为空,从到FA的路由中继承下一跳信息。
到FA的路由的计算遵循Intra Area计算和Inter Area计算规则,查找FA的路由的根据最长掩码匹配的原则,到FA的路由只能为本OSPF内的Intra Area路由和Inter Area路由。
1、 对于同一个目的地址同时存在第一类外部路由和第二类外部路由时,不管这两条外部路由的花费是多少,均优选第一类外部路由
2、 根据外部路由信息中所带的ASBR/Forwarding address信息,可以将外部路由分为三类,非骨干区域内外部路由(ASBR/Forwarding address和本路由器在同一个非骨干区域内),骨干区域内外部路由(ASBR/Forwarding address和本路由器都在骨干区域内),跨区域外部路由(ASBR/Forwarding address和本路由器不在同一个区域内)。选路的时候,非骨干区域内外部路由的优先级最高,骨干区域内外部路由和跨区域外部路由的优先级相同。
3、 对于同一类型的外部路由,cost值小的优先。
4、 对于处于NSSA区域边界的ABR来说,可能同时通过第5类LSA和第7类LSA学习到同一条路由信息。在这时,会优选通过第5类LSA学习到的路由。