在默认情况下,到达同一目的地,BGP只走单条路径,并不希望在多条路径之间执行负载均衡。当BGP路由表中有多条路径可以到达同一目的地时,需要靠比较路由条目中的路径属性,只有在比较多条路由的属性之后,才能决定选择哪条为最优路径。BGP的每条路由都带有路径属性,对于通过比较路径属性来选择最优路径,BGP需要在多条路径之间按照一定的顺序比较属性,当多条路由的同一属性完全相同时,需要继续比较顺序中的下一条属性。BGP在选择最优路径时,需要按照以下顺序来做比较:
1.最高Weight值
(选择最高Weight值的路由,Weight值为Cisco路由器特有,并且只在本地路由器有效,默认Weight值为0,本地发起路由为32768。)
2.最高LOCAL_PREF值
(如果Weight值相同,则选择拥有最高LOCAL_PREF值的路由,默认为100。)
3.本地发起路由
(如果LOCAL_PREF值相同,则选择BGP本地发起的路由,换句话说,也就是下一跳为0.0.0.0的路由,本地发起的路由有多种方式,如通过在BGP进程下命令network命令从IGP路由表导入,将其它路由协议重分布进BGP路由表,最后是汇总路由表。而通过命令network和重分布的路由优先于手工汇总的路由。)
4.最短AS_PATH
(如果本地发起路由无法比出最优路径,则选择拥有最短AS_PATH的路由,但是可以跳过这一步,输入命令bgp bestpath as−path ignore后,就会忽略对AS_PATH的比较,而直接比较下一属性。需要更加注意的是,AS_SET被认为是1个AS,而无论AS_SET中包含多少个AS,并且BGP联邦内部AS不被计算。)
5.最低Origin类型
(如果AS_PATH无法比出最优路径,则选择拥有最低Origin类型的路由,Origin表示路由最初是如何进入BGP路由表的,目前有三种进行BGP路由表的方法,从IGP导入,从EGP学习,以及重分布,它们的优先级为IGP优于EGP,EGP优于Incomplete,即IGP>EGP>Incomplete。
6.最小MED值
(如果Origin类型无法比出最优路径,则选择拥有最小MED值的路由,并且只有当多个下一跳邻居在同一AS时才比较MED值。如果要在多个不同AS的下一跳中比较MED,可在BGP进程中输入命令bgp always-compare-med,注意须保证此命令在整个AS的路由器上输入,否则可能产生路由环路。默认的MED值为0,如果收到一条没有MED的路由,也认为是0。)
7.eBGP优于iBGP
(如果MED值无法比出最优路径,则选择下一跳为eBGP的邻居而不选择iBGP邻居。都知道eBGP的路由AD值为20,而iBGP的路由AD值为200,但BGP并不在eBGP与iBGP之间比较AD值,并且在比到此步时,邻居类型才影响了最优路径的选择,这种影响是受邻居类型的影响,而不是受AD值的影响。注意:BGP联邦内部没有此规则。)
8.最小IGP metric到达下一跳的路由
(如果多条路径的下一跳邻居同为eBGP或iBGP,则选择拥有最小IGP metric到达下一跳的路由。)
9.负载均衡(如果开启的话)
(BGP并不是不能负载均衡的,如果之前的属性都无法选出最优路径,则执行负载均衡,但必须是之前的所有属性均完全相同,缺一不可。需要注意:只有负载均衡功能开启了,BGP才会执行负载均衡,否则,继续比较下一属性。)
在开启负载均衡功能时,在BGP进程下输入以下命令:
maximum-paths n (多条路径的下一跳邻居都为eBGP时,输入此命令)
maximum-paths ibgp n(多条路径的下一跳邻居都为iBGP时,输入此命令)
其中n为执行负载均衡的路径数量,最大值为6,默认为1,也就是不执行负载均衡。
如果在eBGP和iBGP邻居之间同时执行负载均衡,输入命令maximum-paths eibgp n,此命令只支持在Ipv4 VRF模式下输入,就是只能支持MPLS VPN下的eBGP和iBGP邻居之间负载均衡。
10.如果下一跳都为eBGP,则选择最早学习到的路由(即时间最长的路由)
(为了避免路由翻动,所以选择最早学习到的路由,如果要忽略比较路由学习到的时间长短,可在BGP进程下输入命令bgp best path compare−routerid,某些IOS已经自动加入此命令,并且不能删除。如果多条路由拥有相同的Router-ID,比如路由是从同一个邻居学习到的,同样也会忽略比较路由学习到的时间长短。)
11.最低Router-ID下一跳
(BGP的Router-ID选举如同OSPF,在此步,拥有最低Router-ID的下一跳路由将被选为最优路径。)
12.最短cluster list(如同AS_PATH)
[cluster list只在BGP reflector (RR)的环境下才有,功能如同AS_PATH]
13.最小下一跳的邻居地址
(如果比较之前的所有属性都无法选出最优路径,最终选择下一跳的邻居地址最小的路由,这个地址就是在建立邻居时所指的地址,也是邻居和自己建立TCP连接所使用的源地址,建立不同邻居,不可能使用相同地址,所以不可能两个不同路径的邻居地址是相同的,在这一步一定能够选出最优路径。)
文章目录
评论抢沙发