AIDC 学习日志|第 25 天|设备输出反推、MAC Flapping 与 EAD 撤销

本节概览

今天把 MAC Flapping 从"现象"进一步拆成四类可能:合法主机迁移、重复 MAC、二层环路、控制面与数据面不同步。随后复习 Type 2、MAC Mobility、Type 1 per-ES、Type 1 per-EVI 和 Mass Withdrawal 的作用范围,并根据四组设备输出判断故障类型。核心方法是:先描述可观察事实,再区分合理推断和待验证根因,最后设计最小验证集合。

一、今日目标与完成情况

  • 区分合法主机迁移、重复 MAC、二层环路和控制面/数据面不同步
  • 根据 MAC Mobility 序列判断"迁移"与"反复跳变"的差异
  • 理解 Type 2 与 Type 1 EAD 的不同层次
  • 理解 Type 1 per-ES、Type 1 per-EVI 和 Mass Withdrawal
  • 根据设备输出判断单 MAC 故障、整段故障和双主风险
  • 记录原回答、标准答案、错误前提、证据边界和验证顺序
  • 尚未在真实 CloudEngine/VRP 设备上执行这些命令

二、重要方法:现象不等于根因

MAC Flapping 的意思是:同一 MAC 的学习位置在两个或多个出口之间反复变化。它本身只是数据面观察到的现象,不等于已经确认了根因。

text 复制代码
现象:MAC 在 Eth-Trunk 与 NVE 之间跳变
直接原因:Leaf 反复收到同一源 MAC 的不同入口报文
根因候选:主机迁移、重复 MAC、二层环路、ESI/Aliasing异常、控制面与数据面不同步
验证:结合本地 MAC、EVPN Type 2、Mobility 序列、服务器和拓扑证据
验收:MAC 稳定、业务连续、BUM/回程正常

三、四种 MAC 位置变化的区别

类型 典型事实 不能直接假设的内容 优先验证
合法主机迁移 旧位置停止,新位置稳定,存在迁移事件,序列适度递增 不能只凭序列递增确认迁移 主机平台、虚拟机迁移记录、Type 2
重复 MAC 两个活动设备使用相同 MAC,位置反复覆盖 不能只看一个 MAC 表项就定性 服务器、虚拟机、容器、网卡 MAC 清单
二层环路 多个 MAC 高频跳变,可能有 BUM/广播增加、多个接口异常 BUM 不明显也不能完全排除已知单播环路 接口计数、桥接、VLAN/BD、Peer-Link、保护
控制/数据面不同步 Type 2 宣告一个位置,本地 MAC/FIB 仍使用另一个 EVPN Established 不代表业务转发表正确 Type 2、EAD/Aliasing、本地硬件表

四、第一组问答:判断四类根因

问题 1:合法迁移还是 Flapping

题目:

text 复制代码
MAC 原来位于 Leaf1 Eth-Trunk10;
随后 Leaf1 旧位置消失;
Leaf2 开始稳定学习该 MAC;
Mobility 序列从 7 变成 8;
服务器平台确认发生虚拟机迁移。

你的回答:合法主机迁移。

批改:正确。证据链是:旧位置停止、新位置稳定、序列递增、外部迁移事件存在。序列号变化本身不是充分证据,必须和主机事件及新位置稳定性结合。

问题 2:两个位置反复切换

题目:

text 复制代码
同一 MAC 每 1 秒在 Leaf1 Eth-Trunk10 和 Leaf2 NVE 之间切换;
两台服务器配置了相同 MAC;
没有虚拟机迁移。

你的回答:重复 MAC。

批改:正确。两个活动设备同时使用相同 MAC,是最直接的高优先级根因。仍应确认两台设备确实在线并持续发送报文,排除 MAC 清单记录错误。

问题 3:多个 MAC 同时跳变

题目:

text 复制代码
约 50 个 MAC 同时跳变;
广播计数持续上升;
未知单播出现重复;
多个接入口出现异常高流量。

你的回答:多个 MAC 同时跳变。

