AIDC 学习日志|第 20 天|多归属业务验收与哈希不均定位

本节概览

今天围绕"多归属业务是否真正恢复"进行验收训练,重点区分 All-Active 成员故障、Single-Active 主备切换、LACP 接入哈希和 Underlay ECMP 哈希。核心结论:All-Active 下另一台 Leaf 仍可承载业务,但故障成员上的旧流可能短时丢包;链路或成员 Up 不等于流量一定均匀;MAC 切到新 Leaf 也不等于应用和回程已经恢复。

一、今日目标与完成情况

  • 验收 All-Active 成员故障后的业务状态
  • 区分正常哈希不均与 LACP 成员故障
  • 复习 ECMP 的等价下一跳条件
  • 解释 Single-Active 主备切换期间的业务中断
  • 从 MAC 出口继续向聚合、EVPN、三层和服务器侧排查
  • 完成 5 个场景题并记录原回答和批改
  • 尚未在真实 CloudEngine/VRP 设备上测量流量分布和切换时间

二、All-Active 成员故障的正确理解

All-Active 下,Leaf1 和 Leaf2 都可能承载服务器的已知单播。若 Leaf1 的一条成员链路故障:

text 复制代码
Leaf2仍可能正常工作
→ 新流可选择剩余有效成员
→ 经过故障成员的旧流可能丢包/重传
→ 总可用带宽下降
→ 不一定所有业务同时中断

#mermaid-svg-ef3eUXOkQOhMqXZo{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-ef3eUXOkQOhMqXZo .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ef3eUXOkQOhMqXZo .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ef3eUXOkQOhMqXZo .error-icon{fill:#552222;}#mermaid-svg-ef3eUXOkQOhMqXZo .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ef3eUXOkQOhMqXZo .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ef3eUXOkQOhMqXZo .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ef3eUXOkQOhMqXZo .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ef3eUXOkQOhMqXZo .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ef3eUXOkQOhMqXZo .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ef3eUXOkQOhMqXZo .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ef3eUXOkQOhMqXZo .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ef3eUXOkQOhMqXZo .marker.cross{stroke:#333333;}#mermaid-svg-ef3eUXOkQOhMqXZo svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ef3eUXOkQOhMqXZo p{margin:0;}#mermaid-svg-ef3eUXOkQOhMqXZo .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ef3eUXOkQOhMqXZo .cluster-label text{fill:#333;}#mermaid-svg-ef3eUXOkQOhMqXZo .cluster-label span{color:#333;}#mermaid-svg-ef3eUXOkQOhMqXZo .cluster-label span p{background-color:transparent;}#mermaid-svg-ef3eUXOkQOhMqXZo .label text,#mermaid-svg-ef3eUXOkQOhMqXZo span{fill:#333;color:#333;}#mermaid-svg-ef3eUXOkQOhMqXZo .node rect,#mermaid-svg-ef3eUXOkQOhMqXZo .node circle,#mermaid-svg-ef3eUXOkQOhMqXZo .node ellipse,#mermaid-svg-ef3eUXOkQOhMqXZo .node polygon,#mermaid-svg-ef3eUXOkQOhMqXZo .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ef3eUXOkQOhMqXZo .rough-node .label text,#mermaid-svg-ef3eUXOkQOhMqXZo .node .label text,#mermaid-svg-ef3eUXOkQOhMqXZo .image-shape .label,#mermaid-svg-ef3eUXOkQOhMqXZo .icon-shape .label{text-anchor:middle;}#mermaid-svg-ef3eUXOkQOhMqXZo .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ef3eUXOkQOhMqXZo .rough-node .label,#mermaid-svg-ef3eUXOkQOhMqXZo .node .label,#mermaid-svg-ef3eUXOkQOhMqXZo .image-shape .label,#mermaid-svg-ef3eUXOkQOhMqXZo .icon-shape .label{text-align:center;}#mermaid-svg-ef3eUXOkQOhMqXZo .node.clickable{cursor:pointer;}#mermaid-svg-ef3eUXOkQOhMqXZo .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ef3eUXOkQOhMqXZo .arrowheadPath{fill:#333333;}#mermaid-svg-ef3eUXOkQOhMqXZo .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ef3eUXOkQOhMqXZo .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ef3eUXOkQOhMqXZo .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ef3eUXOkQOhMqXZo .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ef3eUXOkQOhMqXZo .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ef3eUXOkQOhMqXZo .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ef3eUXOkQOhMqXZo .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ef3eUXOkQOhMqXZo .cluster text{fill:#333;}#mermaid-svg-ef3eUXOkQOhMqXZo .cluster span{color:#333;}#mermaid-svg-ef3eUXOkQOhMqXZo 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-ef3eUXOkQOhMqXZo .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ef3eUXOkQOhMqXZo rect.text{fill:none;stroke-width:0;}#mermaid-svg-ef3eUXOkQOhMqXZo .icon-shape,#mermaid-svg-ef3eUXOkQOhMqXZo .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ef3eUXOkQOhMqXZo .icon-shape p,#mermaid-svg-ef3eUXOkQOhMqXZo .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ef3eUXOkQOhMqXZo .icon-shape .label rect,#mermaid-svg-ef3eUXOkQOhMqXZo .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ef3eUXOkQOhMqXZo .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ef3eUXOkQOhMqXZo .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ef3eUXOkQOhMqXZo :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 成员故障
服务器
接入侧哈希
Leaf1成员
Leaf2成员
旧流可能丢包
继续承载新流和部分业务

