马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Jason 于 2020-1-29 22:53 编辑
一根光纤引发的全网中断事故
一、事件描述
2016年11月24号晚上18点32分运营商某客户廊坊局点正在进行工程实施,项目中新扩容了2台华为交换机,需要将华为交换机与现网汇聚交换机进行三层互联。当时的华为交换机上还未做任何配置,当现场工程师用一根MPO光纤将华为交换机与现网汇聚H3C交换机互联后,网管监控全网立马出现了中断,网管显示该汇聚交换机下联所有接入交换机均出现不通,应用监控显示汇聚交换机下联服务器之间二层数据传输中断,18点39分时现场人员将新互联这条40G链路断开,网络恢复正常。现网组网如图:
二、问题分析
该问题经过研发分析最终确定为现场将新增的40G链路连上后,触发所有S6900-F STP dispute保护机制导致所有接入交换机。
具体分析如下:
前期项目在进行方案规划时,考虑到全网设备采用IRF堆叠方式,网络设备之间不存在环路,基于网络稳定性角度考虑推荐关闭STP协议。但现网实际运行情况中经常遇到服务器双网卡绑定,当双网卡绑定配置错误时导致服务器双网卡组成环路,导致全网中断。为规避该问题,建议在接入交换机上启用STP。关于STP最终确定方案:
汇聚交换机关闭stp功能 所有接入交换机开启stp功能
由于现网所有接入交换机上联端口下并未关闭STP功能(上联口为二层聚合口,代理商配置错误只在成员口下配置了关闭stp功能,但聚合口下未配置,导致stp配置不生效,实际上联口并没有关闭stp功能,仍然会接收BPDU报文),可以正常发送、接收并处理转发过来的BPDU报文。
链路聚合接口下包含多个成员接口,当想要关闭该聚合口下的STP配置时,只需要在聚合接口下undostp enable即可。当在成员口下配置时并不会生效,因为只有当成员口脱离聚合组时该配置才会生效。
S6900向上发送的STP BPDU报文到达汇聚S125后,由于现网汇聚交换机没有开启STP,汇聚交换机收到BPDU报文后会当成普通报文并打上接口的PVID然后进行转发,但现网该接口下为trunk类型,缺省pvid为vlan 1,且接口下已经undo trunk permit vlan 1,所以BPDU报文直接被汇聚交换机丢弃。
在向外发送BPDU等协议报文时是不带vlan标签的,报文到达未开启stp功能的交换机后该报文会被当成普通报文打上接收端口所属的vlan pvid,然后进行转发(转发还是丢弃具体还要看接收端口的配置)。
交换机接收BPDU报文时是不会关心报文是否带了VLAN标签,当未开启STP功能的交换机将BPDU报文当做普通报文转发至了开启了STP功能的交换机,该开启STP的交换机上即使全局未配置该vlan,或互联trunk接口中未permit该vlan,但该开启STP的交换机仍会接收并处理该STPBPDU报文。因为BPDU报文为协议报文,目的mac地址特殊,使能STP功能的交换机当检测到位BPDU等协议报文时不需要检查VLAN属性直接上送CPU进行处理。
现场新扩容的华为交换机由于新设备没有做任何配置且默认开启stp功能,华为交换机周期性向外发送BPDU报文,到达汇聚交换机后,由于互联端口为access vlan 251,且汇聚交换机未配置STP,所以汇聚交换机会将BPDU报文当做普通报文在vlan 251广播域中进行转发,汇聚交换机下联所有接入交换机的端口为trunk,且允许了除vlan1外的所有VLAN,所有该BPDU报文会被汇聚交换机通过所有下联接入交换机的聚合口向下转发。
BPDU报文携带VLAN 251标签到达所有接入交换机后,由于接入交换机上使能了STP协议,接入交换机上全局虽然为配置VLAN 251,但由于BPDU是协议报文,交换机不关心协议报文是否有vlan标签和vlan标签是否本地放行,均会直接上送本地CPU进行处理。
这样造成所有接入交换机与华为新扩容交换机BPDU存在单通现象,华为交换机不断的向所有S6900广播BPDU报文,且华为交换机发送的BPDU报文中BID低(虽然优先级相同都是默认值32768,但华为交换机桥MAC地址大,导致华为交换机BID较低), 触发了STP Dispute保护机制,将所有S6900上联端口设置为discarding状态,互联中断。
STP Dispute保护机制:“当端口收到这样的报文(报文中携带指定端口角色和Learning/Forwarding状态且报文中的优先级向量低于接收端口的优先级向量),端口的Dispute机制生效,端口被设置为Discarding状态,阻止网络形成环路。”
|