花了一天时间找到了问题原因,中途找厂商售后排故无果,自己用时间啃出来的结果。
**问题现象:**某日下午同事突然告诉我某服务器(Error_A)无法访问了,接着是一批服务无法访问。
排故:1 先ping下目标机器,可以ping通(我有点怒,我不信出问题了)。
2 我ssh远程了下目标机器,果然连不上(telnet x.x.x.x 22端口tcp链接不上)。
3 直接用wireshake抓个包看下,发现只有去往目的的服务器的SYN握手信息,然后就是两个重传SYN报文,这肯定是网络不可达了,三次握手不能建立连接。
4 进机房排故,排除是硬件or网络设备原因。(主机、网络设备、线路检查了一遍都没问题)
5 用显示器键盘登陆服务器,ping和ssh同vlan的其他设备没问题,ping网关有问题了,延迟非常高,还丢包。ping跨vlan的机器,结果是一样的。
6 这肯定是网关机器的原因了。
7 STELNET网关华为设备,登陆后在网关上ping Error_A,ping 没问题。
8 不是配置问题(这是突然出现的问题),那就查看网关设备的运行日志了,logbuffer把最近的都查了,没见异常信息。
9 奇怪了,同一个vlan有四份之一的机器出问题了,其他机器去正常。
10 查了vlan配置,接口up/down(物理和管理方式),arp表,mac信息都正常。没发现设备有啥问题。那就分离有问题的机器,测试排故。
11 直接把有问题的机器Error_A单独拿出来,直接接到网关设备网口上。
12 看网关的arp表(dis arp network x.x.x.x)出有问题了,这个映射还在以前的接口上?(奥,是mac表没有老化原因,直接手动清除)
<HUAWEI>display arp network x.x.x.x
<HUAWEI>reset arp dynamic
13 发现有问题设备Error_A的源mac不能被交换机学习,这是问题原因? 不能动态学习mac地址了?
我们手动添加arp表,验证下结果
[HUAWEI]arp static x.x.x.x aaaa-aaaa-aaaa vid 109 interface GigabitEthernet 0/0/43
[HUAWEI]display arp network x.x.x.x
14 配置路由可达,用pc1机跨网段ping Error_A,ping 不通了,换台pc2代替Error_A接入网关相同网口,pc的mac可以正常被学习,通信正常。奇怪了就对Error_A有问题???
15 直接通过acl对Error_A的mac进行做流分类,统计该mac通信是否有丢包的情况。测试结果无丢包,无错误包。
16 对比观察,多次操作dis inter br g0/0/40(连接Error_A),发现问题了,input 有数据再增加,output统计没有数据量增加。
说明一个方向(output)时断了,这数据哪里去了? 确认确实有数据进入交换机,但是是没有从该口转发出来。
17 第一反应交换芯片问题? 但是其他机器通信正常排出是该问题。
18 **是交换机自己丢弃了?**答案是正确的,确实是自己丢弃。
19 是什么让它对该mac的数据包丢弃呢? 没有配置acl,没有mac地址过滤。
20 我也突然想到了STP? (因为在配置中没有看到相关stp的配置,所以之前没关注到这协议,但是华为默认是开启的)
<HUAWEI>display stp bri
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/40 DESI DISCARDING NONE
看到了,DISCARDING,只是丢弃动作呢。
21 进入该接口 stp disable 看看什么结果? g00d果然是这个原因。关闭该协议,通信恢复正常。我们删除刚才静态添加的arp表,再次查看arp表,有该mac对应的记录。
22 但是为什么会是stp触发了discarding呢?没有LOOP,就一台虚拟化设备Error_A一条网线,哪来的环路。
23 再次开启stp协议,通信异常。关闭stp,恢复通信。
故障原因:
网关设备检测了loop报文,执行了丢弃数据包动作。
疑问:
1 网络环境确实无loop
2 这明显是丢包了,但是我配置的流量统计没有统计到丢包信息?
3 网关设备防环机制不全面,误报?bug?
4 Error_A确实发了环路报文信息,是谁构造的该报文?
5 难道mstp协议有bug,因为我是信任华为设备的,都这么成熟的产品了。
6 为什么开始pc ping Server没问题,但从server ping pc延迟非常高(pc能ping但是不能ssh?),个人认为是mstp 处理discarding数据时选择性丢包的原因
这些问题希望在以后学习or工作中能找到答案。