批改:方向正确,但根因结论应补全为:高度怀疑二层环路或广播风暴。一个重复 MAC通常只影响单个地址;多个 MAC、BUM 重复和多端口高流量说明影响范围已经扩大到二层拓扑。即使 BUM 不明显,已知单播环路仍可能存在。

问题 4:Type 2 与本地 MAC 表不一致

题目:

text 复制代码
EVPN Type 2:MAC 的远端位置为 Leaf2;
本地 MAC 表:MAC 仍指向 Eth-Trunk10;
EVPN 邻居 Established;
服务器没有迁移。

你的回答:控制面与数据面不同步。

批改:正确。EVPN Type 2反映控制面学习结果,本地 MAC/FIB反映数据面出口。需要继续检查 Type 2 发布者、EAD/Aliasing、硬件编程、LACP/Eth-Trunk和保护状态。

问题 5:最小验证链

题目:

text 复制代码
MAC Flapping
→ 查看本地 MAC 表
→ 查看 ______
→ 检查 ______
→ 检查 ______
→ 业务验收

你的回答:LACP、Aliasing。

批改:方向合理但不完整。推荐写法:

text 复制代码
MAC Flapping
→ 查看本地 MAC 表
→ 查看 EVPN Type 2、MAC Mobility 序列和远端 VTEP
→ 检查 ESI/EAD/Aliasing 与 LACP/Eth-Trunk
→ 检查服务器 MAC、Bond、虚拟交换机及 VLAN/BD/L2 VNI
→ 业务验收

只看 LACP 和 Aliasing,不能判断是否存在重复 MAC、Type 2 旧路径或 VLAN/BD 映射错误。

五、第二组问答:最小验证集合

问题 1:单 MAC 跳变

你的回答:

text 复制代码
EVPN Type 2 → 主机迁移记录 → 重复 MAC 检查

批改:正确方向。应再加入本地 MAC 表和跳变频率:

text 复制代码
本地 MAC 表及跳变时间
→ EVPN Type 2、远端 VTEP 和 Mobility 序列
→ 主机迁移记录
→ 重复 MAC 检查

问题 2:序列号快速增加

你的回答:MAC Flapping。

批改:正确。如果序列快速增加但没有稳定的新位置,也没有合法迁移事件,应优先怀疑重复 MAC、二层环路、虚拟交换机或多归属路径异常。

问题 3:Type 2 与本地表均显示远端但业务丢包

你的回答:

text 复制代码
EAD/Aliasing → 本地 MAC/FIB 编程 → LACP/Eth-Trunk → 保护状态 → 清理旧表项后的业务恢复

批改:方向正确。还需要补充 Underlay 到远端 VTEP、NVE 封装/解封装计数、MTU、BD/L2 VNI、ARP、ACL和回程检查。此时问题可能不在 MAC 学习,而在 VXLAN 数据面或回程。

问题 4:多个 MAC 跳变但 BUM 不增加

你的回答:不可以,二层环路不只影响一个 MAC。

批改:结论正确。应更准确地说:不能因为 BUM 没有明显增加就排除二层环路。环路可能主要转发已知单播,或者 BUM 被保护机制、策略或流量规模掩盖。

问题 5:重复 MAC 排障链

本题未作答,标准链如下:

text 复制代码
现象:同一 MAC 在本地 Eth-Trunk 与 NVE 之间反复跳变
→ 证据:两台活动设备使用相同 MAC,且没有合法迁移记录
→ 直接原因:两个位置同时发送相同源 MAC,反复覆盖 MAC 学习位置
→ 根因候选:虚拟机克隆、手工 MAC、虚拟交换机桥接、Bond/LACP错误
→ 验证:MAC清单、Type 2 发布者、MAC学习端口、服务器Bond、VLAN/BD/L2 VNI
→ 修复:消除重复 MAC并修正桥接或聚合
→ 验收:MAC稳定、Flapping消失、Type 2位置正确、同子网和回程恢复

六、Type 2、MAC Mobility 与 EAD

1. Type 2

Type 2 主要发布具体的 MAC 或 MAC/IP 位置:

text 复制代码
MAC/IP
→ 所属 EVI/业务
→ 远端 VTEP
→ 可能的 ESI 与移动信息

它回答:这个 MAC/IP 在哪里?

