0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BGP路由优选规则的深入了解

网络技术干货圈 来源:网络技术干货圈 作者:圈圈 2022-11-14 09:54 次阅读

BGP路由优选规则

BGP是一个应用非常广泛的边界网关路由协议,被部署于大型的网络环境中。它能够支持大规模的网络,能够运载IP骨干网络中大批量的路由前缀并且在AS之间灵活的传递。BGP拥有丰富的路径属性,以及路由策略部署工具,正是由于这些特点,使得BGP在路由操控和优选决策上变得非常机动。在BGP网络设计中,针对BGP路由各种路径属性的操作和BGP网络设计都将影响路由的优选,从而对网络的流量产生影响,因此掌握BGP路由的优选规则十分之重要。本文全面、深入地探讨BGP的选路规则,并且结合一个完整的实验针对每条选路规则加以验证,从而加深对BGP路由优选规则的理解。

预备知识:

BGP基础知识(BGP的概念、状态机、邻居关系、水平分割规则、同步规则等)

BGP路径属性

BGP路由策略部署工具(route-policy、手工汇总、Ip-prefix等)

BGP路由反射器及联邦的概念及部署

一台BGP路由器有可能学习到关于同一个目的路由前缀的多条BGP路径,当这些BGP路径都是valid有效时,路由器将如何优选呢?BGP的众多路径属性如何影响BGP的路径决策呢?如何根据业务需要操控BGP路由优选呢?BGP定义了一整套详细的选路规则,使得BGP路由器能够在任何复杂的、冗余的网络环境下,决策出一条最优(Best)的路径:

优选具有最大Preferred-value的路由

优选具有最大Local_Preference的路由

优选起源于本地的路由

优选AS-Path最短的路由

比较Origin:(IGP 》 EGP 》 Incomplete)

优选MED最小的路由

优选eBGP邻居发来的路由

优选到BGP下一跳的IGP Metric较小的路由

BGP负载均衡

优选Cluster-List最短的路由

优选RouterID最小的BGP邻居发来的路由

优选peer ip地址最小的邻居发来的路由

实验环境介绍

IP地址规划如图所示,设备互联IP采用10.1.xy.x/24的编址,x及y为设备编号。这种编址方式能够在实验过程中更好地观察现象。同时所有的设备配置Loopback0接口,IP为x.x.x.x/32,其中x为设备编号。这个接口只作为设备RouterID以及建立IBGP邻居关系时使用。

AS345中,R3、R4、R5运行一个IGP:OSPF,在OSPF中,各设备宣告自己的直连接口以及Loopback0接口所在网段,但R3不在接口GE0/0/0口上激活OSPF,R5不在GE0/0/1上激活OSPF,这两个直连链路视为AS外的链路,不将其所在网段引入到OSPF中。

各设备的BGP连接情况如下:

其中,IBGP邻居关系的建立基于Loopback0口,EBGP邻居关系的建立基于直连物理接口。

初始化配置注:以下罗列的设备配置中,省略设备接口IP地址的配置。

R1的配置如下:

[R1]bgp100
[R1-bgp]router-id1.1.1.1
[R1-bgp]peer10.1.13.3as-number345

R2的配置如下:

[R1]bgp200
[R1-bgp]router-id2.2.2.2
[R1-bgp]peer10.1.25.5as-number345

R3的配置如下:

[R3]ospf1router-id3.3.3.3
[R3-ospf-1]area0.0.0.0
[R3-ospf-1-area-0.0.0.0]network10.1.34.30.0.0.0
[R3-ospf-1-area-0.0.0.0]network3.3.3.30.0.0.0
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit

[R3]bgp345
[R3-bgp]router-id3.3.3.3
[R3-bgp]peer10.1.13.1as-number100
[R3-bgp]peer4.4.4.4as-number345
[R3-bgp]peer4.4.4.4connect-interfaceloopback0
[R3-bgp]peer4.4.4.4next-hop-local#R3对R4执行next-hop-local
[R3-bgp]quit

R4的配置如下:

[R4]ospf1router-id4.4.4.4
[R4-ospf-1]area0.0.0.0
[R4-ospf-1-area-0.0.0.0]network10.1.34.40.0.0.0
[R4-ospf-1-area-0.0.0.0]network10.1.45.40.0.0.0
[R4-ospf-1-area-0.0.0.0]network4.4.4.40.0.0.0
[R4-ospf-1-area-0.0.0.0]quit
[R4-ospf-1]quit

[R4]bgp345
[R4-bgp]router-id4.4.4.4
[R4-bgp]peer3.3.3.3as-number345
[R4-bgp]peer3.3.3.3connect-interfaceloopback0
[R4-bgp]peer5.5.5.5as-number345
[R4-bgp]peer5.5.5.5connect-interfaceloopback0
[R4-bgp]quit

R5的配置如下:

[R5]ospf1router-id5.5.5.5
[R5-ospf1]area0.0.0.0
[R5-ospf-1-area-0.0.0.0]network10.1.45.50.0.0.0
[R5-ospf-1-area-0.0.0.0]network5.5.5.50.0.0.0
[R5-ospf-1-area-0.0.0.0]quit
[R5-ospf-1]quit

[R5]bgp345
[R5-bgp]router-id5.5.5.5
[R5-bgp]peer10.1.25.2as-number200
[R5-bgp]peer4.4.4.4as-number345
[R5-bgp]peer4.4.4.4connect-interfaceloopback0
[R5-bgp]peer4.4.4.4next-hop-local#R5对R4执行next-hop-local
[R5-bgp]quit

上述配置完成后,基本的实验环境就搭建好了,接下去我们开始逐条验证BGP的选路规则,每个选路规则的验证过程中都会增加一些配置用于验证,在一条选路规则验证完成后,将设备的配置恢复成我们现在所完成的配置,再验证下一条规则。

