删除与替换社区标记
从上游学来的社区标记往往需要「先剥离再重打」:入向删掉对端打的不适用标签,再打上本网自己的语义。Cisco 上用 `set comm-list <列表> delete` 删除命中的社区条目,配合 `set community ... additive` 追加新标记,就完成了标签替换。删除与追加的处理顺序依赖平台实现,落地前最好在实验环境先验证一次。
基本信息
| 删除命令 | route-map 中 set comm-list <name|number> delete |
|---|---|
| 追加命令 | set community <asn:nn> additive,additive 表示追加不覆盖 |
| 常用组合 | 先 delete 剥离旧标记,再 additive 打上新标记 |
| 验证方法 | show ip bgp <前缀> 查看 Community 行 |
| 适用平台 | Cisco IOS/IOS-XE;华为 VRP 用 community-filter 配合 apply community 实现类似效果 |
典型使用场景
- 入向清洗:剥离客户或对端打的无意义标签,避免污染本网策略空间
- 标签语义迁移:旧标记改为新标记时,先删旧再加新
- 多来源标签统一:不同上游对同一语义用了不同取值,收敛成本网统一格式
- 避免标签堆积:长期追加不做清理时,前缀上的标签会越来越多
- 策略调试:确认某条前缀上究竟保留了哪些标签
剥离再打标
剥离再打标
ip community-list standard CL-STRIP permit 65001:999
route-map RM-STRIP permit 10
set comm-list CL-STRIP delete
set community 65001:100 additive
!
router bgp 65001
neighbor 10.0.0.2 route-map RM-STRIP in
!
show ip bgp 10.1.1.0/24 | include Community
clear ip bgp 10.0.0.2 soft in核对要点
| 核对项 | 含义 | 正常与异常 |
|---|---|---|
| 删除结果 | 旧标签是否真的消失 | Community 行中不再出现被删值 |
| 追加结果 | 新标签是否已加上 | 出现新值,且原有其他标签未被误删 |
| 顺序影响 | delete 与 additive 的执行先后 | 不同实现结果可能有差异,需实测确认 |
| 生效时效 | 改完策略是否重新评估 | 未做软刷新时已学路由仍保留旧标签 |
删除操作要写清范围:comm-list 里的一条 permit 决定哪些值被删。列表写宽了会连带删掉有用标签,写窄了则删不干净,两种问题都只能靠核对 Community 行发现。
在入向剥离标签前要评估下游影响:若本网其他设备依赖该标签做选路,删除之后它们的判断前提就变了,跨设备的策略改动应当一起评审。