2. MAC Mobility

MAC Mobility 用于判断同一 MAC/IP 的新旧位置。合法迁移一般是:

text 复制代码
Leaf1 序列 7
→ 主机迁移
→ Leaf2 序列 8
→ 远端设备淘汰旧位置

如果序列快速增加但 MAC 没有稳定的新位置,不能直接当作正常收敛,应查重复 MAC、环路和多归属异常。

3. Type 1 per-ES

Type 1 per-ES 的作用范围是整个 Ethernet Segment,主要用于:

  • Ethernet Segment 发现;
  • 表达 ES 状态变化;
  • 触发 ES 范围的快速撤销;
  • 支持 Mass Withdrawal。

可以理解为:

text 复制代码
整个多归属 Ethernet Segment 是否仍然有效?

4. Type 1 per-EVI

Type 1 per-EVI 的作用范围是某个 Ethernet Segment 上的某一个 EVI。它比 per-ES 更细粒度,可以表达:

  • 某个 ES 是否参与某个具体 EVI;
  • 某个业务的多归属成员状态;
  • EVI 范围内的 Aliasing 与撤销。

因此:

text 复制代码
per-ES:整个 ES 层次
per-EVI:某个业务 EVI 层次
Type 2:具体 MAC/IP 层次

5. Mass Withdrawal

如果一个 Ethernet Segment 整体故障,不应等待每一个 MAC 单独老化。EAD 相关撤销可以批量清除一组旧候选路径:

text 复制代码
ES 故障
→ EAD 状态变化或撤销
→ 远端识别 ES 失效
→ 批量清除相关 MAC/Aliasing 候选出口
→ 更新本地 MAC/FIB
→ 剩余 Leaf 接管

这就是 Mass Withdrawal 的工程价值:缩短大规模 MAC 路径收敛时间。
#mermaid-svg-WbBYplRY4tb6o9gZ{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-WbBYplRY4tb6o9gZ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-WbBYplRY4tb6o9gZ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-WbBYplRY4tb6o9gZ .error-icon{fill:#552222;}#mermaid-svg-WbBYplRY4tb6o9gZ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WbBYplRY4tb6o9gZ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-WbBYplRY4tb6o9gZ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WbBYplRY4tb6o9gZ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WbBYplRY4tb6o9gZ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-WbBYplRY4tb6o9gZ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WbBYplRY4tb6o9gZ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WbBYplRY4tb6o9gZ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WbBYplRY4tb6o9gZ .marker.cross{stroke:#333333;}#mermaid-svg-WbBYplRY4tb6o9gZ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WbBYplRY4tb6o9gZ p{margin:0;}#mermaid-svg-WbBYplRY4tb6o9gZ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-WbBYplRY4tb6o9gZ .cluster-label text{fill:#333;}#mermaid-svg-WbBYplRY4tb6o9gZ .cluster-label span{color:#333;}#mermaid-svg-WbBYplRY4tb6o9gZ .cluster-label span p{background-color:transparent;}#mermaid-svg-WbBYplRY4tb6o9gZ .label text,#mermaid-svg-WbBYplRY4tb6o9gZ span{fill:#333;color:#333;}#mermaid-svg-WbBYplRY4tb6o9gZ .node rect,#mermaid-svg-WbBYplRY4tb6o9gZ .node circle,#mermaid-svg-WbBYplRY4tb6o9gZ .node ellipse,#mermaid-svg-WbBYplRY4tb6o9gZ .node polygon,#mermaid-svg-WbBYplRY4tb6o9gZ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WbBYplRY4tb6o9gZ .rough-node .label text,#mermaid-svg-WbBYplRY4tb6o9gZ .node .label text,#mermaid-svg-WbBYplRY4tb6o9gZ .image-shape .label,#mermaid-svg-WbBYplRY4tb6o9gZ .icon-shape .label{text-anchor:middle;}#mermaid-svg-WbBYplRY4tb6o9gZ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-WbBYplRY4tb6o9gZ .rough-node .label,#mermaid-svg-WbBYplRY4tb6o9gZ .node .label,#mermaid-svg-WbBYplRY4tb6o9gZ .image-shape .label,#mermaid-svg-WbBYplRY4tb6o9gZ .icon-shape .label{text-align:center;}#mermaid-svg-WbBYplRY4tb6o9gZ .node.clickable{cursor:pointer;}#mermaid-svg-WbBYplRY4tb6o9gZ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-WbBYplRY4tb6o9gZ .arrowheadPath{fill:#333333;}#mermaid-svg-WbBYplRY4tb6o9gZ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-WbBYplRY4tb6o9gZ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-WbBYplRY4tb6o9gZ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WbBYplRY4tb6o9gZ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-WbBYplRY4tb6o9gZ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WbBYplRY4tb6o9gZ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-WbBYplRY4tb6o9gZ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-WbBYplRY4tb6o9gZ .cluster text{fill:#333;}#mermaid-svg-WbBYplRY4tb6o9gZ .cluster span{color:#333;}#mermaid-svg-WbBYplRY4tb6o9gZ 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-WbBYplRY4tb6o9gZ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-WbBYplRY4tb6o9gZ rect.text{fill:none;stroke-width:0;}#mermaid-svg-WbBYplRY4tb6o9gZ .icon-shape,#mermaid-svg-WbBYplRY4tb6o9gZ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WbBYplRY4tb6o9gZ .icon-shape p,#mermaid-svg-WbBYplRY4tb6o9gZ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-WbBYplRY4tb6o9gZ .icon-shape .label rect,#mermaid-svg-WbBYplRY4tb6o9gZ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WbBYplRY4tb6o9gZ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-WbBYplRY4tb6o9gZ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-WbBYplRY4tb6o9gZ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Ethernet Segment
Type 1 per-ES

