参考资料:BGP Best Path Selection Algorithm
BGP在设计的时候就是为了有多种灵活的策略进行流量的选择,所以BGP路径选择是BGP相关知识中很重要的一部分。
BGP可以开始选路的前提需求:
一、 如果打开了同步(synchronization,12.2(8)T之后默认关闭)选项 ,则iBGP中的路径必须要和路由表中从其它的IGP学到的一致。
二、 如果使用的是OSPF作为IGP,那么BGP邻居的router-id要和OSPF的邻居的router-id一致。
三、 下一跳(next_hop)必须可达
四、 如果是从eBGP邻居学到的,则AS_PATH中不得包含自己的AS(防环机制)。
五、 没有设置其它的过滤使路由更新没法送到(比如使用了bgp enforce-first-as)
满足上述几个前提需求之后,BGP通过下面的规则依次进行比较,选出路径:
0. 所有的规则都是一旦选出后不再执行下面的规则继续比较,除非该规则被人为设置为忽略。
1. 比较weight,该参数只对本地有效,而且不能传递,越大的越会去选择。
2. 比较local_pref,默认情况下local_pref是100,通过bgp default local-preference命令可以修改默认的local_pref值;通过route-map中的set可以设置某些路径的local_pref。该参数会作用在整个AS中,但是不会传递出AS;选择大的local_pref;
3. 优选选择选择本地起源的,包括使用network命令通告的、从IGP中redistribute过来的、用aggregate命令汇总产生的;在这条规则里面,如果同时有network通告的、redistribute的和aggregate总结出来的,那么手动总结的会次优选择,会优选network通告的和重分布进去的。
4. 选择AS_PATH最短的;BGP是距离矢量协议,这条给我的感觉简直就是一个距离矢量的标志一样…… 通过;这条可以通过bgp bestpath as-path ignore命令忽略掉;
5. 选择路由来源:最优选择IGP,其次选择EGP,最后选择incomplete(这个通常是redistribute来的)。
6. 选择较小的MED传送;MED的选择比较复杂,等我研究明白之后专门写文档;
7. 优选eBGP,其次选择iBGP。
8. 选择到达BGP next hop的最小的IGP metric
9. 选择是否使用多条路径
10. 对于eBGP路由,优选最老的(最早收到的)路由
11. 选择最小的router-id,如果使用了RR,那么就使用originator ID来进行选择
12. 如果router-id或者originator ID一致,则选择最短的cluster list
13. 选择邻居IP地址最小的
实验20-配置BGP路径选择-Manipulating BGP Path Selection
Manipulating BGP Path Selection
配置BGP 路径选择