
在BGP网络设计中,针对BGP路由的各种路径属性的操作都将影响路由的优选,从而对网络的流量产生影响,掌握BGP路由的优选规则十分之重要。
一台路由器有可能学习到多条去往相同目的网络的BGP路由,BGP会在这些路由中选择一条最优的路由。
BGP定义了一整套详细的选路规则,使得路由器能够在任何复杂的、冗余的网络环境下,决策出一条最优的路由:
network命令引入的路由、import-route命令引入的路由、从对等体学习的路由;BGP在进行路由优选时,按照如上规则,依序进行判断。例如,当路由器学习到多条到达同一个目的网络的BGP路由时,拥有最大Preferred_Value值的路由将会被优选,如果路由的Preferred_Value相等,则进入下一条规则进行比较,即优选具有最大Local_Preference的路由,如果路由的Local_Preference相等,则继续进入下一条规则进行比较,直到决策出最优路由为止。需要注意的是上述罗列的只是选路规则中比较有代表性的几条,并不是全部规则,另外,不同的厂商在规则的实现上存在一定的差异,而同一个厂商的不同系统软件版本,也存在实现差异。
拓扑及描述:

10.1.xy.0/24的编址,x及y为设备编号。这种编址方式能够在实验过程中更好地观察现象。同时所有的设备配置Loopback0接口,IP为x.x.x.x/32,其中x为设备编号。这个接口地址只作为设备Router-ID以及建立IBGP邻居关系时使用。

其中,IBGP邻居关系的建立基于Loopback0口,EBGP邻居关系的建立基于直连物理接口。 初始化配置:
注:以下罗列的设备配置中,省略了设备接口IP地址的配置。
R1的配置如下:
[R1] bgp 100
[R1-bgp] router-id 1.1.1.1
[R1-bgp] peer 10.1.13.3 as-number 345
R2的配置如下:
[R2] bgp 200
[R2-bgp] router-id 2.2.2.2
[R2-bgp] peer 10.1.25.5 as-number 345
R3的配置如下:
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 0
[R3-ospf-1-area-0.0.0.0] network 10.1.34.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
[R3] bgp 345
[R3-bgp] router-id 3.3.3.3
[R3-bgp] peer 10.1.13.1 as-number 100
[R3-bgp] peer 4.4.4.4 as-number 345
[R3-bgp] peer 4.4.4.4 connect-interface loopback 0
[R3-bgp] peer 4.4.4.4 next-hop-local
R4的配置如下:
[R4] ospf 1 router-id 4.4.4.4
[R4-ospf-1] area 0
[R4-ospf-1-area-0.0.0.0] network 10.1.34.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0] network 10.1.45.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0] network 4.4.4.4 0.0.0.0
[R4] bgp 345
[R4-bgp] router-id 4.4.4.4
[R4-bgp] peer 3.3.3.3 as-number 345
[R4-bgp] peer 3.3.3.3 connect-interface loopback 0
[R4-bgp] peer 5.5.5.5 as-number 345
[R4-bgp] peer 5.5.5.5 connect-interface loopback 0
R5的配置如下:
[R5] ospf 1 router-id 5.5.5.5
[R5-ospf-1] area 0
[R5-ospf-1-area-0.0.0.0] network 10.1.45.5 0.0.0.0
[R5-ospf-1-area-0.0.0.0] network 5.5.5.5 0.0.0.0
[R5] bgp 345
[R5-bgp] router-id 5.5.5.5
[R5-bgp] peer 10.1.25.2 as-number 200
[R5-bgp] peer 4.4.4.4 as-number 345
[R5-bgp] peer 4.4.4.4 connect-interface loopback 0
[R5-bgp] peer 4.4.4.4 next-hop-local #R5对R4执行next-hop-local
当路由器学习到多条到达同一个目的网络的BGP路由时,拥有最大Preferred_Value值的路由将会被优选。

现在我们在R1和R2上配置一个Loopback1接口,配置IP地址:100.0.1.1/24,然后将这条路由发布到BGP(这部分配置不再赘述)。如此一来,R1将更新路由100.0.1.0/24给R3,而R3从自己的EBGP邻居R1学习到这条路由后,会更新给R4;同理,R5也会将学习自EBGP邻居R2的路由100.0.1.0/24更新给R4,那么对于R4来说就从R3及R5都学习到了去往100.0.1.0/24的路由,R4将如何优选?
现在,我们希望通过操控路由的Preferred_Value值来让R4优选R5传递过来的路由。

