详解BGP的14条选路原则
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BGP是一个路径矢量路由协议,它的工作就是在自主系统间交换路由信息,以便发现访问互联网某处数据的最有效路径。
如何选择最佳路径进行路由?思科无边界网络为我们揭示了BGP的14条选路原则:
BGP的选路原则:前提(路由的下一跳可达、关闭同步、路由没有被惩罚、前缀没有被入境路由策略拒绝),具体原则如下:
1:weight先比较管理权重(越大越优先),这个参数本地有效。
虽然Weight属性是Cisco 私有的,但是很多厂商也是内置该属性(但无法显示及修改),这样就保证了本地始发的路由是最优先的,因为本地始发路由的Weight为32768,从其他BGP Peer学习过来的路由的Weight为0.
2:local-pref本地首选项(越大越优先),这个参数在本AS内传递。
Local Preference 属性只能在IBGP Peer之间传递,如果在EBGP Peer之间收到的路由的路径属性中携带了Local Preference,则会触发Notifacation报文,造成会话中断。
3:路由器本地始发的路径优先。
本地始发的路径特点是next-hop为0.0.0.0,weight 为32768。
可以使用不同的方式比如network或redistribute等,那么这些方式之间是存在优先顺序的原则:network>redistribute>aggregate,但该原则是不会作为BGP路由选路策略的。
4:具有最短AS-path路径(就是AS-PATH中AS最少的优先)的路由优先。
但是可以配置bgp bestpath as-path ignore来忽略这一步。
注意:在做聚合路由时,使用as-set后产生的AS-Path列表中的{}里的AS号长度只算一个AS号的长度;而在联盟内的AS-Path列表中的()的AS号长度不做计算依据!不同方向的route-map对于插入的AS号的位置是不同的。
5:比较origin属性,具有最低origin源码。
三种不同的Origin属性的优先顺
序:IGP>EGP>incomplete,Origin属性会一直在BGP路由中携带。
很少使用设置Origin属性作为BGP路由选路策略。
6:评估MED(MED值最小的路径胜出)。
默认情况下,只比较来自同一AS的BGP路由的MED值(就是AS-sequence中第一个AS相同才比较)。
命令bgp always-compare-med对于所有路径都比较MED,不考虑他们是否来自同一个AS。
如果使用了这个选项要在AS内都这么配置(避免路由选择环路)。
(任何开头为as-confed-sequence的都被忽略比较MED值,如果配置了bgp always-compare-med那么会进行比较)。
MED备注:Cisco建议在所有新网络部署中均启用bgp deterministic-med命令。
对于现有的网络,必须同时在所有路由器上部署此命令,或者逐步部署此命令,但要注意避免可能出现的内部 BGP (iBGP) 路由环路。
当BGP收到多个通往特定目标的路由时,它会按收到路由的相反顺序列出它们(从最新到最旧).然后,BGP 按以下顺序成对比较路由:从最新的条目开始,并向最旧的条目移动(从列表顶部开始,向下移动)。
例如,将 entry1 与 entry2 进行比较。
随后,将这两个中的较好者与 entry3 进行比较,依此类推。
当启用bgp deterministic-med命令时,会打乱这个顺序将来自同一个自治系统的路由分组到一起,然后比较每一组的最佳条目。
Show ip bgp 可以看出效果。
如果激活了bgp bestpath med confed命令只有AS-Confed-sequence的路径才比较MED 值。
如果一条路径包含了任何外部自制系统,那么就不进行比较。
7:EBGP优于IBGP;EBGP优于联邦EBGP(联邦eBGP和联邦iBGP不具有可比性,不比较。
因为联邦ebgp和联邦ibgp都被看做内部路径没有差别)。
如果都是EBGP对等体收到的条目或者都是从IBGP对等体收到的条目或者分别从联邦EBGP和联邦IBGP对等体收到的条目则继续向下一步进行。
8:BGP优先选择到下一跳IGP度量值最低的路径。
(不管都是EBGPpeer还是都是IBGPpeer还是分别是联邦EBGP和联邦IBGP都比较这一步)
9:当前面的8条选路原则都无法优选出最优路由时,并且在BGP进程下面配置了maximum-paths [ibgp] <1-16>,那么将执行等价负载均衡,如果没有ibgp关键字,那么只会对EBGP对等体收到的路由执行等价负载均衡,如果不配置maximum-paths那么将进行到下一条选路原则。
不管是IBGP还是EBGP受到的路由要实现负载均衡必须as-path完全相同,包含as-set 的和联邦子AS的也必须完全相同,也就是()和{}里面也要完全相同,如果有联邦EBGP对等体和联邦IBGP对等体收到的路由他们两个之间不可以负载均衡。
负载均衡show ip bgp x.x.x.x明细才可以看到,有multipath标记的都会装入路由表(show ip route)。
10:当多条都是从EBGP收到的路由时(外部路径时,联邦EBGP对等体不算,因为是内部路径),BGP优先使用最先收到的路由条目(最老的路径)。
这能最小化路由抖动。
如果BGP 进程下使用bgp bestpath compare-routerid命令,则忽略本原则,跳到第11条选路原则;当多条路由具有相同的router-id时也忽略本原则,当没有当前最佳路由时,也忽略本原则,例如提供最佳路径的邻居down掉。
(仅ebgp路由)
11:BGP优选具有最低的router-id的路由。
如果路径包含RR属性,那么在路径选择过程中就用originator-id来代替router-id进行比较(就是originator-id之间进行比较)。
12:如果orginator-id相同,那么BGP优选cluster-list长度最短的路径。
这种情况只出现在RR的环境中。
13:首选来自于最低邻居地址(neighbor后指定的邻居地址)的路径,越小越优先。
这个地址是在BGP对等体上配置并使用的地址,这个地址是本地对等体路由器在其上配置TCP
邻居并与远端对等体建立连接时采用的地址。
14:BGP自定义路径选择过程:BGP Cost Community(BGP成本团体)的扩展团体属性提供了自定义最佳路径选择过程的方式。
这个自动路径选择过程插入在BGP13条选路原则的第8条之后(优先到下一跳IGP-cost最低的路径),首选成本值最低的路径。
但是可以使用bgp bestpath cost-community ignore来忽略这一步操作,配置时要在AS内或联邦内统一配置,这样可以避免出现路由选择环路。
成本团体设置子句使用cost communityID(成本团体ID编号0到255)和cost number(成本编号值0到4,294,967,295)进行了配置。
先比cost number后比较cost communityID,都是越低越优先.对于未用成本编号值专门配置的路径,将指定默认成本编号值为
2,147,483,647。
此值是0和4,294,967,295之间的中央点。
这个属性传递给邻居时要有send-community命令.
这个团体属性为非传递的扩展团体属性。
会传递给IBGP和联邦IBGP和EBGP对等体,不会传递给EBGP对等体。