
Hat
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
💡 摘要 (Powered by OpenAI)
本文是 BIRD 用户指南的第六章第十七节,介绍了 BIRD 的路由聚合协议 (Aggregator),包括四个聚合阶段、配置语法和示例配置,以便您更好地理解相关内容。
路由聚合协议 (Aggregator) 可根据指定规则显式合并多条路由。
聚合过程分为四个阶段:
⚠️ 注意
此协议尚处于实验阶段,请谨慎使用。不允许对已聚合的路由再次聚合。
table 路由表
指定从中导出路由进行聚合的路由表。
export ...
标准通道的 export 子句,用于定义哪些路由被接受进入聚合流程。
aggregate on 表达式 | 属性 [, ...]
对每条路由计算所有给定的过滤表达式和路由属性,然后将路由归类到所有值均相同的桶中。
💡 性能提示
出于性能考虑,所有过滤表达式必须返回紧凑类型(如整数、BGP 团体属性(标准/扩展/大型)或 IP 地址)。如需在聚合规则中比较经过修改的 AS 路径,可定义一个自定义路由属性,并在 export 过滤器中设置该属性。目前必须声明 net,尚不支持合并前缀。
merge by { 过滤代码 }
指定的过滤代码中额外定义了一个符号 routes。通过遍历 routes 可访问桶内的所有路由,并据此构造新的聚合路由。所有在 aggregate on 中选定的属性已被设置为其公共值。目前暂不支持在此使用命名过滤器。须通过调用 accept 完成路由的最终构造。
import ...
在 merge by 之后应用于聚合路由的过滤器。此处可以使用命名过滤器。
peer table 路由表
聚合后的路由导入的目标路由表。可与 table 指定同一张表。
protocol aggregator {
table master6;
export where defined(bgp_path);
# 将具有相同 AS 路径长度的路由分到同一桶
aggregate on net, bgp_path.len;
merge by {
for route r in routes do {
if ! defined(bgp_path) then { bgp_path = r.bgp_path }
bgp_community = bgp_community.add(r.bgp_community);
}
accept;
};
import all;
peer table agr_result;
}
译者
原文作者: <Ondrej Filip>, <Martin Mares>, <Maria Matejka>, <Ondrej Zajicek>
原文链接: https://bird.network.cz/?get_doc&v=20&f=bird-6.html#ss6.17
原文标题: 6.17 Aggregator
遵循协议: CC BY-NC-SA 4.0
译者: hat
翻译时间: 2026-05-01
更新时间: 2026-05-01
本文链接: https://bird.xmsl.dev/docs/user-guide/6-17-aggregator.html