规则详解及实验验证优选具有最大Preferred_value的路由

规则描述

当一台路由器学习到关于同一个路由前缀的多条BGP路由时,首先会比较这些路由在路由器本地的Preferred_value值,优选拥有最大Preferred_value值的路由。

Preferred_value属性回顾

Preferred_value是一个华为私有的路径属性,可以理解为该路由的权重值。范围是0-65535,默认值为0,越大越优先。这个值的作用范围是本路由器(不传递),该值既不会被包含在update消息中,也不会传递给任何BGP邻居。

规则验证

现在我们在R1和R2上各配置一个Loopback1接口,配置IP地址:100.0.1.1/24,然后将这条路由network进BGP。

R1的配置如下:

[R1]interfaceloopback1
[R1-loopback1]ipaddress100.0.1.124
[R1-loopback1]quit

[R1]bgp100
[R1-bgp]network100.0.1.024
[R1-bgp]quit

R2的配置如下:

[R2]interfaceloopback1
[R2-loopback1]ipaddress100.0.1.124
[R2-loopback1]quit

[R2]bgp200
[R2-bgp]network100.0.1.024
[R2-bgp]quit

如此一来,R1将会传递BGP路由100.0.1.0/24给R3,而R3从自己的eBGP邻居R1学习到的这条路由也会更新给R4;同理R5也会将学习自eBGP邻居R2的路由100.0.1.0/24更新给R4,那么对于R4来说就同时从R3及R5学习到100.0.1.0/24的路由,R4将如何优选?现在,我们希望通过操控路由的Preferred_valuel值来让R4优选R5传递过来的路由。

68e1275c-63ad-11ed-8abf-dac502259ad0.png

在R4上配置上述命令,事实上是将R5传递过来的所有路由的preferred-value都设置为10,而R3传递过来的路由的preferred-value则在本地赋予默认值0,这么一对比,当然是优选R5所传递过来的路由了。但是这个方法“颗粒度”太大,如果我们只是想针对特定的路由设置preferred-value呢?例如:

69069d70-63ad-11ed-8abf-dac502259ad0.png

在R1及R2上新增100.0.2.0/24网段并注入BGP。R1、R2的新增配置这里不再赘述。

那么实现上图描述的需求,R4的配置可以变更成:

[R4]ipip-prefix1permit100.0.1.024
[R4]ipip-prefix2permit100.0.2.024

[R4]route-policyRP1permitnode10
[R4-route-policy]if-matchip-prefix1
[R4-route-policy]applypreferred-value10#设置所匹配路由的Preferred_value
[R4]route-policyRP1permitnode20#匹配其他路由

[R4]route-policyRP2permitnode10
[R4-route-policy]if-matchip-prefix2
[R4-route-policy]applypreferred-value10
[R4]route-policyRP2permitnode20

bgp345
peer3.3.3.3route-policyRP1import
peer5.5.5.5route-policyRP2import

注意:上述配置中route-policy RP1 permit node 20及route-policy RP2 permit node 20必须配置,因为route-policy隐含deny any,因此如果这两个node不加的话,相当于是只放行node 10中match住的路由。完成配置后:

[R4]displaybgprouting-table

BGPLocalrouterIDis4.4.4.4
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:4
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i100.0.1.0/243.3.3.3010010100i
*i5.5.5.501000200i
*>i100.0.2.0/245.5.5.5010010200i
*i3.3.3.301000100i

我们看到,在R4上,100.0.1.0/24的路由,优选的是R3传递过来的;100.0.2.0/24的路由,优选的是R5传递过来的。这就实现了我们的需求。事实上还可以进一步查看路由的详细信息,例如查看100.0.1.0/24这条路由:

[R4]displaybgprouting-table100.0.1.0
BGPlocalrouterID:4.4.4.4
LocalASnumber:345
Paths:2available,1best,1select
BGProutingtableentryinformationof100.0.1.0/24:#路径1
From:3.3.3.3(3.3.3.3)
RouteDuration:00h01m43s
RelayIPNexthop:10.1.34.3
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:3.3.3.3
Qosinformation:0x0
AS-path100,originigp,MED0,localpref100,pref-val10,valid,internal,best,select,
active,pre255,IGPcost1#best字样表示本路径被优选
Notadvertisedtoanypeeryet
BGProutingtableentryinformationof100.0.1.0/24:#路径2
From:5.5.5.5(5.5.5.5)
RouteDuration:00h01m43s
RelayIPNexthop:10.1.45.5
RelayIPOut-Interface:GigabitEthernet0/0/1
Originalnexthop:5.5.5.5
Qosinformation:0x0
AS-path200,originigp,MED0,localpref100,pref-val0,valid,internal,pre255,IGPcost
1,notpreferredforPreVal#这里说明了本路径没被优选的原因:Pre_Val值
Notadvertisedtoanypeeryet

OK,完成了规则一的测试后,我们将用于验证本条规则的相关配置删除(恢复到本实验的初始化配置),继续看下一条规则。

  1. 优选具有最大Local_Pref的路由
规则描述

当一台BGP路由器学习到关于同一个路由前缀的多条BGP路由时,首先会比较这些路由在本地的Preferred_value值,优选拥有最大Preferred_value值的路由。如果路由的Preferred_value值都相等,则比较各自携带的Local_preference值,优选具有最大Local_preference值的路由。

Local_Preference属性回顾

Local_preference是公认自决属性,值越大越优先。Local_Preference值只能在IBGP Peer之间传递,不能在EBGP Peer之间传递。本地始发的路由默认Local_Preference值为100。可用bgp default local-preference 修改默认值。

BGP路由器在向其EBGP邻居发送路由更新时,不能携带LP属性,但是对方会在本地为这条路由赋一个默认值,也就是100,然后再传递给自己的IBGP邻居。

本地network及重发布的路由,LP默认100,并能在AS内向其他IBGP邻居传输,传输过程中除非部署策略,否则LP不变。

