AIDC 学习日志|第 24 天|设备输出反推与 MAC Flapping 定位

本节概览

今天学习从一组设备状态反推故障优先级。核心结论是:物理接口 Up、Eth-Trunk Up、LACP 协商成功、成员处于 Collecting/Distributing、成员实际承载某一条流量,是五个不同层次的状态。单条流量集中在一个成员并不等于哈希故障;多流量下成员持续无计数增长才是强证据。随后进入 MAC Flapping:同一 MAC 在本地 Eth-Trunk 和 NVE 间跳变,优先指向二层位置归属冲突,而不是普通的链路哈希不均衡。

上一课:\[AIDC学习日志-第23天-完整故障案例推理与根因定位]

路线图:\[AIDC网络工程师学习路线图]

一、今日目标与状态

  • 用设备状态降低 Underlay、EVPN 邻居、DF、L3 VNI/VRF 整体故障的优先级
  • 区分成员物理 Up、LACP 有效状态与真正承载流量
  • 区分哈希分布现象与聚合成员异常
  • 识别 Eth-Trunk 与 NVE 之间的 MAC Flapping
  • 建立 MAC Flapping 的现象、直接原因、根因候选和验证方法
  • 完成更多"真实输出反推根因"训练题
  • 尚未在真实 CloudEngine/VRP 设备上执行命令或验证本案例

二、训练案例与已知事实

训练拓扑:服务器以 All-Active 多归属方式接入 Leaf1 和 Leaf2。

text 复制代码
Leaf1、Leaf2 物理接口:Up/Up
Leaf1、Leaf2 EVPN 邻居:Established
Leaf1、Leaf2 VTEP Loopback:互相 Ping 成功
Peer-Link:Up
Keepalive:Up
Eth-Trunk:Up
LACP 成员 1:Up,Collecting/Distributing
LACP 成员 2:Up,但长期无流量
BUM:无重复
同子网业务:偶尔丢包
跨子网业务:稳定

事实、推断与待验证项

分类 内容
已知事实 Underlay 连通、EVPN 会话、Peer-Link、Keepalive 和 Eth-Trunk 显示正常;BUM 未见重复;跨子网稳定;同子网偶发丢包;成员 2 未见流量。
合理推断 Underlay 整体不可达、EVPN BGP 会话完全中断、双主导致的明显 BUM 重复,以及 L3 VNI/VRF 整体故障,不是第一优先级。
尚未证实 成员 2 是否 Selected、是否 Collecting/Distributing、是否有错误计数、是否在足够多不同流量下仍无计数,以及服务器 Bond/LACP 状态。
不能直接下的结论 "成员 2 无流量 = 成员 2 故障"或"跨子网稳定 = 任意三层路径均绝对正常"。

三、第一部分:DF、聚合与哈希不均衡

1. 为什么 DF 不是第一排查方向

你的回答:"重复转发只负责,但 BUM 没有明显重复。"

批改:方向正确。DF 主要控制多归属网络中的 BUM,即广播、未知单播和组播。题目中 BUM 无重复,而问题集中在同子网偶发丢包和成员 2 无流量,应优先看 LACP/Eth-Trunk、服务器 Bond、MAC/ARP、L2 VNI/BD、ESI/Aliasing。

边界:DF 正常不能证明全部二层业务正常;它只是降低 BUM/DF 异常的优先级,不能排除已知单播的数据面问题。

2. 为什么物理 Up 不等于正在转发

你的回答:

text 复制代码
物理 Up
≠ 加入正确 Eth-Trunk
≠ LACP 协商完成
≠ Collecting/Distributing
≠ 实际承载流量

