服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-24 更新于 2026-08-24 简米科技 4,230 字 10 分钟阅读

如何通过BGP社区属性控制路由通告与优选范围,BGP社区属性路由控制方法

导读BGP社区属性通过在路由前缀上附加一个可自定义的标签,让你能精准控制哪些路由该通告、哪些路由该优先,是目前大型网络和运营商做流量工程不可或缺的手段,BGP社区属性基础:一个可自定义的标签系统社区属性本质上是附加在BGP路由上的一个标记,它不改变路由的路径信息,只供路由器做策略匹配时参考,你可以把它想象成路由的……

BGP社区属性通过在路由前缀上附加一个可自定义的标签,让你能精准控制哪些路由该通告、哪些路由该优先,是目前大型网络和运营商做流量工程不可或缺的手段。

BGP社区属性基础:一个可自定义的标签系统

社区属性本质上是附加在BGP路由上的一个标记,它不改变路由的路径信息,只供路由器做策略匹配时参考,你可以把它想象成路由的“身份证”,上面写着“这条路由来自北京”、“这条路由适合做备份”等含义。

社区属性分为标准社区(RFC 1997)和扩展社区(RFC 4360),标准社区用两个16位数字表示,格式为AA:NN,比如100:200,一个路由可以携带多个社区属性,路由器收到后根据这些属性决定是否接受、是否通告、是否调整优先级。

社区属性的种类和用途

  • 公认社区属性NO_EXPORT(0xFFFFFF01)表示不将路由通告给EBGP邻居;NO_ADVERTISE(0xFFFFFF02)表示不向任何邻居通告;LOCAL_AS(0xFFFFFF03)表示在联盟内不通告给外部AS。
  • 私有社区属性:由运营商或企业自行定义,比如定义100:100表示“此路由来自核心层”,配套策略决定其优先级。

在控制路由通告和优选范围时,我们主要靠私有社区属性配合路由策略来实现,行业共识认为,一套清晰定义的社区属性方案能显著降低网络策略的复杂度,减少人为配置错误。

用社区属性控制路由通告:让该传的传,该拦的拦

控制路由通告是最常见的场景,你希望某些路由只通告给特定客户,或者不希望某些路由被传播到全网,社区属性是最高效的抓手。

基于社区属性的路由过滤

在边界路由器上,可以配置入站策略判断收到的路由是否携带特定社区属性,然后决定是否接受,同样,在出站方向,可以给路由打上社区属性,让邻居按照规则处理。

举个例子,运营商经常给客户打上“NO_EXPORT”属性,确保客户的路由只在本AS内传播,不会泄露到互联网,配置命令通常如下(以Cisco IOS为例):

ip community-list standard CUSTOMER_RT permit 200:100
route-map SET_COMMUNITY permit 10
 match community CUSTOMER_RT
 set community 100:200

如何通过BGP社区属性控制路由通告与优选范围,BGP社区属性路由控制方法

这段配置的意思是:如果路由匹配到社区属性200:100,则设置一个新的社区属性100:200,实际场景中,你可以在邻居的route-map中通过match communityset community组合实现精细控制。

在EBGP场景中的通告控制

当你想控制把哪些路由通告给对等体,可以在出站route-map中根据社区属性做选择,只允许携带“ALLOWED”标记的路由才能通告给某个客户:

neighbor 10.0.0.1 route-map TO_CUSTOMER out
route-map TO_CUSTOMER permit 10
 match community ALLOWED
route-map TO_CUSTOMER deny 20

这样,只有携带ALLOWED社区属性的路由才会被发送给该客户。通过社区属性,你不需要在多个路由策略里重复写前缀匹配,而是通过一个标签就完成了分类。

BGP community 优选范围调整:对比不同方法的优劣

控制路由优选范围主要涉及Local PreferenceMED的调整,社区属性可以作为触发器,让路由器自动修改这些路径属性,从而影响路由的优选顺序。

通过社区属性修改Local Preference

Local Preference是BGP选路中的第一权重,值越高越优先,你可以在入站方向给路由打上社区属性,然后在本地策略中检测该属性并修改Local Preference。

定义一个社区属性100:10表示“高优先级”,100:20表示“低优先级”,在路由器上配置:

ip community-list standard HIGH_PRI permit 100:10
route-map SET_LP permit 10
 match community HIGH_PRI
 set local-preference 200

当收到携带100:10的路由时,自动设置Local Preference为200,使其优先被选中。这种方法的好处是,策略定义在核心路由器上,而边缘设备只需打标签,无需了解复杂的选路逻辑。

对比传统前缀列表方式