在R4配置上述命令,将R5传递过来的所有路由的Preferred_Value(在收到之后)都设置为10,而R3传递过来的路由的Preferred_Value则在本地赋予默认值0,这么一对比,当然是优选R5所通告的路由了。但是这个方法“颗粒度”太大,如果我们只是想针对特定的路由设置Preferred_Value呢?例如:

在R1及R2上新增100.0.2.0/24网段并将其发布到BGP。R1、R2的新增配置不再赘述。那么实现上图描述的需求,R4的配置可以变更成:
ip ip-prefix 1 permit 100.0.1.0 24
ip ip-prefix 2 permit 100.0.2.0 24
route-policy RP1 permit node 10
if-match ip-prefix 1
apply preferred-value 10 #设置所匹配路由的Preferred_value
route-policy RP1 permit node 20
route-policy RP2 permit node 10
if-match ip-prefix 2
apply preferred-value 10
route-policy RP2 permit node 20
bgp 345
peer 3.3.3.3 route-policy RP1 import
peer 5.5.5.5 route-policy RP2 import
注意:上述配置中route-policy RP1 permit node 20及route-policy RP2 permit node 20必须配置,因为route-policy在末尾隐含deny any,因此如果这两个node不加的话,相当于是只放行node 10中允许的路由。
[R4] display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 3.3.3.3 0 100 10 100i
* i 5.5.5.5 0 100 0 200i
*>i 100.0.2.0/24 5.5.5.5 0 100 10 200i
* i 3.3.3.3 0 100 0 100i
我们看到,在R4上,对于100.0.1.0/24路由,优选的是R3传递过来的;对于100.0.2.0/24的路由,优选的是R5传递过来的。这就实现了我们的需求。事实上还可以进一步查看路由的详细信息,例如查看100.0.1.0/24这条路由:
[R4] display bgp routing-table 100.0.1.0
BGP local router ID : 4.4.4.4
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24: #路径1
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h01m43s
Relay IP Nexthop: 10.1.34.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100, origin igp, MED 0, localpref 100, pref-val 10, valid, internal, best, select, active, pre 255, IGP cost 1
# best字样表示本路径被优选
Not advertised to any peer yet
BGP routing table entry information of 100.0.1.0/24: #路径2
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h01m43s
Relay IP Nexthop: 10.1.45.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 5.5.5.5
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred for PreVal
#这里说明了本路径没被优选的原因:Pre_Val值
Not advertised to any peer yet
OK,完成了规则一的测试后,我们将用于验证本条规则的相关配置删除,恢复成初始化配置。继续看下一条规则。
当路由器学习到多条到达同一个目的网络的BGP路由时,拥有最大Preferred_Value值的路由将会被优选。如果路由的Preferred_Value值相等,则比较路由的Local_Preference值,优选具有最大Local_Preference值的路由。

现在实验恢复成初始化环境,在R1及R2上都配置Loopback1口,IP地址为100.0.1.1/24,R1及R2都将到达100.0.1.0/24的路由发布到BGP。
我们要通过操控Local_Preference让R4优选R3传递过来的100.0.1.0/24路由。可以在R3上对R4做export方向的策略,修改路由的Local_Preference值,将其设置为200;而R5这边则保持默认,也就是Local_Preference=100,如此一来,在R4上,到达100.0.1.0/24的两条BGP路径,首先Preferred_Value相等,然后继续比较Local_Preference,优选大的,因此来自R3的路由被优选。
R3的配置变更如下:
ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply local-preference 200
route-policy RP permit node 20
bgp 345
peer 4.4.4.4 route-policy RP export
在R4上验证一下:
[R4] display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? – incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 3.3.3.3 0 200 0 100i
* i 5.5.5.5 0 100 0 200i
完成了本规则的验证后,我们将用于验证本条规则的相关配置删除,恢复成初始化配置。继续看下一条规则。
当路由器学习到多条到达同一个目的网络的BGP路由时,如果路由的Preferred_Value值相等,且Local_Preference值也相等,那么依次优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由。
本条规则略过不做验证。
当路由器学习到多条到达同一个目的网络的BGP路由时,如果路由的Preferred_Value属性值、Local_Preference属性值都相等,并且这些路由都是学习自其它邻居的,那么AS_PATH最短的路由将被优选。