"另一台 Leaf 仍在工作"是正确原因,但不能推导为"完全没有业务影响"。影响范围取决于流量是否命中故障成员、是否发生重新哈希以及服务器和应用的重传机制。

三、链路都 Up 但流量不均

LACP 成员显示 Up,只说明物理和部分协商状态正常。只有在成员真正处于有效收发状态时,才可作为聚合转发路径。

即使所有成员都有效,流量仍可能不均:

text 复制代码
流数量少
大流数量少
哈希输入分布集中
哈希算法粒度较粗
服务器端和交换机端采用不同的哈希字段

因此:

text 复制代码
一条链路流量高 ≠ 一定故障
所有成员Up ≠ 一定均匀

判断顺序:
#mermaid-svg-DtCO4DBeyZc35ldB{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-DtCO4DBeyZc35ldB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-DtCO4DBeyZc35ldB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-DtCO4DBeyZc35ldB .error-icon{fill:#552222;}#mermaid-svg-DtCO4DBeyZc35ldB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-DtCO4DBeyZc35ldB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-DtCO4DBeyZc35ldB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-DtCO4DBeyZc35ldB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-DtCO4DBeyZc35ldB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-DtCO4DBeyZc35ldB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-DtCO4DBeyZc35ldB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-DtCO4DBeyZc35ldB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-DtCO4DBeyZc35ldB .marker.cross{stroke:#333333;}#mermaid-svg-DtCO4DBeyZc35ldB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-DtCO4DBeyZc35ldB p{margin:0;}#mermaid-svg-DtCO4DBeyZc35ldB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-DtCO4DBeyZc35ldB .cluster-label text{fill:#333;}#mermaid-svg-DtCO4DBeyZc35ldB .cluster-label span{color:#333;}#mermaid-svg-DtCO4DBeyZc35ldB .cluster-label span p{background-color:transparent;}#mermaid-svg-DtCO4DBeyZc35ldB .label text,#mermaid-svg-DtCO4DBeyZc35ldB span{fill:#333;color:#333;}#mermaid-svg-DtCO4DBeyZc35ldB .node rect,#mermaid-svg-DtCO4DBeyZc35ldB .node circle,#mermaid-svg-DtCO4DBeyZc35ldB .node ellipse,#mermaid-svg-DtCO4DBeyZc35ldB .node polygon,#mermaid-svg-DtCO4DBeyZc35ldB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-DtCO4DBeyZc35ldB .rough-node .label text,#mermaid-svg-DtCO4DBeyZc35ldB .node .label text,#mermaid-svg-DtCO4DBeyZc35ldB .image-shape .label,#mermaid-svg-DtCO4DBeyZc35ldB .icon-shape .label{text-anchor:middle;}#mermaid-svg-DtCO4DBeyZc35ldB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-DtCO4DBeyZc35ldB .rough-node .label,#mermaid-svg-DtCO4DBeyZc35ldB .node .label,#mermaid-svg-DtCO4DBeyZc35ldB .image-shape .label,#mermaid-svg-DtCO4DBeyZc35ldB .icon-shape .label{text-align:center;}#mermaid-svg-DtCO4DBeyZc35ldB .node.clickable{cursor:pointer;}#mermaid-svg-DtCO4DBeyZc35ldB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-DtCO4DBeyZc35ldB .arrowheadPath{fill:#333333;}#mermaid-svg-DtCO4DBeyZc35ldB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-DtCO4DBeyZc35ldB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-DtCO4DBeyZc35ldB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-DtCO4DBeyZc35ldB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-DtCO4DBeyZc35ldB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-DtCO4DBeyZc35ldB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-DtCO4DBeyZc35ldB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-DtCO4DBeyZc35ldB .cluster text{fill:#333;}#mermaid-svg-DtCO4DBeyZc35ldB .cluster span{color:#333;}#mermaid-svg-DtCO4DBeyZc35ldB 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-DtCO4DBeyZc35ldB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-DtCO4DBeyZc35ldB rect.text{fill:none;stroke-width:0;}#mermaid-svg-DtCO4DBeyZc35ldB .icon-shape,#mermaid-svg-DtCO4DBeyZc35ldB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-DtCO4DBeyZc35ldB .icon-shape p,#mermaid-svg-DtCO4DBeyZc35ldB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-DtCO4DBeyZc35ldB .icon-shape .label rect,#mermaid-svg-DtCO4DBeyZc35ldB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-DtCO4DBeyZc35ldB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-DtCO4DBeyZc35ldB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-DtCO4DBeyZc35ldB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否







