故障现象

某栋宿舍楼中有多个用户报修,现场查勘后发现室内进线接主机无法获取地址,物理线路连通。因假期期间,只有少数用户留校,不能确定是否是该栋所有用户都无法上网。

组网信息

如图,两台接入交换机光纤级联,型号为H3C S5152-EI

python巡检华三交换机报警日志 华三交换机排查环路_python巡检华三交换机报警日志

查看信息

在H3C-1上查看如下信息:

查看接口状态(display interface brief),没有出现接口ADM Down(管理型Down);

查看两台设备dhcp与dhcp snooping使能情况,均正常;

查看两台设备的Vlan及Trunk口裁剪情况,业务Vlan与管理Vlan均放行;

查看LLDP信息:

[XXXX-H3C-1]dis lldp nei li
Chassis ID : * -- -- Nearest nontpmr bridge neighbor
             # -- -- Nearest customer bridge neighbor
             Default -- -- Nearest bridge neighbor
System Name          Local Interface Chassis ID      Port ID
XXXX-H3C-2           GE1/0/16        0440-a93b-9a98  GigabitEthernet1/0/42            
XXXXXXX-HJ-5750H-02  GE1/0/50        5869-6c63-712b  Gi0/22                     
XXXX-H3C-2           GE1/0/52        0440-a93b-9a98  GigabitEthernet1/0/49      
[XXXX-H3C-1]

除去上一级汇聚外,下一级的同一邻居居然有两个Local Interface

其中Gigabitethernet 1/0/52为千兆光口,故两台交换机之间必然有其他线缆导致环路。

查看相关端口日志(并百度注释):

H3C-1:

[XXXX-H3C-1]dis log | inc 1/0/16
STP/6/STP_DETECTED_TC: Instance 0's port GigabitEthernet1/0/16 detected a topology change.
//说明生成树拓扑在该端口改变(添加了新设备)

LLDP/5/LLDP_PVID_INCONSISTENT: PVID mismatch discovered on GigabitEthernet1/0/16 (PVID 1121), with NY02-H3C-2 GigabitEthernet1/0/42 (PVID 1194).
//该端口与邻居设备的端口Vlan ID不一致

LLDP/6/LLDP_CREATE_NEIGHBOR: Nearest bridge agent neighbor created on port GigabitEthernet1/0/16 (IfIndex 16), neighbor's chassis ID is 0440-a93b-9a98, port ID is GigabitEthernet1/0/42.
//LLDP表添加新邻居

STP/6/STP_NOTIFIED_TC: Instance 0's port GigabitEthernet1/0/16 was notified a topology change.
//该端口下拓扑变更

删去了时间(因为丫根本不准,dis clock还是2013-01-01,关联下NTP吧求求辣)

删去了接口与协议up/down日志条目

只保留一条频繁出现的日志条目,如Instance 0's port GigabitEthernet1/0/16 detected a topology change.

H3C官网现在都不提供日志查询功能了吗……给了关键词也不返回结果,现在还分不清楚STP/6/STP_DETECTED_TC与STP/6/STP_NOTIFIED_TC的关系

H3C-2:

[XXXX-H3C-2]dis log | inc 1/0/42
STP/6/STP_DETECTED_TC: Instance 0's port GigabitEthernet1/0/42 detected a topology change.

STP/6/STP_NOTIFIED_TC: Instance 0's port GigabitEthernet1/0/42 was notified a topology change.

LLDP/5/LLDP_PVID_INCONSISTENT: PVID mismatch discovered on GigabitEthernet1/0/42 (PVID 1194), with NY02-H3C-1 GigabitEthernet1/0/16 (PVID 1121).

LLDP/6/LLDP_CREATE_NEIGHBOR: Nearest bridge agent neighbor created on port GigabitEthernet1/0/42 (IfIndex 42), neighbor's chassis ID is 0440-a93b-93d8, port ID is GigabitEthernet1/0/16.

LLDP/6/LLDP_DELETE_NEIGHBOR: Nearest bridge agent neighbor deleted on port GigabitEthernet1/0/42 (IfIndex 42), neighbor's chassis ID is 0440-a93b-93d8, port ID is GigabitEthernet1/0/16.

STP/5/STP_BPDU_RECEIVE_EXPIRY: Instance 0's port GigabitEthernet1/0/42 received no BPDU within the rcvdInfoWhile interval. Information of the port aged out.
//非指定端口因在BPDU超时之前没有收到任何BPDU报文,端口状态发生改变,建议检查上行设备的STP状态及是否存在恶意攻击

推测

2台交换机之间除了正常的光纤级联外,还存在一条线路级联,大概是:

H3C-1-Gigabitethernet1/0/16-配线架-宿舍进线-宿舍小交换机-另一根宿舍进线(?)-配线架-H3C-2-Gigabitethernet1/0/42