现在实验环境恢复成初始化环境,同样让R1及R2引入100.0.1.0/24路由。我们要通过操控AS_PATH属性让R4优选R5传递过来的100.0.1.0/24路由。那么可以在R3上对R1做import方向的策略,在原有AS_PATH的基础上,增加一个100的AS号,使得路由的AS_PATH长度加长一个单位。如此一来R4将优选R5传递过来的100.0.1.0/24路由。
R3的配置变更如下:
ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply as-path 100 additive
route-policy RP permit node 20
bgp 345
peer 10.1.13.1 route-policy RP import
完成配置后,在R4上验证一下:
[R4]display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 5.5.5.5 0 100 0 200i
* i 3.3.3.3 0 100 0 100 100i
从上面的输出可以看到,R4优选了R5传递过来的100.0.1.0/24路由。当然,可以进一步查看路由的详细信息:
[R4] display bgp routing-table 100.0.1.0
BGP local router ID : 4.4.4.4
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24:
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h06m45s
Relay IP Nexthop: 10.1.45.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 5.5.5.5
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 1
Not advertised to any peer yet
BGP routing table entry information of 100.0.1.0/24:
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h02m37s
Relay IP Nexthop: 10.1.34.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100 100, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred for
AS-Path #这里指出了本路径没有被优选的原因。
Not advertised to any peer yet
另外,使用route-policy来修改BGP路由的AS_PATH时,需关注如下命令:
apply as-path xx additive 在已有AS_PATH基础上追加xx
apply as-path xx overwrite 将已有AS_PATH值替换(覆盖)成xx
apply as-path none overwrite 清空AS_PATH
再有,执行bestroute as-path-ignore命令后,BGP在执行选路时,将忽略AS_PATH的比较,该命令需慎用。值得强调的是:BGP的路由防环很大程度上依赖于AS_PATH,因此任何对AS_PATH的策略在实施的时候都应该考虑周全。
规则补充:AS_SET的长度为1,无论AS_SET中包括多少AS号,都将算作1个AS号。

规则补充:AS_CONFED_SEQUENCE和AS_CONFED_SET长度不做计算依据。

R1将自己的直连路由10.0/24发布到BGP。R1会将10.0/24的路由通过BGP更新给R4,再由R4将路由传
递给R5,此时路由的AS_PATH是:“(64514)100”,此处AS_PATH长度为1 ;另一方面R1也会将路由传递给R2,R2再传给R3,最后R3将路由传给R5,路由传递给R5时AS_PATH是:“300 200 100”,此处AS_PATH长度为3。在R5上观察到的现象是,它优选R4更新过来的这条10.0/24,这是因为该条路由的AS_PATH更短。

在上个环境及配置的基础之上,在R1上配置route-policy,将10.0/24路由的AS_PATH增加两个100的AS号,也就是插入“100 100 ”并且将该route-policy对R4生效(export方向)。如此一来,R4收到的10.0/24的BGP路由,AS_PATH为“100 100 100”,而当它将路由发送给联邦EBGP邻居R5时,路由的AS_PATH变成“(64514) 100 100 100”,此时AS_PATH的长度为3,即联邦的AS号是不做长度计算的。
另一边R3传递过来的10.0/24的BGP路由,AS_PATH长度还是3,两边的AS_PATH长度相等,因此比AS_PATH是比不出来了,只能往后面的规则继续PK。
当路由器学习到多条到达同一个目的网络的BGP路由时,在其他条件相同的情况下,依次优选Origin属性为IGP、EGP、Incomplete的路由。

现在,继续将实验环境恢复成初始化状态。在这个规则的验证中,在R1上,改用import-route的方式来注入100.0.1.0/24路由,R2则仍保持network的方式注入。
那么R1的配置变更如下:
ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
bgp 100
import-route direct route-policy RP
……
或者使用route-policy来修改origin,同样是修改R1的配置:
ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply origin incomplete
bgp 100
peer 10.1.13.3 route-policy RP export
network 100.0.1.0 24
……
这样一来R1引入的100.0.1.0/24路由,origin属性值就为incomplete,而R2引入的100.0.1.0/24的路由(使用network命令发布),origin属性值为IGP。
完成配置后验证一下:
[R4] display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 5.5.5.5 0 100 0 200i
* i 3.3.3.3 0 100 0 100?
当然,可以进一步看详细信息:
[R4] display bgp routing-table 100.0.1.0
BGP local router ID : 4.4.4.4
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24: #路径1
From: 5.5.5.5 (5.5.5.5)
Route Duration: 01h01m29s
Relay IP Nexthop: 10.1.45.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 5.5.5.5
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best
, select, active, pre 255, IGP cost 1
Not advertised to any peer yet
BGP routing table entry information of 100.0.1.0/24: #路径2
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h03m11s
Relay IP Nexthop: 10.1.34.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred
for Origin #由于Origin为incomplete因此输给了路径1
Not advertised to any peer yet
当路由器学习到多条到达同一个目的网络的BGP路由时,在其他条件相同的情况下,比较这些路由的 MED,优选拥有最小MED值的路由。
MED属性为可选非传递属性,值越小则路由越优,一般用于AS之间影响BGP路由决策。

