CCNP-32 BGP 2
写在前面:BGP的属性是BGP学习中的重点,要深刻的理解BGP的每个属性和应用范围。
实验拓扑:
实验要求:
R1
在
AS 100
中,配置
R1
与
R2 R3
成为
EBGP PEER
,
R2
与
R4 R3
成为
IBGP PEER
,同样
R3
与
R2 R4
位
IBGP PEER
,且都在
AS 200
中,
IGP
为
OSPF
。
试验目的:掌握
BGP
用属性来决定路由路径和配置的方法。
试验配置:
R1
:
R1(config)#int f0/0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#no shu
R1(config-if)#exit
R1(config)#int f1/0
R1(config-if)#ip add 172.16.4.1 255.255.255.0
R1(config-if)#no shu
R1(config-if)#exit
R1(config)#int loop0
R1(config-if)#ip add 1.1.1 .1 255.255.255.0
R1(config-if)#exit
R1(config)#int loop1
R1(config-if)#ip add 199.99.1.1 255.255.255.0
R1(config-if)#exit
R1(config)#int loop2
R1(config-if)#ip add 199.99.2.1 255.255.255.0
R1(config-if)#no shu
R1(config-if)#exit
R1(config)#router bgp 100
R1(config-router)#neighbor 172.16.1.2 remote-as 200
R1(config-router)#neighbor 172.16.4.2 remote-as 200
R1(config-router)#network 199.99.1.0
R1(config-router)#network 199.99.2.0
R1(config-router)#exit
R2
:
R2(config)#int f0/0
R2(config-if)#ip add 172.16.1.2 255.255.255.0
R2(config-if)#no shu
R2(config-if)#int f1/0
R2(config-if)#ip add 172.16.2.1 255.255.255.0
R2(config-if)#no shu
R2(config-if)#exit
R2(config)#int loop0
R2(config-if)#ip add 2.2.2 .2 255.255.255.0
R2(config-if)#exit
R2(config)#router ospf 100
R2(config-router)#router-id 2.2.2 .2
R2(config-router)#network 0.0.0 .0 0.0. 0.0 a 0
R2(config-router)#exit
R2(config)#router bgp 200
R2(config-router)#neighbor 172.16.1.1 remote-as 100
R2(config-router)#neighbor 4.4.4 .4 remote-as 200
R2(config-router)#neighbor 4.4.4 .4 update-source loopback 0
R2(config-router)#neighbor 4.4.4 .4 next-hop-self
R2(config-router)#network 172.16.2.0 mask 255.255.255.0
R2(config-router)#exit
R3
:
R3(config)#int f1/0
R3(config-if)#ip add 172.16.4.2 255.255.255.0
R3(config-if)#no shu
R3(config-if)#exit
R3(config)#int f0/0
R3(config-if)#ip add 172.16.3.2 255.255.255.0
R3(config-if)#no shu
R3(config-if)#exit
R3(config)#int loop0
R3(config-if)#ip add 3.3.3 .3 255.255.255.0
R3(config-if)#exit
R3(config)#router ospf 100
R3(config-router)#router-id 3.3.3 .3
R3(config-router)#network 0.0.0 .0 0.0. 0.0 a 0
R3(config-router)#exit
R3(config)#router bgp 200
R3(config-router)#neighbor 172.16.4.1 remote-as 100
R3(config-router)#neighbor 4.4.4 .4 remote-as 200
R3(config-router)#neighbor 4.4.4 .4 update-source loopback 0
R3(config-router)#neighbor 4.4.4 .4 next-hop-self
R3(config-router)#network 172.16.3.0 mask 255.255.255.0
R3(config-router)#exit
R4
:
R4(config)#int f0/0
R4(config-if)#ip add 172.16.3.2 255.255.255.0
R4(config-if)#exit
R4(config-if)#int f1/0
R4(config-if)#ip add 172.16.2.2 255.255.255.0
R4(config-if)#no shu
R4(config-if)#exit
R4(config-if)#int loop0
R4(config-if)#ip add 4.4.4 .4 255.255.255.0
R4(config-if)#exit
R4(config)#router ospf 100
R4(config-router)#router-id 4.4.4 .4
R4(config-router)#network 0.0.0 .0 0.0. 0.0 a 0
R4(config-router)#exit
R4(config)#router bgp 200
R4(config-router)#neighbor ccnp peer-group
R4(config-router)#neighbor ccnp remote-as 200
R4(config-router)#neighbor ccnp update-source loopback 0
R4(config-router)#neighbor 2.2.2 .2 peer-group ccnp
R4(config-router)#neighbor 3.3.3 .3 peer-group ccnp
R4(config-router)#exit
上面的配置是关于基本的
EBGP
和
IBGP
的,这次试验中比上次多出的命令解释如下:
Neighbor x.x.x.x next-hop-self
:是用来更改
BGP
的
nest-hop
属性的,有关
next-hop
属性,我的下次试验会做详细讲解;
Neighbor <word> peer-group
:配置
BGP
组,用来把基于相同的策略的
BGP
邻居放在一起,然后只需要对组进行配置就可以了,大大简化了配置的复杂度。
好了,然后我们在
R4
上观察
BGP
路由:
R4#show ip bgp
BGP table version is 13, local router ID is 4.4.4 .4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
r>i172.16.2.0/24 2.2.2 .2 0 100 0 i
r>i172.16.3.0/24 3.3.3 .3 0 100 0 i
*>i199.99.1.0 2.2.2 .2 0 100 0 100 i
* i 3.3.3 .3 0 100 0 100 i
*>i199.99.2.0 2.2.2 .2 0 100 0 100 i
* i 3.3.3 .3 0 100 0 100 i
注意用红颜色标记的部分,在
R4
上可以看到两条到达
199.99.1.0/24
与
199.99.2.0/24
的路径,但是这两条路径都选择了走上面,也就是从
R2
走,这样只有从
R2
走的路由会被写入路由表(我这里忘记
show ip route
了),这样的话
R3
就浪费了,我们可以配置
BGP
的本地优先级属性来使
199.99.2.0/24
从
R3
走,下面是配置过程:
R3(config)#access-list 1 permit 199.99.2.0 0.0.0 .255
R3(config)#route-map ccnp permit 1
R3(config-route-map)#match ip add 1
R3(config-route-map)#set local-preference 200
R3(config-route-map)#exit
R3(config)#route-map ccnp permit 2
R3(config-route-map)#set local-preference 100
R3(config-route-map)#exit
R3(config)#router bgp 200
R3(config-router)#neighbor 172.16.4.1 route-map ccnp in
R3(config-router)#exit
首先定义一条访问控制列表来匹配这条路由,然后配置策略路由
ccnp
序号
1
,匹配
ACL 1
,设置本地优先级为
200
(
BGP
默认本地优先级为
100
),配置策略路由
ccnp
序号
2
,匹配除
ACL 1
之外其他的路由,设置本地优先级为
100
,最后在邻居
172.16.4.1
的
in
方向上应用。
注意:本地优先属性只在自治系统内部传输,不在自治系统外部传输。
配置好后我们使用
clear ip bgp *
来强制重起
BGP
。然后再到
R4
上观察
BGP
路由表:
R4(config)#do show ip bgp
BGP table version is 23, local router ID is 4.4.4 .4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
r>i172.16.2.0/24 2.2.2 .2 0 100 0 i
r>i172.16.3.0/24 3.3.3 .3 0 100 0 i
* i199.99.1.0 3.3.3 .3 0 100 0 100 i
*>i 2.2.2 .2 0 100 0 100 i
*>i199.99.2.0 3.3.3 .3 0 200 0 100 i
* i 2.2.2 .2 0 100 0 100 i
与第一次的输出对比一下可以看到,
199.99.2.0/24
的路径选择发生了变化,选择了从
R3
走的路由,这样的话写进路由表里的路由的下一跳就是
R3
了,不在是
R2
了,但是从
199.99.1.0/24
走的路由还是选择
R2
为下一跳。
补充:这里我们使用的命令是
neighbor 172.16.4.1 route-map ccnp in
,方向是
in
,还有一种方法是修改方向为
out
,不过相应的邻居也需要改变,例如:
neighbor 172.16.3.1 route-map ccnp out
同样也可以达到上面的效果!
实验总结:掌握
BGP
本地优先属性在
BGP
路径选择中的作用和配置方法,会配置
BGP
组来管理一组有相同策略的
BGP
邻居。