BGP是经过一个复杂的算法来决定最佳路径的,BGP是一个策略工具。它的重要性通过BGP利用属性和其他参数来选择最佳路径的过程最能说明。
当存在多条到达特定目的地的有效的BGP路径时,IOS会根据收到它们的相反顺序列出这些路径。最新的路径列在最开始,最老的路径则被列在末端。为了选择最佳路径,BGP通常采取顺序比较的方法。即指定最新的一条路径为最佳路径,然后将这条最佳路径与之前收到的那些路径依次进行比较,最后得出的最佳路径就成为到达目的地的最终的最佳路径。
―――――――――――――――――――――――――――――――――――――――
首先我们先要清楚什么样的路径不能参与比较,也就是无效的,如果它满足下面这些任意一个条件,那它就是无效的:
1 路径的下一跳不可达。
2 路径未同步,但同步功能被启用了。
3 路径被入境BGP策略所拒绝,并且路由器配置了入境温和重置(soft reset )。当配置了soft reset后,即使被BGP策略拒绝的路由也会保存在RIB中。
4 路由被惩罚(dampened)
只要一条路径不符合上面那些条件,那它就是有效的,就可以被列入最佳路径的候选者中。下面我们就来说明BGP最佳路径选择的步骤。
―――――――――――――――――――――――――――――――――――――――
当前,cisco路径选择有13步。按照顺序每一步都依次进行评估直到找到一条最佳路径为止。
1 WEIGHT值最高的路径优先。WEIGHT是CISCO专有的参数,且只对配置该参数的本地路由器有效,不能传递。缺省条件下,本地始发的路径具有相同的WEIGHT值(32768),所有其它的路径的WEIGHT值为0。
2 LOCAL-PREF值(本地优先级)。CISCO IOS中,LOCAL-PREF缺省值为100。该属性只能在本AS内传递。
3 基于始发地(origination)评估路由,路由器本地始发的路径优先。依次降低的优先级顺序是:default-originate(针对每个邻居配置), default-information-originate(针对每种地址簇配置),network , redistribute , aggregate-address 。
4 评估AS-PATH的长度,AS-PATH列表最短的路径优先。但可以通过配置 bgp bestpath as-path ignore (隐藏命令)来忽略这一步。
5 评估路由的origin属性,origin属性值最低的路由优先。IGP:origin值=0;
EGP:origin值=1;INCOMPLETE:origin值=3
6 评估MED。MED值最小的路径胜出。该属性可以传递出AS。缺省条件下,只有在两条路径的第一个AS相同的情况下才会进行比较。如果配置了:bgp always-compare-med,那么对于所有路径都将比较MED,而不考虑它们是否来自于同一个AS。
7 EBGP路径优先于IBGP路径。
8 BGP优先选择到BGP下一跳的IGP度量最低的路径。
9 如果配置了maximum-paths[ibgp]n, n在2-6之间,并且存在多条等价成本的路径,那么BGP会在IP路由选择表中插入最多n条接收到的路径。这就激活了BGP多路径负载分担特性。如果没有使用可选关键字ibgp,则多路径特性就仅仅应用于ebgp路径。当不激活这一选项时,它的缺省值为1。
10 当两条路径都是外部路径时,BGP将优先选择最先收到的路径(最老的路径)。
11 BGP优先选择来自于最低的路由器ID的BGP路由器的路由。
12 如果多条路径的始发路由器ID或路由器ID相同,那么BGP将优选CLUSTER-LIST长度最短的路径。
13 BGP优选来自于最低的邻居地址的路径。