首页/网络/BGP 与广域网速查/set community:覆盖与 additive 追加
BGP 选路与策略62 条

set community:覆盖与 additive 追加

在 route-map 中设置社区:不加 additive 会覆盖原有社区,加 additive 保留并追加;删除全部用 set community none。

BGP 与广域网速查网络更新于 2026-10-13

set community 的三种行为

community 属性用于给路由打业务标签,供本端或对端后续策略匹配。在 route-map 中写 set community 时分三种情况:不加关键字会覆盖原有全部社区值;加 additive 表示保留原值并追加;用 set community none 表示清空全部社区。默认的覆盖行为在多运营商或二次分配场景里最容易被踩到。

基本信息

取值格式常见为 AS:编号,16 位 AS 时编号 0-65535
默认行为覆盖,原有社区值全部被替换
追加方式set community 65001:100 additive
清空方式set community none
发送前提邻居需开启 send-community,否则属性不随更新发出

典型使用场景

  • 给客户路由统一打标,本端后续按标签设置 LOCAL_PREF 实现分流
  • 区分流量来源:为不同上游打不同社区编号,便于事后统计与故障定位
  • 互联网出口控制:使用众所周知的社区值让上游按约定调整发布范围
  • 多级运营商分工场景:保留上游已有标签,只追加自己的编号
  • 割接标记:临时给新链路路由打上专用编号,验证完成后再撤销

覆盖与追加对照

覆盖与追加对照
# 覆盖写法:原有社区被清除,只保留本次设置的值
route-map RM-A permit 10
 set community 65001:100
!
# 追加写法:保留上游社区,只额外打标
route-map RM-B permit 10
 set community 65001:100 additive
!
# 清空写法:用于剥离上游标签
route-map RM-C permit 10
 set community none
!
show ip bgp 10.100.0.0/16 | include Community

常用社区语义

社区值含义使用注意
65535:65281NO_EXPORT,收到后不再向任何对端发布常用于让路由止步于本 AS 边界
65535:65282NO_ADVERTISE,不向任何邻居通告本地标记用途,避免意外外泄
65535:65283NO_EXPORT_SUBCONFED,联盟内不过期外发联盟场景使用
65001:100自定义业务编号编码规则需要文档化,否则半年后无法解读

发送开关与删除已有社区

发送开关与删除已有社区
# 未开启发送开关时,本端能看到社区但对端收不到
router bgp 65001
 neighbor 10.0.0.2 send-community
!
# 部分平台支持按列表删除匹配到的社区,使用前先确认命令支持情况
ip community-list standard CL-OLD permit 65001:100
route-map RM-D permit 10
 set comm-list CL-OLD delete
!
show ip bgp 10.100.0.0/16
二次分配场景中默认的覆盖行为会抹掉上游打好的标签,一旦上游依赖该标签做计费或选路,问题不会立即暴露,而是在结算或排障时才被发现。修改他人打过的社区前,先用 show ip bgp 记录原始值。

易错点

  • 无意覆盖上游社区:默认 set community 不带 additive 即覆盖,链路重分发场景最容易踩到
  • 只配 set 不配 match:route-map 变成对所有路由无条件打标,影响范围远超预期
  • 忘记在邻居上开启 send-community:本端表项看起来完全正确,对端却什么都收不到
  • 社区编号没有编码规范:不同团队各自取值,后期无法判断哪个编号代表什么业务
  • 使用众所周知的社区值但未确认上游行为:不同运营商对 NO_EXPORT 等值的处理不完全一致,需在合同中明确

数据来源与参考

  • Cisco: set community 命令参考
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