整个 ES 的发现与撤销
Type 1 per-EVI

某个 EVI 的成员状态
Aliasing

多个 Leaf 作为候选出口
Type 2 MAC/IP

具体 MAC/IP 位置
Mass Withdrawal

批量撤销相关路径
本地 MAC/Aliasing/FIB

七、第三组问答:四个设备输出案例

案例 A

输出:

text 复制代码
只有一个 MAC 在 Leaf1 和 Leaf2 之间移动;
Mobility 序列持续增加;
没有主机迁移记录;
没有明显 BUM 重复。

标准答案:更接近重复 MAC 或单点 MAC Flapping,不是合法迁移。

依据:没有迁移事件,且位置持续反复而非移动后稳定。优先检查两个活动设备是否使用相同 MAC、服务器 Bond、虚拟交换机和本地/远端 Type 2 发布者。若后续发现多个 MAC也跳变,再提高二层环路的优先级。

案例 B

输出:

text 复制代码
约 2000 个 MAC 同时从 Leaf1 的候选出口中撤销;
EVPN 邻居仍 Established;
Leaf2 快速接管;
业务短暂中断后恢复。

标准答案:Mass Withdrawal,更具体地说是 Ethernet Segment 故障后的 EAD 撤销。

依据:影响的是大量 MAC,且剩余 Leaf 很快接管;EVPN 邻居 Established 只说明会话仍存在,不否定服务路径撤销。

案例 C

输出:

text 复制代码
本地 MAC 表显示 MAC 在 Eth-Trunk10;
EVPN Type 2 显示 MAC 在远端 Leaf2;
EAD 和 EVPN 邻居均正常;
硬件转发表仍未更新。

标准答案:控制面与数据面不同步,当前直接故障表现位于数据面。

控制面已经有远端 Type 2 信息,但本地 MAC/FIB 仍使用旧出口。应检查硬件编程、MAC表刷新、Aliasing/LACP成员状态和保护机制。不能简单归因于 EVPN 邻居故障。

案例 D

输出:

text 复制代码
多个 MAC 高频跳变;
广播和未知单播计数增加;
Peer-Link 状态异常;
两台 Leaf 都认为自己可以转发。

标准答案:双主风险与二层环路。

依据:多个 MAC、BUM 增加、Peer-Link 异常、两台设备同时转发,符合双主保护失效或状态不同步。普通哈希不均衡只影响流量成员选择,不能解释大范围 MAC 跳变和双主转发。

八、四类案例对比图

