先说说BGP选路的顺序,BGP通常使用顺序比较的方法。它指定第一条路径(最新的路径)作为当前的最佳路径,然后比较当前的最佳路径和列表中的下一条路径,直到比较到有效路径列表的末端。
举例说明:比如BGP接受了3条路径,1,2,3,其中1是最早接收的路由,3是最新接收的路由,那么,BGP会首先比较路径3和路径2,从中选出最优的路径,再去和路径1进行比较。从而得出最优路径。

   当然,想要成为最优路径的竞争者,也是有一定条件的,如果路径出现以下任意一种情况,都将被取消竞选资格。
   1. 下一跳不可达。
   2. IGP和BGP未同步。
   3. 路由被入境BGP策略所拒绝,并且路由器配置了soft reset。
   4. 路由被惩罚(dampened)

   现在正是进入BGP选路所遵循的13条军规:
   1. 比较weight值,谁的值越高,优选谁。weight是cisco私有属性,且本地有效。默认为32768.
   2. 比较local-pref,谁的优先级最高,优选谁,默认值为100.
   3. 比较本地起源属性(origination),这里要强调是本地起源,即本地发布,这条军规容易和origin军规混淆,比较原则如下:default-originate > network > redistribute > aggregate-address. 说明,default-originate是指通过route-map来强制指定起源属性,这个配置将优于network属性。
   4. 比较as-path,谁的as-path列表最短,就选谁。当然,你也可以屏蔽掉这条军规,命令为“bgp bestpath as-path ignore”,这是个机密,属于隐藏命令,你可以亲手尝试一下。
   5. 比较路由的origin属性,igp > egp > incomplete。
   6. 比较MED值,谁的值越小,优选谁。
   7. ebgp路径优于ibgp路径。
   8. 到达BGP下一跳的IGP度量,谁最小,优选谁。这么干,使得本地拓扑信息被考虑进去。
   9. 根据是否配置了 maximum-path [ibgp] ,来决定是否执行负载均衡。
   10. 如果存在两条外部路径时,BGP将优先选择最先收到的路由。
   11. 比较对端BGP的route-id,谁的最小,优选谁。
   12. 如果route-id相同的话,那么就比较cluster-list的长度,谁的最短,优选谁。
   13. 比较BGP的邻居地址,谁的最低,优选谁。