BGP社区属性本质是给路由打上可传递的“标签”,让策略意图跨AS传递;常见设置思路是先在边界打标,再在内核按标签匹配执行Local Preference、MED或黑洞等动作。 它不直接决定选路,而是把“这条路由从哪来、该走哪条出口、要不要丢弃”变成可操作的策略信号。
BGP社区属性到底解决什么问题
社区属性(Community)是BGP可选传递属性,据RFC 1997,它由ASN:value组成,常见格式如65000:100,你可以把它想成快递面单:路由本身是包裹,社区是面单上的编码,边界路由器负责贴标,内部路由器按编码分拣。
社区属性与普通BGP属性的区别
业内专家指出,社区属性的价值不在“传递路由”,而在“传递意图”,Local Preference只在本地AS内有效,MED影响入站选路但比较范围受限,而社区可以带着标签跨AS传递,让上游或对端按约定执行策略。
| 属性 | 作用范围 | 是否跨AS传递 | 常见用途 |
|---|---|---|---|
| Community | 标签化策略信号 | 多数情况下可传递 | 出口选择、黑洞、客户分类 |
| Local Preference | 本地AS内 | 不传递 | 控制出站选路 |
| MED | 相邻AS间 | 可传递但受限 | 影响入站流量 |
可传递标签与本地优先级的配合
社区属性单独存在没有意义,它必须和route-policy、route-map或community-filter配合,典型链路是:边界路由器收到客户路由,打上65000:100;内部核心路由器匹配65000:100,设置Local Preference 200;最终该路由优先走A出口,标签是“因”,策略动作是“果”。
BGP社区属性怎么设置:从零开始的配置思路
先规划标签编号与含义
不要随手写社区值,先做一张标签表,至少包含客户类型、出口方向、安全动作三类,例如65000:100表示客户A,65000:200表示上游B,65535:666表示黑洞,编号要避开Well-known communities,如NO_EXPORT、NO_ADVERTISE,以及RFC 7999定义的BLACKHOLE 65535:666。
在边界路由器打标的实操步骤
以华为设备为例,先定义社区过滤器,再在route-policy中apply community,最后在BGP邻居import方向调用,思科逻辑一致,用community-list和route-map的set community additive。
- 定义社区过滤器:
ip community-filter 1 permit 65000:100 - 创建打标策略:
route-policy SET_COMM permit node 10,执行apply community 65000:100 - 在客户邻居入方向调用:
peer 203.0.113.1 route-policy SET_COMM import - 确认对端能收到社区:华为用
peer x advertise-community,思科用neighbor x send-community
在内核执行策略匹配
内部核心路由器从边界接收路由时,匹配社区并设置Local Preference,示例策略:route-policy LP permit node 10,if-match community-filter 1,apply local-preference 200,然后在IBGP邻居import方向调用,注意route-policy节点顺序,deny节点要放在最后,避免误杀。
BGP社区属性与Local Preference对比:选哪个更合适
控制出站选路时优先用Local Preference
如果你只想让本AS内的流量走某条出口,Local Preference更直接,它不依赖对端支持,配置简单,作用范围清晰,社区属性在这里的角色是“分类”,Local Preference是“执行”。
控制入站流量或跨域意图时用Community
当你要告诉上游“这条路由请走低优先出口”或“这个前缀请黑洞丢弃”,社区属性更合适,它可以把意图传给对端,由对端策略执行,前提是双方约定了社区含义,否则标签只是字符串。
两者组合的典型场景
双出口客户场景:边界给客户路由打65000:100,核心匹配后设Local Preference 200走A出口;同时给该路由追加65000:200,上游收到后对B出口降权,社区负责分类和传递,Local Preference负责本地选路,分工明确。
运营商城域网BGP社区属性实战场景
客户双上行流量调度
行业共识认为,城域网里社区属性最常见的用途是客户分类,客户从两个PE接入,边界PE分别打上不同社区,核心BRAS或CR匹配后设置不同Local Preference,实现主备或负载分担,标签表要同步给运维和客户侧,避免“标签含义只有一个人知道”。
黑洞路由与DDoS缓解
DDoS场景下,社区属性可以快速传递黑洞意图,边界路由器把攻击目的前缀打上65535:666,上游按RFC 7999约定丢弃流量,实操上先配置ip route 192.0.2.1 255.255.255.255 null0,再通过route-policy给该前缀设置BLACKHOLE社区,最后确认上游支持该社区。
国际出口选路
多国际出口场景中,社区标签可以区分“优先走香港出口”“优先走新加坡出口”,边界打标,核心匹配后调整Local Preference,或者把标签传给国际上游,由上游按约定选路,注意不同运营商社区编号不统一,必须以对方提供的社区文档为准。
上海地区BGP社区属性配置思路与价格参考
地域性出口与多线机房场景
上海地区多线机房常见电信、联通、移动多出口,社区规划可以按“出口运营商+优先级”组合,例如65000:101表示电信主用,65000:102表示联通备用,核心路由器匹配后设置Local Preference,边界路由器负责向客户或上游传递标签,地域场景下不要照搬外地模板,出口AS和上游社区约定往往不同。
BGP社区属性配置服务多少钱
不少集成商按人天或项目报价,BGP社区属性配置服务多少钱,取决于AS数量、出口数量、策略复杂度和是否涉及上游协调,单纯打标和本地匹配工作量较小;涉及多运营商社区约定、黑洞联动和变更演练时,工作量会明显上升,询价时让对方给出标签规划、配置清单和回退方案,比只问总价更有意义。
常见误区与排查清单
社区属性没有传递到对端
先查邻居是否开启社区发送,华为查peer x advertise-community,思科查neighbor x send-community,再查对端是否在import方向拒绝,用display bgp routing-table 10.0.0.0 24 detail或show ip bgp 10.0.0.0/24看Community字段是否为空。
匹配顺序与正则表达式写错
社区过滤器正则容易多写空格或漏写冒号,排查顺序:先看route-policy节点是否命中,再看community-filter是否permit,最后看apply动作是否在正确方向,列表化排查:
- 查路由是否带社区
- 查过滤器是否匹配
- 查策略节点顺序
- 查邻居import/export方向
- 查对端是否支持该社区语义
BGP社区属性常见问题解答
BGP社区属性可以跨AS传递吗?
可以,社区是可选传递属性,多数情况下能跨AS传递,但对方是否识别、是否按约定执行,取决于双方策略,传递不等于生效。
配置了社区属性为什么不生效?
先确认三个点:邻居是否发送社区、对端是否接收社区、本地策略是否匹配并执行动作,社区本身不改变选路,缺少route-policy或route-map中的apply动作时,它只是标签。
BGP社区属性和MED到底有什么区别?
社区属性用于打标签和传递策略意图,本身不直接比较选路;MED用于影响入站选路,数值越小越优先,MED只在相邻AS间比较,且多数厂商默认不比较来自不同AS的MED。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/792504.html


