在没有做负载均衡的前提下,BGP认为一定要选出一条最优路径,在用13条规则进行选择前,该BGP路由必须满足:
1. 该路由出现在BGP拓扑表中
2. 该路由的下一跳可达
1)AS-Path
公认必遵属性,跨越As边界时,路由信息的As-Path会加上发送者的As号,若检测到重复的AS号,则丢弃分组。BGP的破环机制不如IGP那样精细,因为本身针对As,拓扑不会很复杂。
2)Origin
公认必遵属性,Origin 指明了当前路由是从哪里得到的。
IGP(i)是BGP用Network命令通告的IGP路由表中存在的路由
EGP(e)是从eBGP邻居那里得到的路由
Incomplete(?)是通过IGP重发布进BGP而得到的路由
3)Local Preference
公认必遵属性,Local Preference 仅本As有效,由iBGP发送,选择本As内一台Local Preference大的作为本As的出口路由器。
4)MED
任选不可传递属性,发给eBGP邻居,控制eBGP选路,在另一个As内选择一个MED小的作为该As的入口路由器。
5)Weight
思科专有属性,仅本Router有效,不发给任何邻居,该属性是让Router自己选择路怎么走,最高Weight值路径优先被选用。
6)Next-Hop
公认必遵属性,Next-Hop 描述了到达目的地的下一跳路由器的IP地址,具体情况如下:
凡是有路由信息通告给 iBGP 邻居,Next-Hop不变
如果iBGP邻居没有到达这个Next-Hop的IGP 路由就不会把该BGP 路由加上“>”,这种情况要在该中间路由器上敲入命令:neighbor ip address next-hop-self (只是在下一跳不可达的情况采用)。
凡是有路由信息通告给 eBGP 邻居,Next-Hop 改写为自己的更新源地址
比如B 将邻居A 的路由信息通告给eBGP邻居C,并告诉他:“你通过我的更新源地址2.2.2.2可以到达A那里”。
在B 上使用命令:neighbor ip address next-hop-unchanged 可以阻止改写动作,这时B向C通告的就是A的更新源地址1.1.1.1,如果C通过IGP可达1.1.1.1,这样做没有问题。
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地址。