发现流量不均
成员物理状态正常?
查接口、光模块、误码
LACP有效收发?
查Eth-Trunk、Actor/Partner、Suspend
流量样本是否足够?
增加不同源/目的/端口流
哈希分布是否长期集中?
评估哈希算法、流模型和大流拆分
视为正常动态分布

四、Underlay ECMP 再确认

Underlay 中有两条物理路径,不代表一定形成 ECMP。需要确认:

text 复制代码
目标前缀和掩码一致
OSPF/BGP计算出的总Cost相等
下一跳都可递归到达
路由策略没有过滤或改变路径
设备支持并安装多条等价下一跳

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


Leaf1
路由表是否存在多个等价下一跳
Spine1
Spine2
只走最佳路径
Leaf2 VTEP

五、Single-Active 的中断来源

Single-Active 的故障不是只修改一个"主备标记",而是一连串状态变化:

text 复制代码
Active故障
→ 故障检测
→ Standby接管
→ LACP/Eth-Trunk状态更新
→ ESI/EAD成员状态更新
→ EVPN路径撤销/重发布
→ MAC/ARP重新学习
→ 硬件转发表更新
→ 终端和应用重传

所以它通常比 All-Active 更容易产生明显业务中断,但实际时长必须测量,不能直接套用固定秒数。

六、MAC 已切换但应用仍不通

当 MAC 表已经从 Leaf1 切换到 Leaf2,仍应继续检查:

text 复制代码
聚合层:Leaf2 Eth-Trunk/LACP成员是否可收发
多归属层:ESI/EAD、Aliasing、DF和保护状态
VXLAN层:Leaf2 VTEP、NVE、VNI和隧道
三层:VRF、网关、目标路由和回程
邻居层:ARP/ND是否存在且指向正确MAC
服务器侧:Bond状态、默认网关、主机防火墙和应用监听
text 复制代码
MAC表切换是数据面观察结果
根因可能来自控制面、聚合层、保护层、Underlay或服务器侧

七、课堂问答与批改

问题 1:All-Active 下,Leaf1 一条成员链路故障,为什么不一定导致所有业务同时中断?

我的回答:另一台 Leaf2 也在工作。

批改:正确。All-Active 允许多个成员承载已知单播,Leaf2 或其他有效成员可继续工作。但经过故障成员的旧流可能短时丢包、重传或重新哈希,不能说完全没有影响。

问题 2:LACP 显示成员都 Up,但服务器只有一条链路有流量,可能是故障,还是也可能是哈希分布?

我的回答:也可能是哈希分布。

批改:正确。还要验证成员是否 Collecting/Distributing、流量样本是否足够、哈希字段是否集中,以及是否有成员被 Suspend 或保护性阻塞。

问题 3:Underlay 有两条物理路径,是否一定形成 ECMP?

我的回答:不一定。

