4. 二层转发故障诊断
二层转发故障的典型表现是“同网段不通、时通时断、部分主机可达、网关 MAC 学不到、出现广播风暴”。与三层路由问题不同,二层故障往往不是单点错误,而是 VLAN 成员关系、生成树收敛、MLAG 主备状态、LACP 聚合、VARP 虚拟网关与 ARP/MAC 学习链路上某一环出现偏差。诊断的核心思路是:先确认“这个帧应该从哪进、从哪出”,再逐跳核对 VLAN 标签、STP 端口角色、MLAG 与 LACP 状态,最后用 MAC 地址表和 ARP 表验证转发路径是否与预期一致。
一、先建立二层转发路径的“预期模型”
在 Arista 环境中,一个典型的双归接入场景是:服务器双网卡分别接入 Leaf1 与 Leaf2,两台 Leaf 组成 MLAG 对,服务器侧使用 LACP 绑定;Leaf 上为业务网段配置 VARP 虚拟网关,VLAN 10 为业务 VLAN。此时一个从服务器到网关的帧,其预期路径是:服务器 bond 出帧 → 经 LACP 哈希选中一条成员链路 → 到达 Leaf1 或 Leaf2 的某个成员口 → 该口属于 VLAN 10 且处于 STP Forwarding → 若目的 MAC 是 VARP 虚拟 MAC,则由本机三层终结;若目的 MAC 是另一台主机,则查 MAC 地址表从 MLAG Peer-link 或上行口转发。
只要这个预期模型中有任何一项不成立,就会出现“黑洞”或“环路”。因此诊断的第一步不是敲命令,而是先写出预期:VLAN 号、STP 实例、MLAG 域、LACP 组、VARP 虚拟 IP/MAC、目的主机 MAC。下面这张图把这条二层转发链路的关键检查点和常见断点放在一起,便于对照排查。
二、VLAN 与 STP:先确认“该通的 VLAN 在不在、该转的端口转不转”
VLAN 故障最常见的是“端口没放行”和“Trunk 允许列表不匹配”。在 Arista 上,接入端口通常用 switchport mode access 加 switchport access vlan 10,Trunk 端口则要检查 switchport trunk allowed vlan。如果服务器侧发的是带标签帧而端口是 access,或者 Trunk 两端允许列表不一致,帧会在入口或出口被静默丢弃,表现为“同 VLAN 内部分主机不通”。
STP/RSTP/MSTP 方面,重点看三件事:根桥位置是否符合设计、端口角色是否为预期、拓扑是否稳定。使用 show spanning-tree 可以看到每个 VLAN 或 MST 实例的根桥、本桥优先级、各端口角色(Root/Designated/Alternate)与状态(Forwarding/Blocking)。如果发现某接入端口长期处于 Blocking,而设计上它应该是 Forwarding,说明存在冗余路径或根桥选举异常。MSTP 场景还要核对 show spanning-tree mst configuration 中的实例与 VLAN 映射是否一致,映射不一致会导致同一 VLAN 在不同交换机上属于不同实例,进而产生环路或黑洞。
Leaf1# show spanning-tree vlan 10
VLAN 10
Spanning tree enabled protocol rstp
Root ID Priority 32778
Address 001c.73aa.bb01
This bridge is the root
Bridge ID Priority 32778
Address 001c.73aa.bb01
Interface Role State Cost Prio.Nbr
Ethernet1 Designated Forwarding 20000 128.1
Ethernet2 Designated Forwarding 20000 128.2
Peer-link Designated Forwarding 20000 128.3
若看到 State 为 Blocking 且 Role 为 Alternate,需要结合拓扑判断这是否是设计中的冗余阻塞。若同一 VLAN 在多台交换机上反复出现拓扑变更(TC),则要检查是否存在单向链路、双工不匹配或 MLAG Peer-link 抖动。
三、MLAG 与 LACP:双活接入的“一致性”检查
MLAG 的核心是两台 Leaf 对外表现为一台逻辑设备。诊断时先看 show mlag,确认 state 为 Active、peer-link status 为 Up、peer-address 可达。如果状态是 Inactive 或 peer-link Down,MLAG 会进入“双主”风险状态,此时两端可能同时转发,导致 MAC 表震荡和环路。
Leaf1# show mlag
MLAG Configuration:
domain-id: mlag-domain-1
local-interface: Vlan4094
peer-address: 10.0.0.2
peer-link: Port-Channel100
state: Active
peer-link status: Up
local-intf status: Up
peer-intf status: Up
LACP 方面,用 show lacp neighbor 和 show port-channel detailed 检查成员口是否 InSync、是否被正确哈希。常见问题是服务器侧 bond 模式与交换机侧 LACP 不匹配,或成员口速率/双工不一致导致部分成员被踢出。若 Port-Channel 中只有部分成员 Up,流量会集中到剩余成员,可能造成拥塞或丢包,但不会完全不通,容易被误判为“应用问题”。
四、VARP、ARP 与 MAC 地址表:验证“网关和目的主机是否真的可达”
VARP 让多台 Leaf 共享同一个虚拟 IP 和虚拟 MAC,服务器只需配置一个网关。诊断时先确认 show ip virtual-router 中虚拟 MAC 已生成,且各 Leaf 的 VARP 配置一致。若虚拟 MAC 未同步,服务器 ARP 请求可能得不到响应,表现为“网关 ping 不通”。
ARP 与 MAC 地址表是最终验证环节。show mac address-table vlan 10 可以看到 MAC 学习在哪个端口、是否动态、是否有重复。若同一 MAC 在 MLAG 两端都学到且指向不同端口,说明存在环路或 MAC 漂移;若目的 MAC 完全学不到,则可能是 VLAN 未放行、STP 阻塞或对端未发送。结合 show ip arp vlan 10 检查网关 ARP 表项是否完整,若某主机 ARP 缺失但 MAC 存在,可能是主机未响应 ARP 或网关侧 ARP 老化异常。
Leaf1# show mac address-table vlan 10
Mac Address Table
Vlan Mac Address Type Ports
---- ----------- -------- -----
10 001c.73aa.bb01 DYNAMIC Et1
10 001c.73aa.bb02 DYNAMIC Peer-link
10 001c.73aa.bb03 DYNAMIC Et2
当 MAC 表项指向 Peer-link 时,说明该 MAC 实际连接在 MLAG 对端,这是正常现象;若指向错误端口或频繁跳变,则要回到 STP 和 MLAG 状态检查。最终判断标准是:预期路径上的每一跳,VLAN 放行、STP 转发、MLAG Active、LACP InSync、VARP 生效、MAC/ARP 表项与拓扑一致。任何一项不满足,就按“从入口到出口”的顺序逐段缩小范围,而不是盲目重启端口或清空 MAC 表。