BGP路由优选策略在多线互联中的落地核心就一句话:通过控制路由权重、本地优先级和AS路径长度,让流量走你想让它走的那条路。这套策略的重点不是背下十几条选路规则,而是结合自己的网络拓扑、运营商关系和业务流量模型,把关键几项选路因子用对地方。
多线BGP路由优选策略怎么配置最合理
先看懂路由器做选择时的顺序
BGP路由器收到多条到达同一目的地的路由时,会按照固定顺序逐一比较,行业共识认为,实际工程中真正用来做流量调度的因子集中在四个维度:weight值(仅本设备生效)、local preference本地优先级(本AS内传播)、AS path长度、MED值,其中weight是Cisco私有属性,多线互联场景里不太常用;真正影响全局的是local preference和AS path control。
常规优先级从高到低是:
- weight,数值大者优先,只影响本路由器
- local preference,数值大者优先,影响整个AS内部设备
- 本地始发路由优先于通过eBGP学习到的路由
- AS path越短越优先,prepend就是在加长这条路
- MED值小者优先,来自邻居的偏好暗示
- eBGP路由优先于iBGP路由
做多线互联规划时,画好拓扑图,标清楚每个出口对接的运营商AS号,然后明确流量模型,出方向流量调度靠调整local preference,入方向流量调度靠AS path prepend和MED,多数情况下控制逻辑就这么简单,复杂的是怎么选数值、怎么应对故障,以及怎么让策略长期可维护。
落地时的数值设计思路
假设一个典型场景:你所在的数据中心同时接了电信、联通、移动三家运营商,出口路由器是两台设备做冗余,规划时建议给每个运营商量身定制本地优先级数值,下面是一套可供参考的分配方案:
| 运营商出口 | local preference | 适用场景 |
|---|---|---|
| 电信 | 200 | 默认首选出口,电信用户覆盖广 |
| 联通 | 150 | 联通流量较大时提高优先级 |
| 移动 | 100 | 移动流量或备份出口 |
| 备份链路 | 50 | 仅在其他链路全断时启用 |
这个数值不是硬性标准,但好处是排障时一眼能看出当前走哪条链路,配合show bgp命令查看实际生效路径,能快速定位流量绕行原因,行业里相当一部分工程师是按照带宽成本和运营商质量来定这套数值的,带宽充裕、质量稳定的链路给高值。
多线互联BGP权重怎么设置才不会踩坑
weight和local preference的差异在故障演练里最明显
很多刚接触BGP的工程师容易在Cisco设备上把weight当成全局调度工具,结果发现邻居设备完全不认这个值,这正是因为weight是本地私有属性,不会通过路由更新传递给邻居,而local preference作为AS内部传递的属性,通过iBGP会话同步到所有内部路由器上,才能真正实现“多台设备统一决策”。
实操建议:如果你的网络里有iBGP落地点,出方向调度优先配local preference,weight可以留作单台设备紧急调整用的手段,比如某台设备上的某个邻居突然劣化,临时把该邻居路由的weight调低,快速切换流量,不影响全网策略。
华为、H3C设备上的对应配置方式
以华为设备为例,关键的route-policy配置大致如下:
route-policy BGP_PREF permit node 10
apply local-preference 200
#
bgp 65100
peer 192.0.2.1 as-number 4809
peer 192.0.2.1 route-policy BGP_PREF import
Cisco设备则是在route-map里直接set local-preference值,两条命令的效果一模一样,都是入方向修改local preference,入方向的定位很重要本地优先级是控制“从邻居学到的路由在本地AS内的选择偏好”,配反了方向直接失效。
用AS path prepend控制入方向流量
出方向控制好之后,入口流量调度才是多线互联真正的难点,某个运营商的链路带宽有限,但流量大量涌入,就需要通过AS path prepend把这条路径“变长”,让对端运营商觉得绕路,从而减少进入的流量,操作方式是在出方向配置上多附加几次自己的AS号,例如AS 65100想降低某一链路的入流量,可以在向该运营商通告路由时把路径变成“65100 65100 65100”。
这种手法在双线机房切换和单线转BGP多线过渡阶段特别常用,切换链路时,先把prepend加上,观察流量转移是否平滑,确认稳定后再去掉,从过程来看,操作可逆、风险低、调整粒度细
,比改MED更直观,不过要清楚一点:prepend不是精密的流量阀门,它是让运营商路由决策倾向于走另一条路,流量转移比例做不到精确的百分比控制,多数情况下是量级上的调整。
双线BGP和单线BGP哪个更适合业务发展
先看一个实际业务例子,某面向全国用户的应用平台部署在一家BGP机房,接入电信、联通、移动三线,服务器IP段通过BGP向三家运营商广播,电信用户拨测时,电信骨干网发现最优路径是本网直达,流量直接进入数据中心;联通用户访问时,联通侧同样选路到本网直连链路,全程无跨网绕行,省去购买额外CDN或专线中转的费用。单线机房做不到这种效果电信单线下的用户访问联通带宽,大概率要绕到骨干网交换节点,延迟天然高一个档次。
双线BGP和单线BGP哪个更适合业务,取决于你的用户分布和业务类型:
- 用户集中在单一运营商,选单线BGP性价比更直接
- 用户覆盖全国三大运营商,双线BGP或多线BGP带来实际体验保障
- 动态交互类业务(API调用、实时数据流)对跨网延迟敏感,BGP多线价值明显可大量缓存的内容,CDN加速可能是更便宜的选择
价格差异也客观存在,多线BGP通常比单线接入贵一个量级,IP地址成本和运营商接入费用都高,但换来的是省掉跨网加速服务的额外支出,以及更稳定的用户访问体验,据工信部近年来公开信息,国内IDC市场采用BGP多线接入的数据中心比例整体呈上升趋势,说明这套方案在主流场景下确实被验证为有效。
多线BGP机房怎么选才不翻车
选择BGP多线机房时,重点看几个要素:是否真正接入三网骨干、AS号是否自有、有没有提供BGP会话权限、路由策略是否开放可调,不少机房宣传“BGP多线”,实际上只做了静态路由引流,这种模式在链路故障时无法自动切换,和真正的BGP动态选路是两回事。
确认方式很简单:问机房要AS号和接入运营商互联网骨干的证明,要求开放BGP neighbor视图权限,或者直接要求查看路由表条目,不能提供这些能力的机房,基本就是伪BGP,类似北京、上海、深圳等一线城市的数据中心在BGP接入资源上积累较多,可选余地更大;二三线城市的部分机房也支持多线,但运营商出口带宽和互联质量差别较大,签约前务必做跨运营商拨测。
故障切换策略和线上验证方法
多线互联规划得再好,故障切换不给力等于白做,常见的做法是配置BGP邻居的keepalive和hold time计时器,缩短故障感知时间,默认keepalive是60秒,hold time是180秒,感知邻居故障需要三分钟左右,对线上业务来说太慢,建议将keepalive调低到10秒,hold time调到30秒,能在更短时间内触发路由撤销和切换,同时开启BFD(双向转发检测),配合BGP把收敛时间压缩到秒级以内,这是多线互联高可用的关键手段之一。
线上验证建议按以下步骤执行:
- 先做预演:断开一条运营商的BGP邻居,观察业务流量是否按预期切换到其他链路
- 检查每条链路的进出流量占比,确认没有单条链路过载
- 用不同运营商的拨测节点访问业务IP,确认回程路径符合预期
- 定期检查收到的路由条数,是否出现异常全表或路由抖动
业内专家指出,多线互联真正考验的是持续运维能力,策略配置一次并不难,难的是每次割接、扩容、运营商线路调整后还保持策略有效,建议把BGP选路策略纳入变更管理流程,每次调整都记录数值变更原因,便于后续回溯。
常见的BGP路由优选策略疑问解答
weight和local preference哪个先比较
weight先比较,然后是local preference,最后才是AS path、MED等后续因子,weight是Cisco私有属性,只对本地设备生效,local preference是AS内部传递的,两台路由器之间跑iBGP时能互相学习到,跨厂商环境下,优先理解local preference的机制比较实用。
多线BGP机房如何验证路由策略是否生效
登录BGP设备,执行show bgp ipv4 unicast观察选定前缀的路径属性,逐项对比local preference、AS path长度和MED值,然后在不同运营商网络下持续ping和traceroute,确认去程回程路径均未出现异常绕行,最直接的验证是断开一条链路,观察流量切换时间是否在预期范围内。
BGP选路优化和负载均衡有什么区别
BGP选路优化的目标是选出一条最优路径,负载均衡则希望流量在多个链路间均匀分布,实际多线互联场景中,多数运维团队倾向于“主备模式”而不是负载均衡,因为运营商链路质量天然存在差异,强行平均分配流量容易导致劣质链路上用户体验下降。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/643323.html





