原理概述
当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由,然后将该最优BGP路由与去往同一目标网络的其他协议路由进行比较,从而决定是否将该最优 BGP路由放进路由表中。注意,路由器最终是根据路由表进行实际报文转发的。在对BGP路由属性进行比较时,BGP会遵循一定的先后次序进行比较,直到确定出一条最优路由为止。在 BGP路由属性的比较过程中,首先要比较的就是路由信息首选值PreferredValue,也简称为PrefVal。
路由信息的首选值Preferred Value的取值范围是0~65535,取值越大,优先级越高。缺省情况下,Preferred Value取值为0;通过修改Preferred Value 的值,可以很方便地实现对路径选择的控制。Preferred Value属性不会发送给任何BGP邻居,仅作为本地路由器用来选择最佳BGP路径之用。
实验目的
理解 BGP路由信息首选值Preferred Value的作用掌握修改Preferred Value 属性的方法
掌握通过修改Preferred Value属性来实现流量分担的方法实验内容本实验包含了4台路由器,R1、R2、R3属于AS 100,R4属于AS 200。R1、R2、R3之间运行 RIPv2协议,同时,所有路由器都运行BGP协议,并通过各自的Loopback 0接口建立BGP邻居关系。R4通告自己的Loopback 1和Loopback 2两个接口所在的网络到BGP进程中,R3通告自己的Loopback 1接口所在的网络到BGP进程中。最后,通过修改Preferred Value的值,使得R3的 Loopback 1接口去往R4的 Loopback 1和Loopback 2接口的报文分别通过R1与R2讲行转发,从而实现流量分担,并互为备份。
边界路由器从EBGP的对等体中学习到的路由,在传递的过程中下一跳地址为边界路由器对等体的出接口地址。导致IBGP中除了此边界路由器外,其他路由器学到的此路由的下一跳均为边界路由器对等体的出接口地址;只有配置了next-hop-local后,其他路由器学到的此路由的下一跳改编为边界路由器的ip地址
1、基本配置
R1:
sys
sysname R1
int loop 0
ip add 10.0.1.1 32
int g0/0/0
ip add 10.0.13.1 24
int g0/0/1
ip add 10.0.14.1 24
q
rip 1
undo summary
version 2
network 10.0.0.0
ip route-static 10.0.4.4 255.255.255.255 10.0.14.4
bgp 100
router-id 10.0.1.1
peer 10.0.2.2 as-number 100
peer 10.0.2.2 connect-interface LoopBack0
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface LoopBack0
peer 10.0.4.4 as-number 200
peer 10.0.4.4 ebgp-max-hop 255
peer 10.0.4.4 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 10.0.2.2 enable
peer 10.0.2.2 next-hop-local
peer 10.0.3.3 enable
peer 10.0.3.3 next-hop-local
peer 10.0.4.4 enable
#
R2:
sys
sysname R2
int loop 0
ip add 10.0.2.2 32
int g0/0/1
ip add 10.0.23.2 24
int g0/0/0
ip add 10.0.24.2 24
q
rip 1
undo summary
version 2
network 10.0.0.0
ip route-static 10.0.4.4 255.255.255.255 10.0.24.4
bgp 100
peer 10.0.1.1 as-number 100
peer 10.0.1.1 connect-interface LoopBack0
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface LoopBack0
peer 10.0.4.4 as-number 200
peer 10.0.4.4 ebgp-max-hop 255
peer 10.0.4.4 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 10.0.1.1 enable
peer 10.0.1.1 next-hop-local
peer 10.0.3.3 enable
peer 10.0.3.3 next-hop-local
peer 10.0.4.4 enable
R3:
sys
sysname R3
int loop 0
ip add 10.0.3.3 32
int loop 1
ip add 10.0.33.33 32
int g0/0/0
ip add 10.0.13.3 24
int g0/0/1
ip add 10.0.23.3 24
q
rip 1
undo summary
version 2
network 10.0.0.0
bgp 100
router-id 10.0.3.3
peer 10.0.1.1 as-number 100
peer 10.0.1.1 connect-interface LoopBack0
peer 10.0.2.2 as-number 100
peer 10.0.2.2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
network 10.0.33.33 255.255.255.255
peer 10.0.1.1 enable
peer 10.0.2.2 enable
R4:
sys
sysname R4
int loop 0
ip add 10.0.4.4 32
int loop 1
ip add 10.0.44.44 32
int loop 2
ip add 10.0.55.55 32
int g0/0/0
ip add 10.0.14.4 24
int g0/0/1
ip add 10.0.24.4 24
q
bgp 200
peer 10.0.1.1 as-number 100
peer 10.0.1.1 ebgp-max-hop 255
peer 10.0.1.1 connect-interface LoopBack0
peer 10.0.2.2 as-number 100
peer 10.0.2.2 ebgp-max-hop 255
peer 10.0.2.2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
network 10.0.44.44 255.255.255.255
network 10.0.55.55 255.255.255.255
peer 10.0.1.1 enable
peer 10.0.2.2 enable
#
ip route-static 10.0.1.1 255.255.255.255 10.0.14.1
ip route-static 10.0.2.2 255.255.255.255 10.0.14.1
验证一下配置的情况
可以看到,在R3的BGP路由表中,去往10.0.44.44/32和10.0.55.55/32网络的路由条目各有两条,但是最终R3优选的都是下一跳为10.0.1.1的路由。这两条BGP路由信息的下一跳不同,但路由信息首选值PrefVal、本地优先级LocPrf、路由生成方式、AS_Path属性、Origin属性、MED属性、BGP对等体类型(IBGP邻居或EBGP邻居)等都是相同的,所以最终BGP选择了Router-ID较小的路由器R1发布的路由作为最佳路由。R1和R2的BGP路由表中,去往10.0.44.44/32和10.0.55.55/32网络的路由也各有两条,但是最终优选的都是下一跳为10.0.4.4的路由。这两条BGP路由信息的下一跳不同,但路由信息首选值 PrefVal、本地优先级LocPrf、路由生成方式、AS_Path属性、Origin属性、MED属性等都是相同的,但是 BGP对等体类型不同,所以最终R1和R2都选择了从EBGP邻居R4那里接收到的路由作为最佳路由。另外,无论是通过EBGP邻居还是IBGP 邻居学习到的BGP路由条目,在 BGP路由表中 PrefVal都显示为缺省值0。
可以看到,R3的确是通过R1去往AS 200的,R2没有分担任何流量。接下来,在R3上进行Preferred Value值的修改,使得R2分担从R3去往10.0.55.55/32的流量。
route-policy 1 permit node 10
if-match ip-prefix 1
apply preferred-value 100
#
route-policy 1 permit node 20
#
ip ip-prefix 1 index 10 permit 10.0.55.55 32bgp 100
peer 10.0.2.2 route-policy 1 import
可以看到,R1和R2的BGP路由表在修改了R3上的 Preferred Value值之后没有发生变化,说明了Preferred Value值只是作为本地路由器用来选择最佳BGP路由之用,并不会传递给任何BGP邻居。