第91篇:BGP Community 属性与路由控制
关键词
BGP、Community、团体属性、路由策略、Well-known Community
一、什么是 Community 属性
Community(团体) 是一个可选传递属性,用于给 BGP 路由打上"标签"。一台路由器根据标签做出相应的路由策略决策。
核心思想:社区不是告诉路由器"怎么做",而是"我是谁"——收到路由的路由器根据 Community 值决定如何处理。
二、Community 的格式
Community 是一个 32 位的值,通常表示为 AA:NN 格式:
| 部分 | 含义 | 示例 |
|---|---|---|
| AA | AS 编号 | 100 |
| NN | 本地有意义的值 | 10, 20, 30 |
| 完整的 Community | AA:NN | 100:10 |
三、四种公认的 Well-known Community
| Community 名称 | 值 | 含义 |
|---|---|---|
| NO_EXPORT | 0xFFFFFF01 | 不将路由通告给任何 EBGP 邻居 |
| NO_ADVERTISE | 0xFFFFFF02 | 不将路由通告给任何 BGP 邻居 |
| NO_EXPORT_SUBCONFED | 0xFFFFFF03 | 不将路由通告给联邦外的 EBGP 邻居 |
| NO_PEER | 0xFFFFFF04 | 不将路由通告给对等体 |
3.1 NO_EXPORT(不导出)
AS 100 AS 200 AS 300
│ │ │
│── eBGP ────────────│── eBGP ────────────│
│ 172.16.0.0/16 │ │
│ Community=NO_EXPORT│ │
│ │ │
│ AS 200 收到: │ │
│ Community = NO_EXPORT → 不通告给 AS 300 │
3.2 NO_ADVERTISE(不通告)
收到 Community=NO_ADVERTISE 的路由后,不传给任何 BGP 邻居(eBGP 和 iBGP 都不传)。
3.3 配置示例
# 为特定路由设置 Community
route-policy SET_COMM permit node 10
if-match ip-prefix SPECIAL
apply community 100:100 no-export # 设置 Community
bgp 100
peer 10.0.12.2 route-policy SET_COMM export
四、Community 的配置与传递
4.1 使能 Community 传递
默认情况下,BGP Update 中不携带 Community 属性。需要显式配置:
bgp 100
peer 10.0.12.2 advertise-community # 使能向该邻居发送 Community
4.2 设置 Community
# 方式 1:在 route-policy 中设置
route-policy SET_COMM permit node 10
apply community 100:100 100:200 100:300
# 方式 2:按邻居设置
bgp 100
peer 10.0.12.2 route-policy SET_COMM export
4.3 删除 Community
# 清空 Community
route-policy CLEAR_COMM permit node 10
apply community none
五、基于 Community 的策略控制
5.1 入方向策略
# AS 200 根据 Community 值设置 Local Preference
route-policy COMM_IN permit node 10
if-match community 100:100
apply local-preference 200
route-policy COMM_IN permit node 20
if-match community 100:200
apply local-preference 150
bgp 200
peer 10.0.12.1 route-policy COMM_IN import
5.2 使用 community-filter
# 定义 Community 过滤器
ip community-filter 1 permit 100:100
ip community-filter 2 permit 100:200
route-policy COMM_FILTER permit node 10
if-match community-filter 1
apply local-preference 200
六、Community 在运营商网络中的应用
6.1 典型的运营商 Community 设计
运营商 A(AS 100)的 Community 规划:
AS 内部控制:
100:10 → 设置 Local Preference = 200(高优先级)
100:20 → 设置 Local Preference = 150(中优先级)
100:30 → 设置 Local Preference = 50(低优先级)
地理标记:
100:101 → 北京接入
100:102 → 上海接入
100:103 → 广州接入
动作标记:
100:999 → 不按地域最优(NO_EXPORT 的变体)
6.2 应用示例
# 客户路由从北京接入
route-policy CUSTOMER_BJ permit node 10
apply community 100:101 100:10
# 上游 AS 根据 Community 调整优先级
route-policy UPSTREAM_IN permit node 10
if-match community 100:10
apply local-preference 200
七、查看 Community
# 查看路由的 Community
display bgp routing-table 172.16.0.0
Network: 172.16.0.0/16
Community: 100:100 100:200
# 按 Community 筛选
display bgp routing-table community 100:100
# 查看已配置的 Community
display bgp community
八、总结
| 知识点 | 核心要点 |
|---|---|
| Community 本质 | 路由标签,可选传递属性 |
| 格式 | AA:NN(AS 号:本地值) |
| Well-known Community | NO_EXPORT / NO_ADVERTISE 等 |
| 控制方式 | route-policy 匹配 Community 执行策略 |
| 应用场景 | 运营商网络中精细控制路由传播和选路 |
| 前提 | 必须配置 advertise-community |
九、思考
- 四种 Well-known Community 分别有什么作用?
- 为什么需要配置
advertise-community邻居才能传递 Community 属性? - 如何在入方向策略中根据 Community 值修改 Local Preference?
- 在运营商网络中,Community 的典型应用场景有哪些?
- 什么是 Community Filter?它与 ACL 的原理有什么相似之处?
下篇预告:第92篇《BGP 优选路径调优案例》——通过实际案例掌握 BGP 选路调优。