聚合的默认行为容易被误解
Cisco 的 aggregate-address 默认会同时通告聚合前缀与全部明细前缀——它的作用只是额外增加一条更粗的路由,并没有把明细藏起来。另一个前提是本地 BGP 表中必须存在至少一条被聚合的明细路由,否则聚合根本不会产生。想让明细不外发,需要配 summary-only 或 suppress-map;聚合路由会携带 ATOMIC_AGGREGATE 属性,提示下游这条路由由聚合产生、不可分解。
基本信息
| 命令 | aggregate-address <前缀> <掩码> |
|---|---|
| 产生前提 | BGP 表中存在匹配的明细路由,否则聚合不产生 |
| 默认行为 | 聚合前缀与全部明细前缀同时通告 |
| 附加属性 | 聚合路由自动携带 ATOMIC_AGGREGATE |
| 明细控制 | summary-only 只发聚合,suppress-map 选择性抑制明细 |
| 验收方式 | advertised-routes 核对实际发布的前缀集合 |
典型使用场景
- 对外只发汇总:配合 summary-only 控制可见前缀粒度
- 逐条抑制明细:用 suppress-map 按条件决定哪些明细不外发
- 排查「明细还是发出去了」:确认是否漏配 summary-only
- 排查「聚合不产生」:确认 BGP 表中是否真有匹配的明细路由
- 与 as-set 配合:需要保留来源 AS 信息时按需配置
配置与验证
配置与验证
router bgp 65001
aggregate-address 10.0.0.0 255.0.0.0 summary-only # 只发聚合,不发明细
! 若只想抑制部分明细,改用 suppress-map:
! aggregate-address 10.0.0.0 255.0.0.0 suppress-map SM
!
show ip bgp 10.0.0.0/8 # 看聚合路由与其属性
show ip bgp 10.0.0.0/8 longer-prefixes # 看参与聚合的明细前缀
show ip bgp neighbors 10.0.0.2 advertised-routes # 核对实际发布的前缀选项与效果
| 配置 | 聚合是否通告 | 明细是否通告 |
|---|---|---|
| 只配 aggregate-address | 通告 | 全部明细仍然通告 |
| 加 summary-only | 通告 | 明细被抑制 |
| 加 suppress-map | 通告 | 按 map 条件选择性抑制 |
| 明细不在 BGP 表 | 不产生 | 不适用 |
| 加 as-set | 通告并保留来源 AS 信息 | 按配置处理 |
ATOMIC_AGGREGATE 表示这条路由由聚合产生、下游不要把它拆回明细,这与「明细是否同时通告」是两件事,不要混为一谈。
聚合依赖明细存在:明细全部消失(接口 Down、重分发撤销)时聚合也会消失,对端表现为前缀突然不见。排查时先看 BGP 表里的明细是否还在,再谈聚合配置。