同一条路由两个入口不听安排?华为BGP MED属性给入口排座次
本文整理自华为官方发布的典型配置案例,命令与步骤均按原始文档呈现,供现场实施参考。
企业出口跑BGP时常遇到这种事:同一条路由从两个入口都学得到,流量从哪个口进来,设备是按一套固定次序自己挑的,挑出来的结果未必符合你的规划。MED属性就是用来干预这件事的:它相当于IGP里的度量值(Metric),用于判断流量进入AS时的路由优劣。当一台运行BGP的设备通过不同的EBGP对等体得到目的地址相同、下一跳不同的多条路由时,其他条件相同的情况下,MED值较小的一条胜出。换句话说,谁把自己对外通告的MED改大,谁那个入口就容易被对方冷落。
官方组网是这样演示的:DeviceA在AS 65008中,DeviceB和DeviceC在AS 65009中,A与B、A与C之间运行EBGP,B和C之间运行IBGP。A发往172.16.1.0/24的流量既可以从DeviceB进入AS 65009,也可以从DeviceC进入。本例在DeviceB上把发给A的MED值改为100,让A转而选DeviceC作入口。
先把邻居建起来
DeviceA与两个对端各建EBGP:
[DeviceA] bgp 65008
[DeviceA-bgp] router-id 1.1.1.1
[DeviceA-bgp] peer 10.1.1.1 as-number 65009
[DeviceA-bgp] peer 10.1.2.1 as-number 65009
[DeviceA-bgp] quit
DeviceB在IPv4地址族下network宣告172.16.1.0/24网段,并与DeviceC建IBGP:
[DeviceB] bgp 65009
[DeviceB-bgp] router-id 2.2.2.2
[DeviceB-bgp] peer 10.1.1.2 as-number 65008
[DeviceB-bgp] peer 172.16.1.2 as-number 65009
[DeviceB-bgp] ipv4-family unicast
[DeviceB-bgp-af-ipv4] network 172.16.1.0 255.255.255.0
[DeviceB-bgp-af-ipv4] quit
[DeviceB-bgp] quit
DeviceC同理,对等体地址换成与A、B互联的两端:
[DeviceC] bgp 65009
[DeviceC-bgp] router-id 3.3.3.3
[DeviceC-bgp] peer 10.1.2.2 as-number 65008
[DeviceC-bgp] peer 172.16.1.1 as-number 65009
[DeviceC-bgp] ipv4-family unicast
[DeviceC-bgp-af-ipv4] network 172.16.1.0 255.255.255.0
[DeviceC-bgp-af-ipv4] quit
[DeviceC-bgp] quit
看设备自己怎么挑
动MED之前先看看设备自己怎么挑的。在DeviceA上查这条前缀:
[DeviceA] display bgp routing-table 172.16.1.0 24
AS-path 65009, origin igp, MED 0, pref-val 0, valid, external, best, select, pre 255
AS-path 65009, origin igp, MED 0, pref-val 0, valid, external, pre 255, not preferred for router ID
两条有效路由MED都是0,BGP只好退而比较Router ID,DeviceB的Router ID小一些,流量就从它进来——这正是“设备自己挑”不一定顺着规划的例证。
改MED让入口按规划走
配置MED属性。在DeviceB上用路由策略把发给A的路由MED值改成100,并挂到对A的出方向上:
[DeviceB] route-policy 10 permit node 10
[DeviceB-route-policy] apply cost 100
[DeviceB-route-policy] quit
[DeviceB] bgp 65009
[DeviceB-bgp] ipv4-family unicast
[DeviceB-bgp-af-ipv4] peer 10.1.1.2 route-policy 10 export
[DeviceB-bgp-af-ipv4] quit
[DeviceB-bgp] quit
再到DeviceA上看同一条前缀,风向变了:
[DeviceA] display bgp routing-table 172.16.1.0 24
AS-path 65009, origin igp, MED 0, pref-val 0, valid, external, best, select, pre 255
AS-path 65009, origin igp, MED 100, pref-val 0, valid, external, pre 255, not preferred for MED
下一跳10.1.1.1(DeviceB)的路由MED值已变成100,另一条MED为0,BGP优先选MED值较小者,入口如愿落到DeviceC。顺带说一个排障经验:输出里的“not preferred for MED”就是设备亲口告诉你的落选理由,字段还会随原因变化(比如此前是not preferred for router ID),查选路问题时认准它,比翻文档猜快得多。
要注意MED只在相邻AS之间生效,它影响的是别人怎么进你,而不是你怎么出去——想管出向选路得用本地优先级等其他手段。另外官方在注意事项里提醒,部署BGP安全措施(如Keychain认证)可以一起配上,选路可控的同时邻居关系也要防伪造。
多入口选路这类“把意图写进属性”的操作,比改完靠重启碰运气靠谱得多。欢迎搜索关注贵州诚鑫致达科技,获取更多BGP选路调优的实操经验。
企业存储选型参考|贵州诚鑫致达
做机架式部署与数据中心扩容,群晖机型参考:RS2423RP+ · RS1221+ · RS822+。需要选型建议或上门评估,搜「诚鑫致达」即可找到我们。
服务区域|贵州诚鑫致达
贵州群晖NAS、贵阳存储、数据备份、信创云盘或 IT 集成服务,可联系贵州诚鑫致达科技,服务范围覆盖贵州全省各市州。四川成都群晖存储部署、机房建设与数据安全集成服务。