一、BGP 13条选路原则

1、W ,即属性 Weight( 思科的私有属性,本地有意义,越大越优先,默认情况下从邻居学到的weight值为0,只能用在in方向)

A、针对邻居修改来自该邻居的所有路由的Weight

B、明细的用Route-map修改某些路由

2、L ,即Local Preference (本地优先级)

通常情况用于离开本AS的选路,默认为100,可以在IBGP邻居之间传递,不会更新真正的EBGP邻居

全局修改;Route-map

3、O ,即属性Sourced(本地起源)

4、A,即属性AS-PATH

5、O ,即“Origin”(起源代码)

6、M,即属性MED(多出口分离器)

7、E,属性EBGP(优于IBGP)

8、M,即属性代表到达更新源的Metric值小的进行下一跳

9、L,即属性负载均衡

10、O,即属性建立时间更久的EBGP邻居

11、R,属性更小的RID

12、C,属性更短的Cluster-list

13、优选来自用最低地址建立BGP连接的邻居的路由条目

【Next-hop 可达是选路的前提】

二、BGP选路拓扑

bgp 选路原则 记忆 bgp选路原则详解_权重

 

我们在R1和R2配置EIGRP,通告lo0和直连关闭汇总,并建立IBGP邻居关系,同时R1和R2分别与R3建立EBGP邻居关系. R3 BGP通告两个lo (lo0 33.1.1.1 lo1 3.3.3.3)

R1:

bgp 选路原则 记忆 bgp选路原则详解_R3_02

 

R2:

bgp 选路原则 记忆 bgp选路原则详解_优先级_03

 

R3:

bgp 选路原则 记忆 bgp选路原则详解_bgp 选路原则 记忆_04

 

1、使用Weight值来干预BGP选路

BGP优先权重最大的,默认从BGP邻居学到的路由的Weight值为0,从本设备宣告重分布或者汇总路由的权重值为32768,我们针对邻居修改来自邻居的所有路由的权重值,增大来自R2的所有路由权重值,使R1优先选择R2作为下一跳:

bgp 选路原则 记忆 bgp选路原则详解_优先级_05

 

以上R1所有路由都选择R2作为下一跳,如果明细来干预选路,我们需要用到Route-map:

R1(config)#ip prefix-list 1 seq 5 permit 3.3.3.3/32

R1(config)#route-map Weight permit 10

R1(config-route-map)#match ip address prefix-list 1

R1(config-route-map)#set weight 2 ---设置权重为2,即优于来自R2的路由,此时是有问题的

R1(config)#

router bgp 100

R1(config-router)#neighbor 13.1.1.3 route-map Weight in---只能在in方向调用

R1#clear ip bgp * so

bgp 选路原则 记忆 bgp选路原则详解_权重_06

 

此时R1上3.3.3.3的路由权重为2已经优于R3,但是我们发现33.1.1.1的路由只有一个下一跳,这就是刚刚提到的问题,route-map不仅仅可以设置BGP的属性,当匹配了前缀列表或ACL时一定要考虑其他的路由是否还需要收取,R1还需要收取来自R3的其他路由条目

修改:R1(config)#route-map Weight permit 20---只需要增加一个序列号,行为是permit,那么匹配条件为任意

bgp 选路原则 记忆 bgp选路原则详解_优先级_07

 

2、使用Weight值来干预BGP选路,控制R2 ,R1上33.1.1.1 路由选择R2作为下一跳

bgp 选路原则 记忆 bgp选路原则详解_R3_08

 

修改本地优先级后只更新给IBGP邻居,也就是R2修改本地优先级后更新给R1,不会更新R3:

R2(config)#router bgp 100

R2(config-router)#bgp default local-preference 101 ----全局修改

bgp 选路原则 记忆 bgp选路原则详解_优先级_09

 

我们使用Route-map调用,来自R3的3.3.3.3的路由R1直接走R3,R2走R2到达R3,只能在in方向生效,R1更改本地优先级后更新给IBGP邻居R2:

bgp 选路原则 记忆 bgp选路原则详解_权重_10

 

查看R1和R2,R1 33.1.1.1通过R2到达R3,R2查看3.3.3.3路由通过R1到达R3:

bgp 选路原则 记忆 bgp选路原则详解_优先级_11

 

R2查看收到R1更改的BGP本地优先级属性,3.3.3.3路由本地优先级同样更改

102:

bgp 选路原则 记忆 bgp选路原则详解_优先级_12

 

3、O(Organization) Sourced,本地起源

R2一个环回口被本地通告时用Route-map修改为Weight=0

R1重分布静态路由得到的2.2.2.2 更新

bgp 选路原则 记忆 bgp选路原则详解_R3_13

 

R2(config)#int lo 1

R2(config-if)#ip address 2.2.2.2 255.255.255.255

R2(config)#route-map Test

R2(config-route-map)#set weight 0

R2(config)#router bgp 100

R2(config-router)#network 2.2.2.2 ma 255.255.255.255 route-map Test

bgp 选路原则 记忆 bgp选路原则详解_权重_14

 

本设备生成的路由在Weight无效(0)当然本地优先级默认为100情况下,是最优的。

(valid, sourced, local, best)

4、A (Asia)AS-Path ---越长越不优先

33.1.1.1选择R2作为下一跳,3.3.3.3选择R3作为下一跳

R1#sho access-lists

Standard IP access list 33

10 permit 33.1.1.1 (1 match)

R1#sho run | s route-map ASPATH

neighbor 13.1.1.3 route-map ASPATH in

route-map ASPATH permit 10

match ip address 33

set as-path prepend 200 200

route-map ASPATH permit 20

bgp 选路原则 记忆 bgp选路原则详解_R3_15

 

有一条隐含的命令bgp bestpath as-path ignore ---as-path ignore隐含的

R1(config-router)#bgp bestpath ?
compare-routerid Compare router-id for identical EBGP paths
cost-community cost community
igp-metric igp metric
med MED attribute

R1(config-router)#bgp bestpath a i ----方便记忆使用该命令进行操作,忽略as-path选路

bgp 选路原则 记忆 bgp选路原则详解_优先级_16

 

忽略as-path选路后R1上到33.1.1.1路由直接到R3而没有选择AS-path短的路径到R2:

bgp 选路原则 记忆 bgp选路原则详解_bgp 选路原则 记忆_17

 

5、起源代码干预选路--O ,即“Origin”(起源代码)

R1(config)#router bgp 100
R1(config-router)#no neighbor 13.1.1.3 route-map ASPATH in
R1(config-router)#no bgp bestpath as-path ignore

以上是删掉干扰的因素

i---igp(通告、aggregate)

e--egp (不存在)

?--incomplete(重分布产生的路由 )

i优于e,e优于?

需求:33.1.1.1选择R2作为下一跳

R1(config)#route-map ORIGIN pe
R1(config)#route-map ORIGIN permit 10
R1(config-route-map)#match ip address 33
R1(config-route-map)#set origin incomplete ----设置incomplete
R1(config)#route-map ORIGIN permit 20
R1(config-route-map)#router bgp 100
R1(config-router)#neighbor 13.1.1.3 route-map ORIGIN in ---针对邻居R3设置incomplete

在以上4个选路都一样情况下,i由于?所以选择R2作为下一跳:

bgp 选路原则 记忆 bgp选路原则详解_权重_18