两条专线进来回程总走错路?BGP本地优先级把出口定死

本文整理自华为官方发布的典型配置案例,命令与步骤均按原始文档呈现,供现场实施参考。

企业同时接了两家运营商,常听的一句抱怨就是“流量怎么又从这条线走了”。双线组网里,进方向可以靠对端控制,出方向走哪条线,得靠自己的AS说了算。BGP里管这件事的核心属性就是本地优先级(Local_Pref):它只在本自治域内部的IBGP对等体之间传递,不会通告给别的AS,谁的数值大,谁发布的路由就在全AS范围内优先。换句话说,在一台边界设备上改一个值,全AS的出流量都会听话。

案例组网与默认行为

官方案例把三种典型局面都演了一遍。组网是:SwitchA接ISP1,SwitchB接ISP2,两台之间以及和内部SwitchC跑IBGP,同属AS 65001,目标网段是10.11.0.0/16和10.22.0.0/16。

先看不动配置会发生什么:SwitchA从ISP1学到的路由是EBGP路由,从SwitchB收到的是IBGP路由,比较属性时EBGP优先于IBGP,于是SwitchA优选ISP1;而SwitchC上两台边界发来的路由都是IBGP路由,各属性又打平,只好靠Router ID大小分胜负——这种“靠机器名次定路由”的局面,显然不是运维想看到的。

头一种改法:全局定调一主一备

在接主用线路的SwitchA上,把对外发布路由的缺省本地优先级抬到120(缺省是100):

#
bgp 65001
 #
 ipv4-family unicast
  default local-preference 120
#

配完SwitchA把学来的路由带着120的优先级传给SwitchB,SwitchB一比较,本地直连ISP2的路由(优先级100)就落了下风,全AS统一优选ISP1,ISP2退为备份。这是“一主一备”的标准打法。

另一种改法:按网段分主备,两条线都跑起来

要让10.11.0.0/16走ISP1、10.22.0.0/16走ISP2,全局一刀切就不合适了,得用路由策略给不同前缀分别打值。SwitchA的配置:

#
bgp 65001
 #
 ipv4-family unicast
  peer 10.1.1.1 route-policy rp1 import
 #
route-policy rp1 permit node 10
 if-match ip-prefix addpref
 apply local-preference 120
#
route-policy rp1 permit node 20
 if-match ip-prefix reducepref
 apply local-preference 80
#
route-policy rp1 permit node 30
#
ip ip-prefix addpref index 10 permit 10.11.0.0 16
ip ip-prefix reducepref index 10 permit 10.22.0.0 16
#

SwitchB对称地配一套rp2,把10.22.0.0/16抬到200、10.11.0.0/16压到60。这样两个网段各走各的主用线路,互为对方的备份,两条专线都真正跑起来了。

验证与两个坑

验证就用display bgp routing-table,重点看LocPrf一列和优选标记是不是按预期落位。两个容易踩的坑记一下:一是改缺省值会影响本机发布的所有路由,先想清楚再动手;二是default local-preference和路由策略同时命中时,路由策略里的apply优先生效,精细化控制时不用担心被全局值盖掉。

双出口的选路规则值得白纸黑字写进维护档案:哪条前缀主走哪条线、优先级给多少、谁做备份,一页纸讲清楚,之后无论谁来接手维护,选路逻辑都不会走样。如果你也在规划双运营商出口,欢迎搜索关注贵州诚鑫致达科技,获取更多BGP选路调优的实操经验。

企业存储选型参考|贵州诚鑫致达

做海量监控接入与长期归档,群晖机型参考:HD6500 · RS3621xs+ · DS2422+。需要选型建议或上门评估,搜「诚鑫致达」即可找到我们。

服务区域|贵州诚鑫致达

贵州群晖NAS、贵阳存储、数据备份、信创云盘或 IT 集成服务,可联系贵州诚鑫致达科技,服务范围覆盖贵州全省各市州。贵州县域市场:县城及乡镇企业存储、办公网络与监控存储。