在本规则的实验中,我们将环境做了小小的变更,R2不再属于AS200了,我们把他规划到AS100,至于为什么,这里相信大家已经都想到了。R1、R2都向BGP发布路由100.0.1.0/24,最终R4将学习到两条路由更新。现在我们的需求是,通过操控MED值,让R4优选从R5更新过来的路由。
方法很简单,R5将100.0.1.0/24更新给R4时,MED为默认值0,那么我们只要在R1更新路由给R3时,将MED设置为999,这条路由再经由R3更新给R4时,也会一并将MED携带,最终,R4将优选MED小的路径,也就是R5传递过来的路由。
R2及R5的配置变更这里就不再赘述了。
重点看R1的配置:
ip ip-prefix 1 permit 100.0.1.0 24
route-policy RP permit node 10
if-match ip-prefix 1
apply cost 999 #设置MED值为999
bgp 100
network 100.0.1.0 24
peer 10.1.13.3 as-number 345
peer 10.1.13.3 route-policy RP export
完成上述配置后,仍然在R4上验证一下:
[R4] display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.0.1.0/24 5.5.5.5 0 100 0 100i
* i 3.3.3.3 999 100 0 100i
从上面的输出可以看到,R4优选了R5传递过来的100.0.1.0/24的路由。因为从R3传递过来的路由MED为999,值更大。
当路由器学习到多条到达同一个目的网络的BGP路由时,在其他条件相同的情况下,EBGP路由的优先级高于IBGP路由。

本规则的验证环境要发生一些改变,我们在R3-R5之间建立一条IBGP的邻居关系。这样一来R3会将自己从R1学习到的BGP路由传递给IBGP邻居R5,而R5又会从另一侧学习到R2更新过来的100.0.1.0/24路由,那么R5将如何优选呢?
变更的配置这里就不在赘述了,这里有一个小细节要注意,那就是R3别忘了要配置一条peer 5.5.5.5next-hop-local。
完成配置后,我们在R5上观察一下:
[R5] display bgp routing-table
BGP Local router ID is 5.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 100.0.1.0/24 10.1.25.2 0 0 100i
* i 3.3.3.3 0 100 0 100i
从上面的输出可以看到R5优选了来自R2的路由,可以进一步查看路由的详细信息:
[R5] display bgp routing-table 100.0.1.0
BGP local router ID : 5.5.5.5
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24:
From: 10.1.25.2 (10.1.25.2)
Route Duration: 00h11m54s
Direct Out-interface: GigabitEthernet0/0/1
Original nexthop: 10.1.25.2
Qos information : 0x0
AS-path 100, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255
Advertised to such 2 peers:
4.4.4.4
3.3.3.3
BGP routing table entry information of 100.0.1.0/24:
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h02m14s
Relay IP Nexthop: 10.1.45.4
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 2, not preferred for peer
type #这里指出了为何本路由不是best
Not advertised to any peer yet
当路由器学习到多条到达同一个目的网络的BGP路由时,在其他条件相同的情况下,BGP将比较路由器到这些路由的Next_hop的IGP度量值,优选到Next_hop度量值最小的BGP路由。