#mermaid-svg-GXL7gJuB0xQsuQIC{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-GXL7gJuB0xQsuQIC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-GXL7gJuB0xQsuQIC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-GXL7gJuB0xQsuQIC .error-icon{fill:#552222;}#mermaid-svg-GXL7gJuB0xQsuQIC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-GXL7gJuB0xQsuQIC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-GXL7gJuB0xQsuQIC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-GXL7gJuB0xQsuQIC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-GXL7gJuB0xQsuQIC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-GXL7gJuB0xQsuQIC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-GXL7gJuB0xQsuQIC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-GXL7gJuB0xQsuQIC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-GXL7gJuB0xQsuQIC .marker.cross{stroke:#333333;}#mermaid-svg-GXL7gJuB0xQsuQIC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-GXL7gJuB0xQsuQIC p{margin:0;}#mermaid-svg-GXL7gJuB0xQsuQIC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-GXL7gJuB0xQsuQIC .cluster-label text{fill:#333;}#mermaid-svg-GXL7gJuB0xQsuQIC .cluster-label span{color:#333;}#mermaid-svg-GXL7gJuB0xQsuQIC .cluster-label span p{background-color:transparent;}#mermaid-svg-GXL7gJuB0xQsuQIC .label text,#mermaid-svg-GXL7gJuB0xQsuQIC span{fill:#333;color:#333;}#mermaid-svg-GXL7gJuB0xQsuQIC .node rect,#mermaid-svg-GXL7gJuB0xQsuQIC .node circle,#mermaid-svg-GXL7gJuB0xQsuQIC .node ellipse,#mermaid-svg-GXL7gJuB0xQsuQIC .node polygon,#mermaid-svg-GXL7gJuB0xQsuQIC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-GXL7gJuB0xQsuQIC .rough-node .label text,#mermaid-svg-GXL7gJuB0xQsuQIC .node .label text,#mermaid-svg-GXL7gJuB0xQsuQIC .image-shape .label,#mermaid-svg-GXL7gJuB0xQsuQIC .icon-shape .label{text-anchor:middle;}#mermaid-svg-GXL7gJuB0xQsuQIC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-GXL7gJuB0xQsuQIC .rough-node .label,#mermaid-svg-GXL7gJuB0xQsuQIC .node .label,#mermaid-svg-GXL7gJuB0xQsuQIC .image-shape .label,#mermaid-svg-GXL7gJuB0xQsuQIC .icon-shape .label{text-align:center;}#mermaid-svg-GXL7gJuB0xQsuQIC .node.clickable{cursor:pointer;}#mermaid-svg-GXL7gJuB0xQsuQIC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-GXL7gJuB0xQsuQIC .arrowheadPath{fill:#333333;}#mermaid-svg-GXL7gJuB0xQsuQIC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-GXL7gJuB0xQsuQIC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-GXL7gJuB0xQsuQIC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-GXL7gJuB0xQsuQIC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-GXL7gJuB0xQsuQIC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-GXL7gJuB0xQsuQIC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-GXL7gJuB0xQsuQIC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-GXL7gJuB0xQsuQIC .cluster text{fill:#333;}#mermaid-svg-GXL7gJuB0xQsuQIC .cluster span{color:#333;}#mermaid-svg-GXL7gJuB0xQsuQIC 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-GXL7gJuB0xQsuQIC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-GXL7gJuB0xQsuQIC rect.text{fill:none;stroke-width:0;}#mermaid-svg-GXL7gJuB0xQsuQIC .icon-shape,#mermaid-svg-GXL7gJuB0xQsuQIC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-GXL7gJuB0xQsuQIC .icon-shape p,#mermaid-svg-GXL7gJuB0xQsuQIC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-GXL7gJuB0xQsuQIC .icon-shape .label rect,#mermaid-svg-GXL7gJuB0xQsuQIC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-GXL7gJuB0xQsuQIC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-GXL7gJuB0xQsuQIC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-GXL7gJuB0xQsuQIC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 单 MAC,迁移后稳定
单 MAC,两个活动源反复发送
多个 MAC + BUM/广播增加
Type 2 与本地 FIB 不一致
大量 MAC 同时撤销
观察 MAC 位置变化
影响范围与证据
合法主机迁移