规则验证

6921e35a-63ad-11ed-8abf-dac502259ad0.png

现在实验环境恢复成初始化环境(删除上一个选路规则验证所做的配置)。在R1及R2上都配置Loopback1口,IP为100.0.1.1/24,两台路由器都将这个子网network进BGP。

R1的配置如下:

[R1]interfaceloopback1
[R1-loopback1]ipaddress100.0.1.124
[R1-loopback1]quit

[R1]bgp100
[R1-bgp]network100.0.1.024
[R1-bgp]quit

R2的配置如下:

[R2]interfaceloopback1
[R2-loopback1]ipaddress100.0.1.124
[R2-loopback1]quit

[R2]bgp200
[R2-bgp]network100.0.1.024
[R2-bgp]quit

我们要通过操控Local_Preference让R4优选R3传递过来的100.0.1.0/24路由。那么可以在R3上对R4做export方向的策略,修改路由的LP值,将该值设置为200;而R5这头则保持默认,也就是100。如此一来在R4上,关于100.0.1.0/24的两条BGP路径,首先Preferred_Value值相等,那么继续比较Local_Preference,优选值更大的,因此来自R3的路由被优选。

R3的配置变更如下:

[R3]ipip-prefix1permit100.0.1.024

[R3]route-policyRPpermitnode10
[R3-route-policy]if-matchip-prefix1
[R3-route-policy]applylocal-preference200
[R3]route-policyRPpermitnode20
[R3-route-policy]quit

[R3]bgp345
[R3-bgp]peer4.4.4.4route-policyRPexport

在R4上验证一下:

[R4]displaybgprouting-table
BGPLocalrouterIDis4.4.4.4
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:4
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i100.0.1.0/243.3.3.302000100i
*i5.5.5.501000200i

从上面的输出可以看到关于100.0.1.0/24的路由,R4优选了来自R3的路由更新。

完成了本规则的验证后,我们将用于验证本条规则的相关配置删除,恢复成初始化配置。继续看下一条规则。

  1. 优选起源于本地的路由
规则描述

如过此前两条规则都无法做出决策,例如两条BGP路由的 Preferred_value 及Local_preference值都相等。则优选本地生成的路由(本地生成的路由优先级高于从邻居学来的路由)。

本地生成的路由包括通过network命令或import-route命令引入的路由、手动聚合路由和自动聚合路由。

  • 优选聚合路由(聚合路由优先级高于非聚合路由)。
  • 通过aggregate命令生成的手动聚合路由的优先级高于通过summary automatic命令生成的自动聚合路由。
  • 通过network命令引入的路由的优先级高于import-route命令引入的路由。
  1. 优选AS-Path最短的路由
规则描述

如果前面几条规则都无法决策出最优路径,则比较路由的AS_PATH,优选AS_PATH最短的路由。

规则验证

693f792e-63ad-11ed-8abf-dac502259ad0.png

现在实验环境恢复成初始化配置,同样让R1及R2引入100.0.1.0/24路由。我们要通过操控AS_PATH属性让R4优选R5传递过来的100.0.1.0/24路由。那么可以在R3上对R1做import方向的策略,使得R3将R1发送过来的路由在其原有AS_PATH值的基础上,增加一个100的AS号,使得路由的AS_PATH长度加长。如此一来在R4上,关于100.0.1.0/24的这两条BGP路径,首先Prefered_Value相等,那么继续比较Local_Preferecne,也相等,再往下比较,都不是本地始发的路由,那么就比较到了本条规则:优选AS_PATH最短的,因此R4将优选R5传递过来的100.0.1.0/24路由。

R3的配置如下:

[R3]ipip-prefix1permit100.0.1.024
[R3]route-policyRPpermitnode10
[R3-route-policy]if-matchip-prefix1
[R3-route-policy]applyas-path100additive
[R3-route-policy]quit

[R3]route-policyRPpermitnode20
[R3-route-policy]quit

[R3]bgp345
[R3-bgp]peer10.1.13.1route-policyRPimport

完成配置后,在R4上验证一下:

[R4]displaybgprouting-table
BGPLocalrouterIDis4.4.4.4
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:2
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i100.0.1.0/245.5.5.501000200i
*i3.3.3.301000100100i

从上面的输出可以看到,R4优选了R5传递过来的100.0.1.0/24路由。当然,可以进一步查看路由的详细信息:

[R4]displaybgprouting-table100.0.1.0
BGPlocalrouterID:4.4.4.4
LocalASnumber:345
Paths:2available,1best,1select
BGProutingtableentryinformationof100.0.1.0/24:
From:5.5.5.5(5.5.5.5)
RouteDuration:00h06m45s
RelayIPNexthop:10.1.45.5
RelayIPOut-Interface:GigabitEthernet0/0/1
Originalnexthop:5.5.5.5
Qosinformation:0x0
AS-path200,originigp,MED0,localpref100,pref-val0,valid,internal,best,select,
active,pre255,IGPcost1
Notadvertisedtoanypeeryet
BGProutingtableentryinformationof100.0.1.0/24:
From:3.3.3.3(3.3.3.3)
RouteDuration:00h02m37s
RelayIPNexthop:10.1.34.3
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:3.3.3.3
Qosinformation:0x0
AS-path100100,originigp,MED0,localpref100,pref-val0,valid,internal,pre255,IGP
cost1,notpreferredforAS-Path#这里指出了本路径没有被优选的原因。
Notadvertisedtoanypeeryet

当然,也可在R1上对R3做export方向的策略,只不过结果有所不同,可以自己观察和分析一下现象和原因。

注意:

使用route-policy来修改BGP路由的AS_PATH:

  • apply as-path xx additive 是在已有AS_PATH基础上追加xx
  • apply as-path xx overwrite 是将已有AS_PATH值替换(覆盖)成xx
  • apply as-path none overwrite 清空AS_PATH

