问题描述:
某大楼在3层用了两台3526E,版本是 Version 3.10, RELEASE 0020。S3526E双线路上行分别连接到两台S6506,下行接S3026E。
每个工位有两个网口,两个网口在不同的S3026E下。当员工从一个网口换到另一个网口时,不能PING通网关(网关在S3526E上),也不能更新IP,只有在S3526E上清空ARP表后用户才能使用。
初步分析是ARP表不能自动更新。当用户更换到另一台3026E下时在3526E上的端口发生变化,但S3526E好像不知道有情况发生,当用户发起访问后也不能更新,一直要等到ARP老化。
处理过程:
1、 因为PC的网关在S3526上,PC移动端口后不能ping通网关,那么说明问题和S6506无关。将S6506设备可以从组网图中移出。
2、 用如下组网本地测试。
PC 1.1.1.2先通过S3026E-1接到S3526的E0/1上,ping网关1.1.1.1可以正常的ping通,ping通后,从S3526E上可以看到PC机的mac地址和arp如下:
<Quidway>dis arp
IP Address MAC Address VLAN ID Port Name Aging Type
1.1.1.2 0050-ba20-f47e 1 Ethernet0/1 20 Dynamic
--- 1 entry found ---
<Quidway>dis mac
MAC ADDR VLAN ID STATE PORT INDEX AGING TIME
0050-ba20-f47e 1 Learned Ethernet0/1 AGING
00e0-fc09-bcf9 1 Learned Ethernet0/1 AGING
--- 2 mac address(es) found ---
3、 移动PC,将PC从S3026E-1移动到S3026E-2,再次ping网关,发现不能ping通,查看S3526E的arp和mac地址如下
<Quidway>dis arp
IP Address MAC Address VLAN ID Port Name Aging Type
1.1.1.2 0050-ba20-f47e 1 Ethernet0/1 16 Dynamic
--- 1 entry found ---
<Quidway>dis mac
MAC ADDR VLAN ID STATE PORT INDEX AGING TIME
00e0-fc09-bcf9 1 Learned Ethernet0/1 AGING
00e0-fc06-a024 1 Learned Ethernet0/2 AGING
0050-ba20-f47e 1 Learned Ethernet0/2 AGING
--- 3 mac address(es) found ---
发现0050-ba20-f47e这个主机的mac地址在mac地址表中存在于了E0/2上,而arp仍然存在于E0/1上。通过debug ni的报文收发可以看出:
*0.1219839 Quidway DRV_NI/8/debugging ni evt:
Received one packet to CPU , reason=0x10000000,length is 82
*0.1219970 Quidway DRV_NI/8/debugging ni evt:
>>>>>>Receive packet from port: 1, length: 82
00 e0 fc 1c d8 47 00 e0 fc 1c d8 47 81 00 00 01
08 00 45 00 00 3c 0e c0 00 00 1f 01 88 fd 01 01
01 02 01 01 01 01 08 00 25 5b 02 00 26 01 61 62
63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72
*0.1220340 Quidway DRV_NI/8/debugging ni evt:
>>>>>>Send packet to pbmp: 00000001, length: 78
00 50 ba 20 f4 7e 00 e0 fc 1c d8 47 81 00 00 01
08 00 45 00 00 3c 01 59 00 00 ff 01 b6 63 01 01
01 01 01 01 01 02 00 00 2d 5b 02 00 26 01 61 62
63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72
报文从E0/2收到了,但是回应的报文送到了E0/1去,所以不能ping 通。
4、 此时,在设备上reset arp,pc就可以正常的ping 通交换机了。查看arp和mac,发现都转移到了端口E0/2上了。
5、 此时,将PC移回到S3026-1上,发现又不能正常的ping通了,此时,删除掉PC上的arp,也可以正常的ping通。
解决措施:
问题关键在于设备上的arp对应的端口和mac地址对应的端口不一致导致的,因此,解决方案有2。
1、 主机移动后删掉设备上的arp。
2、主机移动后删除掉主机上的arp。
当在主机上进行ping时,如果删除掉了设备上的arp地址,设备收到主机的ICMP报文后,回先发送一个arp request解析主机的IP,主机回应arp后,arp就可以正确的学习到入端口上了。而如果删除主机上的arp,则主机开始ping时,直接发送arp request报文,报文送到设备后,设备上接收到arp报文,会进行arp的更新,从而将arp移动到正确的端口上。
显然,方案2可操作性更高。