把众多相邻网络前缀合并成一条汇总路由。

BGP 聚合收窄路由表

聚合用一条覆盖式通告,替掉一组彼此相邻的前缀:下游每一个对等体因此少存几十条表项,也不再逐条处理每个成员前缀的更新。表变小了,抖动也变少了,边缘网络的反复震荡不再向外传播。 代价是这条汇总本身就是一句关于可达性的承诺。一旦覆盖前缀进了表,转发引擎就会拿它去匹配那些成员路由已经消失的地址;表变小,换来的是一条更模糊的故障信号。 聚合到底买到了什么 一个对等体同时收到 10.1.4.0/24、10.1.7.0/24、10.1.9.0/24 和覆盖它们的 10.1.0.0/16,要存四条。配上 aggregate-address 10.1.0.0/16 summary-only,就只存一条。抑制发生在出方向:这些更具体前缀仍然留在聚合者自己的 BGP 表里,仍然参与它自己的转发,只是不再被通告出去。FRR 在这一点上很严格——必须先在 BGP 表里存在更具体前缀(光有 RIB 不算),聚合才会被生成。 第二个好处是抖动。成员前缀每抖一次,对等体都要解析、选路、重装一遍。躲在汇总后面,这些更新就止步于聚合者,一个每分钟抖两次的客户网对互联网其余部分的开销归零。在长期抖动的边缘,这才是真正想要的那个性质。 summary-only、suppress-map 与 as-set summary-only 对每个邻居抑制所有更长的前缀。suppress-map 只抑制被路由映射命中的那些更具体前缀,用于「这一整段都汇总,但那个例外继续单独通告」。as-set 改变的则是路径的样子:它不把成员路径塌缩成聚合者自己的 AS,而是生成一个装着真实起源 AS 的 AS_SET。 as-set 保住了环路检测,却毁掉了别的一切。AS_SET 会让路径在按 AS 路径长度比较时变长,让起源校验拿不到可用的东西,而且它正在被明确废弃——FRR 直接提供 bgp reject-as-sets,两个方向都丢弃这类路由。真正危险的配置,是跨越不同起源 AS 做聚合。把来自 AS64501 的 10.1.4.0/24 和来自 AS64502 的 10.1.7.0/24 折进由 AS64500 起源的 10.1.0.0/16,等于告诉所有对等体「这一整块都是 AS64500 起源的」。按起源过滤的邻居于是接受了一段本不该接受的前缀,按 AS 路径过滤的邻居则完全看不到那些客户。细节是被销毁,而不是被压缩。 ...

十月 8, 2027 · 1 分钟 · XB Field Notes