BGP选路原则
如果收到同一个目的地址的多条BGP路由,将按照以下顺序进行选择比较:
1.最高Weight值优先。Weight值为Cisco私有,并且只有本地有效,不会通过BGP ,传播默认weight值为0,本地发起路由为32768。
2.最高LOCAL_PREF值优先。默认为100。只能通过IBGP传播)
3.本地发起路由优先。下一跳为0.0.0.0的路由优先。本地发起的路由方式包括:
1.nework 命令从igp发布
2.将IGP路由重分布到BGP中
3.使用summary命令
使用Network和重分布优先于summary命令
4.最短AS_PATH优先。AS_SET被认为是1个AS,而无论AS_SET中包含多少个AS,并且BGP联邦内部AS不被计算。AS_PATH会随着穿越的AS而增加,通常也是用入方向的流量控制
5.最低Origin类型优先。Origin表示路由最初是如何进入BGP路由表的,目前有三种进行BGP路由表的方法,从IGP导入,从EGP学习,以及重分布,它们的优先级为IGP优于EGP,EGP优于Incomplete,即IGP>EGP>Incomplete。
6.最小MED值。只有当多个下一跳邻居在同一AS时才比较MED值。如果要在多个不同AS的下一跳中比较MED,可在BGP进程中输入命令bgp always-compare-med,注意须保证此命令在整个AS的路由器上输入,否则可能产生路由环路。默认的MED值为0,如果收到一条没有MED的路由,也认为是0。
7.eBGP优于iBGP。虽然eBGP的路由AD值为20,而iBGP的路由AD值为200,但BGP并不在eBGP与iBGP之间比较AD值,并且在比到此步时,邻居类型才影响了最优路径的选择,这种影响是受邻居类型的影响,而不是受AD值的影响。注意:BGP联邦内部没有此规则。
8.最小IGP metric到达下一跳的路由。如果多条路径的下一跳邻居同为eBGP或iBGP,则选择拥有最小IGP metric到达下一跳的路由。)
9.负载均衡。BGP并不是不能负载均衡的,如果之前的属性都无法选出最优路径,且开启负载均衡时,进行负载均衡。
在开启负载均衡功能时,在BGP进程下输入以下命令:
maximum-paths n (多条路径的下一跳邻居都为eBGP时,输入此命令)
maximum-paths ibgp n(多条路径的下一跳邻居都为iBGP时,输入此命令)
其中n为执行负载均衡的路径数量,最大值为6,默认为1,也就是不执行负载均衡。
10.如果下一跳都为eBGP,则选择最早学习到的路由(即时间最长的路由)。为了避免路由翻动,所以选择最早学习到的路由,如果要忽略比较路由学习到的时间长短,可在BGP进程下输入命令bgp best path compare−routerid,某些IOS已经自动加入此命令,并且不能删除。如果多条路由拥有相同的Router-ID,比如路由是从同一个邻居学习到的,同样也会忽略比较路由学习到的时间长短。
11.最低Router-ID下一跳
12.最短cluster list(如同AS_PATH)
[cluster list只在BGP reflector (RR)的环境下才有,功能如同AS_PATH]
13.最小下一跳的邻居地址。如果比较之前的所有属性都无法选出最优路径,最终选择下一跳的邻居地址最小的路由,这个地址就是在建立邻居时所指的地址,也是邻居和自己建立TCP连接所使用的源地址,建立不同邻居,不可能使用相同地址,所以不可能两个不同路径的邻居地址是相同的,在这一步一定能够选出最优路径。
BGP选路控制
选路控制分为出发方向选路控制和入方向选路控制。
出方向上,通常做法是针对邻居配置入方向route-map ,根据前缀或其他信息修改local-prefence 改变优先级。达到优先目的出方向控制的目的。出方向控制取决于接收的路由条目,接收到的条目越多,可以控制的粒度越细。
MED在某些情况下也用于出方向的选路控制。举例,AS 号aaaa,和AS bbbb使用option A 建立两条NNI , 为了使用最短路径到达对方AS,可以在ASBR 配置set metric-type internal 将IBGP邻居得到的med发送给对端,对端根据MED值选路。
入方向通过as-path来一定程度上影响入方向流量,通过as-path prepend命令,增加远端收到as-path长度,如果远端前三个属性相同,则根据as-path长度选择出方向路径。
另外入方向控制还可以通过控制通告前缀长度来影响入方向流量。例如,有A,B出口,前缀是47.77.124.0/24, 可以向A通告47.77.124.0/25,47.77.124.0/24,向B通告47.77.124.128/25,47.77.124.0/24。这样47.77.124.0/25就会从A方向进入,47.77.124.128/25就会从B方向进入。