第90篇:BGP 聚合与 AS_SET 属性
关键词
BGP、路由聚合、Aggregation、AS_SET、summary、CIDR
一、为什么需要 BGP 路由聚合?
互联网上 BGP 路由表已超过 90 万条,如果不做聚合,这个数字会大得多。
聚合的好处: 1. 减少路由表条目——用一条聚合路由替代多条明细路由 2. 提高稳定性——明细路由震荡不影响聚合路由 3. 降低 LSP 开销——减少 BGP Update 报文数量
二、BGP 聚合的两种方式
| 方式 | 配置命令 | 说明 |
|---|---|---|
| 手动聚合 | aggregate |
手动指定聚合路由 |
| 自动聚合 | summary automatic |
按类自动聚合(已不推荐) |
三、手动聚合配置
3.1 基本配置
bgp 100
aggregate 172.16.0.0 255.255.0.0 # 发布聚合路由
3.2 聚合的关键参数
| 参数 | 说明 | 默认 |
|---|---|---|
| detail-suppressed | 抑制明细路由发布 | 不抑制 |
| as-set | 生成 AS_SET 属性 | 不生成 |
四、detail-suppressed 参数
4.1 不带 detail-suppressed
bgp 100
aggregate 172.16.0.0 255.255.0.0
# 结果:聚合路由和明细路由都通告
# 对端 AS 200 收到:
# 172.16.0.0/16 (聚合)
# 172.16.1.0/24 (明细)
# 172.16.2.0/24 (明细)
# ...
4.2 带 detail-suppressed
bgp 100
aggregate 172.16.0.0 255.255.0.0 detail-suppressed
# 结果:只通告聚合路由
# 对端 AS 200 收到:
# 172.16.0.0/16 (聚合)
# 172.16.1.0/24 (被抑制)
# 172.16.2.0/24 (被抑制)
4.3 选择性抑制
# 只抑制部分明细路由
route-policy SUPPRESS permit node 10
if-match ip-prefix SUPPRESS_LIST
bgp 100
aggregate 172.16.0.0 255.255.0.0 suppress-policy SUPPRESS
五、AS_SET 参数
5.1 没有 AS_SET 的问题
AS 100 AS 200 AS 300
│ │ │
│── eBGP ───────────────│── eBGP ───────────────│
│ 172.16.1.0/24 │ │
│ 172.16.2.0/24 │ │
│ │ │
│ │ 聚合后: │
│ │ 172.16.0.0/16 │
│ │ AS_PATH = [200] │
│ │ │
│ AS 300 发现: │ │
│ AS_PATH = [200] │ │
│ 但实际上路由来自 AS 100 │ │
│ → 潜在环路风险 │ │
5.2 使用 AS_SET
bgp 200
aggregate 172.16.0.0 255.255.0.0 as-set
# 结果:
# AS_PATH = [200 {100}] ← AS_SET = {100}
# AS_SET 中的 AS 号没有顺序,放在大括号中
AS_SET 的作用: - 告诉对端:这条聚合路由的明细路由来自 AS {100} - 防环:如果 AS 100 收到这条路由,发现自己在 AS_SET 中 → 丢弃
5.3 AS_SET 的选路影响
display bgp routing-table 172.16.0.0
Network: 172.16.0.0/16
AS_PATH: 200 {100}
# AS_PATH 长度计算:200(1 个 AS)+ {100}(1 个 AS,算 1) = 2
注意:AS_SET 中的每个 AS 在计算 AS_PATH 长度时算 1 个。这是 BGP 选路规则 4(AS_PATH 最短)中的一部分。
六、聚合路由的 attributes
6.1 聚合路由的属性继承
当生成聚合路由时,它的属性来自最匹配的明细路由:
| 属性 | 继承规则 |
|---|---|
| NEXT_HOP | 聚合设备的接口 IP |
| LOCAL_PREF | 使用明细路由中的最高值 |
| MED | 不使用(聚合路由不继承 MED) |
| AS_PATH | 聚合设备生成新的 AS_PATH |
6.2 通过 Route-Policy 设置属性
route-policy AGGREGATE_ATTR permit node 10
apply as-path 100 additive # 添加 AS 100
apply local-preference 200
apply community 100:100
bgp 100
aggregate 172.16.0.0 255.255.0.0 attribute-policy AGGREGATE_ATTR
七、自动聚合(不推荐)
bgp 100
summary automatic # 按主类网络自动聚合(BGP-3 特性)
问题: - 按 A/B/C 类网络聚合,不支持 CIDR - 已不推荐使用
八、聚合的注意事项
8.1 聚合导致的信息丢失
聚合后丢失的信息:
- 路由起源信息(AS 细节)
- MED 值
- 部分 Community 属性
如果需要保留这些信息,考虑使用 as-set 和 route-policy
8.2 聚合可能导致次优路径
AS 100 有 172.16.1.0/24 和 172.16.2.0/24
AS 200 有 172.16.3.0/24
AS 300 聚合为 172.16.0.0/16(指向 AS 100)
172.16.3.0/24 的流量也会先到 AS 100 → 次优路径
解决:使用 suppress-policy 选择性抑制
8.3 查看聚合信息
display bgp routing-table 172.16.0.0
Network: 172.16.0.0/16
Path/Ogn: 200 {100} i
Aggregator: AS 100, 1.1.1.1 ← 聚合设备信息
Atomic-aggregate ← 标记:信息已被聚合(可能丢失细节)
九、总结
| 配置 | 作用 | 推荐使用 |
|---|---|---|
aggregate x.x.x.x y.y.y.y |
发布聚合路由 | ✅ |
detail-suppressed |
抑制明细路由 | ✅ 外部 AS |
as-set |
保留 AS 起源信息 | ✅ 推荐 |
suppress-policy |
选择性抑制 | ✅ 精细控制 |
attribute-policy |
修改聚合路由属性 | ⚠️ 按需 |
summary automatic |
自动聚合 | ❌ 不推荐 |
十、思考
- BGP 路由聚合的作用是什么?它为什么对互联网路由表规模很重要?
detail-suppressed参数的作用是什么?在什么场景下需要使用它?- AS_SET 属性的作用是什么?没有 AS_SET 会有什么潜在风险?
- 聚合路由的 AS_PATH 长度如何计算?AS_SET 中的 AS 算几个?
- 聚合路由可能导致次优路径吗?如何避免?
下篇预告:第91篇《BGP Community 属性与路由控制》——利用 Community 实现灵活的路由策略。