MAC地址飘移导致网络丢包问题处理案例


                                                            

一、网络拓扑

路由器A与路由器B通过传输设备的以太网板与交换机C(S3600-EI)相连,业务一承载在交换机端口E1/0/1与路由器A之间链路上,交换机接传输的端口属于VLAN 10VLAN虚接口地址为2.1.1.1/30,路由器接口地址为2.1.1.2/30;业务二承载在交换机端口E1/0/2与路由器B之间链路上,交换机接传输的端口属于VLAN 20VLAN虚接口地址为1.1.1.1/30,路由器接口地址为1.1.1.2/30

   

二、问题描述

1、在交换机Cping路由器AIP地址2.1.1.2及路由器BIP地址1.1.1.2丢包严重;

2、在路由器ABping交换机CIP地址丢包严重或者不通。

三、过程分析

(一)故障排查步骤

    第一步:在交换机C上抓包,但是除了发现丢包的时候确实是发出了icmp request,而没有收到icmp reply外,看不出任何异常;

第二步:怀疑是由于交换机发的免费ARP扰乱了传输设备的时隙,但是关闭此功能后问题仍然没有解决;

第三步:怀疑是华三交换机与现网中的传输设备之间兼容性有问题,因为同样的交换机与另一个厂家的传输设备配合就没问题,用另外一台其它型号的交换机或者路由器替换交换机C也没有问题;

第四步:用一台S3600-EI交换机和一台S3610交换机再次做替换测试,当用自带的S3600-EI交换机替换下现网设备后,故障依旧。但是如果将E1/0/2 shut down,业务一就正常了,然后再使用S3610交换机替换下现网设备后,两个业务都正常。对比了一下S3610S3600-EI交换机的不同处,发现与当前故障有关的特性就是S3600-EI整机只使用一个MAC地址,所有VLAN虚接口的MAC地址都是一样的,而S3610共有15MAC地址,根据VLAN号循环使用。根据以上结果推断丢包的原因为传输设备上出现了MAC地址飘移的现象,而出现第三步结果的原因是当时只是使用其它设备替换了交换机C上的一条链路(这是关键),因此传输设备上不会出现MAC地址飘移,同样的道理,将交换机C上的E1/0/1E1/0/2中的任意一个端口shut down,另外一个业务也是正常的。而使用3610交换机不出现问题,是因为两个VLAN虚接口的MAC地址是不同的,传输设备上也不会产生MAC地址飘移的现象。鉴于传输设备会产生MAC地址飘移的现象,基本可以断定该设备学习VLAN的方式为SVL。如果同时满足了交换机C只使用一个MAC地址而传输设备学习MAC地址方式是SVL这两个条件时,在传输设备上就会产生MAC地址飘移的情况。

第五步:当前传输设备的的传输模式为虚拟局域网,报文经过该设备时,设备会学习MAC地址,而由于SVL的机制和现网设备的特性(S3600-EI只有一个MAC地址),导致出现MAC地址飘移,将传输模式改为透传后,不对经过的报文做任何处理,也不学习MAC地址,业务也就一切正常。

(二)故障原因详解

由于传输设备的传输模式为虚拟局域网,以太网板学习MAC地址方式为SVL(shared vlan learning),而正好现网中的华三交换机只有一个MAC地址,如果交换机CE1/0/1E1/0/2接口都有数据发到传输设备上,传输设备在学习交换机CMAC地址时由于是所有VLAN共同学习同一个MAC地址,就会导致在学习交换机CMAC地址时,出口有时是以太网板的E1/0/1,有时是E1/0/2,出现MAC地址飘移现象。

此时,如果在交换机Cping路由器A时,icmp request报文通过E1/0/1端口可以正常到达路由器A,路由器A回复的icmp reply报文到达传输时,如果正好交换机CE1/0/2有流量送到传输设备上,MAC地址表就会被刷新为出口为以太网板的E1/0/2端口,从而使用icmp reply报文最终回到交换机CE1/0/2端口,交换机C认为此报文为非法,将其丢弃;在交换机Cping路由器B也会出现同样问题。

在路由器Aping交换机C上的IP地址,如果正好传输设备学习到的交换机CMAC地址出口为E1/0/2,而交换机CE1/0/1端口没有任何报文发至传输的E1/0/1端口,此时icmp request将全部发到了交换机CE1/0/2端口上,交换机C会将所有报文丢弃,导致路由器A无法ping通交换机C,如果此时有报文从交换机CE1/0/1发送至传输端口E1/0/1,会将MAC地址表刷新为正确的出口,就可以ping通了,但是如果交换机CE1/0/2接口同时有流量发往传输的E1/0/2端口,就又会产生MAC地址不断地飘移,出现丢包现象。

四、解决方法

1、将传输设备以太网板更换为学习MAC的方式为IVL(independent vlan learning)方式的设备,这样即使交换机C所有VLAN虚接口的MAC都是一样的,但是传输设备在学习MAC地址是依据VLAN来学习的,属于不同的VLAN的端口即使学习到同样的MAC地址都可以正确地区别出口,不会出现MAC地址飘移现象;

2、将传输设备的传输模式由虚拟局域网改为透传模式,不修改经过的数据帧的源MAC,而是把这些数据帧当作未知单播在本VLAN内进行广播。

3、将交换机C更换为不同VLAN虚接口使用不同MAC地址的交换机。


2016年06月