1、MAC漂移现象
MAC地址漂移是指设备上一个VLAN内有两个或者三个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。通常认为第一个学习到MAC地址的接口是正确的出接口,称为源端口(Original Port),后学习的端口是漂移端口(Move Port),漂移端口通常是在环路上或者下挂网络中有环路的端口。
设备出现MAC地址漂移时,设备CPU占用率会有不同程度的升高。
在规划网络时,可以通过下面两种方式来避免MAC地址漂移:
(1)提高接口MAC地址学习优先级。当不同接口学到相同的MAC地址表项时,高优先级接口学到的MAC地址表项可以覆盖低优先级接口学到的MAC地址表项,防止MAC地址在接口间发生漂移。
(2)不允许相同优先级的接口发生MAC地址表项覆盖。当伪造网络设备所连接口的优先级与安全的网络设备相同时,后学习到的伪造网络设备的MAC地址表项不会覆盖之前正确的表项。但如果网络设备下电,仍会学习到伪造网络设备的MAC地址,当网络设备再次上电时将无法学习到正确的MAC地址。
2、MAC漂移解决方法
2.1 配置MAC地址防漂移
2.1.1 提高接口MAC地址学习优先级
进入系统视图。
system-view
进入接口视图。
interface interface-type interface-number
配置接口学习MAC地址的优先级。
mac-address learning priority priority-id
缺省情况下,接口学习MAC地址的优先级为0。取值范围是0~3,数值越大优先级越高。
返回系统视图。
quit
2.1.2 不允许相同优先级的接口发生MAC地址漂移
配置不允许相同优先级的接口发生MAC地址漂移。
undo mac-address learning priority priority-id allow-flapping
缺省情况下,允许相同优先级的接口发生MAC地址漂移。
2.2 配置MAC刷新ARP功能
在以太网中,主机设备是根据MAC地址来发送、接收以太网数据帧。ARP用于提供IP地址到MAC地址的映射。当不同网段间通信时,需要使用ARP表项来将IP地址映射到正确的MAC地址及相应的出接口上。
一般来说设备上的MAC表项和ARP表项的出接口是一致的。在某一时间点t1,MAC地址表项和ARP表项的出接口是一致的,都是interface1;但是当端口切换后,t2时间时,MAC地址表项的出接口在收到报文时立即刷新为interface2,但是ARP表项的出接口还是interface1,需要等到t3时间点即ARP表项的老化时间到达后,通过ARP老化探测,才会刷新为interface2。这样就在t2时间点和t3时间点之间,ARP表项的出接口是不可用的,会导致不同网段间设备的通信中断。
MAC刷新ARP可以实现在MAC出接口更新时,直接刷新ARP表项的出接口的功能。配置方法如下:
进入系统视图。
system-view
配置MAC刷新ARP功能。
mac-address update arp enable
该命令只对动态ARP表项生效,不会更新静态ARP表项。
使用arp anti-attack entry-check { fixed-mac | fixed-all | send-ack } enable命令配置ARP表项固化功能后,MAC刷新ARP功能不生效。
使能了MAC刷新ARP功能后,只有MAC表项的出接口发生变化,才会更新对应的ARP表项。
2.3 配置基于接口关闭MAC地址学习
创建VLAN,并将接口加入到VLAN中。
# 将10GE1/0/1加入VLAN 10和VLAN 20。
<HUAWEI> system-view
[HUAWEI] sysname DeviceA
[DeviceA] vlan batch 10 20
[DeviceA] interface 10ge 1/0/1
[DeviceA-10GE1/0/1] port link-type trunk
[DeviceA-10GE1/0/1] port trunk allow-pass vlan 10 20
[DeviceA-10GE1/0/1] quit
配置基于接口关闭MAC地址学习。
# 在接口10GE1/0/1上关闭MAC地址学习,端口学习到新的MAC地址的报文直接丢弃。
[DeviceA] interface 10ge 1/0/1
[DeviceA-10GE1/0/1] mac-address learning disable action discard #关闭MAC地址学习功能
[DeviceA-10GE1/0/1] quit
关闭MAC地址学习功能的缺省动作为forward,即对报文按照MAC地址表项进行转发,如果没有对应的MAC地址表项,则广播该报文。当配置动作为discard时,会对报文的源MAC地址进行匹配,当接口和MAC地址与MAC地址表项匹配时,对该报文进行转发;当接口和MAC地址与MAC地址表项不匹配时,丢弃该报文。
2.4 配置端口聚合
如果出现mac漂移的源端口和漂移端口是同一个主机且做同一个业务网卡使用,可以将这两个接口配置eth-trunk。
2.5 配置接口为二层接口
[DeviceA] interface 10ge 1/0/1
[DeviceA-10GE1/0/1] portswitch #将接口从三层模式切换到二层模式