Type 2 + Mobility
重复 MAC

位置覆盖
二层环路或双主

检查保护与拓扑
控制面/数据面不同步

检查 EAD/Aliasing/硬件
EAD / Mass Withdrawal

ES 级收敛

九、最小验证集合

单个 MAC 跳变

text 复制代码
1. 保留跳变时间、频率、入口和方向;
2. 查看本地 MAC 表;
3. 查看 Type 2、远端 VTEP 和 Mobility 序列;
4. 查主机迁移记录与重复 MAC;
5. 查 Bond、虚拟交换机、VLAN/BD/L2 VNI;
6. 验证 MAC 稳定、连续单播和回程。

多个 MAC 同时失效

text 复制代码
1. 查看 EAD per-ES/per-EVI 和撤销信息;
2. 查看 ESI、Aliasing、Leaf角色和保护状态;
3. 查看 Peer-Link、Keepalive、LACP;
4. 查看 MAC/FIB 批量更新;
5. 验证剩余 Leaf 接管、BUM、ARP、已知单播和回程。

常用命令类别

不同 VRP 版本的精确命令可能不同,训练时按命令类别理解:

text 复制代码
display mac-address
display interface
display eth-trunk
display bgp evpn peer
display bgp evpn routing-table
display arp

命令输出只能证明对应层次的状态,不能用一个 Established 或一个 Up 覆盖整条业务路径。

十、今日复习卡片

text 复制代码
MAC Flapping 是现象,不是根因;
合法迁移要求旧位置消失、新位置稳定并有迁移证据;
重复 MAC 会让两个位置反复覆盖同一 MAC;
多个 MAC + BUM 增加要查环路和双主;
Type 2 关注具体 MAC/IP 位置;
MAC Mobility 关注同一 MAC 的新旧位置;
Type 1 per-ES 关注整个 Ethernet Segment;
Type 1 per-EVI 关注某个 EVI 上的 ES 成员状态;
EAD/Mass Withdrawal 可以批量撤销旧候选路径;
EVPN Established 不等于服务数据面正常;
控制面正确但 FIB 未更新,属于控制面与数据面不同步;
先保留证据,再清理旧表项;
真实设备命令和收敛时间仍需实验验证。

十一、今日状态

第 25 天完成。现在已经能够从 MAC 表、EVPN Type 2、MAC Mobility、EAD、ESI/Aliasing、Peer-Link 和业务现象之间建立证据链,并区分:

text 复制代码
合法迁移
vs 重复 MAC
vs 二层环路/双主
vs 控制面与数据面不同步
vs Ethernet Segment 级 Mass Withdrawal

下一阶段建议进入:EVPN 多归属故障的完整命令输出阅读与最小实验设计,重点把"概念判断"转化为"设备输出 → 根因 → 修复 → 验收"。

相关推荐
IT_陈寒1 小时前
Vite的HMR怎么突然罢工了?原来是我漏了这个配置
前端·人工智能·后端
柳杉1 小时前
从调研到闭环,我用 GPT-Image-2.5 和 GPT-6 Astra 把智慧厂房 3D 大屏这条链路走完了
前端·ai编程·数据可视化
芳心粽伙饭1 小时前
CSS第四章 布局
前端·css·html
CoderYanger1 小时前
Java EE 进阶:2.3 JavaScript 综合案例
java·前端·javascript·css·职场和发展·java-ee·html
星辰即远方1 小时前
RunLoop初步了解
macos·objective-c·cocoa
疯狂打码的少年1 小时前
【计算机网络】网络互连设备(中继器 / 网桥 / 交换机 / 路由器 / 网关)
网络·笔记·计算机网络·智能路由器
个 人 练 习 生1 小时前
数据结构:排序算法详解
c语言·数据结构·经验分享·学习·算法·排序算法
Shadow(⊙o⊙)1 小时前
epoll三大接口到内核+正确认识应用层与内核的联系(6000字)
linux·服务器·网络
老当益壮梁奶奶1 小时前
51单片机中断系统详解
c语言·单片机·嵌入式硬件·学习·51单片机