批改:正确,且层次划分清晰。补充为完整的判断链:
#mermaid-svg-X5eX8VncL9RERO8u{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-X5eX8VncL9RERO8u .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-X5eX8VncL9RERO8u .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-X5eX8VncL9RERO8u .error-icon{fill:#552222;}#mermaid-svg-X5eX8VncL9RERO8u .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-X5eX8VncL9RERO8u .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-X5eX8VncL9RERO8u .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-X5eX8VncL9RERO8u .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-X5eX8VncL9RERO8u .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-X5eX8VncL9RERO8u .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-X5eX8VncL9RERO8u .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-X5eX8VncL9RERO8u .marker{fill:#333333;stroke:#333333;}#mermaid-svg-X5eX8VncL9RERO8u .marker.cross{stroke:#333333;}#mermaid-svg-X5eX8VncL9RERO8u svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-X5eX8VncL9RERO8u p{margin:0;}#mermaid-svg-X5eX8VncL9RERO8u .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-X5eX8VncL9RERO8u .cluster-label text{fill:#333;}#mermaid-svg-X5eX8VncL9RERO8u .cluster-label span{color:#333;}#mermaid-svg-X5eX8VncL9RERO8u .cluster-label span p{background-color:transparent;}#mermaid-svg-X5eX8VncL9RERO8u .label text,#mermaid-svg-X5eX8VncL9RERO8u span{fill:#333;color:#333;}#mermaid-svg-X5eX8VncL9RERO8u .node rect,#mermaid-svg-X5eX8VncL9RERO8u .node circle,#mermaid-svg-X5eX8VncL9RERO8u .node ellipse,#mermaid-svg-X5eX8VncL9RERO8u .node polygon,#mermaid-svg-X5eX8VncL9RERO8u .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-X5eX8VncL9RERO8u .rough-node .label text,#mermaid-svg-X5eX8VncL9RERO8u .node .label text,#mermaid-svg-X5eX8VncL9RERO8u .image-shape .label,#mermaid-svg-X5eX8VncL9RERO8u .icon-shape .label{text-anchor:middle;}#mermaid-svg-X5eX8VncL9RERO8u .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-X5eX8VncL9RERO8u .rough-node .label,#mermaid-svg-X5eX8VncL9RERO8u .node .label,#mermaid-svg-X5eX8VncL9RERO8u .image-shape .label,#mermaid-svg-X5eX8VncL9RERO8u .icon-shape .label{text-align:center;}#mermaid-svg-X5eX8VncL9RERO8u .node.clickable{cursor:pointer;}#mermaid-svg-X5eX8VncL9RERO8u .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-X5eX8VncL9RERO8u .arrowheadPath{fill:#333333;}#mermaid-svg-X5eX8VncL9RERO8u .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-X5eX8VncL9RERO8u .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-X5eX8VncL9RERO8u .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-X5eX8VncL9RERO8u .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-X5eX8VncL9RERO8u .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-X5eX8VncL9RERO8u .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-X5eX8VncL9RERO8u .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-X5eX8VncL9RERO8u .cluster text{fill:#333;}#mermaid-svg-X5eX8VncL9RERO8u .cluster span{color:#333;}#mermaid-svg-X5eX8VncL9RERO8u div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-X5eX8VncL9RERO8u .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-X5eX8VncL9RERO8u rect.text{fill:none;stroke-width:0;}#mermaid-svg-X5eX8VncL9RERO8u .icon-shape,#mermaid-svg-X5eX8VncL9RERO8u .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-X5eX8VncL9RERO8u .icon-shape p,#mermaid-svg-X5eX8VncL9RERO8u .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-X5eX8VncL9RERO8u .icon-shape .label rect,#mermaid-svg-X5eX8VncL9RERO8u .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-X5eX8VncL9RERO8u .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-X5eX8VncL9RERO8u .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-X5eX8VncL9RERO8u :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 接口物理 Up
已加入正确 Eth-Trunk
LACP Actor/Partner 参数匹配
成员 Selected
Collecting / Distributing
多流量下收发计数增长
业务连续且回程正常

任何一步不成立,都不能把"接口 Up"解释为"业务一定正常"。

3. 成员 2 长期无流量时的最小验证集合

你的回答:"优先怀疑 LACP、Eth-Trunk 或保护阻塞。"

批改:方向正确,但这还只是根因候选,缺少确认所需的状态与计数。

最少要查:

text 复制代码
1. Eth-Trunk 成员:Selected / Unselected / Standby / Inactive;
2. LACP:Actor、Partner、System ID、Key、端口状态和超时;
3. 成员 1、成员 2 的 TX/RX、错误、丢弃、CRC 计数;
4. 服务器 Bond 模式、LACP 状态、活动网卡和错误计数;
5. 多个不同五元组的测试流是否能使两个成员的计数增长。

4. 跨子网稳定说明什么

你的回答:"说明通过 L3 通道转发没有问题。"

批改:主要正确。跨子网持续稳定,说明 Tenant VRF、网关、L3 VNI、三层 EVPN 路由和该测试路径大概率可用,因此应降低"L3 VNI 或 VRF 整体故障"的优先级。