使用route-policy来修改BGP路由的AS_PATH,在Cisco设备上只能在AS之间(EBGPpeer之间)执行,因为as-path只会在离开AS的时候发生改变。我司设备则没有这个限制,也就是说即使在IBGP peer之间应用策略来修改AS_PATH也是可以的。但是针对AS_PATH的改动必须严格谨慎。

执行bestroute as-path-ignore命令后,BGP选路时,忽略AS_Path的比较,需慎用。BGP的路由防环很大程度上依赖于AS_PATH,因此任何对AS_PATH的策略在实施的时候都应该考虑周全。

  1. Origin(IGP > EGP > Incomplete)
规则描述

本规则比较origin code,优选次序为:i > e > ?

695dd504-63ad-11ed-8abf-dac502259ad0.png

695dd504-63ad-11ed-8abf-dac502259ad0.png

规则验证

6991cbd4-63ad-11ed-8abf-dac502259ad0.png

现在,我们继续将实验环境恢复成初始化状态。在这个规则的验证中,在R1上,改用import-route的方式来注入100.0.1.0/24路由,R2则仍保持network的方式注入。

那么R1的配置变更如下

[R1]ipip-prefix1permit100.0.1.024
[R1]route-policyRPpermitnode10
[R1-route-policy]if-matchip-prefix1
[R1-route-policy]quit

[R1]bgp100
[R1-bgp]peer10.1.13.3as-number345
[R1-bgp]undonetwork100.0.1.024
[R1-bgp]import-routedirectroute-policyRP

或者使用route-policy来修改路由的origin属性,同样是修改R1的配置:

[R1]route-policyRPpermitnode10
[R1-route-policy]applyoriginincomplete
[R1]bgp100
[R1-bgp]peer10.1.13.3as-number345
[R1-bgp]network100.0.1.024route-policyRP

这 样 一 来 R1引 入 的 100.0.1.0/24 的 路 由 origin 属性 值 就 为 incomplete, 而 R2引 入 的100.0.1.0/24的路由origin属性值为IGP。完成配置后验证一下:

[R4]displaybgprouting-table
BGPLocalrouterIDis4.4.4.4
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:2
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i100.0.1.0/245.5.5.501000200i
*i3.3.3.301000100?

当然,可以进一步看详细信息:

[R4]displaybgprouting-table100.0.1.0
BGPlocalrouterID:4.4.4.4
LocalASnumber:345
Paths:2available,1best,1select
BGProutingtableentryinformationof100.0.1.0/24:#路径1
From:5.5.5.5(5.5.5.5)
RouteDuration:01h01m29s
RelayIPNexthop:10.1.45.5
RelayIPOut-Interface:GigabitEthernet0/0/1
Originalnexthop:5.5.5.5
Qosinformation:0x0
AS-path200,originigp,MED0,localpref100,pref-val0,valid,internal,best,select,active,pre255,IGPcost1
Notadvertisedtoanypeeryet
BGProutingtableentryinformationof100.0.1.0/24:#路径2
From:3.3.3.3(3.3.3.3)
RouteDuration:00h03m11s
RelayIPNexthop:10.1.34.3
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:3.3.3.3
Qosinformation:0x0
AS-path100,originincomplete,MED0,localpref100,pref-val0,valid,interna
l,pre255,IGPcost1,notpreferredforOrigin#由于Origin为?因此输给了路径1
Notadvertisedtoanypeeryet

如此一来本条规则就验证完成了。删除用于验证本条规则所做的配置,将各设备的配置恢复成实验初始化配置,继续看下一条规则。

  1. 优选MED最小的路由
规则描述

如果前面的规则都无法做出决策。那么比较这些路由的MED,优选拥有最小MED值的路由。

MED属性

MED属性为可选非传递属性,值越小越优先,一般用于AS之间影响BGP路由决策

69ac46f8-63ad-11ed-8abf-dac502259ad0.png

规则详解

BGP只比较来自同一个AS(不包括联盟的子AS)的路由的MED值。即,只有两条路由的AS_SEQUENCE(不包括AS_CONFED_SEQUENCE)属性的第一个AS号相同时,BGP才会比较二者的MED值。

如果路由没有MED属性,BGP选路时将该路由的MED值按缺省值0来处理;执行bestroutemed-none-as-maximum命令后,BGP选路时将该路由的MED值按最大值4294967295来处理。

执行compare-different-as-med命令后,BGP将强制比较来自不同自治系统中的邻居的路由的MED值。除非能够确认不同的自治系统采用了同样的IGP和路由选择方式,否则不要使用compare-different-as-med命令(可能产生环路)。

执行bestroute med-confederation命令后,只有当AS_Path中不包含外部AS号(不属于联盟的子AS),且AS_CONFED_SEQUENCE的第一个AS号相同时,才能比较MED值的大小。

执行deterministic-med命令后,将消除路由接收顺序对选路结果的影响。

规则验证

69cecf02-63ad-11ed-8abf-dac502259ad0.png

针对本规则的验证,我们将环境做了小小的变更,R2不再属于AS200了,我们把他规划到AS100,至于为什么,这里相信大家已经都想到了。R1、R2同时向AS345发布路由100.0.1.0/24,最终R4将学习到两条更新。那么现在我们的需求是,通过操控MED值,让R4优选从R5更新过来的路由。方法很简单,R5将100.0.1.0/24更新给R4,MED为默认值0,那么我们只要在R1更新路由给R3时,携带上MED=999,那么这条路由再经由R3更新给R4时,也会一并将MED携带,最终,R4将优选MED小的路径,也就是R5传递过来的路由。

R2及R5的配置变更这里就不再赘述了。

重点看R1的配置:

[R1]ipip-prefix1permit100.0.1.024
[R1]route-policyRPpermitnode10
[R1-route-policy]if-matchip-prefix1
[R1-route-policy]applycost999#设置MED值为999

