BGP的路径选择

参考资料: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地址最小的

《BGP的路径选择》上的一个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据