传统做法是在入站策略中直接写ip prefix-list匹配特定前缀,然后设置属性,但前缀列表难以维护,尤其是当路由数量大、变化频繁时,社区属性方案将策略与路由解耦,你只需要在分发路由时标记好属性,核心策略自动生效。行业共识认为,社区属性方案在可扩展性和运维效率上明显优于纯前缀匹配。

这种方式对运营商和大型多云互联场景尤其适用,你希望来自某个地域的路由具有更高的优先级,只需在发往该地域的边缘路由器上打上社区属性,核心路由器自动调整Local Preference,无需修改核心配置。

如何通过BGP社区属性控制路由通告与优选范围,BGP社区属性路由控制方法

具体配置实操:一步一步实现社区属性控制

下面以Cisco IOS和华为V系统为例,展示如何配置社区属性来控制路由通告和优选范围。

Cisco IOS 配置示例

场景:内部网络分为核心层和汇聚层,核心层路由应优选,汇聚层路由作为备份,在核心层路由器上,给路由打上社区属性100:1;汇聚层打上100:2。

步骤1:定义社区列表

ip community-list standard CORE permit 100:1
ip community-list standard AGG permit 100:2

步骤2:配置入站route-map,根据社区属性设置Local Preference

route-map FROM_EBGP permit 10
 match community CORE
 set local-preference 200
!
route-map FROM_EBGP permit 20
 match community AGG
 set local-preference 100
!
route-map FROM_EBGP permit 30

步骤3:应用到邻居

neighbor 192.168.1.1 route-map FROM_EBGP in

步骤4:在源路由器上通告时打上社区属性

route-map SET_COMMUNITY permit 10
 set community 100:1
!
neighbor 10.0.0.2 route-map SET_COMMUNITY out

这样,核心层路由器收到路由后自动获得高优先级,汇聚层路由优先级低,优选范围自然向核心层倾斜。

华为设备配置示例

华为设备使用community-filterroute-policy完成类似功能。

定义社区过滤器

community-filter 10 permit 100:1

配置route-policy

route-policy FROM_EBGP permit node 10
 if community-filter 10
 apply local-preference 200
 endif

应用

bgp 100
 peer 10.0.0.2 route-policy FROM_EBGP import

在源设备上打标签

route-policy SET_COMMUNITY permit node 10
 apply community 100:1
#
bgp 100
 peer 10.0.0.1 route-policy SET_COMMUNITY export

配置逻辑与Cisco基本一致,只是命令格式不同。关键在于,你可以在一个地方定义社区属性映射,然后所有设备统一使用该映射,实现策略标准化。

如何通过BGP社区属性控制路由通告与优选范围,BGP社区属性路由控制方法

最佳实践:如何规划社区属性避免混乱

社区属性一旦用起来容易失控,没有规划就可能出现冲突或误判,以下是几个实操建议:

  • 集中定义社区属性映射表:将每个社区属性的含义、使用范围、涉及设备列表记录下来,形成文档,100:100 = 来自核心网,100:200 = 来自接入网,200:100 = 需要发送给客户”。
  • 使用公认社区属性简化常用场景:如果不希望路由被通告,直接用NO_EXPORTNO_ADVERTISE,避免自定义属性带来的兼容性问题。
  • 在设备上限制社区属性传播范围:通过ip community-listroute-map控制哪些社区属性可以进入AS,避免外部属性污染内部策略。
  • 定期审计社区属性使用情况:用show ip bgp community查看当前活跃的社区属性,检查是否有过期或错误标记。

BGP社区属性控制路由通告与优选范围常见问题解答

社区属性和路由策略的关系是什么?

社区属性是路由策略的输入条件,策略通过匹配社区属性来执行动作,比如修改路径属性、过滤路由,社区属性本身不直接改变路由选路,它只是触发策略的标记,换句话说,社区属性是“钥匙”,路由策略是“锁”,你需要先定义好锁,再分配钥匙。

社区属性会影响路由的下一跳或AS_PATH吗?

不会,社区属性是一个独立的属性,不会影响AS_PATH或下一跳,它只作为策略匹配的依据,但你可以通过策略修改这些属性,比如在匹配社区属性后设置as-path prepend,这是一种组合用法,社区属性作为触发条件,间接影响路由优选。

在多运营商场景中如何安全使用社区属性?

多运营商互联时,建议只使用公认社区属性或协商好的私有属性,并严格限制入站路由携带的社区属性范围,通常做法是在边界路由器上设置neighbor SEND-COMMUNITY控制是否发送社区属性,同时用route-map过滤掉不希望接收的社区属性。社区属性是控制路由通告和优选范围的利器,但必须配合清晰的策略规划才能发挥最大价值。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