BGP社区属性(Community)是控制路由传播和优选的关键标记,通过修改本地优先级、MED等选路参数,能精确引导流量从指定链路出入,是多出口网络优化成本和效率的黄金手段。
社区属性本质是一个32位标记,附加在路由上随BGP更新传递,与路由策略配合,设备能识别标记并执行预设动作,如修改本地优先级、设置MED、控制路由发布,这样一来,流量走向就能按意图被精细指挥,近年来,随着多线BGP网络和云互连需求增长,社区属性成为流量工程中最灵活的工具,尤其适合多运营商接入场景。
BGP社区属性是什么?理解它的工作原理
社区属性扮演“标签”角色,不直接参与选路比较,但通过路由策略间接影响所有选路因子,标准社区格式为两个16位数值,如100:1,私有社区通常基于AS号定义,常见预定义社区包括NO_EXPORT(不传出AS)、NO_ADVERTISE(不向任何邻居通告)等。
社区属性如何影响路由优选
社区属性本身不参与路由优选比较,但路由策略可以基于它修改关键属性:
- 本地优先级(Local Preference):出站流量控制的核心,值越高越优先。
- MED(Multi-Exit Discriminator):入站流量控制,引导邻居进入的路径。
- AS_PATH:通过增加AS号影响选路,社区属性可触发此操作。
在上游路由器上,当收到携带community 100:10的路由时,将其本地优先级设为200,而其他路由设为100,流量会优先选择携带该标记的路由。
配置社区属性:从标记到策略
以华为设备为例,配置分为两步:定义社区标记,编写路由策略引用社区。
第一步:使用route-policy或ip community-filter定义社区。
ip community-filter 10 permit 100:10
route-policy SET_COMMUNITY permit node 10
apply community 100:10
第二步:在BGP进方向调用策略,为路由打标。

bgp 100
peer 1.1.1.1 route-policy SET_COMMUNITY import
第三步:定义匹配社区并执行动作的策略。
route-policy LOCAL_PREF permit node 10
if community-filter 10 match
apply local-preference 200
第四步:在BGP对等体出方向调用。
bgp 100
peer 2.2.2.2 route-policy LOCAL_PREF export
通过这种组合,可以精确控制从邻居接收的路由如何影响本地选路,或者向邻居发布的路由携带哪些标记。
配合路由优选控制流量走向的两种场景
社区属性最强大的应用在于流量走向控制,分为入站和出站两个方向。
入站流量控制:让外部流量从指定链路进入
当有多个运营商接入时,希望来自特定区域的流量从特定链路进入,可以通过社区属性向上游运营商传递信号,让他们调整MED或本地优先级。
向中国电信邻居发布路由时带上community 100:10,电信路由器识别后降低该路由的MED值,从而让电信流量优先从该链路进入,实际配置中需要与运营商协商社区标记含义,多数情况下,运营商提供标准社区映射表,如中国电信常使用AS号+入口编号的格式。
出站流量控制:引导内部流量从指定出口发出
在企业网络内,通过BGP的本地优先级控制出站路径,当从不同运营商收到相同前缀时,使用社区属性标记来自不同运营商的路由,然后设置不同本地优先级。
- 从联通收到的路由打上community 100:1,本地优先级设为150。
- 从电信收到的路由打上community 100:2,本地优先级设为120。
- 从移动收到的路由打上community 100:3,本地优先级设为100。
这样,访问同一目标时,流量优先走联通链路,联通不可用时走电信,最后走移动,这种策略在BGP多线机房中被广泛使用。
| 场景 | 控制方向 | 常用属性 | 社区属性角色 |
|---|---|---|---|
| 入站流量控制 | 外部进入内部 | MED、AS_PATH | 触发MED或AS_PATH修改 |
| 出站流量控制 | 内部访问外部 | Local Preference | 触发Local Preference调整 |
社区属性与路由策略的实操作
规划社区标记方案
根据业务需求规划私有社区范围,100:1表示“来自联通”,100:2表示“来自电信”,100:10表示“高优先级出口”等,需要与对端运营商协商一致,或只在内部使用,如果涉及国内BGP网络对接,建议留下运营商标准社区含义的映射文档。
编写路由策略匹配更新
在边界路由器上创建community-filter,并编写路由策略,将所有来自联通的路由打上community 100:1,然后统一设置本地优先级150。
ip community-filter 1 permit 100:1
route-policy MATCH_CTL permit node 10
if community-filter 1 match
apply local-preference 150
对于需要向邻居发布社区属性的场景,使用apply community将标记附加在路由上。
部署并验证
将对等体的策略应用后,使用display bgp routing-table查看路由属性的变化,确认社区属性已生效,并且选路符合预期,通过display bgp routing-table community可以过滤显示带特定社区的路由,最后用traceroute验证流量路径,确保实际走向与设计一致。
多出口场景下BGP流量调度策略对比
社区属性方案与传统的PBR(策略路由)或直接操控AS_PATH相比,在维护成本和灵活性上有明显优势。
| 维度 | 社区属性方案 | 直接修改AS_PATH | 策略路由 |
|---|---|---|---|
| 配置复杂度 | 中 | 低 | 高 |
| 维护成本 | 低(统一标记) | 高(需逐个修改) | 高(逐流策略) |
| 灵活性 | 高(可精细化匹配) | 中 | 高 |
| 对上游依赖 | 需协商社区含义 | 无 | 无 |
| 推荐场景 | 多运营商、多出口 | 简单选路调整 | 特殊流量需求 |
行业共识认为,社区属性是当前多出口流量调度性价比最高的方案,尤其适合国内三大运营商互联场景,相比直接修改AS_PATH,社区属性可以避免AS_PATH长度变化带来的路由震荡,同时提供更丰富的控制粒度。
关于BGP社区属性与路由优选的常见问题
BGP社区属性会影响路由优选吗?
社区属性本身不直接参与BGP路由优选比较,但通过路由策略可以影响所有选路参数,如本地优先级、MED、AS_PATH等,社区属性是间接但强大的路由控制工具,实际部署中,社区属性往往作为路由策略的匹配条件,触发对优选属性的修改,从而间接决定选路结果。
在控制流量走向时,社区属性比AS路径过滤更灵活吗?
是的,社区属性可以携带更精细的标记,并支持多种操作,如修改优先级、过滤、打标等,而AS路径过滤只能基于AS号做匹配,社区属性还能实现跨AS的流量工程,只要双方协商好标记含义,上游运营商可以基于社区属性批量调整一组路由的MED,而无需逐个前缀配置。
配置BGP社区属性需要注意哪些问题?
确保对端设备支持社区属性传递,并开启send-community功能,规划社区值要避免冲突,私有社区通常使用私有AS号,公有AS号下建议使用IANA分配的仅用于内部的范围,社区属性默认不传递,需在配置中明确允许,同时要注意,社区属性在路由反射器环境下会按反射器规则传递,需确保反射器不意外丢弃或修改社区。
合理利用BGP社区属性,能让你以最小的配置代价实现流量走向的精准控制,无论是入站还是出站,配合路由优选机制,社区属性都是网络工程师手中最灵活的一张牌。

