因STP计算错误导致OSPF无法成功建立邻居故障案例
一、故障现象
两台服务器ServerA、ServerB采用二层华为交换机S3928接入汇聚层华为交换机S3300。汇聚层交换机与上行核心层三层交换机跑OSPF动态路由协议,两台S3300交换机互连起用OSPF协议,以作网络主备切换。这样交换机S3928与上行S3300组成了一个三角环形的网络拓扑了。
某日接到人员的报障,称无法访问服务器。在个人终端上上Tracert服务器地址,发觉路由只能到达汇聚层交换机S3300。同时,经检查,下挂在汇聚交换机3300下的服务器都是都无法PING通3300-2的接口地址。
二、故障排查及分析
1、第一步:排查物理层原因
经排查,两台互连的交换机3300的OSPF无法建立邻居,OSPF一直都是INIT状态:
[S3300-02]dis ospf peer
OSPF Process 1 with Router ID 192.168.149.13
Neighbors
Area 0.0.0.0 interface 192.168.149.162(Vlanif3994)'s neighbors
Router ID: 192.168.149.2 Address: 192.168.149.161 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 1
DR: None BDR: None MTU: 0
Dead timer due in 8 sec
Neighbor is up for 170:32:40
Authentication Sequence: [ 21505794]
Neighbors
Area 0.0.0.0 interface 192.168.149.202(Vlanif4000)'s neighbors
Router ID: 192.168.149.12 Address: 192.168.149.201 GR State: Normal
State: Init Mode:Nbr is Slave Priority: 1
DR: None BDR: None MTU: 0
Dead timer due in 11 sec
Neighbor is up for 00:00:00
Authentication Sequence: [ 613975]
两台3300互连的VLAN是4000,互连地址为192.168.149.201 ;192.168.149.202.
于是,在3300交换机上互ping对端地址。但还是ping不通对端端口地址。据此,可以初步判断OSPF无法建立的原因为互连端口或物理链接出现问题,所以更换以太网线及互连端口重新连接,并重新配置相同的数据,但问题还是得不到解决。
2、第二步:排查数据链路层原因
在更换两台设备的互连端口及物理链路的情况下,都无法排除故障。在3300交换机上用dis mac-address命令:
[S3300-01]dis mac-add
MAC Address VLAN/VSI Port Type Lsp
-------------------------------------------------------------------------
0025-9e2e-e5d0 3994 GigabitEthernet0/0/4 dynamic 0/0
0080-4218-eaff 1000 Ethernet0/0/1 dynamic 0/0
0080-421c-3c15 1000 Ethernet0/0/1 dynamic 0/0
001e-df03-3b5f 1001 Ethernet0/0/2 dynamic 0/0
000f-e25e-b318 1001 Ethernet0/0/2 dynamic 0/0
001e-df65-62e8 1001 Ethernet0/0/2 dynamic 0/0
0019-c61c-8c25 600 Ethernet0/0/3 dynamic 0/0
0004-23bb-ebd4 600 Ethernet0/0/3 dynamic 0/0
0004-23bb-ebd5 600 Ethernet0/0/3 dynamic 0/0
0023-3ed5-fb34 505 Ethernet0/0/5 dynamic 0/0
0023-3e42-2bea 505 Ethernet0/0/5 dynamic 0/0
0023-3ed5-b788 505 Ethernet0/0/5 dynamic 0/0
Total matching items displayed = 13
上述数据可以看到互连端口所属VLAN4000无法获取相关的相应动态MAC地址,由此可见两台互连3300根本没有OSPF报文数据包传递。
由此可以判断,两台3300交换机无法建立OSPF邻居的原因为,互连端口无数据包发送。
在大量交换网络中,一般造成端口堵塞,无法交换报文数据包的原因多为生成树协商计算错误出现问题,于是查看了两台3300交换机与下行交换的生成树配置及端口状态:
如上图,按照要求,S3300-01是stp的主根,S3300-02是备根,S3900为用户接入。
按照这个组网配置的话,各台设备的端口角色应该如下:
S3300-01:
G0/0/3 Designated Port FORWARDING
ETH0/0/3 Designated Port FORWARDING
S3300-02
G0/0/3 Root Port FORWARDING
ETH0/0/3 Designated Port FORWARDING
S3900
ETH0/0/47 Root Port FORWARDING
ETH0/0/48 Alternate Port DISCARDING
但是经核对实际网络状态为:
但是现在
S3300-01:
G0/0/3 Designated Port DISCARDING
S3900
ETH0/0/47 Designated Port FORWARDING
ETH0/0/48 Designated Port FORWARDING
ETH0/0/3 root port
两台互连的3300端口却是DISCARDING,堵塞状态所以,两台交换机无法交换OSPF报文,OSPF邻居无法建立。而且S3900的eth0/0/3绝对不应该是根端口。
那么,现在我们可以把问题归结为:两台3300交换机与下行业务交换机的生成树计算出现错误,导致两台3300交换机互连端口堵塞,无法交换OSPF报文,建立不成邻居!
三、排除故障
在3300下行设备3900上开启标准生成树协议MSTP,并在3900下行所连接的设备端口下关闭生成树协议。令3900只有与3300互连端口起生成树协议。
1、配置3300的下行设备:
[Switch3900]stp enable
[Switch3900] stp mode mstp
[Switch3900]quit
2、开启生成树后,查看两台3300与3900的端口状态为:
S3300-01:
G0/0/3 Designated Port FORWARDING
ETH0/0/3 Designated Port FORWARDING
S3300-02
G0/0/3 Root Port FORWARDING
ETH0/0/3 Designated Port FORWARDING
S3900
ETH0/0/47 Root Port FORWARDING
ETH0/0/48 Alternate Port DISCARDING
3、查看互连端口是否有OSPF报文交换:
[S3300-01]dis mac-add
MAC Address VLAN/VSI Port Type Lsp
---------------------------------------------------------------------------
0025-9e2b-e7c0 4000 GigabitEthernet0/0/3 dynamic 0/0
0025-9e2e-e5d0 3994 GigabitEthernet0/0/4 dynamic 0/0
0080-4218-eaff 1000 Ethernet0/0/1 dynamic 0/0
0080-421c-3c15 1000 Ethernet0/0/1 dynamic 0/0
001e-df03-3b5f 1001 Ethernet0/0/2 dynamic 0/0
000f-e25e-b318 1001 Ethernet0/0/2 dynamic 0/0
001e-df65-62e8 1001 Ethernet0/0/2 dynamic 0/0
0019-c61c-8c25 600 Ethernet0/0/3 dynamic 0/0
0004-23bb-ebd4 600 Ethernet0/0/3 dynamic 0/0
0004-23bb-ebd5 600 Ethernet0/0/3 dynamic 0/0
0023-3ed5-fb34 505 Ethernet0/0/5 dynamic 0/0
0023-3e42-2bea 505 Ethernet0/0/5 dynamic 0/0
0023-3ed5-b788 505 Ethernet0/0/5 dynamic 0/0
Total matching items displayed = 13
4、查看两台3300的OSPF建立状态:
[S3328-01]dis ospf peer
OSPF Process 1 with Router ID 192.168.149.12
Neighbors
Area 0.0.0.0 interface 192.168.149.106(Vlanif3994)'s neighbors
Router ID: 192.168.149.1 Address: 192.168.149.105 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 1
DR: None BDR: None MTU: 0
Dead timer due in 8 sec
Neighbor is up for 268:21:45
Authentication Sequence: [ 21857608]
Neighbors
Area 0.0.0.0 interface 192.168.149.201(Vlanif4000)'s neighbors
Router ID: 192.168.149.13 Address: 192.168.149.202 GR State: Normal
State: Full Mode:Nbr is Master Priority: 1
DR: None BDR: None MTU: 0
Dead timer due in 10 sec
Neighbor is up for 97:47:50
Authentication Sequence: [ 966345]
至此,3300与3900之间的stp计算正确。两台3300的OSPF邻居建立,网络恢复正常。
四、问题分析及总结
在本例中,由于3300下行设备没有开启标准的MSTP所引起根网桥选举错误造成生成树计算没有成功,造成端口相关端口堵塞。生成树有很多种标准,不同的厂商默认采用协议不同,例如思科采用的是PVST,华为不同系列的交换采用的协议又是不同的。所以,引起不同交换机组网时会出现生成树计算错误的现象,从而影响到网络的正常通信。
运营商内部IP网络是个大型交换网络结构。在这样的交换网络环境下,三层交换机与二层接入交换机之间明显地存在着交换网络中最典型生成树协商问题。存在着不同厂商交换机之间启用不同生成树协议标准的问题;存在着交换机与交换机协商根端口的问题;存在着相同设备之间的MAC地址大小,优先级不一致的问题引起选举根端口的问题;存在着因为生成树影响三层动态路由的问题,就如本次故障中的生成树计算错误造成端口堵塞无法交换报文,导致OSPF无法建立邻居。这些因素都会直接影响到三层交换的稳定性。
所以,在维护大型运营商内部IP网络的时候,一定要搞清楚设备之间的启用的生成树协议,建议采用国际标准的MSTP协议。 MSTP相对于之前的种种生成树协议而言,优势非常明显。MSTP具有VLAN认知能力,可以实现负载均衡,可以实现类似RSTP的端口状态快速切换,可以绑定多个VLAN到一个实例中以降低资源占用率。最难能可贵的是MSTP可以很好地向下兼容STP/RSTP协议。而且,MSTP是IEEE标准协议,推广的阻力相对小得多。
经过此故障,对运营商内部IP网络进行了一次的详细设备配置排查。发现多个安全区域的交换机采用的生成树协议标准都不一致,或者有些交换机没有启用生成树协议。这些的情况是因为安全区域中的没有存在环路的网络结构,所以没有出现问题。但为了防止日后网络扩容造成因生成树的问题而影响网络,现已在运营商内部IP网络所有交换设备上均启用了标准的MSTP生成树协议。
- 点赞
- 收藏
- 关注作者
评论(0)