[R1]bgp100
[R1-bgp]network100.0.1.024
[R1-bgp]peer10.1.13.3as-number345
[R1-bgp]peer10.1.13.3route-policyRPexport

完成上述配置后,仍然在R4上验证一下:

[R4]displaybgprouting-table
BGPLocalrouterIDis4.4.4.4
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:2
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i100.0.1.0/245.5.5.501000100i
*i3.3.3.39991000100i

从上面的输出可以看到,R4优选了R5传递过来的100.0.1.0/24的路由。因为从R3传递过来的路由MED为999,更大。

到此本条规则就验证完成了,现在删除用于验证本条规则的配置,将设备恢复成本实验初始化配置。

  1. 优选EBGP邻居发来的路由
规则描述

经过前面几条规则的比较如果BGP仍然无法决策出最优路由,那么在本规则中比较路由的类型。相对于iBGP邻居更新来的路由,BGP路由器将优选eBGP邻居传来的路由。

规则验证

69e8d3e8-63ad-11ed-8abf-dac502259ad0.png

为了验证本条规则,我们在初始化配置的基础上,在R3-R5之间建立一条iBGP的邻居关系。这样一来R3会将自己从R1学习到的BGP路由传递给iBGP邻居R5,而R5又会从另一侧学习到eBGP邻居R2更新过来的100.0.1.0/24路由,那么R5将如何优选呢?

变更的配置这里就不再赘述了,这里有一个小细节要注意,那就是R3别忘了要配置一条peer5.5.5.5 next-hop-local,否则R5自R3学习到的路由会不可用。完成配置后,我们在R5上观察一下:

[R5]displaybgprouting-table
BGPLocalrouterIDis5.5.5.5
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:2
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>100.0.1.0/2410.1.25.200100i
*i3.3.3.301000100i

从上面的输出我们可以看到R5优选了来自R2的路由,可以进一步查看路由的详细信息:

[R5]displaybgprouting-table100.0.1.0
BGPlocalrouterID:5.5.5.5
LocalASnumber:345
Paths:2available,1best,1select
BGProutingtableentryinformationof100.0.1.0/24:
From:10.1.25.2(10.1.25.2)
RouteDuration:00h11m54s
DirectOut-interface:GigabitEthernet0/0/1
Originalnexthop:10.1.25.2
Qosinformation:0x0
AS-path100,originigp,MED0,pref-val0,valid,external,best,select,active,pre255
Advertisedtosuch2peers:
4.4.4.4
3.3.3.3
BGProutingtableentryinformationof100.0.1.0/24:
From:3.3.3.3(3.3.3.3)
RouteDuration:00h02m14s
RelayIPNexthop:10.1.45.4
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:3.3.3.3
Qosinformation:0x0
AS-path100,originigp,MED0,localpref100,pref-val0,valid,internal,pre255,IGP
cost2,notpreferredforpeertype#这里指出了为何本路径不是best
Notadvertisedtoanypeeryet
  1. 优选到BGP下一跳IGP Metric较小的路由
规则描述

如果一台路由器收到关于同一个路由前缀的多跳BGP路径更新,并且经过前面几个规则都无法做出决策,并且这些路径的Next_hop属性值都不相同,那么在本规则中,将比较路由器到这些Next_hop的IGP度量值,优选到Next_hop度量值最小的那条BGP路由。

规则验证一

6a07a62e-63ad-11ed-8abf-dac502259ad0.png

仍然是将实验环境恢复到初始化状态。然后在R1、R2上开设Loopback1接口并配置IP地址:100.0.1.0/24,随后两者都把这条直连路由network进BGP。R1将路由100.0.1.0/24更新给了R3,R3将这条路由又更新给了R4,由于我们在R3上对R4做了next-hop-local,因此R4在收到这条路由时路由的Next_hop属性值为3.3.3.3;同理,R4从R5收到的100.0.1.0/24路由的Next_hop为5.5.5.5。而3.3.3.3及5.5.5.5对于R4而言又是通过OSPF学习到的。并且此刻在R4上,关于3.3.3.3及5.5.5.5的OSPF metric都是相等的。

现在我们在图中所述的R4连接R3的接口上增加配置:

[R4]interfacegigabitEthernet0/0/0
[R4-GigabitEthernet0/0/0]ospfcost10

如此一来,R4到达3.3.3.3这条路由的OSPF度量值就发生了变化,变得比到5.5.5.5的 OSPF度量值要更大,因此最终本规则将让R4做出路由优选的决策,优选R5传递过来的100.0.1.0/24路由。

[R4]displaybgprouting-table100.0.1.0
BGPlocalrouterID:4.4.4.4
LocalASnumber:345
Paths:2available,1best,1select
BGProutingtableentryinformationof100.0.1.0/24:
From:5.5.5.5(5.5.5.5)
RouteDuration:00h20m06s
RelayIPNexthop:10.1.45.5
RelayIPOut-Interface:GigabitEthernet0/0/1
Originalnexthop:5.5.5.5
Qosinformation:0x0
AS-path100,originigp,MED0,localpref100,pref-val0,valid,internal,best,select,
active,pre255,IGPcost1#IGPcost=1,这的IGPcost事实上是R4学习到的
关于5.5.5.5的ospf路由的cost,可以在R4的路由表中查看。
Notadvertisedtoanypeeryet
BGProutingtableentryinformationof100.0.1.0/24:
From:3.3.3.3(3.3.3.3)
RouteDuration:00h11m25s
RelayIPNexthop:10.1.34.3
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:3.3.3.3
Qosinformation:0x0
AS-path100,originigp,MED0,localpref100,pref-val0,valid,internal,pre255,IGPcost
10,notpreferredforIGPcost#到3.3.3.3的IGPcost变成了10,比到5.5.5.5的IGP
cost要大,因此PK输了。
Notadvertisedtoanypeeryet
规则验证二

