本节将第 11 天的 Type 1、Aliasing、Mass Withdrawal、DF 和 Split Horizon 放进故障演练。重点区分 ESI 成员状态、Type 2 主机位置、Aliasing 有效出口、DF/BUM 状态和 Underlay VTEP 可达性,建立从控制面到数据面的交叉验证方法。
上一课:[[AIDC学习日志-第11天-EVPN多归属进阶]]
一、今日学习目标与完成情况
- 理解多归属验证需要同时查看 Type 1、Type 2、Aliasing、DF 和 Underlay
- 理解 Leaf 成员链路故障后的 Type 1 撤销和出口更新
- 理解 Leaf 整机故障后的 Mass Withdrawal 和剩余成员接管
- 区分 All-Active 的成员删除与 Single-Active 的主备切换
- 理解 Peer-Link 断开、Keepalive 正常时的双主保护
- 建立“广播正常不等于已知单播正常”的判断
- 能定位控制面与数据面不同步造成的间歇丢包
二、实验拓扑与初始状态
#mermaid-svg-ml2600YfS7QHJn6T{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-ml2600YfS7QHJn6T .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ml2600YfS7QHJn6T .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ml2600YfS7QHJn6T .error-icon{fill:#552222;}#mermaid-svg-ml2600YfS7QHJn6T .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ml2600YfS7QHJn6T .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ml2600YfS7QHJn6T .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ml2600YfS7QHJn6T .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ml2600YfS7QHJn6T .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ml2600YfS7QHJn6T .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ml2600YfS7QHJn6T .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ml2600YfS7QHJn6T .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ml2600YfS7QHJn6T .marker.cross{stroke:#333333;}#mermaid-svg-ml2600YfS7QHJn6T svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ml2600YfS7QHJn6T p{margin:0;}#mermaid-svg-ml2600YfS7QHJn6T .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-ml2600YfS7QHJn6T .cluster-label text{fill:#333;}#mermaid-svg-ml2600YfS7QHJn6T .cluster-label span{color:#333;}#mermaid-svg-ml2600YfS7QHJn6T .cluster-label span p{background-color:transparent;}#mermaid-svg-ml2600YfS7QHJn6T .label text,#mermaid-svg-ml2600YfS7QHJn6T span{fill:#333;color:#333;}#mermaid-svg-ml2600YfS7QHJn6T .node rect,#mermaid-svg-ml2600YfS7QHJn6T .node circle,#mermaid-svg-ml2600YfS7QHJn6T .node ellipse,#mermaid-svg-ml2600YfS7QHJn6T .node polygon,#mermaid-svg-ml2600YfS7QHJn6T .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ml2600YfS7QHJn6T .rough-node .label text,#mermaid-svg-ml2600YfS7QHJn6T .node .label text,#mermaid-svg-ml2600YfS7QHJn6T .image-shape .label,#mermaid-svg-ml2600YfS7QHJn6T .icon-shape .label{text-anchor:middle;}#mermaid-svg-ml2600YfS7QHJn6T .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ml2600YfS7QHJn6T .rough-node .label,#mermaid-svg-ml2600YfS7QHJn6T .node .label,#mermaid-svg-ml2600YfS7QHJn6T .image-shape .label,#mermaid-svg-ml2600YfS7QHJn6T .icon-shape .label{text-align:center;}#mermaid-svg-ml2600YfS7QHJn6T .node.clickable{cursor:pointer;}#mermaid-svg-ml2600YfS7QHJn6T .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ml2600YfS7QHJn6T .arrowheadPath{fill:#333333;}#mermaid-svg-ml2600YfS7QHJn6T .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ml2600YfS7QHJn6T .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ml2600YfS7QHJn6T .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ml2600YfS7QHJn6T .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ml2600YfS7QHJn6T .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ml2600YfS7QHJn6T .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ml2600YfS7QHJn6T .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ml2600YfS7QHJn6T .cluster text{fill:#333;}#mermaid-svg-ml2600YfS7QHJn6T .cluster span{color:#333;}#mermaid-svg-ml2600YfS7QHJn6T 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-ml2600YfS7QHJn6T .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ml2600YfS7QHJn6T rect.text{fill:none;stroke-width:0;}#mermaid-svg-ml2600YfS7QHJn6T .icon-shape,#mermaid-svg-ml2600YfS7QHJn6T .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ml2600YfS7QHJn6T .icon-shape p,#mermaid-svg-ml2600YfS7QHJn6T .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ml2600YfS7QHJn6T .icon-shape .label rect,#mermaid-svg-ml2600YfS7QHJn6T .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ml2600YfS7QHJn6T .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ml2600YfS7QHJn6T .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ml2600YfS7QHJn6T :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
成员链路
成员链路
Spine1
Leaf1VTEP 3.3.3.3
Leaf2VTEP 4.4.4.4
Spine2
Ethernet SegmentESI 1001
服务器LACP Bond
Leaf3远端Leaf
初始假设:
Leaf1、Leaf2使用相同ESI
服务器使用LACP双上联
模式为All-Active
Leaf1当前是DF
Leaf2当前是Non-DF
Leaf3是远端发送和观察设备
| ESI | 标识共同连接的 Ethernet Segment |
| Type 1 | 发布和撤销多归属成员 |
| Aliasing | 允许多个成员 Leaf 作为主机出口 |
| DF | 控制 BUM 向多归属段交付 |
三、今天必须交叉验证的五类状态
1. ESI 成员状态
回答:
哪些Leaf属于同一个多归属Ethernet Segment?
期望:
ESI 1001:
Leaf1
Leaf2
如果只看到一个成员,可能是 ESI 配置不一致、某个 Leaf 没有发布 Type 1、EVPN 邻居没有交换多归属信息、成员接口异常或故障撤销尚未收敛。
2. Type 1
Type 1 主要查看:
成员是否存在
成员是否有效
成员是否撤销
成员属于哪个ESI/EVI
Type 1 正常不代表服务器 MAC 一定正常,仍要检查 Type 2。
3. Type 2
Type 2 查看服务器 MAC/IP 位置、所属 ESI 和可用 Leaf。
MAC-C / 192.168.20.20
ESI 1001
可用成员:Leaf1、Leaf2
如果 Type 2 只指向 Leaf1,可能是没有形成 Aliasing、Leaf2 成员状态未被远端学习、Leaf2 Type 2 未发布,或 ESI/EVI 关系不一致。
4. Aliasing
Aliasing 解决同一主机背后的多个 Leaf 是否都能作为已知单播出口。Type 1 成员存在不等于 Aliasing 数据面一定安装完成,还要检查远端实际有效出口集合。
5. DF
DF 主要回答哪个 Leaf 负责向该多归属段发送 BUM。
Leaf1:DF
Leaf2:Non-DF
Non-DF 不是故障设备,仍可能参与已知单播。
四、控制面和数据面交叉关系
#mermaid-svg-D8CJP1sJrFzdaa7m{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-D8CJP1sJrFzdaa7m .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-D8CJP1sJrFzdaa7m .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-D8CJP1sJrFzdaa7m .error-icon{fill:#552222;}#mermaid-svg-D8CJP1sJrFzdaa7m .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-D8CJP1sJrFzdaa7m .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-D8CJP1sJrFzdaa7m .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-D8CJP1sJrFzdaa7m .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-D8CJP1sJrFzdaa7m .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-D8CJP1sJrFzdaa7m .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-D8CJP1sJrFzdaa7m .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-D8CJP1sJrFzdaa7m .marker{fill:#333333;stroke:#333333;}#mermaid-svg-D8CJP1sJrFzdaa7m .marker.cross{stroke:#333333;}#mermaid-svg-D8CJP1sJrFzdaa7m svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-D8CJP1sJrFzdaa7m p{margin:0;}#mermaid-svg-D8CJP1sJrFzdaa7m .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-D8CJP1sJrFzdaa7m .cluster-label text{fill:#333;}#mermaid-svg-D8CJP1sJrFzdaa7m .cluster-label span{color:#333;}#mermaid-svg-D8CJP1sJrFzdaa7m .cluster-label span p{background-color:transparent;}#mermaid-svg-D8CJP1sJrFzdaa7m .label text,#mermaid-svg-D8CJP1sJrFzdaa7m span{fill:#333;color:#333;}#mermaid-svg-D8CJP1sJrFzdaa7m .node rect,#mermaid-svg-D8CJP1sJrFzdaa7m .node circle,#mermaid-svg-D8CJP1sJrFzdaa7m .node ellipse,#mermaid-svg-D8CJP1sJrFzdaa7m .node polygon,#mermaid-svg-D8CJP1sJrFzdaa7m .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-D8CJP1sJrFzdaa7m .rough-node .label text,#mermaid-svg-D8CJP1sJrFzdaa7m .node .label text,#mermaid-svg-D8CJP1sJrFzdaa7m .image-shape .label,#mermaid-svg-D8CJP1sJrFzdaa7m .icon-shape .label{text-anchor:middle;}#mermaid-svg-D8CJP1sJrFzdaa7m .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-D8CJP1sJrFzdaa7m .rough-node .label,#mermaid-svg-D8CJP1sJrFzdaa7m .node .label,#mermaid-svg-D8CJP1sJrFzdaa7m .image-shape .label,#mermaid-svg-D8CJP1sJrFzdaa7m .icon-shape .label{text-align:center;}#mermaid-svg-D8CJP1sJrFzdaa7m .node.clickable{cursor:pointer;}#mermaid-svg-D8CJP1sJrFzdaa7m .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-D8CJP1sJrFzdaa7m .arrowheadPath{fill:#333333;}#mermaid-svg-D8CJP1sJrFzdaa7m .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-D8CJP1sJrFzdaa7m .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-D8CJP1sJrFzdaa7m .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-D8CJP1sJrFzdaa7m .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-D8CJP1sJrFzdaa7m .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-D8CJP1sJrFzdaa7m .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-D8CJP1sJrFzdaa7m .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-D8CJP1sJrFzdaa7m .cluster text{fill:#333;}#mermaid-svg-D8CJP1sJrFzdaa7m .cluster span{color:#333;}#mermaid-svg-D8CJP1sJrFzdaa7m 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-D8CJP1sJrFzdaa7m .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-D8CJP1sJrFzdaa7m rect.text{fill:none;stroke-width:0;}#mermaid-svg-D8CJP1sJrFzdaa7m .icon-shape,#mermaid-svg-D8CJP1sJrFzdaa7m .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-D8CJP1sJrFzdaa7m .icon-shape p,#mermaid-svg-D8CJP1sJrFzdaa7m .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-D8CJP1sJrFzdaa7m .icon-shape .label rect,#mermaid-svg-D8CJP1sJrFzdaa7m .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-D8CJP1sJrFzdaa7m .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-D8CJP1sJrFzdaa7m .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-D8CJP1sJrFzdaa7m :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
Type 1ESI成员信息
Aliasing成员集合
Type 2MAC/IP位置
数据面有效出口
Underlay VTEP可达性
实际报文转发
DF选举
BUM转发限制
不能把结论简化为 Type 1 正常等于 Aliasing 正常、Aliasing 正常等于 VTEP 一定可达、DF 正常等于已知单播一定正常。
准确关系是:
控制面学习/计算
→ 生成成员、路由和角色状态
→ 数据面安装出口
→ Underlay确认VTEP可达
→ 实际报文才可能成功
五、故障演练一:Leaf1 成员链路断开
初始状态:
Leaf1:成员有效,DF
Leaf2:成员有效,Non-DF
Leaf1 到服务器的成员链路断开后,理想过程:
Leaf3
Leaf2
Leaf1
服务器LACP
Leaf3
Leaf2
Leaf1
服务器LACP
#mermaid-svg-6qOEF5VeQCLjjefp{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-6qOEF5VeQCLjjefp .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-6qOEF5VeQCLjjefp .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-6qOEF5VeQCLjjefp .error-icon{fill:#552222;}#mermaid-svg-6qOEF5VeQCLjjefp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6qOEF5VeQCLjjefp .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-6qOEF5VeQCLjjefp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6qOEF5VeQCLjjefp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6qOEF5VeQCLjjefp .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-6qOEF5VeQCLjjefp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6qOEF5VeQCLjjefp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6qOEF5VeQCLjjefp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6qOEF5VeQCLjjefp .marker.cross{stroke:#333333;}#mermaid-svg-6qOEF5VeQCLjjefp svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6qOEF5VeQCLjjefp p{margin:0;}#mermaid-svg-6qOEF5VeQCLjjefp .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-6qOEF5VeQCLjjefp text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-6qOEF5VeQCLjjefp .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-6qOEF5VeQCLjjefp .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-6qOEF5VeQCLjjefp .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-6qOEF5VeQCLjjefp .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-6qOEF5VeQCLjjefp #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-6qOEF5VeQCLjjefp .sequenceNumber{fill:white;}#mermaid-svg-6qOEF5VeQCLjjefp #sequencenumber{fill:#333;}#mermaid-svg-6qOEF5VeQCLjjefp #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-6qOEF5VeQCLjjefp .messageText{fill:#333;stroke:none;}#mermaid-svg-6qOEF5VeQCLjjefp .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-6qOEF5VeQCLjjefp .labelText,#mermaid-svg-6qOEF5VeQCLjjefp .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-6qOEF5VeQCLjjefp .loopText,#mermaid-svg-6qOEF5VeQCLjjefp .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-6qOEF5VeQCLjjefp .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-6qOEF5VeQCLjjefp .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-6qOEF5VeQCLjjefp .noteText,#mermaid-svg-6qOEF5VeQCLjjefp .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-6qOEF5VeQCLjjefp .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-6qOEF5VeQCLjjefp .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-6qOEF5VeQCLjjefp .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-6qOEF5VeQCLjjefp .actorPopupMenu{position:absolute;}#mermaid-svg-6qOEF5VeQCLjjefp .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-6qOEF5VeQCLjjefp .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-6qOEF5VeQCLjjefp .actor-man circle,#mermaid-svg-6qOEF5VeQCLjjefp line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-6qOEF5VeQCLjjefp :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
成员链路断开
LACP移除Leaf1成员
发布成员失效或撤销信息
更新ESI成员集合
移除Leaf1有效出口
保留Leaf2可用出口
后续已知单播改发Leaf2
BUM 方向还可能触发 DF 重新计算,Leaf2 可能成为新的 DF。但 Leaf2 成为新的 DF 不等于所有已知单播都只能走 Leaf2。
六、故障演练二:Leaf1 整机故障
Leaf1 整机故障的影响包括 VTEP 不可达、Type 1 消失或撤销、相关 Type 2 撤销、Leaf1 不再参与 DF、Leaf1 不再作为 Aliasing 出口。
#mermaid-svg-BhVgeOZQ71oOT8MZ{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-BhVgeOZQ71oOT8MZ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-BhVgeOZQ71oOT8MZ .error-icon{fill:#552222;}#mermaid-svg-BhVgeOZQ71oOT8MZ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-BhVgeOZQ71oOT8MZ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-BhVgeOZQ71oOT8MZ .marker.cross{stroke:#333333;}#mermaid-svg-BhVgeOZQ71oOT8MZ svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-BhVgeOZQ71oOT8MZ p{margin:0;}#mermaid-svg-BhVgeOZQ71oOT8MZ .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-BhVgeOZQ71oOT8MZ .cluster-label text{fill:#333;}#mermaid-svg-BhVgeOZQ71oOT8MZ .cluster-label span{color:#333;}#mermaid-svg-BhVgeOZQ71oOT8MZ .cluster-label span p{background-color:transparent;}#mermaid-svg-BhVgeOZQ71oOT8MZ .label text,#mermaid-svg-BhVgeOZQ71oOT8MZ span{fill:#333;color:#333;}#mermaid-svg-BhVgeOZQ71oOT8MZ .node rect,#mermaid-svg-BhVgeOZQ71oOT8MZ .node circle,#mermaid-svg-BhVgeOZQ71oOT8MZ .node ellipse,#mermaid-svg-BhVgeOZQ71oOT8MZ .node polygon,#mermaid-svg-BhVgeOZQ71oOT8MZ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-BhVgeOZQ71oOT8MZ .rough-node .label text,#mermaid-svg-BhVgeOZQ71oOT8MZ .node .label text,#mermaid-svg-BhVgeOZQ71oOT8MZ .image-shape .label,#mermaid-svg-BhVgeOZQ71oOT8MZ .icon-shape .label{text-anchor:middle;}#mermaid-svg-BhVgeOZQ71oOT8MZ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-BhVgeOZQ71oOT8MZ .rough-node .label,#mermaid-svg-BhVgeOZQ71oOT8MZ .node .label,#mermaid-svg-BhVgeOZQ71oOT8MZ .image-shape .label,#mermaid-svg-BhVgeOZQ71oOT8MZ .icon-shape .label{text-align:center;}#mermaid-svg-BhVgeOZQ71oOT8MZ .node.clickable{cursor:pointer;}#mermaid-svg-BhVgeOZQ71oOT8MZ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-BhVgeOZQ71oOT8MZ .arrowheadPath{fill:#333333;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-BhVgeOZQ71oOT8MZ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BhVgeOZQ71oOT8MZ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-BhVgeOZQ71oOT8MZ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BhVgeOZQ71oOT8MZ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-BhVgeOZQ71oOT8MZ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-BhVgeOZQ71oOT8MZ .cluster text{fill:#333;}#mermaid-svg-BhVgeOZQ71oOT8MZ .cluster span{color:#333;}#mermaid-svg-BhVgeOZQ71oOT8MZ 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-BhVgeOZQ71oOT8MZ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-BhVgeOZQ71oOT8MZ rect.text{fill:none;stroke-width:0;}#mermaid-svg-BhVgeOZQ71oOT8MZ .icon-shape,#mermaid-svg-BhVgeOZQ71oOT8MZ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BhVgeOZQ71oOT8MZ .icon-shape p,#mermaid-svg-BhVgeOZQ71oOT8MZ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-BhVgeOZQ71oOT8MZ .icon-shape .label rect,#mermaid-svg-BhVgeOZQ71oOT8MZ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BhVgeOZQ71oOT8MZ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-BhVgeOZQ71oOT8MZ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-BhVgeOZQ71oOT8MZ :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
Leaf1整机故障
Underlay检测VTEP不可达
EVPN撤销Leaf1的Type 1/成员信息
Mass Withdrawal批量清理
远端移除Leaf1的Aliasing出口
Leaf2成为剩余可用成员
DF重新选举
已知单播继续转发
如果远端仍显示 Leaf1 为有效成员,可能出现控制面信息过期,数据面继续选择失效 Leaf,最终间歇丢包或黑洞。
七、故障演练三:Peer-Link 断开
如果使用 M-LAG,Peer-Link 断开时不能直接说 Leaf1 或 Leaf2 故障,必须结合 Keepalive。
| 正常 | 正常 | M-LAG 协同正常 |
| 断开 | 正常 | 对端仍存活,可能触发双主保护 |
| 断开 | 断开 | 无法确认对端状态,风险更高 |
| 正常 | 断开 | 需要结合具体设备实现 |
#mermaid-svg-NNSJJdKZwLKj2eyC{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-NNSJJdKZwLKj2eyC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-NNSJJdKZwLKj2eyC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-NNSJJdKZwLKj2eyC .error-icon{fill:#552222;}#mermaid-svg-NNSJJdKZwLKj2eyC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NNSJJdKZwLKj2eyC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-NNSJJdKZwLKj2eyC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NNSJJdKZwLKj2eyC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NNSJJdKZwLKj2eyC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-NNSJJdKZwLKj2eyC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NNSJJdKZwLKj2eyC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NNSJJdKZwLKj2eyC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NNSJJdKZwLKj2eyC .marker.cross{stroke:#333333;}#mermaid-svg-NNSJJdKZwLKj2eyC svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NNSJJdKZwLKj2eyC p{margin:0;}#mermaid-svg-NNSJJdKZwLKj2eyC .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-NNSJJdKZwLKj2eyC .cluster-label text{fill:#333;}#mermaid-svg-NNSJJdKZwLKj2eyC .cluster-label span{color:#333;}#mermaid-svg-NNSJJdKZwLKj2eyC .cluster-label span p{background-color:transparent;}#mermaid-svg-NNSJJdKZwLKj2eyC .label text,#mermaid-svg-NNSJJdKZwLKj2eyC span{fill:#333;color:#333;}#mermaid-svg-NNSJJdKZwLKj2eyC .node rect,#mermaid-svg-NNSJJdKZwLKj2eyC .node circle,#mermaid-svg-NNSJJdKZwLKj2eyC .node ellipse,#mermaid-svg-NNSJJdKZwLKj2eyC .node polygon,#mermaid-svg-NNSJJdKZwLKj2eyC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NNSJJdKZwLKj2eyC .rough-node .label text,#mermaid-svg-NNSJJdKZwLKj2eyC .node .label text,#mermaid-svg-NNSJJdKZwLKj2eyC .image-shape .label,#mermaid-svg-NNSJJdKZwLKj2eyC .icon-shape .label{text-anchor:middle;}#mermaid-svg-NNSJJdKZwLKj2eyC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-NNSJJdKZwLKj2eyC .rough-node .label,#mermaid-svg-NNSJJdKZwLKj2eyC .node .label,#mermaid-svg-NNSJJdKZwLKj2eyC .image-shape .label,#mermaid-svg-NNSJJdKZwLKj2eyC .icon-shape .label{text-align:center;}#mermaid-svg-NNSJJdKZwLKj2eyC .node.clickable{cursor:pointer;}#mermaid-svg-NNSJJdKZwLKj2eyC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-NNSJJdKZwLKj2eyC .arrowheadPath{fill:#333333;}#mermaid-svg-NNSJJdKZwLKj2eyC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NNSJJdKZwLKj2eyC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NNSJJdKZwLKj2eyC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NNSJJdKZwLKj2eyC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-NNSJJdKZwLKj2eyC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NNSJJdKZwLKj2eyC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-NNSJJdKZwLKj2eyC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NNSJJdKZwLKj2eyC .cluster text{fill:#333;}#mermaid-svg-NNSJJdKZwLKj2eyC .cluster span{color:#333;}#mermaid-svg-NNSJJdKZwLKj2eyC 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-NNSJJdKZwLKj2eyC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-NNSJJdKZwLKj2eyC rect.text{fill:none;stroke-width:0;}#mermaid-svg-NNSJJdKZwLKj2eyC .icon-shape,#mermaid-svg-NNSJJdKZwLKj2eyC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NNSJJdKZwLKj2eyC .icon-shape p,#mermaid-svg-NNSJJdKZwLKj2eyC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-NNSJJdKZwLKj2eyC .icon-shape .label rect,#mermaid-svg-NNSJJdKZwLKj2eyC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NNSJJdKZwLKj2eyC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-NNSJJdKZwLKj2eyC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-NNSJJdKZwLKj2eyC :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
正常
异常
Peer-Link断开
Keepalive是否正常
确认对端仍存活
启动双主检测/保护
限制其中一侧成员口或转发
无法确认对端状态
依赖设备策略避免双主
双主可能造成二层环路、MAC Flapping、BUM 重复、业务时通时断和两台 Leaf 状态不一致。
八、All-Active 和 Single-Active 故障差异
All-Active
正常时 Leaf1、Leaf2 都是有效已知单播成员:
Leaf1故障
→ 删除Leaf1成员
→ Leaf2继续转发
→ 成员集合从两个变成一个
→ 必要时重新选举DF
Leaf2 不需要从 Standby 切换为 Active,因为它本来就是可用转发成员。
Single-Active
正常时只有一台 Leaf 承担业务,另一台是备用:
Active Leaf故障
→ Standby Leaf必须切换为Active
→ 更新多归属成员状态
→ 远端改用新的活动出口
如果备用 Leaf 一直保持 Standby,就没有可用活动出口,业务中断。这属于主备接管失败,不是双主。只有两台设备都错误地认为自己是 Active,才是双主。
| 正常已知单播出口 | 多个 | 一个活动出口 |
| 故障动作 | 删除故障成员 | 备用成员接管 |
| 主要风险 | 失效成员残留、间歇丢包 | 主备切换失败、业务全断 |
| 带宽利用 | 较高 | 较低 |
九、课堂问答与批改
问题 1
问题:Leaf1 成员链路断开后,远端 Leaf3 的 Aliasing 集合中是否应该继续保留 Leaf1?
我的回答:不应保留。
批改:正确。Leaf1 成员失效后,远端应移除 Leaf1,只保留仍可用的成员。
问题 2
问题:Leaf2 成为新的 DF,是否代表所有已知单播都只能走 Leaf2?
我的回答:未知 BUM 要走 Leaf2,已知不用。
批改:方向正确。DF 主要控制 BUM;已知单播仍可依据 Type 2、Aliasing、MAC 表和哈希转发,不是所有单播都只能走 DF。
问题 3
问题:如果 Type 1 已撤销 Leaf1,但 Type 2 仍把服务器 MAC 指向 Leaf1,应该检查什么?
我的回答:MAC 转发表是否排除故障成员。
批改:需要补充控制面和数据面两侧:
Type 2是否撤销
Mass Withdrawal是否生效
Aliasing成员集合是否移除Leaf1
MAC转发表是否排除Leaf1
不能只看 MAC 表,因为过期 Type 2 或 Aliasing 可能重新安装错误出口。
问题 4
问题:如果 Type 1、Type 2、DF 都正常,但 Leaf2 的 VTEP 不可达,问题属于控制面还是 Underlay 数据面?
我的回答:Underlay 数据面。
批改:正确。检查 Leaf2 Loopback /32、OSPF/BGP 路由、指定源 Ping 和 ECMP 下一跳。
问题 5
问题:Peer-Link 断开但 Keepalive 正常时,最需要启动什么保护机制?
我的回答:避免双主。
批改:正确。具体是双主检测或双主保护,避免两台 Leaf 同时独立转发。
问题 6
问题:如果广播重复但已知单播正常,优先检查 DF 还是 Aliasing?
我的回答:DF。
批改:正确。广播属于 BUM,应优先检查 DF、BUM 复制和多归属下行转发。
问题 7
问题:Type 1 已撤销 Leaf1,但 MAC 转发表仍指向 Leaf1,属于什么情况?
我的回答:控制面与数据面不同步。
批改:正确。应继续查看 Type 2 撤销、Aliasing 清理、MAC 转发表刷新和实际流量出口。
问题 8
问题:All-Active 中 Leaf1 故障后,Leaf2 是否需要从 Standby 切换为 Active?
我的回答:需要。
批改:错误。All-Active 中 Leaf2 原本就是可用转发成员,故障后只需删除 Leaf1,Leaf2 继续转发,不需要从 Standby 切换。
问题 9
问题:Single-Active 中活动 Leaf 故障后,备用 Leaf 仍保持 Standby,会出现什么结果?
我的回答:双主。
批改:错误。此时没有可用活动出口,结果是业务中断,属于主备接管失败。只有两台设备都认为自己是 Active,才是双主。
问题 10
问题:Leaf2 已在 Aliasing 集合中,为什么仍要检查 Leaf2 的 VTEP /32 路由?
我的回答:检查 VTEP 的 Underlay 是否正常。
批改:正确。控制面把 Leaf2 列为成员,不等于数据面到 Leaf2 的 VTEP 一定可达。
问题 11
问题:已知单播正常、广播重复、报文没有绕回原 ESI,应优先检查什么?
我的回答:DF。
批改:正确。此时优先检查 DF 状态、BUM 复制和多归属下行交付。
十、今天的故障判断口诀
广播重复查DF
报文绕回查Split Horizon
单播间歇丢包查Aliasing残留成员
成员故障撤销慢查Type 1和Mass Withdrawal
选中出口但VTEP不通查Underlay
Single-Active全断查主备接管
十一、今日核心结论
Type 1:
发现和撤销多归属成员
Type 2:
发布具体主机MAC/IP位置
Aliasing:
让一个主机背后的多个Leaf成为已知单播出口
DF:
选择谁负责向多归属段发送BUM
Mass Withdrawal:
故障时批量清理失效成员路径
Underlay:
验证被选中的VTEP是否真正可达
最重要的工程判断是:
广播正常
≠
已知单播正常
Type 1正常
≠
数据面出口已经刷新
Aliasing包含某Leaf
≠
该Leaf的VTEP一定可达
十二、今日待加强
- 使用华为 CloudEngine 实际命令查看 ESI、Type 1、Type 2、DF 和 Aliasing;
- 进行 All-Active 成员链路故障实验;
- 进行 Single-Active 主备切换实验;
- 模拟 Type 1 已撤销但 MAC 转发表仍残留的不同步场景;
- 验证指定源 Ping、MAC 转发表和实际流量出口之间的关系。
下一课:EVPN 多归属实验命令、状态输出解读和故障演练记录。