听起来比较离谱,我也不清楚具体是如何布线或者用户室内如何组网的,但就目前的信息,这样推测似乎是最合理的

处理

将H3C-1的Gigabitethernet1/0/16口关闭

[XXXX-H3C-1]int GigabitEthernet 1/0/16
[XXXX-H3C-1-GigabitEthernet1/0/16]shutdown

在此之后,再次查看LLDP状态,正常,询问该楼栋的报修用户,网络已经恢复

[XXXX-H3C-1]dis lldp nei li
Chassis ID : * -- -- Nearest nontpmr bridge neighbor
             # -- -- Nearest customer bridge neighbor
             Default -- -- Nearest bridge neighbor
System Name          Local Interface Chassis ID      Port ID         
XXXXXXX-HJ-5750H-02  GE1/0/50        5869-6c63-712b  Gi0/22                     
XXXX-H3C-2           GE1/0/52        0440-a93b-9a98  GigabitEthernet1/0/49

观察H3C-2的Gigabitethernet 1/0/42口,状态灯仍保持常亮

此时更推测该线缆进入用户室内小交换机,只保持该线路通畅,用户亦可以正常使用网络

查看两台设备相关端口的线路VCT

H3C-1

[XXXX-H3C-1]int GigabitEthernet 1/0/16
[XXXX-H3C-1-GigabitEthernet1/0/16]virtual-cable-test 
Cable status: abnormal(open), 11 metre(s) //开路,该端口至异常位置为11m
Pair Impedance mismatch: no
Pair skew: - ns
Pair swap: -
Pair polarity: -
Insertion loss: - db
Return loss: - db
Near-end crosstalk: - db

H3C-2

[XXXX-H3C-2]int GigabitEthernet 1/0/42
[XXXX-H3C-2-GigabitEthernet1/0/42]virtual-cable-test 
Cable status: normal, 55 metre(s)
Pair Impedance mismatch: no
Pair skew: - ns
Pair swap: -
Pair polarity: -
Insertion loss: - db
Return loss: - db
Near-end crosstalk: - db

虽然这条命令用处也不太大,但是笔者想到如果这两条线都通往一个小交换机,线缆长度应该都一致,结果有一条居然是Abnormal……

还是浅浅引用一下:

“开路是指网线中某一根或多跟导线部分断开,这种现象一般由物理外力导致;短路有两种情况,一种为一条线对中的两根导线短路,一种为两个线对间导线短路;反接是指在端接过程中,将同一条线对在网线两端针位接反;错对是指把一对线接到另一端对线上;串扰是指把原有的两对线拆开,重新组成线对,这种情况下,该铜缆是否存在通断故障,万用表也检测不出,需要采用专用网线测试仪检测,串扰信号通过线缆,会导致严重的近端串扰。”

参考网线RJ45接线时的5种故障详解

再琢磨下去不知道要研究到哪儿了,若显示开路,估计是4、5、7、8有线芯不通?(没测试下真是可惜了,有机会再测测)

补充

我们浅看一下这两台接入交换机面向用户的端口配置:

[XXXX-H3C-1]int GigabitEthernet 1/0/16
[XXXX-H3C-1-GigabitEthernet1/0/16]dis this
#
interface GigabitEthernet1/0/16
 port access vlan 1121
 shutdown
 port-isolate enable group 1
 loopback-detection action shutdown
#
return

(其实配置早就有看过了,只是放在后边讲)

这就得提到loopback-detection action shutdown、stp edged-port、stp bpdu protection的关系及区别了

在两台设备中,都全局使能了

loopback-detection global action shutdown
 loopback-detection interval-time 35
stp bpdu-protection
stp global enable

环路检测技术Loopback Detection是通过从接口周期性发送一种特殊的检测报文,然后检测该报文是否返回本设备(不要求收、发接口为同一接口),进而判断该接口、设备下挂网络或设备以及设备双接口间是否存在环路Loopback Detection配置 - S2750, S5700, S6700 V200R005(C00&C01&C02&C03) 配置指南-以太网交换 - 华为

这条命令只能查询到本设备是否自环(只关联广播风暴,不涉及生成树计算) ,而stp edged-port适用于接入交换机的业务端口(连接终端),配合全局的stp bpdu-protection进行破环。

比较奇怪的是两台设备都全局使能了BPDU保护,然而在如上情况也没有触发机制关闭端口,实在是奇怪,再要细查估计要抓包或者实验复现了,目前只好把所有业务接口设置成边缘端口了。

只能说解决问题难,透过问题看本质就不容易了,如果有大佬看到这篇文章,欢迎指点与批评,如若小弟日后技术有所进步或复现完该现象,就再写一篇博文做为本篇的补充,先上BiliBili看宅舞了。