边界:这不能绝对排除特定前缀、特定回程、特定哈希流或局部网关问题。它只是缩小范围。

5. 成员未进入 C/D 的完整证据链

本题当时未作答。标准答案:

text 复制代码
现象:成员 2 物理 Up,但未处于 Collecting/Distributing,或长期无有效收发计数。
→ 直接原因:成员未进入有效聚合转发状态,或测试流未哈希至该成员。
→ 根因候选:LACP 参数不一致、Eth-Trunk 成员属性不一致、服务器 Bond 异常、成员被保护阻塞、链路错误,或测试流熵不足。
→ 验证:成员状态、Actor/Partner、错误计数、服务器 Bond、多五元组测试、MAC/ESI/Aliasing 状态。
→ 修复验收:成员 Selected 且 C/D;多流计数增长;MAC 稳定;同子网连续流和回程恢复;BUM 不重复。

四、第二部分:哈希不均衡还是成员失效

问题 1:成员 2 是 C/D,但单条 TCP 流全部走成员 1,是否一定故障?

你的回答:不一定。

批改:正确。链路聚合通常按哈希把同一条流固定到一个成员,避免乱序。一条 TCP 流长期走成员 1 是正常现象。

问题 2:100 条不同五元组下成员 2 仍无计数增长,说明什么?

你的回答:"成员 2 故障,不是哈希不均。"

批改:结论过早,但方向很强。多五元组仍完全无计数增长,是成员未参与转发的强证据;仍需确认 C/D 状态、哈希字段是否包含端口、测试是否真的改变了哈希输入、LACP/服务器 Bond 是否一致,以及接口是否有错误或保护阻塞。

问题 3:为什么不能只用 ping 判断 Eth-Trunk 负载分担?

你的回答:"ping 只反馈单一接口情况,不知道问题所在。"

批改:正确方向。单次 Ping 属于有限的一类 ICMP 流,哈希可能固定选择一个成员;它也难以验证多 TCP/UDP 端口、双向回程及成员计数。因此应产生多五元组流量并看双方计数。

问题 4:成员计数增长但同子网仍偶发丢包,应检查什么?

你的回答:MAC 表残留。

批改:MAC 表残留是合理候选,但不完整。建议顺序:

text 复制代码
接口错误/丢弃
→ VLAN、BD、L2 VNI 映射
→ 本地 MAC 表与 ARP 表
→ EVPN Type 2 MAC/IP 路由
→ ESI、Aliasing 下一跳和远端 VTEP 可达性
→ MAC Mobility、MAC Flapping、双主保护状态

推荐主线

text 复制代码
成员状态
→ 多五元组流量与成员收发计数
→ L2 数据面状态:MAC / ARP / BD / L2 VNI / ESI / Aliasing
→ 业务验收

五、第三部分:MAC 从 Eth-Trunk 跳到 NVE 的含义

后续训练输出:

text 复制代码
Eth-Trunk10:
  GE1/0/1  Selected  Collecting/Distributing  TX/RX 持续增长
  GE1/0/2  Selected  Collecting/Distributing  TX/RX 持续增长

MAC 表:
  00e0-fc11-2233  动态学习于 Eth-Trunk10
  同一 MAC 在 30 秒内又被学习到 NVE1

EVPN:
  收到该 MAC 的远端 Type 2 路由,下一跳为 Leaf2 VTEP

核心判断

text 复制代码
两条 Eth-Trunk 成员均 C/D 且计数增长
→ "成员 2 不转发"不再是第一根因

同一 MAC 在 Eth-Trunk10 与 NVE1 间反复学习
→ 现象名称:MAC Flapping
→ 更像二层位置归属、拓扑或主机侧异常
→ 不像普通的哈希不均衡

