欢迎光临
我们一直在努力

AIDC 学习日志|第 12 天|EVPN 多归属验证与故障演练

本节将第 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。

Peer-LinkKeepalive判断
正常 正常 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,才是双主。

项目All-ActiveSingle-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 多归属实验命令、状态输出解读和故障演练记录。

赞(0)
未经允许不得转载:171主机测评 » AIDC 学习日志|第 12 天|EVPN 多归属验证与故障演练
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址