实验步骤:
1、根据拓扑配置接线,配置IP;
2、在骨干网中(PE和P)配置OSPF;
3、在骨干网中(PE和P)配置MPLS;
4、配置PE上BGP,VRF及VPN MPLS。


配IP就略过了,首先在PE和P上配置骨干网路由,我们用OSPF 1,所有的网络(路由器互连及Lo)都放在area 0。

配置完成之后应该在PE和P上要能看到PE和P的所有网络以及Lo。

接下来在P的所有端口以及PE与P相连的端口(不包括Lo)启用MPLS,以及设置MTU MPLS为1560:
Router(config-if)# mpls ip
Router(config-if)# mpls mtu 1560

将Lo地址作为LDP的Router-ID:
Router(config)# mpls ldp router-id Lo0

对于LDP的问题请移步另一篇总结:请点击此处


接下来开始做VPN。

首先配置VRF,每个PE需要配置两个VRF,VRF TC和VRF IT,并应用在相应的端口上。

PE3_1(config)#ip vrf TC
PE3_1(config-vrf)#rd 25253:100 (AS号:25253)
PE3_1(config-vrf)#route-target export 25253:100
PE3_1(config-vrf)#route-target import 25253:100
PE3_1(config-vrf)#exit
PE3_1(config)#int f0/0
PE3_1(config-if)#ip vrf forwarding TC
% Interface FastEthernet0/0 IP address 194.10.31.1 removed due to enabling VRF TC
PE3_1(config-if)#ip add 194.10.31.1 255.255.255.252
PE3_1(config-if)#end

配置完成以后会发现路由表里192.10.31.0/30这个网就消失了,因为它被放到VRF TC里面去了,所以要找到这个网络需要使用命令:sh ip ro vrf TC

如果想要ping到CE_TC31,需要使用 ping vrf TC @ip

接着我们配置VRF IT:

PE3_1(config)#ip vrf IT
PE3_1(config-vrf)#rd 25253:200
PE3_1(config-vrf)#route-target export 25253:200
PE3_1(config-vrf)#route-target import 25253:200
PE3_1(config-vrf)#exit
PE3_1(config)#int f0/1
PE3_1(config-if)#ip vrf forwarding IT
% Interface FastEthernet0/1 IP address 194.20.31.1 removed due to enabling VRF IT
PE3_1(config-if)#ip add 194.20.31.1 255.255.255.252
PE3_1(config-if)#end

在rd和route-target的配置上需要把这两个VRF分开。

rd和route-target的作用:
rd:Route Distinguisher,从名字上理解就可以。举个好理解的例子,假设IT和TC拥有两个LAN网络,但是这两个LAN网络网段是一样的,比如都是10.0.0.0/24,这时候PE就需要把这两个网络区分开,分别传给不同的CE才行,于是rd就像是网段的一个马甲,IPv4的网络穿上了rd这个马甲变成了全局唯一的VPNv4,比如TC的rd是25253:100,IT的是25253:200,同样的两个LAN网络在PE看来就是100:10.0.0.0和200:10.0.0.0。到了另一端的PE,rd就没用了,于是马甲就脱下来就行。
route-target的作用就是把不同的路由信息放进正确的vrf里面。打个比方,TC和IT是MPLS VPN会所的大客户,route-target就是他们的会员卡信息,vrf就是会员预留VIP包房,TC的路由信息来了,自带route-target的信息,会所一看,请进100号包间,IT的过来,请进200号包间。那如果说IT和TC想串门想互相通信可不可以,也是可以的,要跟会所申请会员卡信息互通,需要给route-target import加上可以进入彼此的包间号码。

同样在PE3_2上也配置相同的配置(除了改一下端口上的ip地址)

接下来我们开始配置CE,在IT的CE上配置OSPF 1,所有网络均属于area 0;TC的CE上配置RIPv2,记得no auto-summary。CE的路由协议network两个网络:本地LAN网络以及CE和PE相连的网络。

到此为止,CE就全部配置完成了,接下来的配置都在PE上。

首先PE要配置BGP(AS:25253),两个PE需要建立MP-BGP会话,用于交换路由信息(OSPF和OSPF交换,RIP和RIP交换,因为我们把IT和TC放在两个VRF里),然后需要配置3个address-family(vpnv4用于配置MP-BGP,vrf TC用于配置和TC_CE的RIP,vrf IT用于配置和TC_IT的OSPF)。

首先先配置最基础的BGP,两个PE建立会话:
PE3_1(config)#router bgp 25253
PE3_1(config-router)#neighbor 192.168.10.32 remote-as 25253
PE3_1(config-router)#neighbor 192.168.10.32 update-source lo0

PE3_2(config)#router bgp 25253
PE3_2(config-router)#neighbor 192.168.10.31 remote-as 25253
PE3_2(config-router)#neighbor 192.168.10.31 update-source lo0

之后开始配置address-family。

PE3_1(config-router)#address-family vpnv4
PE3_1(config-router-af)#neighbor 192.168.10.32 activate
PE3_1(config-router-af)#neighbor 192.168.10.32 send-community extended
PE3_1(config-router-af)#neighbor 192.168.10.32 next-hop-self
PE3_1(config-router-af)#exit-address-family

PE3_1(config-router)#address-family ipv4 vrf IT
PE3_1(config-router-af)#redistribute ospf 2 vrf IT (之后需要回去配置OSPF 2)
PE3_1(config-router-af)#no synchronization
PE3_1(config-router-af)#exit-address-family

PE3_1(config-router)#address-family ipv4 vrf TC
PE3_1(config-router-af)#redistribute rip (之后也需要回去配置rip)
PE3_1(config-router-af)#no synchronization
PE3_1(config-router-af)#exit-address-family

PE3_2上的配置除了把vpnv4里面的neighbor地址改成192.168.10.31,其他完全不变。

接下来在两个PE上配置OSPF 2和RIP用于与对方交换路由信息:

PE3_1(config)#router ospf 2 vrf IT
PE3_1(config-router)#redistribute bgp 25253 subnets
PE3_1(config-router)#network 194.20.31.0 0.0.0.3 area 0

PE3_1(config)#router rip
PE3_1(config-router)#version 2
PE3_1(config-router)#address-family ipv4 vrf TC
PE3_1(config-router-af)#redistribute bgp 25253 metric transparent
PE3_1(config-router-af)#network 194.10.31.0
PE3_1(config-router-af)#no auto-summary

PE3_2的配置除了与PE3_1的network不一样,其他都是一样的。


配置完成,检验成果。

首先四个CE的路由表,理论上TC只能看到TC的路由信息,IT只能看到IT的路由信息。

也可以在PE上查看vrf的路由表。

最后我们用ping来验证,可以使用CE_IT(TC)的LAN端口ping。


配置文件:

CE:IT_CE31_i1_startup-config IT_CE32_i6_startup-config TC_CE31_i3_startup-config TC_CE32_i5_startup-config

PE:PE3_1_i2_startup-config PE3_2_i7_startup-config

P:P3_i4_startup-config