哈希只决定一个 Eth-Trunk 内选择哪个成员口;它不能使 MAC 的来源位置在本地接入口与 VXLAN 隧道入口之间反复变化。
#mermaid-svg-WAsHJU9fW96bzBvm{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-WAsHJU9fW96bzBvm .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-WAsHJU9fW96bzBvm .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-WAsHJU9fW96bzBvm .error-icon{fill:#552222;}#mermaid-svg-WAsHJU9fW96bzBvm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WAsHJU9fW96bzBvm .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-WAsHJU9fW96bzBvm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WAsHJU9fW96bzBvm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WAsHJU9fW96bzBvm .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-WAsHJU9fW96bzBvm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WAsHJU9fW96bzBvm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WAsHJU9fW96bzBvm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WAsHJU9fW96bzBvm .marker.cross{stroke:#333333;}#mermaid-svg-WAsHJU9fW96bzBvm svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WAsHJU9fW96bzBvm p{margin:0;}#mermaid-svg-WAsHJU9fW96bzBvm .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-WAsHJU9fW96bzBvm .cluster-label text{fill:#333;}#mermaid-svg-WAsHJU9fW96bzBvm .cluster-label span{color:#333;}#mermaid-svg-WAsHJU9fW96bzBvm .cluster-label span p{background-color:transparent;}#mermaid-svg-WAsHJU9fW96bzBvm .label text,#mermaid-svg-WAsHJU9fW96bzBvm span{fill:#333;color:#333;}#mermaid-svg-WAsHJU9fW96bzBvm .node rect,#mermaid-svg-WAsHJU9fW96bzBvm .node circle,#mermaid-svg-WAsHJU9fW96bzBvm .node ellipse,#mermaid-svg-WAsHJU9fW96bzBvm .node polygon,#mermaid-svg-WAsHJU9fW96bzBvm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WAsHJU9fW96bzBvm .rough-node .label text,#mermaid-svg-WAsHJU9fW96bzBvm .node .label text,#mermaid-svg-WAsHJU9fW96bzBvm .image-shape .label,#mermaid-svg-WAsHJU9fW96bzBvm .icon-shape .label{text-anchor:middle;}#mermaid-svg-WAsHJU9fW96bzBvm .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-WAsHJU9fW96bzBvm .rough-node .label,#mermaid-svg-WAsHJU9fW96bzBvm .node .label,#mermaid-svg-WAsHJU9fW96bzBvm .image-shape .label,#mermaid-svg-WAsHJU9fW96bzBvm .icon-shape .label{text-align:center;}#mermaid-svg-WAsHJU9fW96bzBvm .node.clickable{cursor:pointer;}#mermaid-svg-WAsHJU9fW96bzBvm .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-WAsHJU9fW96bzBvm .arrowheadPath{fill:#333333;}#mermaid-svg-WAsHJU9fW96bzBvm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-WAsHJU9fW96bzBvm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-WAsHJU9fW96bzBvm .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WAsHJU9fW96bzBvm .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-WAsHJU9fW96bzBvm .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WAsHJU9fW96bzBvm .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-WAsHJU9fW96bzBvm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-WAsHJU9fW96bzBvm .cluster text{fill:#333;}#mermaid-svg-WAsHJU9fW96bzBvm .cluster span{color:#333;}#mermaid-svg-WAsHJU9fW96bzBvm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-WAsHJU9fW96bzBvm .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-WAsHJU9fW96bzBvm rect.text{fill:none;stroke-width:0;}#mermaid-svg-WAsHJU9fW96bzBvm .icon-shape,#mermaid-svg-WAsHJU9fW96bzBvm .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WAsHJU9fW96bzBvm .icon-shape p,#mermaid-svg-WAsHJU9fW96bzBvm .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-WAsHJU9fW96bzBvm .icon-shape .label rect,#mermaid-svg-WAsHJU9fW96bzBvm .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WAsHJU9fW96bzBvm .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-WAsHJU9fW96bzBvm .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-WAsHJU9fW96bzBvm :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 源 MAC 从本地进入
同一源 MAC 经 VXLAN 到达
下一次本地报文再次覆盖
服务器

MAC 00e0-fc11-2233
Leaf1
学习:Eth-Trunk10
Leaf2 或远端路径
NVE1
Leaf1 改学:NVE1
已知单播出口反复变化

同子网偶发丢包