批改:正确。必须满足等价前缀、等价 Cost、下一跳可达、策略允许和路由表安装多条下一跳等条件。

问题 4:Single-Active 切换时,为什么通常比 All-Active 更容易出现明显业务中断?

我的回答:需要主备切换。

批改:方向正确但不完整。Single-Active 的主业务整体从 Active 转移到 Standby,还要等待 LACP、ESI/EAD、EVPN、MAC/ARP 和硬件转发表收敛,因此同时受影响的流量更多。

问题 5:如果 MAC 表已经切换到 Leaf2,但应用仍然不通,还需要检查哪些层?

我的回答:数据层是否改到 Leaf2。

批改:这是必要检查,但题设已经说明 MAC 已切换,说明该项可能满足。应继续检查 Eth-Trunk/LACP、ESI/EAD、Aliasing、DF、VTEP/NVE、VNI、VRF、ARP、回程路由和服务器 Bond/应用状态。

八、验收清单

All-Active

text 复制代码
1. 两台Leaf的Eth-Trunk和成员均有效;
2. 成员处于正常收发而非仅物理Up;
3. 多流量能够观察到合理分布;
4. 成员故障后新流绕过故障成员;
5. MAC、ESI、EAD和Aliasing更新;
6. BUM仍由正确DF控制;
7. 已知单播、跨子网和回程正常。

Single-Active

text 复制代码
1. Active/Standby角色清晰;
2. Active故障后Standby成功接管;
3. LACP和ESI状态完成切换;
4. MAC/ARP/EVPN路径重新收敛;
5. 记录切换期间丢包、重传和中断时间;
6. 原Active恢复后避免来回震荡;
7. 新Active的去程和回程均正常。

九、错误前提与修正

我的判断 问题类型 更准确的判断
Leaf2仍工作,所以所有业务不会中断 结论过强 Leaf2可承载部分业务,故障成员上的旧流仍可能短时丢包
一条链路有流量可能是哈希分布 正确但需验证 还要确认LACP有效收发和流量样本,不可直接排除故障
两条物理路径不一定是ECMP 正确 还需等价Cost、下一跳可达和路由表安装条件
Single-Active需要主备切换 方向正确 还需包括LACP、ESI/EAD、EVPN和MAC/ARP收敛
MAC是否切到Leaf2是主要检查 范围过窄 还要检查VXLAN、三层、回程、服务器和应用

十、今日复习卡片

text 复制代码
All-Active成员故障:通常减少路径,不一定全网中断
单链路高流量:可能是哈希分布,也可能是成员状态异常
ECMP:必须有等价下一跳,物理多路径不是充分条件
Single-Active:主备切换加多层收敛,通常中断更明显
MAC切换:只证明数据面某项更新,不能替代业务验收
最终验收:LACP + ESI/EAD + Aliasing + VTEP/NVE + VRF/ARP + 回程 + 应用

十一、今日状态

第 20 天课程完成:能够解释多归属模式下的业务验收方法,区分正常哈希不均与 LACP 故障,并能从 MAC 出口继续向 EVPN、VXLAN、三层、回程和服务器侧排查。下一课进入多归属故障演练设计,学习如何用连续 Ping、流量统计和状态时间线定位中断窗口。

相关推荐
xian_wwq1 小时前
【学习笔记】深度认知系列- 第15讲 AI算力战争——GPU、光通信与太空数据中心
笔记·学习
zhangrelay2 小时前
答疑-是否软件源问题都必须更换为国内呢-
linux·笔记·学习·ubuntu·ros2
zhangrelay2 小时前
《ROS 机器人程序设计》课程教学大纲-2026- kinetic-lyrical
linux·笔记·学习·ubuntu·机器人
具身AGI2 小时前
物理AI人类学习路线的答案
人工智能·学习
s_w.h2 小时前
【 刷题 】双指针
算法
啥都想学点的研究生2 小时前
一篇文章讲清楚:K-Means聚类算法
算法·kmeans·聚类
白狐_7983 小时前
408 数据结构|KMP做题方法:next、nextval和高频易错点
数据结构·算法
那年窗外下的雪.3 小时前
AIDC 学习日志|第 21 天|EVPN 多归属故障演练与中断窗口定位
网络·git·学习
月华路3 小时前
《模型不玄学》第20章 两种评估视角
人工智能·算法·机器学习