cisco路由上,BGP选择最佳路由的步骤如下:

一般认为BGP路由决策有如下11步:

1首选权重最高的路由(权重是一种cisco专用的属性,只用于当前路由器)。

2如果权重相同,则选择本地优先级最高的路由(本地优先级用于AS内部)。

3如果本地优先级相同,则选择当前路由器通告的路由(在bgp表中,当前路由器通告的路由的一下跳为0.0.0.0)。

4如果没有当前路由器通告的路由,则选择AS路径最短的路由。

5如果AS路径长度相同,则选择源头编码最小的路径。(IGP<EGP<不完全)。

6如果源码相同,则选择MED最小的路径(MED将在自主系统之间交换)。除非配置了bpp always-compare-med,否则仅当所有被考虑的路由的邻接AS都相同时,才比较MED.

备注:Internet工程任务小组(IETF)最近就bgp MED做出决定,对于没有MED的路由将其MED值设置为无穷大,这使得这种路由被选中的可能性最小。运行cisco ios软件的bgp路由器默认为,对于没有MED的路由,将其MED值视为0,这使得这种路由被选中的可能性最大。要配置路由器,使之遵循IETF标准,可使用路由器配置命令bgp bestpath med missing-as-worst

7如果MED相同,则外部路径(EBGP)优先于内部路径(IBGP)。

8如果同步被关闭,使得只有内部路径,则选择经过最近的IGP邻居的路径。

这里有个插曲,如果BGP在开启负载均衡的情况下,前8步,还无法比较出最优的路径,则进行负载,默认没有开启,则直接比较一下步。

9对于EBGP路径,选择最老的路由,以最大限度地降低路由翻滚的影响。

10首选邻居BGP路由器ID最小的路由

这里也有个插曲,如果BGP中存在RR,选择cluster-list最短的,如同AS_PATH属性。

11如果BGP路由器ID相同,则选择邻居IP地址最小的路由

只有最佳路由被加入到路由表中,并被传播给BGP邻居。

简单解释

1步查看权重,对于非当前路由器通告的路由,权重默认被设置为0,(cisco)。

2步比较本地优先级,对于所有的网络,本地优先级都默认为100。仅当网络管理员将权重或本地优先级设置为非默认值时,这两步才有用。

3步查看当前AS中的网络。路由器优先选择自己加入到BGP表中的路由,而不是从其他BGP路由器那里收到的路由。

4步选择经过的自主系统数最少的路径,这是BGP选择路径时使用得最多的准则。如果管理员不想使用经过的自主系统数最小的路径,则应操纵权重或优先级,以改变bgp选中的出站路径。

5步查看路由是如何进入bgp。进入方式通常是通过network命令(源头编码为i)或通过重分发(源头编码为?)。

6步查看MED,以确定邻居AS希望将分组发送到哪里。默认情况下,Cisco IOSMED设置为0。因此,除非邻居AS的管理员使用MED来操纵路径,否则MED不影响路径选择。

如果多条路径经过的自主系统数相同,则最常用的决策步骤是7步:从EBGP邻居那里获悉的路由优先于IBGP邻居那里获悉的路径AS中的路由器更愿意使用ISP链路前往某个网络,而不是使用内部链路来前往位于AS另一边的IBGP邻居。

如果AS路径相同,且路由器没有可用于前往目标网络的EBGP邻居(只有IBGP邻居),则通过最快的路径前往最近的出口是合理的。8步查找最近的IBGP邻居,最近的含义取决于IGP度量值。

这里有个插曲,如果BGP在开启负载均衡的情况下,前8步,还无法比较出最优的路径,则进行负载,默认没有开启,则直接比较一下步。

如果AS路径相同,且所有IBGP邻居的成本相同或所有可用于前往该网络的邻居都是EBGP邻居,则选择最老的路径(第9步)。与EBGP邻居之间的会话不太可能是同时建立的,通常有一个会话先于其他会话建立;经由最老的邻居的路径被视为最稳定的,因为该邻居正常运行的时间最长。

如果所有上述条件都相同,则选择这样的路径:10步,经由BGP路由器ID最小的邻居

这里还有个插曲,如果有RR的存在,则选择cluster-list最短的

如果BGP路由器ID也相同(如经由同一台BGP路由器),则执行11步:选择邻居IP地址最小的路由。