设备上无法学习正确的MAC表项故障排查

故障现象

二层数据转发失败,设备上无法学习正确的MAC转发表项。

操作步骤

1、查看是否配置错误导致MAC地址无法正确学习。

检查项 检查方法 后续操作
接口所属的VLAN是否创建 在任意视图下,执行命令display vlan vlan-id,如果提示“Error: The VLAN does not exist.”,则表示该VLAN没有创建。 请在系统视图下,执行命令vlan vlan-id创建VLAN。
接口是否透传对应VLAN 在任意视图下,执行命令display vlan vlan-id,查看显示信息中是否存在该接口名。如果没有该接口名,则表示该接口没有透传对应VLAN。 请在接口视图下,执行下面命令将接口加入对应VLAN。1) trunk接口,执行命令port trunk allow-pass vlan,将接口加入VLAN; 2) hybrid接口,执行命令port hybrid tagged vlan 或者port hybrid untagged vlan,将接口加入VLAN; 3) access接口,执行命令port default vlan,将接口加入VLAN
设备是否配置了黑洞MAC 在任意视图下,执行display mac-address blackhole命令,查看是否配置了黑洞MAC。 如果有黑洞MAC相关配置,请在任意视图下,执行命令undo mac-address blackhole删除黑洞MAC地址。
接口和VLAN是否关闭了MAC地址学习功能 在接口视图和VLAN视图下,分别执行命令`display this include learning`查看是否存在mac-address learning disable的配置。如果存在,则说明接口或VLAN关闭了MAC地址学习功能。
接口和VLAN是否配置了MAC地址学习限制数 在接口视图和VLAN视图下,执行`display this include mac-limit`查看是否存在MAC地址学习限制数的配置。如果存在,则说明配置了MAC地址学习限制数。
接口是否配置了端口安全功能 在接口视图下,执行`display this include port-security`查看是否存在端口安全的配置。如果存在,则说明配置了端口安全功能。

执行完上述操作后,故障仍然存在,请执行步骤2。

2、检查网络中是否存在环路导致MAC地址表项振荡。

  1. 一般情况下MAC地址漂移是由环路导致的,在系统视图下执行命令mac-address flapping detection,配置MAC地址漂移检测功能。
  2. 配置MAC地址漂移检测功能后,系统将检测VLAN内所有MAC地址是否发生漂移。然后可通过命令display mac-address flapping record来查看MAC地址漂移记录来判断是否有环路。
  3. 如果通过命令查看存在MAC地址漂移,可以使用下列两种方法防止MAC地址漂移导致MAC地址表项振荡。
    • 排除环路故障。
    • 在接口视图下执行命令mac-spoofing-defend enable ,配置接口学习MAC地址的优先级,保证在正确的接口上学习到MAC地址。

如果系统中不存在环路,请执行步骤3。

3、检查MAC地址数是否已达设备支持的最大规格。设备学习到的MAC地址数达到产品支持的规格,将无法继续学习新的MAC地址表项。

  • 如果该接口学习到的MAC地址数小于等于该接口连接的实际运行的主机数,说明设备接入的主机已经超过了设备支持的规格,请调整网络部署。
  • 如果该接口学习到的MAC地址数远大于该接口所连接网络实际运行的主机数,说明该接口所连接的网络可能存在恶意刷新MAC地址表项的攻击,请根据下列方法处理。
场景分类 解决方法
接口与其他设备相连 在该接口连接的设备上执行命令display mac-address查看MAC地址表项,根据MAC地址学习接口找到可能存在攻击的主机所在的接口。如果查找到的接口还下连其他设备,请重复上述操作直至查找到恶意攻击的主机。
接口与主机相连 和管理员确认后先断开该主机,等该主机恶意攻击排除后再接入网络。和管理员确认后在该接口上执行port-security enable命令配置端口安全功能或执行mac-limit命令配置接口MAC地址学习数量为1。
接口与HUB相连 通过镜像或其他工具分析该接口收到的报文,根据报文的特征找到攻击主机,找到攻击主机后,和管理员确认后先断开该主机,等该主机恶意攻击排除后再接入网络。和管理员确认后,分别尝试断开HUB连接的主机,通过断开某主机看故障是否存在来判断可能存在攻击的主机,找到攻击主机后,和管理员确认后先断开该主机,等该主机恶意攻击排除后再接入网络。

如果设备学习到的MAC地址数未达到产品支持的规格,但MAC地址依旧无法学习,请执行步骤4。

4、检查设备上是否存在MAC地址Hash冲突告警。

L2IFPPI/4/MACHASHCONFLICTALARM: OID [oid] A hash conflict occurs in MAC addresses.(IfIndex=[INTEGER], MacAddr=[OPAQUE], VLAN=[GAUGE], VsiName=[OCTET1], InterfaceName=[OCTET2]).

处理步骤

  1. 执行display mac-address summary查看设备上MAC地址表资源的使用情况,确认是否超过80%。
    • 是 => 4。
    • 否 => 2。
  2. 执行mac-address hash-mode命令调整设备的MAC Hash模式。查看该告警是否消除。
    • 是 => 结束。
    • 否 => 3。

说明 由于MAC地址分布没有规律性,因此无法确定哪种Hash算法最优。在通常情况下,默认算法为最优算法,建议不要轻易变更。配置合适的MAC Hash模式只能缓解MAC地址学习的Hash冲突,不能彻底解决冲突问题。更改MAC Hash模式后,必须重启单板使配置生效。

  1. 根据告警信息中的MAC地址和接口名称,获取发生MAC地址Hash冲突的设备或者终端的位置。调整规划,修改该终端接入接口的VLAN配置,将该终端调整至其他VLAN。查看该告警是否消除。
    • 是 => 结束。
    • 否 => 4。
  2. 重新规划组网,将告警信息中MAC地址对应的终端设备的业务迁移到MAC地址表资源相对空闲的设备上,查看告警是否消除。
    • 是 => 结束。
    • 否 => 5。
  3. 更换设备为MAC地址表资源规格较大的设备,查看告警是否消除。
    • 是 => 结束。
    • 否 => 6。
  4. 请收集告警信息、日志信息和配置信息,并联系技术支持人员。
posted @ 2021-02-19 14:36  zhengyuanyuan  阅读(997)  评论(0)    收藏  举报