摘要
- BGP 多路径允许多个合格路径共同进入本地转发,但不承诺带宽翻倍、物理独立或字节数均分。
- 控制权分成三层:BGP 判断候选资格,递归解析和硬件决定成员集合,哈希与真实流量决定每个成员承载多少。
- 验收必须从 Adj-RIB-In 一直追到 FIB、成员计数器、队列和故障切换;一张路由表截图无法替代整条证据链。
“两条”是数量,不是比例
先设想一个机制演示,而非真实事故。某前缀的两条路由满足设备的多路径条件,两个下一跳也出现在转发表中。变更单据于是写下“流量各走一半”。随后,一个持续时间很长的大流被哈希到出口 A,A 的队列开始积压,出口 B 却仍有余量。
此时,路由可能没有撤销,会话也可能完全正常,ECMP 组甚至按照设备定义正确工作。错误在于把“两个成员”推导成“各承担一半字节”。哈希可以把流标识相对均匀地映射到成员,却不能把每个流切成相同大小。
RFC 4271 描述的基础决策过程,是从合格候选中选定路由、写入 Loc-RIB 并确定直接下一跳。常见的 BGP multipath 是本地实现对这一结果的扩展:它保留额外的合格路径。该扩展不会在互联网边界上生成一个“每台设备都必须使用同一组路径”的新承诺。RFC 4271 第 9.1.2 节
“等价”也必须注明依据。Cisco 文档列出其多路径比较条件,同时仍保留一条用于对外通告的最佳路径。FRRouting 把 multipath 检查放在前序选择条件之后,并提供 multipath-relax,可在特定配置下接受长度相等但内容不同的 AS_PATH;Arista 在所引 EOS 语境下又记录了不同的默认行为。这些规则只证明设备愿意让路径共同参与,不证明它们拥有相同容量、合同属性或故障域。Cisco 最佳路径文档,FRRouting BGP 文档,Arista EOS BGP 文档
三道门,各自需要证据
第一道门是候选资格。路由需要可用、符合导入政策,并满足当前实现的多路径比较。maximum-paths 只是上限,不是已经安装相同数量成员的证明。
第二道门是转发组构造。每个候选路径还要完成递归下一跳解析,写入 FIB,并受到芯片容量与平台行为的约束。两个不同的 BGP 下一跳也可能共用一条隧道、一块线卡或同一远端电路。因此,路由数量也不能替代物理独立性清单。
第三道门是逐流选择。RFC 2991 说明,同一流保持在同一路径上有助于避免乱序;成员增删则可能造成重新映射、丢包或乱序。RFC 2992 对 hash-threshold ECMP 的均衡性和成员变化扰动作了分析。它们支持的是一种有条件的流分布机制,而不是无条件的字节均分。RFC 2991,RFC 2992
于是,验收报告必须分别回答:哪些路由合格,哪些下一跳进入硬件组,哪些流量真实使用了各成员。前一项通过,不等于后一项自动成立。
哈希只能使用它看得见的差异
设备能把哪些字段放入哈希,取决于地址族、封装、硬件和配置。IPv6 流标签可在传输层字段不可见时提供额外熵;RFC 6438 同时指出,隧道、分片和无法检查的报头会限制可用信息。大量内层会话如果共享同一个外层元组,在不具备深层解析或有效流标签时,可能被设备视为同一个流。RFC 6438
因此,不能笼统写“设备按五元组负载均衡”。应当记录这台设备、这个地址族、这种封装实际使用的字段、种子与粒度。Arista 文档中的哈希种子、极化与 resilient ECMP 说明了这类本地控制面,但它只能作为对应平台的证据,不能被推广成行业默认。Arista IPv4 转发文档
流量本身同样决定结果。RFC 7424 把哈希描述为从许多流到若干成员链路的映射,并明确讨论大流造成的不均衡。一万个短连接可能形成平滑平均值,一个备份流或复制流却可能长时间占据某个成员。衡量对象也不应只剩一个“利用率”:字节、包、队列、丢弃与业务时延分别回答不同问题。RFC 7424
若两条成员链路容量不同,普通等价多路径不会自动理解这种差别。加权 ECMP 或自适应路由属于另外的机制和风险边界。把小链路被压满简单归咎于“哈希不好”,往往掩盖了把不同容量成员视作同等成员的政策选择。
看得见多条路,不等于正在使用多条路
ADD-PATH 解决的是通告可见性。RFC 7911 允许同一前缀的多条路径在不相互替换的情况下被通告;接收方并不因此必须把所有路径装入 ECMP,更不必采用某种流量比例。反过来,本地设备也可以安装多路径,却只向普通对等体通告指定的最佳路径。RFC 7911
PIC 则主要缩短故障后的修复时间。备用路径是否已准备好,与两条路径是否在稳态共同承载流量,是两种不同的事实。Junos 文档也把 BGP multipath 选择与转发表负载策略分开描述;其某些“per-packet”术语在实际语境中指逐流哈希,不应脱离平台定义理解成随意逐包喷洒。Junos BGP 负载均衡文档
从候选路径追到真实报文
证据链应从变更范围开始:前缀、地址族、邻居类别、最大成员数、责任人和回退条件。保存 Adj-RIB-In 候选及多路径比较结果;若启用 multipath-relax,明确究竟放宽了哪一项,不能把“长度相同”写成“风险相同”。
随后核对递归下一跳与故障域,读取 FIB 或硬件 ECMP 组的标识和成员。若 RIB 显示两条、芯片只编程一条,应先定位解析、容量或下发问题,而不是继续讨论哈希比例。
最后,在有代表性的时间窗内采集各成员的包、字节、丢弃与队列,利用流量遥测识别大流,并以多组不同键值的探测验证分布。单次 ping 只能证明它自己的路径。故障移除和恢复都要重复观测,因为恢复可能引发第二次重映射。
回退也必须走完整链条。撤销一行配置只是动作;候选集合、RIB 结果、FIB 成员和报文行为恢复到预期状态,才是结果。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
