先cue流程:满分10分
1、根据拓扑配IP;(5/10)
2、配置BGP,并按照要求配置ACL以过滤相应网段;(7/10)
3、配置route-map,满足相应的路由需求。(10/10)

拓扑如下:

R1 Loopback: 192.168.3.1/32; R2 Loopback: 192.168.3.2/32; R3 Loopback: 192.168.3.3/32


直接开始BGP部分,R1和R2同属一个AS,R3一个AS,通常一个AS里的路由器会有OSPF或者EIGRP之类的内部路由协议,将BGP的路由重发布至内部路由。但是这里我们都用BGP来做路由,所以R1-R3,R2-R3用eBGP,R1-R2用iBGP。每个路由器在BGP中都声明Loopback和本地LAN网络,WAN网络不作声明。

iBGP不修改网络的下一跳地址,因此这里在iBGP的邻居,需要加一个next-hop-self,意思是下一跳为此路由器。如果没有这句话,R1不能经R2到R3,R2也不能经R1到R3。

R1(config)# router bgp 100
R1(config-router)# network 192.168.3.1 mask 255.255.255.255
R1(config-router)# network 40.1.1.0 mask 255.255.255.0
R1(config-router)# neighbor 10.1.1.2 remote-as 100
R1(config-router)# neighbor 10.1.1.2 next-hop-self
R1(config-router)# neighbor 40.1.12.2 remote-as 200

R2(config)# router bgp 100
R2(config-router)# network 192.168.3.2 mask 255.255.255.255
R2(config-router)# network 40.1.2.0 mask 255.255.255.0
R2(config-router)# neighbor 10.1.1.1 remote-as 100
R2(config-router)# neighbor 10.1.1.1 next-hop-self
R2(config-router)# neighbor 40.1.12.6 remote-as 200

R3(config)# router bgp 200
R3(config-router)# network 192.168.3.3 mask 255.255.255.255
R3(config-router)# network 40.1.3.0 mask 255.255.255.0
R3(config-router)# neighbor 10.1.12.1 remote-as 100
R3(config-router)# neighbor 40.1.12.5 remote-as 100

这个配完以后,每个路由器上都会有两条来自BGP的提示: neighbor xxxx Up,出现这个就说明配置正确了,BGP会话建立。


接下来使用ACL滤掉所有Loopback。

这里使用偷懒的方法,所有路由器上都需要创建一个ACL,并应用在BGP中:
Router(config)# access-list 1 deny 192.168.3.0 0.0.0.255
Router(config)# access-list 1 permit any
不偷懒的写法应该是host 3.1 host 3.2 host 3.3,最后permit any,我这里用3.0网段就直接全部匹配了。

Router(config-router)# distribute-list 1 in

做完以后除了本地的Loopback,其他Loopback就都不见了。


最后用route-map,主要是设置metric和LOC_PREF,改变对网络的路由选择,这里的要求是:配置router-map,使AS100 – AS200的路由都经过R2。

解决方法是在R1和R2上设置R3 LAN网络的LOC_PREF属性值,在R3上设置去往AS100的两条路径的metric属性值。

R1(config)# access-list 2 permit 40.1.3.0 0.0.0.255
R1(config)# route-map LOC_PREF permit 10
R1(config-route-map)# match ip address 2
R1(config-route-map)# set local-preference 100
R1(config)# router bgp 100
R1(config-router)# neighbor 40.1.12.2 route-map LOC_PREF in

R2(config)# access-list 2 permit 40.1.3.0 0.0.0.255
R2(config)# route-map LOC_PREF permit 10
R2(config-route-map)# match ip address 2
R2(config-route-map)# set local-preference 200
R2(config)# router bgp 100
R2(config-router)# neighbor 40.1.12.6 route-map LOC_PREF in

以上R1的设置非必须,因为local-preference的缺省值就是100。AS内选择路由的时候会选local-preference的值大的,因此这里R1和R2都对从R3来的40.1.3.0网络进行路由策略的处理,应用route-map的时候需要应用在eBGP的neighbor的in上。

对R3来说,无论怎么样都是通过R2,路由选择的时候会选择metric较小的路由,因此我们要把R1-R3的metric设置成比R2-R3大的值。

R3(config)# access-list 2 permit any
设置两个route-map为不同的metric数值,分别应用在两条线路上。
R3(config)# route-map MED_20 permit 10
R3(config-route-map)# match ip address 2
R3(config-route-map)# set metric 20

R3(config)# route-map MED_10 permit 10
R3(config-route-map)# match ip address 2
R3(config-route-map)# set metric 10

在R1-R3上应用metric大的route-map,因此
R3(config-router)# neighbor 40.1.12.1 route-map MED_20 in
在R2-R3上应用metric小的route-map
R3(config-router)# neighbor 40.1.12.5 route-map MED_10 in


配置完成,接下来我们来检查一下配置的结果,首先使用sh ip bgp来看一下各个路由器上bgp的属性值

40.1.3.0/24这个网络通过R2的路径,LOC_PREF的值是200,下一跳直接是R3的LOC_PREF反而是100,因此会选择通过R2的路径。

40.1.1.0/24和40.1.2.0/24都是往R2的metric比往R1小,因此我们选择往R2走。

最后看一下路由表,路由的选择是否按照我们的预期。

路由器配置文件:R1_i1_startup-config R2_i2_startup-config R3_i3_startup-config