6a21c9aa-63ad-11ed-8abf-dac502259ad0.png

现在我们进一步测试,将网络环境再做点调整:

  • R3-R5之间增加一条iBGP的连接;
  • R4配置为路由反射器RR,R3是她的Client;
  • R2取消network 10.0.1.0/24路由进BGP。

R3增加如下配置:

[R3]bgp345
[R3-bgp]peer5.5.5.5as-number345
[R3-bgp]peer5.5.5.5connect-interfaceloopback0
[R3-bgp]peer5.5.5.5next-hop-local

R4增加如下配置:

[R4]bgp345
[R4-bgp]peer5.5.5.5reflect-client

R5增加如下配置:

[R5]bgp345
[R5-bgp]peer3.3.3.3as-number345
[R5-bgp]peer3.3.3.3connect-interfaceloopback0

这样一来,100.0.1.0/24的路由首先是R3通过iBGP连接直接传给了R5,另一方面又经由路由反射器R4反射给了R5,因此R5将同时从R3及R4学习到100.0.1.0/24的BGP路由。这时候R5怎么决策?注意,由于这两条BGP路由Next_Hop属性值都是3.3.3.3,因此明显,本规则无法做出决策,因为两条路由的Next_hop都相等。只能到下一条规则中PK。

  1. BGP负载均衡
关于BGP负载均衡

严格的说,第十条并不能算得上是路由优选的规则,但是也将影响BGP路由器最终的路由表装载过程,因此也在这里一并探讨。当前面的9条选路原则都无法优选出最优路由时,并且又在BGP进程下面配置了maximum load-balancing [ ebgp | ibgp ] num,那么将执行等价负载均衡,也就是将这些等代价的BGP路径都放进IP路由表使用。

值得注意的是,虽然这些BGP等价路径在本地路由表中都被装载,最终却仍只有一条BGP路径是preferred优选的。只有优选的BGP路由才会被发送给自己的BGP邻居。

具备等价负载均衡条件的候选路径需满足如下条件:

  • 必须有相同的路径属性,如weight、LP、AS_PATH(不仅是长度,整个AS_PATH包括AS号都要相同)、origin code、MED及IGP的Distance值
  • 每一条路径的下一跳都不相同
注意事项
  • 在公网中到达同一目的地的路由形成负载分担时,系统会首先判断最优路由的类型。若最优路由为iBGP路由则只是IBGP路由参与负载分担,若最优路由为eBGP路由则只是eBGP路由参与负载分担,即公网中到达同一目的地的iBGP和eBGP路由不能形成负载分担。
  • 如果到达目的地址存在多条路由,但是这些路由分别经过了不同的AS,缺省情况下,这些路由不能形成负载分担。如果用户需要这些路由参与负载分担,就可以执行load-balancing as-path-ignore命令。配置load-balancing as-path-ignore命令后会改变路由参与负载分担的条件,路由形成负载分担时不再比较AS-Path属性,配置时需要慎重考虑。
  • load-balancing as-path-ignore命令和bestroute as-path-ignore命令互斥,不能同时使能。
iBGP等价负载均衡

6a3be15a-63ad-11ed-8abf-dac502259ad0.png

R4同时从IBGP邻居R3、R5收到100网段的路由,在不执行任何策略的情况下,这些路由通过BGP决策的规则1-8都无法抉择,并且所有的路径属性都相等,具备实施等价负载均衡的条件,命令如下 :

[R4]bgp345
[R4-bgp]maximumload-balancingibgp2

完成配置后,在R4上验证一下:

[R4-bgp]displaybgprouting-table100.0.1.0
BGPlocalrouterID:4.4.4.4

LocalASnumber:345
Paths:2available,1best,2select
BGProutingtableentryinformationof100.0.1.0/24:
From:3.3.3.3(3.3.3.3)
RouteDuration:00h11m54s
RelayIPNexthop:10.1.34.3
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:3.3.3.3
Qosinformation:0x0
AS-path12,originigp,MED0,localpref100,pref-val0,valid,internal,best,select,
active,pre255,IGPcost1#注意虽然配置了maximum-paths,路由表中关于100网段出现
了负载均衡,但R4在BGP优选动作仍然只会优选一条BGP路由,并只将这条路由更新给
BGP邻居
Notadvertisedtoanypeeryet

BGProutingtableentryinformationof100.0.1.0/24:
From:5.5.5.5(5.5.5.5)
RouteDuration:00h11m20s
RelayIPNexthop:10.1.45.5
RelayIPOut-Interface:GigabitEthernet0/0/1
Originalnexthop:5.5.5.5
Qosinformation:0x0
AS-path12,originigp,MED0,localpref100,pref-val0,valid,internal,select,active,pre
255,IGPcost1,notpreferredforrouterID
Notadvertisedtoanypeeryet

再看一下R4的全局路由表发生了什么变化:

[R4-bgp]displayiprouting-tableprotocolbgp
RouteFlags:R-relay,D-downloadtofib
------------------------------------------------------------------------------
Publicroutingtable:BGP
Destinations:1Routes:2
BGProutingtablestatus:
Destinations:1Routes:2
Destination/MaskProtoPreCostFlagsNextHopInterface
100.0.1.0/24IBGP2550RD3.3.3.3GigabitEthernet0/0/0
IBGP2550RD5.5.5.5GigabitEthernet0/0/1

我们看到,两条BGP路径都被R4装载进了路由表。这就是IBGP等价负载均衡。而如果不配置上面的maximum load-balancing ibgp 2命令,默认情况下,R4只会将被优选的路径拿出来放到路由表中。

eBGP等价负载均衡

6a5b86fe-63ad-11ed-8abf-dac502259ad0.png

  1. 优选Cluster-List 最短的路由
规则描述