本轮直接给出的五题答案

  1. 为什么 MAC 跳到 NVE1 后会被封装到远端 VTEP?

    Leaf1 的 MAC 表若把目的 MAC 指向 NVE1,查到对应 EVPN Type 2 路由的远端 VTEP 下一跳后,会把已知单播作为 VXLAN 内层报文封装,外层 IP 目的地址指向该远端 VTEP。

  2. 两个服务器使用相同 MAC,为什么是偶发丢包而非必然全断?

    MAC 表遵循"最后一次看到源 MAC 的入口"为准。谁最后发送报文,表项就可能指向谁;只有发往该 MAC 的流量受影响,且影响还与发送时序、老化、回程和缓存有关,因此可能表现为间歇性。

  3. MAC Mobility 序列号帮助判断什么?

    它帮助 EVPN 判断同一 MAC/IP 的较新位置和撤销旧位置。合法迁移时序列号应向新位置推进;没有迁移却持续增长或反复更新,支持 MAC Flapping 或重复归属的推断,但仍须结合主机和拓扑证据。

  4. 为什么本地 MAC 表和 EVPN Type 2 要同时检查?

    本地 MAC 表反映当前数据面转发出口;Type 2 路由反映控制面学习到的 MAC/IP、远端 VTEP 和可能的移动信息。只看其一无法判断是本地硬件表残留、远端错误宣告,还是两者不同步。

  5. 因果链:

text 复制代码
重复 MAC 或二层环路
→ 同一源 MAC 同时从本地 Eth-Trunk 和 NVE 方向被学习
→ MAC 表出口反复变化
→ 已知单播被转发到错误或不稳定出口
→ 同子网偶发丢包

高优先级根因候选与验证

根因候选 为什么合理 最小验证
服务器 Bond/LACP 或虚拟交换机配置错误 可能把同一二层报文送入错误路径或形成环路 查 Bond 模式、成员状态、LACP、虚拟交换机桥接与网卡计数
重复 MAC 两个位置会相互覆盖同一 MAC 的学习位置 查服务器、虚拟机、容器和网卡 MAC 清单;比对 Type 2 发布者
VLAN/BD/L2 VNI 映射错误 不应相通的二层域被错误桥接 对比接入口 VLAN、BD、L2 VNI 和业务租户映射
ESI/多归属/保护状态异常 可能产生错误的本地或远端归属信息 查 ESI/EAD、Aliasing、Peer-Link、保护状态和成员角色

!warning 排障纪律

首先保留证据,不要一开始就清空 MAC 表。清表可能短暂消除现象,但会抹去跳变时间、方向和频率。若业务风险允许,先记录 MAC 移动日志、本地 MAC 表、EVPN Type 2、ESI/Aliasing 与服务器 Bond 状态。

六、复习卡片

text 复制代码
接口 Up 不是聚合转发正常;
C/D 不是每条流都会经过该成员;
单流不能验证负载分担,多五元组与计数才有证据力;
DF负责 BUM,不负责普通已知单播;
跨子网稳定降低 L3 整体故障优先级,但不绝对排除局部问题;
Eth-Trunk 与 NVE 间的同 MAC 跳变是 MAC Flapping;
本地 MAC 表看数据面,EVPN Type 2 看控制面,必须联动分析;
重复 MAC、环路是候选根因,必须用设备和服务器证据验证。

七、下一步

下一小节继续完成"根据 MAC Flapping 的控制面和数据面输出,设计最小验证集合",重点区分:

text 复制代码
真实主机迁移
vs
重复 MAC
vs
二层环路
vs
EVPN 控制面/硬件表不同步
相关推荐
minglie11 小时前
espidf驱动SPI ST7735S LCD
学习
kaixin_啊啊2 小时前
Codex论文辅助全流程
人工智能·笔记·学习·ai·大模型
愚公移山填海2 小时前
【无标题】
笔记·python·学习·pycharm
sugar__salt2 小时前
大模型流式输出完全指南(上):从 HTTP 长连接到手写 SSE
网络·网络协议·http
边境悍匪2 小时前
蜗牛学苑 Java 智能体学习 Day41|ElementPlus 布局、Vue‑Router 登录、Axios 思维导图复盘
java·vue.js·学习
RobinDevNotes2 小时前
Palmier Pro:AI时代的Mac视频编辑器
人工智能·ceph·macos·ai·音视频·视频编辑·mcp
(Charon)2 小时前
【Kafka】消息队列学习(二):Topic、Partition与Offset,消息到底存在哪里
分布式·学习·kafka
彧azz2 小时前
Git 学习指南:从入门到进阶的完整实践手册
git·学习
wuyk5556 小时前
【Socket 进阶之路】第 3 章 TCP 三次握手 & 四次挥手深度剖析|连接建立、断开、状态机、TIME_WAIT 核心工程问题
服务器·开发语言·网络·物联网·网络协议·tcp/ip