接入多线时规划BGP路由优选策略的几个步骤
接入多线BGP时,路由优选策略的规划核心是“先定目标、再排优先级、持续验证调整”,具体应按梳理网络资源、配置邻居关系、设计选路规则、控制路由宣告、监控调优这五步推进。
很多网络工程师第一次接触多线BGP时,容易陷入一个误区:以为把两条或者三条线路接进来、起好BGP邻居就等于“多线接入”了,真正拉开差距的,是路由怎么选、流量怎么走、故障怎么切,下面按实操顺序拆解每一步。
多线BGP接入怎么配置?先把自己家里的网络家底盘清楚
策略是建立在现实基础上的,网络资源都理不清楚就谈选路策略,等于在流沙上盖楼。
AS号和IP地址段决定了你的选路话语权
在配置BGP之前,需要先确认三个关键信息:自有AS号、公有IP地址段、以及IP段是否在APNIC或对应RIR的注册库里,行业共识认为,拥有独立AS号和IP段的多线接入,在路由策略的灵活性上远超直接使用运营商提供的NAT或端口映射方案。
没有AS号的话,可以通过上游运营商或IDC服务商做二级BGP接入,但代价是路由控制权限会受限,某些策略(比如自定义community标签)没法落地,有条件的企业,建议优先申请自有AS号。
带宽成本与流量方向预期直接影响策略基调
接入多线BGP前,还要回答一个问题:每条线路的主要职责是什么?主力承载、容灾备份、还是特定区域加速?
这里牵涉到“多线BGP价格”的敏感话题,说句大实话,多线BGP并不便宜,尤其是BGP独占线路,月租成本远超普通静态带宽,有过项目经验的工程师应该都碰到过:预算有限但要求“三线BGP接入”,这时候策略设计的价值就体现出来了把高成本线路用于承载核心读请求,低成本线路承接下载类或异步任务流量,通过路由策略实现成本与体验的平衡,顺带一提,“多线BGP机房选哪家”这个话题,挑选时重点不在带宽价格本身,而是看机房对BGP策略的技术支持力度和故障响应时效,后者的价值远大于那点差价。
BGP路由优选策略的核心:local-preference和MED哪个优先?别搞错顺序
BGP选路规则里优先级最高的几个属性,工程师必须背得像自己的手机号一样熟。
local-preference控制的是“出门”方向
Local-preference(本地优先级)是BGP选路的第一梯队属性,它作用于出站流量即你的网络访问外部网络时走哪条线路。
local-preference值越大越优先,默认值为100。
实战场景:假设企业同时接了电信和联通两条BGP线路,想优先让出站流量走电信(因为业务服务器部署在电信机房),做法很简单在电信邻居入方向配置set local-preference 200,联通方向保持默认100,BGP就会毫不犹豫地让绝大多数出站流量走电信。
这就是“BGP local-preference和MED哪个优先”问题的答案:local-preference优先于MED,前者失效后,后者才有资格参与比较。
MED和AS-path prepend控制的是“进门”方向
说的是出站方向,如果想让外部访问自己时优先走某条线路,靠local-preference就管不着了,这时候要用MED(多出口区分度量)和AS路径控制。
- MED:值越小越优先,一般只在同一个AS域内传递,跨AS会被重置或忽略。
- AS-path prepend:在路由通告里人为追加自己AS号,让对端觉得路径更长、优先级更低,配合使用效果最佳。
实操示例:某企业电信、联通双线BGP接入,想让电信用户访问时优先走电信链路,就在通向联通的出向路由通告上执行as-path prepend 1 1 1(追加三次),联通收到的路由路径变长,自然降低对这条路由的偏好。
优先级排错会付出什么代价
一个真实场景:某电商平台在中秋大促前扩容,网络团队新增了一条移动BGP线路,配置MED值的时候把移动线路的MED设得比电信还低,本想分担压力,结果由于MED的选路权重在AS-path之前,全网大量流量涌入移动线路,导致移动出口拥塞、交易接口超时,事后排查才发现MED虽然好用但不能乱设,它的生效范围和作用条件都要结合完整BGP路径来判断。
如何规划设计BGP路由策略的宣告与过滤规则
大多数多线BGP接入的故障,不是选路规则出问题,而是路由宣告边界没画清楚。
入向策略:不该收的路由坚决不收
跟运营商建立BGP邻居后,运营商会把全量Internet路由表(当前约90万条+)推过来,如果设备性能不够,直接被撑爆都有可能。
推荐做法:
- 用
prefix-list或route-filter允许接收终端用户所需的真实路由前缀 - 只接收运营商提供的默认路由加少数必要前缀,适合只有普通访问需求的政企客户
- 接收全表时,务必开启
soft-reconfiguration inbound和maximum-prefix限制,防止路由震荡打垮设备
企业多线BGP组网场景下,保守入向策略比激进全表策略更常见于成本敏感型项目,因为全表对设备CPU和内存要求至少翻一倍,预算自然也跟着涨。
出向策略:不把用户流量带到坑里去
很多初学者容易忽略一个关键点:BGP不仅决定“别人怎么走进来”,还决定“自己怎么走出去”,出向路由宣告尽量遵循最小化原则只宣告自己的IP段,绝不错误转发别人的前缀。
操作细节:
- 出站方向绑定
next-hop-self,避免内部路由泄露 - 对外宣告的IP段,确保在运营商侧做了
irr过滤登记 - 两条线路分别宣告时,可以灵活运用
as-path prepend,让不同运营商的路由偏好不同入口
community标签是批量管理的神器
线路多了以后,如果每条策略都用前缀列表一条条匹配,配置文件能写到手抽筋。用community属性给路由打标,再统一套用策略,效率和可维护性完全是两个量级。
典型用法:
- 给电信邻居收到的路由打上
64512:100标签,对应“走电信出口”的策略集合 - 给联通邻居收到的路由打上
64512:200标签,对应“走联通出口” - 在出口策略中用
community-list匹配标签,统一调整local-preference或MED
持续调优:路由监控与故障切换验证
BGP策略配置完,不意味着大功告成,线路质量是波动的,策略的价值在于动态调整的能力。
紧急切换预案要提前演练
多线BGP最大的好处是有冗余,但冗余不会自动生效,业内专家指出,比较好的做法是提前设计好“一键切换”方案:
- 把备线线路的local-preference在配置里预留好调整位置,发生故障时只需修改一处,
clear ip bgp soft后等待收敛 - 通过track对象联动静态默认路由,在运营商链路探测失败时自动切换网关,不少金融客户的组网就是这种模式,切换时间控制在秒级
- 定时做切换演练,记录切换过程耗时和丢包情况
用真实业务流量反向验证策略
配置策略后,可以通过show ip bgp查看路由表情况和各前缀的优选路径,但更实在的做法是:从业务侧发起真实的访问测试,拿浏览器或App内的网络请求去测不同运营商下的响应时间,有条件的话,定期拉取CDN质量监控平台的明细数据做对比,验证流量是否按预期的线路走向分发。
| 对比维度 | local-preference | MED |
|---|---|---|
| 控制方向 | 出站流量优选出接口 | 入站流量优选入口 |
| 优先级顺序 | 优于MED | 低于local-preference |
| 生效范围 | 本AS内 | 跨AS时需额外条件 |
| 故障场景 | 链路断开时影响出站 | 入口拥塞时影响入站 |
接入多线时BGP路由优选策略规划常见问题
多线BGP接入怎么配置才不会有环路?
核心在于BGP防环机制AS-path中如果出现了自己的AS号,该路由会被直接丢弃,配置时保持每个邻居独立的address-family,不要互相重分发,同时开启ebgp-multihop时确认跳数合理,绝大多数环路问题出在IGP和BGP路由互相引入时,严格控制路由重分发边界即可。
规划BGP路由优选策略时,路由表全表和默认路由怎么选?
如果业务对跨国访问延迟敏感(比如游戏出海、外贸站点),收全表是值得的,因为全表能提供更精细的选路维度,但如果只是普通企业网站或内部系统,默认路由加少数业务前缀完全够用,还能降低设备压力,判断标准很简单:你的用户和服务器是否分布在世界各地。
设备选择上,家用路由器支持BGP路由策略吗?
不支持,企业多线BGP组网的最低起点是支持BGP协议的企业级路由器或防火墙,比如Cisco、华为、Juniper的入门级企业设备,以及MikroTik的部分型号也支持基础BGP,软件路由方案(如Bird、FRR、GoBGP)在x86服务器上跑也很常见,但稳定性比不过专业硬件设备。
多线BGP的路由优选策略,本质上是一门“预期管理”的艺术,把每条线路的角色定义好、选路规则梳理清、故障场景模拟透,策略就成功了一半,剩下的一半,得靠日常监控和定期演练去维护。网络是活的,策略也要跟着活。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/643392.html





