TOP Seven:(一般够用)
Weight,Loc都比大,前者选本Router出口,后者选本AS出口
As_Path看最短,本地路由有优势,ie?比来源
MED比谁低,选个外部AS的好入口
eBGP路由比iBGP强,还得中间还夹个联盟
1)优选Weight 最大的路由
Weight值仅本地有效,所以一般这样实现:A和B通告给我相同的一条路由,我想选A,就利用Route-map将A通告给我的路由的Weight都Set高一些。
注意Route-map一般是要限定具体路由时才用,如果没有路由的针对性,用 neighbor 1.1.1.1 weight 200 这样的命令就行。
2)选择LocPrf 最大的路由
LocPrf 即本地优先级,仅AS内有效。注意一般是对EBGP邻居传过来的路由进行LocPrf 值的修改(neighbor + route-map in),然后自动在本AS中的IBGP邻居中传播这个属性,告诉整个AS内部去往外部AS的那条路由由我这里走。
这样实现是由于iBGP 邻居的水平分割原则,使得修改iBGP 邻居通告路由的LocPrf 值没有任何意义,因为没有延续性的传递。
3)选择本路由器通过Network命令或者IGP重发布进来的路由
类似于地方保护主义,认为自己的东西是比较可靠的,关键字:本路由器
4)选择AS_PATH 路径最短的路由,即经过的AS数最少。
5)选择Origin最优的路由,优先级是 i > e > ?
【用Network通告的路由】>【eBGP邻居通告的路由】>【IGP重发布进来的路由】
6)选择MED值最低的路由,MED 用来选择外部AS的入口
即当有去往同一个目的地的两条路由,通过同一个外部AS的两个eBGP 邻居通告的时候,才会比较MED 来选择,以哪一台路由器作为该AS的入口。
如果路由器上配置了 bgp always—compare—med ,在全部的路径进行MED比较。但是这需要全体AS都同时启用这个功能,否则有可能发生路由环路。
如果路由器上配置了 bgp bestpath med confed ,将对所有只包括AS_CONFED_SEQUENCE的路径进行MED比较(即路径是起源于本地联盟)。
如果接收到的路径没有分配MED值,则将此路径分配为0,除非路由器上配置了bestpath missing-is-worst,将被看作MED值为4,294,967,295的路由将在注入到BGP路由选择表之前被改为4,294,967,294。
7)优选eBGP路由,其次是联盟(Confederation)外部路由,再次选iBGP路由
8)优选具有最低IGP开销的路由
由于该Metric 值是IGP的,所以不能简单的通过在接口上调整bandwith 来实现。
9)如果使用了BGP多路径(默认是只能有1条最优路径),同时从相邻的AS或者子AS,学习到多条外部或联盟外部路由。这些路径均会放入路由表中,当发送更新其他路由器的时候,最旧的路径被认为是最优的。
10)如果都是外部路由,优选最先学习到的
11)如果在同一时间,学习到多条到同一目的地的路由,优选最小BGP-router-ID的路由
注意如果一个路径包括路由反射器属性,起始者标识将代替路由器标识在路径选择过程中起作用。
12)如果路由从路由反射器上学习到,优选最小Cluster-ID(BGP_ID of the route reflector)长度的路由
如果运行客户机和其他反射器族中的RR/Clients之间做对等连接,路由器必须知道BGP协议中的RR的具体配置。
13)优选具有最低对等体地址接收到的路径
这个地址是本地对等体路由器在其上配置TCP邻居并与远端对等体建立连接时采用的地址,即neighbor后面的IP地址。