![实验指南:BGP路径选择_职场](https://s2.51cto.com/attachment/200705/200705061178443078828.jpg?x-oss-process=image/resize,m_fixed,w_1184)
conf t
host Wills
int l 0
ip ad 1.1.1.1 255.255.255.255
int s2/0
encap f
no arp f
no frame inver
no shut
int s2/0.1 p
ip ad 10.1.1.1 255.255.255.0
frame int 102
int s2/0.2 p
ip ad 10.1.2.1 255.255.255.0
frame inter 103
ver 2
no au
net 10.00.0.0
net 1.0.0.0
net 62.0.0.0
router bgp 2001
no au
no sy
bgp router-id 1.1.1.1
nei 2.2.2.2 remote 645
nei 2.2.2.2 up l 0
nei 2.2.2.2 e 255
nei 3.3.3.3 remote 645
nei 3.3.3.3 up l 0
nei 3.3.3.3 e 255
end
Amold
conf t
host Amold
int l 0
ip ad 2.2.2.2 255.255.255.255
int s2/0
encap f
no arp f
no frame inver
no shut
int s2/0.1 p
ip ad 10.1.1.2 255.255.255.0
frame int 201
int s2/1
ip ad 10.2.2.1 255.255.255.0
encap f
no arp f
no frame inver
frame map ip 10.2.2.3 216 b
frame map ip 10.2.2.2 216 b
no shut
router rip
ver 2
no au
net 2.0.0.0
net 10.0.0.0
router bgp 645
no au
no sy
bgp router-id 2.2.2.2
nei 1.1.1.1 remote 2001
nei 1.1.1.1 up l 0
nei 1.1.1.1 e 255
nei 6.6.6.6 remote 645
nei 6.6.6.6 up l 0
end
Kimberly
conf t
host Kimberly
int l 0
ip ad 3.3.3.3 255.255.255.255
int s 2/0
encap f
no arp f
no frame inver
no shut
int s2/0.1 p
ip ad 10.1.2.2 255.255.255.0
frame int 301
int s2/1
ip ad 10.2.2.2 255.255.255.0
encap f
no arp f
no frame inver
frame map ip 10.2.2.1 316 b
frame map ip 10.2.2.3 316 b
no shut
router rip
ver 2
no au
net 3.0.0.0
net 10.0.0.0
router bgp 645
no au
no sy
bgp router-id 3.3.3.3
nei 1.1.1.1 remote 2001
nei 1.1.1.1 up l 0
nei 1.1.1.1 e 255
nei 6.6.6.6 remote 645
nei 6.6.6.6 up l 0
end
Router6
conf t
host Router6
int l 0
ip ad 6.6.6.6 255.255.255.255
int 1
int l2
ip ad 189.168.84.1 255.255.254.0
int l3
ip ad 189.168.86.1 255.255.254.0
int l4
ip ad 189.168.88.1 255.255.254.0
int s2/1
ip ad 10.2.2.3 255.255.255.0
encap f
no arp f
no frame inver
frame map ip 10.2.2.1 612 b
frame map ip 10.2.2.2 613 b
no shut
router rip
ver 2
net 6.0.0.0
net 10.0.0.0
router bgp 645
bgp router-id 6.6.6.6
no au
no sy
nei 2.2.2.2 remote 645
nei 2.2.2.2 up l 0
nei 3.3.3.3 remote 645
nei 3.3.3.3 up l 0
nei 2.2.2.2 route-reflector-client
nei 3.3.3.3 route-reflector-client
net 189.168.82.0 mask 255.255.254.0
net 189.168.84.0 mask 255.255.254.0
net 189.168.86.0 mask 255.255.254.0
net 189.168.88.0 mask 255.255.254.0
end
1,修改origin来影响BGP路径选择
Wills#sh ip route bgp | include 189
189.168.0.0/23 is subnetted, 17 subnets
B 189.168.84.0 [20/0] via 2.2.2.2, 01:44:47
B 189.168.86.0 [20/0] via 2.2.2.2, 01:44:47
B 189.168.82.0 [20/0] via 2.2.2.2, 01:44:47
B 189.168.88.0 [20/0] via 2.2.2.2, 01:44:47
从Wills的路由表状态可以看出,到达189.168.0.0/16网段是从Amold学到,若想从Kimberly学到,有几种方法,先讲根据origin来影响
Wills
access-list 1 permit 189.168.0.0 0.0.255.255
route-map ORIGIN permit 10
match ip ad 1
set origin incomplete
router bgp 2001
nei 2.2.2.2 route-map ORIGIN incomplete
end
这时,Wills上路由表的状态
Wills(config-router)#do sh ip route bgp | include 189
189.168.0.0/23 is subnetted, 17 subnets
B 189.168.84.0 [20/0] via 3.3.3.3, 00:00:07
B 189.168.86.0 [20/0] via 3.3.3.3, 00:00:07
B 189.168.82.0 [20/0] via 3.3.3.3, 00:00:07
B 189.168.88.0 [20/0] via 3.3.3.3, 00:00:07
很明显,从Wills到189.168.0.0/16网段,要走路由器Kimberly。
Wills上BGP表状态
Wills(config-router)#do sh ip bgp | include 189
BGP table version is 63, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
*> 189.168.82.0/23 3.3.3.3 0 645 i
* 2.2.2.2 0 645 ?
*> 189.168.84.0/23 3.3.3.3 0 645 i
* 2.2.2.2 0 645 ?
*> 189.168.86.0/23 3.3.3.3 0 645 i
* 2.2.2.2 0 645 ?
*> 189.168.88.0/23 3.3.3.3 0 645 i
* 2.2.2.2 0 645 ?
从邻居2.2.2.2学到的BGP条目的origin为incomplete,所以Origin Codes 标识为“?”根据BGP路径优先的选择进程,Wills将从Kimberly到达189.168.0.0/16网段
2,使用AS path属性影响BGP路径选择
上例中,我们通过BGP的origin属性来影响BGP路径选择,本例讲到达189.168.0.0/16网段是从Amold学到,若想从Kimberly学到的第二种方法
access-list 2 permit 189.168.0.0 0.0.255.255
route-map ASPATH permit 10
match ip ad 2
set as-path prepend last-as 2
或者 set as-path prepend 123 1234
router bgp 2001
nei 2.2.2.2 route-map ASPATH in
end
第一个set命令是收到路由条目所经过的最后一个AS显示的次数,第二个set命令是加入预先设定的AS值。因为BGP路径选择时会比较AS path,BGP会选择经过AS path少的路径
Wills#sh ip bgp
BGP table version is 46, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
* 189.168.82.0/23 2.2.2.2 0 123 1234 645 645 645 i
*> 3.3.3.3 0 645 i
* 189.168.84.0/23 2.2.2.2 0 123 1234 645 645 645 i
*> 3.3.3.3 0 645 i
* 189.168.86.0/23 2.2.2.2 0 123 1234 645 645 645 i
*> 3.3.3.3 0 645 i
* 189.168.88.0/23 2.2.2.2 0 123 1234 645 645 645 i
*> 3.3.3.3 0 645 i
Wills
router bgp 2001
bgp bestpath as-path ignore
end
这时,在Wills上BGP表的状态
Wills#sh ip bgp
BGP table version is 46, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
* 189.168.82.0/23 3.3.3.3 0 645 i
*> 2.2.2.2 0 123 1234 645 645 645 i
* 189.168.84.0/23 3.3.3.3 0 645 i
*> 2.2.2.2 0 123 1234 645 645 645 i
* 189.168.86.0/23 3.3.3.3 0 645 i
*> 2.2.2.2 0 123 1234 645 645 645 i
* 189.168.88.0/23 3.3.3.3 0 645 i
*> 2.2.2.2 0 123 1234 645 645 645 i
这里可以看出,配置bgp bestpath as-path ignore后,将不再比较AS path的值。通过routerID去选择路径了。
使用AS path属性过滤掉从Amold上发送的经过AS645的路由条目,要使用正则表达式
Wills
ip as-path access-list 1 deny _645_
ip as-path access-list 1 permit .*
route-map FILTER permit 10
match as-path 1
router bgp 2001
nei 2.2.2.2 route-map FILTER in
end
Wills(config-router)#do sh ip bgp | include 189
*> 189.168.82.0/23 3.3.3.3 0 645 i
*> 189.168.84.0/23 3.3.3.3 0 645 i
*> 189.168.86.0/23 3.3.3.3 0 645 i
*> 189.168.88.0/23 3.3.3.3 0 645 i
说明从Amold上发送的路由条目已经被过滤了
还可以使用filter-list 进行AS path过滤,建立as-path列表的步骤一样,不过就是不用建立route-map了
Wills
router bgp 2001
nei 2.2.2.2 filter-list 1 in
end
4,使用MED属性选择BGP最佳路径
默认情况下Wills要189.168.0.0/16网段要走Amold,下面通过修改Amold和Kimberly的mertic值来改变Wills到达189.168.0.0/16网段要走的路径
Amold
access-list 1 permit 189.168.0.0 0.0.255.255
route-map METRIC permit 10
match ip ad 1
set metric 100
route-map METRIC permit 20
router bgp 645
nei 1.1.1.1 route-map METRIC out
end
把从Amold发出的189.168.0.0/16网段的metric设为100(默认为0),这时Wills的BGP表状态
Wills(config-router)#do sh ip bgp
BGP table version is 63, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
*> 189.168.82.0/23 3.3.3.3 0 645 i
* 2.2.2.2 100 0 645 i
*> 189.168.84.0/23 3.3.3.3 0 645 i
* 2.2.2.2 100 0 645 i
*> 189.168.86.0/23 3.3.3.3 0 645 i
* 2.2.2.2 100 0 645 i
*> 189.168.88.0/23 3.3.3.3 0 645 i
* 2.2.2.2 100 0 645 i
很明显,Wills将选择metric小的路径到达目的网段
<注>本例中没有提到的一种情况就是,BGP默认并不比较通过多个AS到达目的网段的metric值,也就是说,如果Amold和Kimberly不在同一个AS中时,BGP并不比较这两个AS的mertric值。这样就有可能到达目的网段并不是走最佳路径,CISCO IOS提供了一条命令可以比较多个AS的metric值,以达到最佳路径的目的
router bgp <AS>
bgp always-compare-med
这样可以比较多个AS的metric值了
Wills
acccess-list 1 permit 189.168.0.0 0.0.255.255
route-map LOCAL_PREF permit 10
match ip ad 1
set local-preference 1000
router bgp 2001
nei 3.3.3.3 route-map LOCAL_PREF in
end
Wills(config-router)#do sh ip bgp
BGP table version is 46, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
* 189.168.82.0/23 2.2.2.2 0 645 i
*> 3.3.3.3 1000 0 645 i
* 189.168.84.0/23 2.2.2.2 0 645 i
*> 3.3.3.3 1000 0 645 i
* 189.168.86.0/23 2.2.2.2 0 645 i
*> 3.3.3.3 1000 0 645 i
* 189.168.88.0/23 2.2.2.2 0 645 i
*> 3.3.3.3 1000 0 645 i
因为Wills到Kimberly的local_pref高,所以BGP选择Kimberly到达目的网段