BGP路由策略从入门到进阶,核心是掌握前缀过滤、属性调整、邻居方向三层配置逻辑,并能在企业多线BGP接入场景中稳定落地。
BGP路由策略怎么配置:先理清策略作用点
很多运维第一次配BGP路由策略时,会直接把OSPF里的思路搬过来,结果策略写了不生效,或者影响范围完全超出预期,BGP的策略作用点比IGP更集中,主要在三个位置:
- 入站方向:邻居通告过来的路由进入BGP表之前
- 出站方向:本设备向邻居通告路由之前
- 本地选路:多条到达同一目的地的路由在BGP表中竞争优选
理解这三个位置后,策略工具的选择就不容易乱。
策略工具三件套:前缀列表、Route-Policy、Community
BGP路由策略离不开三个基础工具,前缀列表负责“圈定对象”,Route-Policy负责“执行动作”,Community负责“跨设备传递策略标记”。
前缀列表配置示例(华为设备):
ip ip-prefix FILTER_DEFAULT index 10 permit 0.0.0.0 0
ip ip-prefix FILTER_PRIVATE index 10 deny 192.168.0.0 16 less-equal 32
ip ip-prefix FILTER_PRIVATE index 20 permit 0.0.0.0 0 less-equal 32
Route-Policy配置示例:
route-policy RP_DENY_DEFAULT deny node 10
if-match ip-prefix FILTER_DEFAULT
route-policy RP_DENY_DEFAULT permit node 20
Route-Policy由多个节点组成,按序号从小到大匹配,节点内没有if-match时,默认匹配所有路由,deny节点会直接丢弃路由,不再继续匹配,这个逻辑与ACL很像,但Route-Policy能调用前缀列表、Community列表、AS_Path列表,还能执行apply动作。
方向永远比命令更关键
同一个Route-Policy,应用在import和export方向,含义完全相反。
peer 10.0.0.1 route-policy RP_DENY_DEFAULT import:从邻居收到的路由中,把默认路由拒收peer 10.0.0.1 route-policy RP_DENY_DEFAULT export:向邻居通告时,把默认路由抑止
配错方向是入门阶段最高频的问题,配置完成后直接用display bgp routing-table peer 10.0.0.1 received-routes查看邻居收到的路由,或display bgp routing-table看本地BGP表,立刻能判断方向是否正确。
BGP与OSPF路由策略区别:为什么不能照搬IGP思路
BGP路由策略和OSPF路由策略的对比,是很多网络工程师入门的必经之路,两者虽然都叫“路由策略”,但底层逻辑差异很大。
| 对比项 | BGP路由策略 | OSPF路由策略 |
|---|---|---|
| 影响范围 | 通过属性影响跨AS路径选择 | 通过Cost影响AS内部路径 |
| 策略生效点 | 邻居import/export或本地选路 | 区域边界或重分发点 |
| 常用匹配对象 | 前缀、Community、AS_Path | 前缀、路由类型、Tag |
| 跨设备传递 | Community、AS_Path可传递 | Tag仅在本地有意义 |
| 默认行为 | 所有路由接收,按属性优选 | 区域内SPF计算,难以局部调整 |
BGP路由策略的核心差异在于“属性可传递”,你在北京BGP机房的出口路由器上给路由打上Community标记,下游设备可以基于这个标记继续执行策略,而OSPF的Tag只在重分发时本地使用,不会自动影响其他区域的SPF计算。
BGP路由策略的配置重点不是“能不能匹配路由”,而是“属性调整后路径如何变化”,许多工程师总想用过滤思路解决选路问题,这是照搬IGP思路最常见的误区。
BGP路由策略进阶配置命令:Local_Preference与MED调优
入门阶段掌握过滤后,进阶就要接触选路属性调整,选路属性的优先级顺序,行业共识认为,本地Weight最高,其次是Local_Preference,再次是AS_Path长度,最后才看MED和IGP Cost。
Local_Preference控制出站流量
Local_Preference只在本AS内有效,数值越大越优先,它不会传递给EBGP邻居,企业多线BGP接入场景里,想默认从电信出去、联通做备份,就可以对从电信邻居收到的路由设置更高Local_Preference。
配置示例(华为设备):
route-policy RP_TELECOM_PREF permit node 10
apply local-preference 200
bgp 65001
peer 100.100.100.1 route-policy RP_TELECOM_PREF import
从联通邻居收到的路由不应用策略,Local_Preference保持默认值100,这样两条默认路由到达本设备时,电信那一条优选,联通自动成为备份。
MED与AS_Path控制入站流量
MED和AS_Path主要影响对端AS如何选择进入本AS的路径,MED数值越小越优先,AS_Path长度越短越优先,两者都会传递给EBGP邻居,但AS_Path在全球互联网中影响范围更广。
给联通方向通告路由时增加AS_Path长度:
route-policy RP_PREPEND_TO_UNICOM permit node 10 apply as-path 65001 65001 65001 additive bgp 65001 peer 200.200.200.1 route-policy RP_PREPEND_TO_UNICOM export
这样对端AS看到来自联通方向的路由AS_Path更长,入站流量会优先走电信,AS_Path prepend是成本最低的入站选路手段,但需要上游运营商配合才能看到效果。
企业多线BGP接入场景:出口路由策略怎么配置
多线BGP接入在企业中很常见,典型拓扑是两条或三条运营商线路接入同一台边界路由器,通过BGP接收全表或默认路由。
双线热备,默认走电信
场景:企业同时接入电信和联通,希望默认出站走电信,电信故障后自动切换联通。
配置步骤:
- 定义前缀列表匹配所有路由:
ip ip-prefix ALL_ROUTES index 10 permit 0.0.0.0 0 less-equal 32 - 创建入站策略,对电信邻居设置高Local_Preference:
apply local-preference 200 - 对联通邻居设置默认值100,或手动设置为80
- 在BGP进程下分别应用import方向策略
- 检查命令:
display bgp routing-table,查看优选路径是否来自电信
北京BGP机房路由优化用Community标记
北京BGP机房往往连接多家运营商,路由策略维护量比单一企业更大,常用做法是在入口路由器上给不同运营商的路由打Community标记,下游设备再根据Community做本地优先级调整。
上游标记示例:
route-policy RP_MARK_ISP permit node 10
if-match ip-prefix FROM_TELECOM
apply community 65001:100
下游设备可以直接匹配Community,不用重复维护前缀列表:
ip community-filter basic CF_TELECOM permit 65001:100
route-policy RP_DOWNSTREAM_PREF permit node 10
if-match community-filter CF_TELECOM
apply local-preference 150
这种方式把策略逻辑集中在上游,下游只消费Community标记,北京BGP机房路由优化中,这类方法能大幅减少维护量,避免每台设备各自维护一套复杂的策略规则。
出站策略防止私有路由泄漏
多线接入时,如果内部使用了192.168.0.0/16、10.0.0.0/8等私网地址,必须在出口方向过滤,避免泄漏到公共互联网。
ip ip-prefix PRIVATE_RFC1918 index 10 permit 10.0.0.0 8
ip ip-prefix PRIVATE_RFC1918 index 20 permit 172.16.0.0 12
ip ip-prefix PRIVATE_RFC1918 index 30 permit 192.168.0.0 16
route-policy RP_NO_PRIVATE deny node 10
if-match ip-prefix PRIVATE_RFC1918
route-policy RP_NO_PRIVATE permit node 20
这个策略在出口router上对每个EBGP邻居的export方向应用,是合规性要求,不是性能优化。
BGP路由策略配置排错:三个常见坑
策略顺序错误
Route-Policy节点编号决定匹配优先级,如果把deny节点放在permit节点后面,前面的permit可能已经把所有路由放行,后面的deny根本不生效,配置完成后用display route-policy name检查节点顺序。
方向与对象不匹配
前缀列表匹配对象是网段,Community列表匹配对象是团体属性,AS_Path列表匹配对象是路径,把前缀列表用在AS_Path匹配上当然不会生效,错误信息往往不明显,只能靠display bgp routing-table对比策略前后变化来定位。
属性只影响本地而不影响邻居
Local_Preference不会传递给EBGP邻居,如果你在出口路由器上设置了Local_Preference,希望上游运营商看到,这是无效的,影响EBGP邻居的入站选择,必须用MED或AS_Path prepend,这是BGP与OSPF路由策略区别中最容易搞混的一点。
BGP路由策略配置常见问题
BGP路由策略配置后不生效怎么办?
先确认策略应用方向:import接收邻居路由,export影响本地通告,再看Route-Policy节点中是否有permit节点真正执行了apply动作,只建了策略未在peer下调用,是最常见的低级错误,用display current-configuration configuration bgp检查邻居配置中是否出现route-policy字段。
多线BGP服务器托管多少钱才合理?
多线BGP服务器托管价格受机房地域、带宽规模、运营商数量影响较大,北京BGP机房通常比二三线城市价格高,多线接入比单线托管贵出一截,行业内普遍按带宽峰值或95计费模式收费,具体数额需要向服务商询价,如果报价明显低于同地域单线托管,大概率是伪BGP或共享带宽超售。
BGP和OSPF路由策略区别是否影响维护成本?
影响很大,BGP策略工具更多、属性更复杂,需要维护前缀列表、Community列表、Route-Policy多套配置,OSPF策略主要围绕重分发和区域边界,维护面窄,但BGP的策略弹性也更高,一套Community标记可以支撑多台下游设备协同,长期看更适合多运营商、多地域的网络环境。
配置BGP路由策略没有捷径,就是把前缀匹配、属性动作、邻居方向三个维度反复组合,入门时先搭好过滤规则,再逐步加入Local_Preference、MED、Community标记,多线接入下的选路控制自然会稳定下来。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/643455.html