仍然将实验环境恢复到初始化状态。R1将路由100.0.1.0/24更新给了R3,R3将这条路由又更新给了R4,由于我们在R3上对R4做了next-hop-local,因此R4在收到这条路由时路由的Next_hop属性值为3.3.3.3;
同理,R4从R5收到的路由100.0.1.0/24的Next_hop为5.5.5.5。而R4又通过OSPF学习到了去往3.3.3.3/32及5.5.5.5/32的路由,并且此刻在R4上,到达3.3.3.3及5.5.5.5的OSPF度量值都是相等的。
现在,我们在R4连接R3的接口上增加配置(该接口的缺省OSPF度量值为1):ospf cost 10。如此一来,R4到达3.3.3.3的OSPF度量值就发生了变化,变得比到达5.5.5.5的OSPF度量值更大,因此最终,本规则将让R4优选R5传递过来的100.0.1.0/24路由.
[R4]display bgp routing-table 100.0.1.0
BGP local router ID : 4.4.4.4
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.0.1.0/24:
From: 5.5.5.5 (5.5.5.5)
Route Duration: 00h20m06s
Relay IP Nexthop: 10.1.45.5
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 5.5.5.5
Qos information : 0x0
AS-path 100, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 1
# IGP cost=1,这的IGP cost事实上是R4学习到的5.5.5.5/32路由的OSPF cost,可以在R4的路由表中查看。
Not advertised to any peer yet
BGP routing table entry information of 100.0.1.0/24:
From: 3.3.3.3 (3.3.3.3)
Route Duration: 00h11m25s
Relay IP Nexthop: 10.1.34.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 3.3.3.3
Qos information : 0x0
AS-path 100, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 10, not preferred for IGP
cost #到3.3.3.3的IGP cost变成了10,比到5.5.5.5的IGP cost更大,因此PK输了。
Not advertised to any peer yet

现在将网络环境再做点调整:R3-R5之间增加一条IBGP连接。R4配置为路由反射器RR,R3是她的Client。
这样一来,首先,R3通过IBGP连接直接将100.0.1.0/24的路由传给了R5,另一方面又经由路由反射器R4反射给了R5,因此,R5将同时从R3及R4学习到100.0.1.0/24的BGP路由。这时候R5怎么决策?
注意,由于这两条BGP路由Next_Hop属性值都是3.3.3.3,因此,本规则无法做出决策,因为两条路由的Next_hop都相等,不具备度量值的可比性。只能再继续到下一条规则中决策。
如果经过前面的规则,都无法决策出最优路由,那么将进一步比较候选路由的Cluster_List属性,优选最短Cluster_List的路由。
略。
如果经过前面的规则,都无法决策出最优路径,那么将优选Router-ID最小的BGP邻居发来的路由。

仍然是将实验环境还原成初始化状态。在R1及R2上都发布100.0.1.0/24 BGP路由。那么在不做任何路由策略配置的情况下,R4将学习到R3及R5传递过来的路由:

从上面的输出可以看到,R4已经优选了R3传递过来的路由,在其他条件相同的情况下,R4将比较通告这两条路由的邻居的Router-ID,由于R3的Router-ID 3.3.3.3要小于R5的Router-ID 5.5.5.5,因此R3传递过来的路由被优选。
如果路由携带Originator_ID属性,则将使用Originator_ID代替Router-ID进行比较。

在上面的拓扑环境中:
x.x.x.x/32,x为设备编号。那么最终R2将分别从R1和R3学习到44.44.44.0/24路由,R2会如何优选?这两条路由拥有相同的Preferred_Value、Local_Preference,并且都通告自邻居,AS_Path长度一样,Origin也相同,MED也相等,还都是IBGP邻居通告而来,连Next_Hop属性也相同,另外,路由携带的Cluster_List长度也相同。那么能否使用本规则来决策呢?
注意,由于两条路由都携带了Originator_ID属性,因此在这一轮PK中,就不是比较R1和R3的Router-ID了,而是比较这两条路由的Originator_ID属性。结果,由于这两条路由的起源都是R4,因此Originator_ID相等,所以本条规则仍无法决策。那么只能在往下面的规则继续比较了,请看下文。
如果经过前面的一系列规则仍然无法优选出最优路由,那么将比较邻居的IP地址。这个IP地址是在BGP路由器的BGP配置中,peer命令后所指的那个IP地址。

仍然看上一个小节最后的实验,在R2上,最终将比较R1及R3的peer ip,在R2上配置邻居R1时,我们用的命令是peer 1.1.1.1 as-number 1234;配置邻居R3时用的命令是peer 3.3.3.3 as-number 1234,因此R1的地址要小于R3,故优选R1传递过来的44.44.44.0/24路由。
[R2] display bgp ro 44.44.44.0
BGP routing table entry information of 44.44.44.0/24:
From: 1.1.1.1 (1.1.1.1)
……
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 2
Originator: 4.4.4.4
Cluster list: 1.1.1.1
BGP routing table entry information of 44.44.44.0/24:
From: 3.3.3.3 (3.3.3.3)
……
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 2, not preferred for peer
address
Originator: 4.4.4.4
Cluster list: 3.3.3.3