摘要

  • RFC 2439 将不稳定性变成路由器本地维护的状态:撤销会提高路径的度量值,指数衰减会降低它,而抑制阈值与重新使用阈值分别决定路径何时退出、何时恢复。
  • 后来的运行经验发现,拓扑连接丰富的前缀可能在正常收敛时也遭到惩罚。RFC 7196 没有宣布阻尼机制一概失效,而是建议更谨慎的阈值,并允许只计算、不实际抑制。

路由的过去开始影响现在

上世纪九十年代,BGP 更新不仅描述哪些目的地可达;大量更新也会占用接收路由器及其下游对等体的处理能力。RFC 2439 希望减少重复的路由变化,同时避免拖慢相对稳定路径的收敛。该文件属于 Standards Track,并在 1998 年指出商业产品已经实现这一机制。这是对当时情况的记述,不代表今天的部署比例或配置。 RFC 2439 RFC 2439 状态记录

关键变化是,接收方记住的不再只是最新一条 UPDATE。收到外部对等体通告后,路由器可以围绕一条路由的身份维护“价值度量”。每次从可达转为不可达都会增加惩罚;路由保持稳定时,累计值按指数规律下降。这个分数不是对断纤或对等体恶意行为的诊断,而是路由器近期观察到的路由变化,并会影响它是否使用或通告该路径。 RFC 2439

于是,可达性恢复与路径重新获得资格之间出现了时间差。抑制(cutoff)阈值决定何时搁置路径;更低的 reuse 阈值决定被搁置的路径何时能够回来;最大抑制时间则限定等待上限。可达状态、累计惩罚、抑制标记和最佳路径选择彼此相关,却不是同一件事。上游可以再次通告一条路由,而接收路由器仍把它留在抑制状态。 RFC 2439

它记录历史,不是统一的延迟计时器

RFC 2439 将依赖稳定性的阻尼,与固定计时器式的公告节流区分开来。BGP 的 Minimum Route Advertisement Interval 控制公告节奏;阻尼则根据某一条路由的既往变化决定是否可用。只要分数尚未触及抑制阈值,路径可能继续使用;被抑制之后,它要等分数下降到 reuse 阈值以下才会恢复。因此,两个刚发生变化的路由并不必然等待同样长的时间。 RFC 2439 BGP-4

参数分别承担不同职责。半衰期决定路由可达时分数下降多快;不可达阶段可以采用另一衰减率,也可以不衰减。抑制阈值调高,可容忍更多变化;reuse 阈值调低,则要求路径保持稳定更久。RFC 2439 的示例中,在给定参数下,两三次撤销可能足以触发抑制;随后即便恢复公告,路径仍可能需要约 1.5 至 2.5 个半衰期的稳定时间才可重新使用。这只是带有特定假设的演算,不能当作所有路由器的保证时长。 RFC 2439

规范也限定了机制的应用边界:它针对从外部对等体收到的更新。RFC 2439 警告,对 iBGP 学到的路由或在路径选定后再做阻尼,可能导致路由环路。路由身份至少应包含 NLRI,默认还应包含 AS_PATH。把惩罚绑定到目的前缀,与绑定到通向该前缀的特定路径,含义并不相同。 RFC 2439

实现细节改变了谁来承担代价

2006 年的运行经验报告 RFC 4277 指出,当时所检查的实现没有按唯一 NLRI 或 AS_PATH 保存历史,尽管 RFC 2439 对此有要求。在网状连接密集的网络里,这种做法可能过度抑制某一目的地,严重时一次故障就可能触发;该报告称已经观察到此类不良影响。这是该报告所记录的有限经验,并不证明所有实现都如此。RFC 4277 还另行讨论了针对持续错误的 BGP 对等会话阻尼,它不同于逐路由的振荡阻尼。 RFC 4277 RFC 2439

到 2014 年,RFC 7196 指出了另一项代价:拓扑路径丰富时,正常收敛本身也会产生更多 UPDATE,于是连接良好的站点反而更容易积累惩罚。该规范引用的一周测量显示,与阈值 2,000 相比,阈值 6,000 抑制的前缀减少了 90%,同时相对于不启用阻尼,UPDATE 速率估计下降 19%;阈值 12,000 时,测得被抑制前缀占 0.22%,每小时平均更新量下降 11%。这些数字只描述被引用的测量窗口,不是普遍预测。 RFC 7196

RFC 7196 建议:希望阻尼破坏性较低但仍略偏积极的运营者,阈值至少取 6,000;采取保守做法时取 12,000。与此同时,为免破坏既有配置,它建议实现不应擅自更改原有的可配置默认值。它还允许测试模式:只计算哪些路由会被抑制,暂不执行抑制。2014 年的回答是先测量和校准,而不是断言阻尼必然有害或存在适合所有拓扑的单一数字。 RFC 7196

这段历史并不是从“开启阻尼”简单转向“关闭阻尼”。RFC 2439 用路由历史约束它立即恢复使用;RFC 4277 显示,实现采用何种路径身份会扩大或缩小惩罚范围;RFC 7196 则把普通收敛和良好连接也列为需要在执行抑制前衡量的成本。阻尼分数不能证明链路故障、源头有害或服务普遍中断。 RFC 2439 RFC 4277 RFC 7196 可扩展路由设计原则 RFC 2439 Datatracker 记录

来源