首先我们来回忆一下什么是MAC地址漂移?
MAC地址漂移是指:在同一个VLAN内,一个MAC地址有两个出接口,并且后学习到的出接口覆盖原出接口的现象。这是官方定义,通俗的讲,MAC地址漂移指的是MAC地址表项的出接口发生了变更。到底什么意思呢?看了下图就明白了。
MAC地址漂移会有什么影响呢?
1、上网响应慢!!
2、上网无响应!!
3、视频卡着不能动!!
以上这些都可能是MAC地址漂移,组网设备成环导致的。只要解决MAC地址漂移,破除组网中的环路,这些讨厌的画面就会自动消失的。
那为什么会有MAC地址漂移呢?
如上图所示,正常情况下,PC的报文通过Port1进入Switch后,会从Port3转发出去,MAC地址表项学习到的出接口是Port1。但是当Switch、Switch1和Swtich2三台设备之间存在环路时,PC的报文通过Switch2-->Switch1后,又会通过Port2进入Switch,导致MAC地址表项的出接口更新为Port2,从而就会产生MAC地址漂移告警。由此可见MAC地址发生漂移的根本原因就是组网中存在二层环路。
怎么判断设备上是否存在MAC地址漂移呢?
-
方法1:在打开终端显示和MAC地址漂移告警开关情况下,在设备产生MAC地址漂移告警时,就会打印出如下告警信息。并且会间隔一段时间多次打印哟。
-
方法2:在打开MAC地址漂移告警开关时,通过命令display trapbuffer查看告警的缓存信息,判断设备上是否存在MAC地址漂移。
-
方法3:在打开MAC地址漂移检测功能时,通过命令display mac-addressflapping record查看最近一个月MAC地址漂移的信息。记录的信息包括:MAC地址漂移发生的开始时间和结束时间,发生MAC地址漂移的VLAN和MAC,漂移的端口和漂移的次数。
-
方法4:在没有开启MAC地址漂移检测功能时,只能用最原始的办法---不停的查看MAC地址表项的出接口,来判断设备上是否存在MAC地址漂移了。如下图,多次查看MAC地址表项,出接口信息在两个端口之间跳变。这就可以认为发生了MAC地址漂移。
怎么消除MAC地址漂移告警呢?
消除MAC地址漂移的办法有三种:
第一种:人工把发生漂移的接口shutdown。
优点:最简单可靠
缺点:需要人工参与,整个接口的流量都会中断。
第二种:通过在接口上配置漂移检测动作为error-dwon,自动down掉漂移的端口。
优点:及时快捷,还可以通过配置自动恢复时间定时恢复端口。
缺点:整个接口的流量都会中断。
第三种:通过在接口上配置漂移检测动作为quit-vlan,使发生漂移的接口指定VLAN域内退出,从而消除MAC地址漂移,破除环路。
优点:只解决存在环路的VLAN域,不会使其他正常VLAN域的流量中断。
缺点:指定老化周期内,只能使一个接口从VLAN中退出。如果存在多个环路,破环会比较慢。
交换机实现的MAC地址漂移告警功能有什么亮点呢?
-
亮点1:在同一个VLAN内,只会记录一个MAC地址漂移记录。
即同一个VLAN内,如果有多个MAC地址都在发生漂移,只记录第一个上报漂移的MAC地址。为什么呢?因为只要一个VLAN域内存在环路,该VLAN内所有的MAC地址都会发生漂移的。
-
亮点2:只有一次或两次MAC地址漂移,不会上报MAC地址漂移告警。
默认情况下,在漂移记录老化时间300秒内,MAC地址表项出接口变更10次,才认为发生了MAC地址漂移,才会上报MAC地址漂移告警。
-
亮点3:可以指定某个VLAN不进行MAC地址漂移的检测。
指定某个VLAN不进行MAC地址漂移的检测后,该VLAN内的MAC地址发生漂移时,不会记录信息,也不会上报告警信息。
【江湖小贴士】
所有的MAC地址漂移告警都需要处理吗?其实不是的,只有MAC地址漂移告警在短时间多次出现的情况才需要处理,偶尔出现的可以不用关注啦,类似于下面这两种情况就可以不用关注的。
1、因为环路切换,导致的MAC地址漂移告警。
2、因为无线用户漫游,导致的MAC地址漂移告警。