摘要

  • RFC 9856 给出了两种抑制位置:Warm Standby 在源侧 PE 选出单一转发者,Hot Standby 则把多份流量送到下游,再由各接收侧 PE 选择。
  • Single Flow Group 是配置和信令中的归组声明,不会核对载荷、序列、时钟、编码器状态、内容新鲜度或应用是否就绪。
  • 一份可信的冗余凭证应分开记录等价依据、抑制权限、活动源状态、BGP 信令、接收端观察、切换时序和回退,而不是用一个“正常”灯概括全部事实。

控制台上最容易让人安心的指标,是重复包计数为零。但它最多说明某个接收端在某个时刻只接受了一份副本。它没有说明两路源为什么能被视为等价,也没有说明别处的接收端是否选了同一路,更没有还原故障切换的空窗和重复区间。

2025 年 9 月发布的 IETF 标准 RFC 9856,在 RFC 9251 与 RFC 9625 的 EVPN 组播机制上补充了冗余源处理。它解决的问题很窄也很实际:同一租户域内有两个或更多源发送被认为相同的 IP 组播流时,接收端不应得到重复报文。规范为这个问题提供共同分类、选举和过滤规则,但没有把网络状态扩张成应用质量承诺。

SFG 说明哪些源被归在一起

RFC 9856 用 Single Flow Group(SFG)表达冗余组。SFG 可以写成 (*,G),把所有发往组 G 的源纳入,也可以写成 (S,G);其中 S 还能是任意长度的源前缀。BGP Multicast Flags Extended Community 中的 SFG 位,表示相应 S-PMSI A-D 路由承载了这一含义。

这让不同设备能理解同一个归组意图,却没有比较流量内容。RFC 假定冗余源发送同一流且不是突发型源,但没有规定如何核对序列号、时间戳、编码器状态、应用代次、素材版本或语义内容。因此,一个源可能被正确纳入 SFG,也可能按协议正确胜出,却仍在发送过期、损坏或不同的节目。

运维证据的第一项不应是 BGP 路由,而应是等价规则:涉及哪些源,用什么方法比较载荷、序列和时间,允许多大偏差,抽取了什么样本,由谁代表应用接受结论。SFG 是把这项业务决定传给网络的共同语言,不是代替这项决定的证书。

Warm Standby 把决定集中在上游

在 Warm Standby 中,连接冗余源的上游 PE 会选出一个 Single Forwarder(SF)。非 SF 的 PE 丢弃本地接入线路收到的 SFG 流量;SF 也只从一条本地接入线路接收并转发。如果 SF 同时从多条接入线路收到同一 SFG,具体挑选哪一条属于本地实现。

选举复用 RFC 8584 的 DF Election Extended Community。偏好算法可以让高优先级 PE 当选;若算法或能力不一致,RFC 9856 使用公告的最低 PE IP 地址决胜。这保证控制面能得出确定结果,却没有测量当选流的画质、时效或应用就绪程度。

配置好的 SFG 出现首个报文后,上游会公告 S-PMSI A-D 路由;流量停止后撤回路由。规范建议使用不活动计时器,但没有规定统一数值。SF 故障并撤路由后,另一台上游 PE 可接任。副本在进入租户网络前就被抑制,因此节省带宽;RFC 同时指出,它的故障切换比 Hot Standby 慢。

“另一台 PE 接任”不能直接翻译成“业务无损”。规范没有给出通用的零丢包保证、最长切换时间或逐接收端验收方法。真正的记录应包括 SF 选中的接入线路、计时器取值、故障检测、撤路由抵达、新选举以及接收端重新得到有效报文的时间。

Hot Standby 把决定分散到下游

Hot Standby 会让多份副本穿过租户网络。每个源都必须关联到一个 Ethernet Segment,即使它是单归属源;上游 PE 用源 ESI 标签标识报文。每台下游 PE 按本地策略选择主要 S-ESI,只接受该标签并丢弃其他副本。

备份副本离接收端更近,代价是更多带宽和控制面负担。更关键的是,Hot Standby 中的 S-PMSI A-D 公告由 SFG 配置触发,而不是由实际收到流量触发。路由存在,只能说明成员关系已配置并被公告,不能说明有用报文正在到达。可选的 multipoint BFD 能监测承载 SFG 的 P-tunnel,却不会检查编码器、时钟、应用内容或源的语义正确性。

Hot Standby 也未必存在一个全网统一的“活动源”。RFC 明确允许不同下游 PE 按各自策略选择不同的 S-ESI。于是,不同接收区域可能分别接受源 A 和源 B,同时各自都只收到一份。把活动状态压缩成一个全局字段,会抹掉真实的决策分布。

当前主要源的最后一条相关 A-D per-EVI 或 per-ES 路由撤回后,下游 PE 会改选。若多个租户域共用一个源 ES,大规模撤回会同时影响它们。某个 SFG 的最后一条 S-PMSI A-D 路由撤回后,下游还应移除基于 S-ESI 标签的 RPF 检查。过滤规则改变本身是需要观察的事件,并不自动证明服务安全延续。

七项冗余凭证

可用的冗余凭证不需要发明新协议,而是把七类原本容易混写的事实分别保留下来:

  1. 等价依据: 租户和 SFG 表达式、源清单、载荷/序列/时间比较方法、容差、样本,以及负责确认的应用所有者。
  2. 抑制权限: 采用 warm 还是 hot、决定发生在哪里、选举或本地策略标识、有效配置版本和实际能力集合。
  3. 活动源状态: Warm Standby 的 SF PE 与接入线路,或 Hot Standby 中每台相关下游 PE 所选的主要 S-ESI。
  4. BGP 信令: 各决策点看到的 S-PMSI A-D、A-D per-ES/EVI、RT、SFG 位、DF 偏好、ESI/DCB 标签及撤回代次。
  5. 接收端观察: 接受的源或标签、包与字节计数、空洞、重复、乱序、应用新鲜度,以及尽量减少隐私暴露的接收端样本。
  6. 切换时序: 故障触发、检测来源、撤回到达、选举或 S-ESI 变化、旧源最后一包、新源第一包和实测丢失/重复区间。
  7. 回退: 原先选择、可逆配置、有权恢复的人、终止新选择的标准、凭证到期或关闭原因和未清债务。

这七项是 Daniel Kade 提出的运维方法,不是 RFC 字段,也不是 IETF 合规证明。它的意义就在于拒绝跨层代换:BGP 证据回答控制面问题,标签回答过滤问题,接收采样回答结果问题,应用比较才回答等价问题。

最小共同规则之外仍要有人负责

RFC 9856 不要求设备同时实现两种模式;实现其中一种时,另一种可以不支持。混合设备环境因此必须记录真实能力交集,不能只保留架构图上的预期。IANA 分配 SFG 位和 ESI-DCB 位,建立的是互操作词汇,也不能证明某台设备已经支持、正确配置、传播并下发了相应状态。

要求网络协议证明应用内容,会让标准承担它没有设计的职责。反过来,因为标准刻意保持狭窄就放弃核验,同样危险。合理的边界是:共同协议只决定分类、选举、信令和过滤;本地运营者对等价标准、观察范围、风险预算和回退负责。

这样,接收端的一份干净副本才不只是结果截图。运维方能够说明源为何等价、谁在何处做选择、控制面与数据面发生了什么、接收端实际经历了什么、切换用了多久,以及错误时如何恢复。到这一步,“一份副本”才是冗余证据,而不只是抑制成功。

来源