如果经过前面的规则,如果依然无法决策出最优路由,那么将进一步比较候选路由的Cluster_list属性,优选最短Cluster_list的路由。

规则验证

6a21c9aa-63ad-11ed-8abf-dac502259ad0.png

首先将用于验证上一个规则的配置删除,把设备恢复成本实验的初始化配置。现在我们将网络环境再做点调整:

  • R3-R5之间增加一条iBGP的连接;
  • R4配置为路由反射器RR,R3是她的Client;
  • R2取消network 10.0.1.0/24路由进BGP。

R3增加如下配置:

[R3]bgp345
[R3-bgp]peer5.5.5.5as-number345
[R3-bgp]peer5.5.5.5connect-interfaceloopback0
[R3-bgp]peer5.5.5.5next-hop-local

R4增加如下配置:

[R4]bgp345
[R4-bgp]peer5.5.5.5reflect-client

R5增加如下配置:

[R5]bgp345
[R5-bgp]peer3.3.3.3as-number345
[R5-bgp]peer3.3.3.3connect-interfaceloopback0

这样一来,100.0.1.0/24的路由首先是R3通过iBGP连接直接传给了R5,另一方面又经由路由反射器R4反射给了R5,因此R5将同时从R3及R4学习到100.0.1.0/24的BGP路由:

displaybgprouting-table100.0.1.0
BGPlocalrouterID:10.1.45.5
LocalASnumber:345
Paths:2available,1best,1select
BGProutingtableentryinformationof100.0.1.0/24:#路径1
From:3.3.3.3(10.1.13.3)
RouteDuration:00h10m10s
RelayIPNexthop:10.1.45.4
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:3.3.3.3
Qosinformation:0x0
AS-path100,originigp,MED0,localpref100,pref-val0,valid,internal,best
,select,active,pre255,IGPcost2
Notadvertisedtoanypeeryet
BGProutingtableentryinformationof100.0.1.0/24:#路径2
From:4.4.4.4(10.1.34.4)
RouteDuration:00h09m01s
RelayIPNexthop:10.1.45.4
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:3.3.3.3
Qosinformation:0x0
AS-path100,originigp,MED0,localpref100,pref-val0,valid,internal,pre
255,IGPcost2,notpreferredforClusterList
Originator:10.1.13.3
Clusterlist:10.1.34.4
Notadvertisedtoanypeeryet

最终R5将优选来自R3的路由,而不是R4的路由。因为R3更新过来的路由Cluster_List长度为0,而R4更新过来的路由Cluster_List长度为1。

到此本条规则就验证成功了。现在清除用于验证本条规则所做的配置,将设备还原成本实验的初始化配置。

  1. 优选RouterID最小的BGP邻居发来的路由
规则描述

如果经过前面的规则都无法决策出最优路径,则优选RouterID最小的BGP邻居发来的路由。

规则验证

6a801a6e-63ad-11ed-8abf-dac502259ad0.png

在R1及R2上都发布100.0.1.0/24的路由。那么在不做任何配置的情况下,R4将学习到R3及R5传递过来的两条路由。我们什么策略都不做,然后再R4上观察一下:

6a9e4c1e-63ad-11ed-8abf-dac502259ad0.png

从上面的输出我们可以看到,R4已经优选了R3传递过来的路由,因此规则1-10都无法做出决策,R4最终比较更新这两条路由的邻居的RouterID,显然R3的RouterID3.3.3.3要小于R5的RouterID 5.5.5.5,因此R3传递过来的路由被优选。

规则补充

规则补充:如果路由携带Originator属性,则本规则的PK过程中将比较Originator的大小(不再比较Router ID),并优选Originator最小的路由。

6ac3d95c-63ad-11ed-8abf-dac502259ad0.png

在上面的拓扑环境中:

  • R1、R2、R3、R4属于同一个AS1234,AS内运行了OSPF,路由器都宣告各自的Loopback0接口,IP为x.x.x.x/32,x为设备编号。
  • R1-R4;R4-R3;R1-R2;R2-R3基于Loopback建立IBGP邻居关系。
  • R1配置为RR,R4是它的Client;R3配置为RR,R4是它的Client。
  • 在R4上引入44.44.44.0/24进BGP。

那么R1收到R4更新过来的路由,将其反射给R2并携带上Originator及Cluster_list属性值。R3同理。那么最终R2将分别从R1和R3都学习到44.44.44.0/24的路由,R2会如何优选?

  • Pre_val相等
  • Local_Pref相等
  • 都不是起源于本地
  • AS-Path一样长
  • Origin code都是i
  • MED相等
  • 都是IBGP peer发来的
  • NH相等
  • Cluster-list等长
  • 比较BGP邻居的RouterID,注意,这里由于两条路由都携带了originator属性,因此在这一轮的PK中,就不是比较R1和R3的RouterID了,而是比较这两条路由的Originator属性值。结果,由于这两条路由的起源都是R4,因此Originator值相等,都是4.4.4.4,所以本条规则仍无法决策。
  • 那么只能在往下比较了,请看下文。
  1. 优选peer ip地址最小的邻居发来的路由
规则描述

如果经过前面的一系列规则仍然无法优选出最佳路由,那么最后一步将比较邻居的IP地址。这个IP地址是在BGP路由器上的BGP配置进程汇总,peer命令后所指的那个IP。

规则验证

6ae205ee-63ad-11ed-8abf-dac502259ad0.png

仍然看上一个小节最后的实验,在R2上,最终将比较R1及R3的peer ip,在R2上指R1时,我们用的命令是peer 1.1.1.1 as-number 1234;指R3时用的命令是peer 3.3.3.3 as-number 1234,因此R1的地址要小于R3,故优选R1传递过来的44.44.44.0/24路由。

[R2]disbgpro44.44.44.0
BGProutingtableentryinformationof44.44.44.0/24:

From:1.1.1.1(1.1.1.1)
……
AS-pathNil,originigp,MED0,localpref100,pref-val0,valid,internal,best,select,
active,pre255,IGPcost2
Originator:4.4.4.4
Clusterlist:1.1.1.1
BGProutingtableentryinformationof44.44.44.0/24:
From:3.3.3.3(3.3.3.3)
……
AS-pathNil,originigp,MED0,localpref100,pref-val0,valid,internal,pre
255,IGPcost2,notpreferredforpeeraddress
Originator:4.4.4.4
Clusterlist:3.3.3.3

​审核编辑:郭婷


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 路由器
    +关注

    关注

    22

    文章

    3690

    浏览量

    113382
  • 状态机
    +关注

    关注

    2

    文章

    491

    浏览量

    27450

原文标题:BGP进阶:BGP 综合实验一

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深入了解PCI转XMC载板转接卡

    电子发烧友网站提供《深入了解PCI转XMC载板转接卡.docx》资料免费下载
    发表于 09-06 14:35 0次下载

    深入了解 MEMS 振荡器 温度补偿 MEMS 振荡器 TC-MO

    深入了解 MEMS 振荡器/温度补偿 MEMS 振荡器(TC-MO)-μPower MO1534/MO1569/MO1576/MO8021
    的头像 发表于 07-30 16:38 344次阅读
    <b class='flag-5'>深入了解</b> MEMS 振荡器 温度补偿 MEMS 振荡器 TC-MO

    深入了解表面贴装晶体谐振器DSX1210A

    深入了解表面贴装晶体谐振器DSX1210A
    的头像 发表于 07-25 14:27 307次阅读
    <b class='flag-5'>深入了解</b>表面贴装晶体谐振器DSX1210A

    深入了解恒温晶体振荡器DC5032AS

    深入了解恒温晶体振荡器DC5032AS
    的头像 发表于 07-25 10:37 234次阅读
    <b class='flag-5'>深入了解</b>恒温晶体振荡器DC5032AS

    小熊派官网正式上线 可深入了解小熊派的各款开发套件

    我们为每一款开发板打造一个开源社区,让每一位开发者都能在这里找到归属感和灵感。通过官网对硬件、软件、案例和教程的开源,大家可以深入了解小熊派的各款开发套件。
    的头像 发表于 06-13 08:42 759次阅读
    小熊派官网正式上线 可<b class='flag-5'>深入了解</b>小熊派的各款开发套件

    深入了解IEEE协会:设备MAC地址申请指南

    在数字化浪潮中,设备之间的通信变得日益频繁和重要。而在这个通信网络中,每一台设备都需要一个独特的身份标识来帮助大家有效识别设备信息,那就是MAC地址。本篇内容,英利检测将带大家深入了解IEEE协会
    的头像 发表于 05-09 17:20 474次阅读
    <b class='flag-5'>深入了解</b>IEEE协会:设备MAC地址申请指南

    华为BGP十一条选路规则盘点

    优选router ID最小的设备发布的路由(如果路由携带originator_ID属性,选路过程中将比较originator_ID的大小,不再比较router ID,并优选origin
    发表于 04-28 12:18 429次阅读
    华为<b class='flag-5'>BGP</b>十一条选路<b class='flag-5'>规则</b>盘点

    拆解FPGA芯片,带你深入了解其原理

    拆解FPGA芯片,带你深入了解其原理 现场可编程门阵列(FPGA)可以实现任意数字逻辑,从微处理器到视频生成器或加密矿机,一应俱全。FPGA由许多逻辑模块组成,每个逻辑模块通常由触发器和逻辑功能
    发表于 04-17 11:07

    BGP选路规则的实验验证与解析

    如果配置了负载分担,当前8个规则相同,且存在多条AS_Path完全相同的外部路由,则根据配置的路由条数选择多条路由进行负载分担
    的头像 发表于 04-08 10:45 994次阅读
    <b class='flag-5'>BGP</b>选路<b class='flag-5'>规则</b>的实验验证与解析

    BGP路由的生成方式及5种报文

    TCP的三次握手。先启动BGP的一端先发起TCP连接。如图所示,RTB先启动BGP协议,RTB随机端口号向RTA的179端口发起TCP连接
    发表于 03-26 14:11 3033次阅读
    <b class='flag-5'>BGP</b><b class='flag-5'>路由</b>的生成方式及5种报文

    华为路由BGP基础配置实验记录

    配置BGP的前提是要保证各个自治区域的路由均可达,所以要首先在AS 2 配置OSPF使AS 2 通畅,然后再配置BGP。由于BGP路由黑洞
    发表于 01-06 10:07 841次阅读
    华为<b class='flag-5'>路由</b>器<b class='flag-5'>BGP</b>基础配置实验记录

    深入了解Linux中vi命令的使用

    深入了解Linux中vi命令的使用 VI是一款在Linux系统中使用的文本编辑器,它是一款功能强大、灵活性高的编辑器。VI编辑器具有非常高效的命令行操作方式,并且在各个版本的Linux中都得到了广泛
    的头像 发表于 12-25 11:15 414次阅读

    BGP硬核笔记分享

    BGP——边界网关路由协议,是一种基于策略的路径矢量路由协议(可以理解为距离矢量型协议的升级版),BGP在确定最佳路径时考虑的不是速度,而是让AS能够根据多种
    的头像 发表于 12-11 09:15 703次阅读
    <b class='flag-5'>BGP</b>硬核笔记分享

    深入了解 GaN 技术

    深入了解 GaN 技术
    的头像 发表于 12-06 17:28 6015次阅读
    <b class='flag-5'>深入了解</b> GaN 技术

    动态BGP与静态BGP的区别

    动态BGP与静态BGP的区别 动态BGP与静态BGP的区别 1.静态BGP功能简单,其带宽功能,可以实现多网接入,但路径上只有通向几大运营商
    发表于 12-01 16:55