MPLS L3VPN是服务提供商VPN解决方案中一种基于PE的L3VPN技术,它使用BGP在服务提供商骨干网上发布VPN路由,使用MPLS在服务提供商骨干网上转发VPN报文。
MPLS L3VPN组网方式灵活、可扩展性好,并能够方便地支持MPLS QoS和MPLSTE,因此得到越来越多的应用。
MPLS L3VPN模型由三部分组成:CE、PE和P。
CE(Customer Edge)设备:用户边缘设备,有接口直接与SP(Service Provider,服务提供商)相连。CE可以是路由器或交换机,也可以是一台主机。CE“感知”不到VPN的存在,也不需要必须支持MPLS。
PE(Provider Edge)设备:服务提供商网络边缘设备,是服务提供商网络的边缘设备,与用户的CE直接相连。在MPLS网络中,对VPN的所有处理都发生在PE上。
P(Provider)路由器:服务提供商网络中的骨干路由器,不与CE直接相连。P设备只需要具备基本MPLS转发能力。
图1-1是一个MPLS L3VPN组网方案的示意图。
图1-1 MPLS L3VPN组网

1. 组网需求
MCE设备通过Vlan-interface10接口(IP地址10.214.10.3)连接到地址范围为192.168.0.0/24的VPN 1,通过Vlan-interface20接口(IP地址10.214.20.3)连接到地址范围为192.168.10.0/24的VPN 2,其中VPN 2内运行OSPF路由协议。
要求MCE设备能够将VPN之间的路由隔离,并通过OSPF将各VPN的路由发布到PE 1。
2. 组网图
图1-4 MCE和PE间使用OSPF引入VPN路由组网示意图

3. 配置步骤
为区分设备,假设MCE系统名为“MCE”,VPN 1和VPN 2的边缘路由器分别名为“VR1”和“VR2”,PE 1系统名为“PE1”。
(1)在MCE和PE 1上配置VPN实例
#在MCE设备上配置VPN实例,名称分别为vpn1和vpn2,RD分别取值为10:1和20:1,VPN Target取值与RD取相同数值,Export和Import均取此值。
<MCE> system-view
[MCE] ip vpn-instance vpn1
[MCE-vpn-instance-vpn1] route-distinguisher 10:1
[MCE-vpn-instance-vpn1] vpn-target 10:1
[MCE-vpn-instance-vpn1] quit
[MCE] ip vpn-instance vpn2
[MCE-vpn-instance-vpn2]route-distinguisher 20:1
[MCE-vpn-instance-vpn2]vpn-target 20:1
[MCE-vpn-instance-vpn2] quit
# 创建VLAN10,将端口Ten-GigabitEthernet1/0/1加入VLAN10,并创建Vlan-interface10接口。
[MCE] vlan 10
[MCE-vlan10] portTen-GigabitEthernet 1/0/1
[MCE-vlan10] quit
[MCE] interfacevlan-interface 10
# 配置Vlan-interface10接口与VPN实例vpn1绑定,并配置接口的IP地址。
[MCE-Vlan-interface10]ip binding vpn-instance vpn1
[MCE-Vlan-interface10]ip address 10.214.10.3 24
# 使用类似步骤配置VLAN20,将端口Ten-GigabitEthernet1/0/2加入VLAN20,配置接口与VPN实例vpn2绑定并配置IP地址。
[MCE-Vlan-interface10]quit
[MCE] vlan 20
[MCE-vlan20] portTen-GigabitEthernet 1/0/2
[MCE-vlan20] quit
[MCE] interfacevlan-interface 20
[MCE-Vlan-interface20]ip binding vpn-instance vpn2
[MCE-Vlan-interface20]ip address 10.214.20.3 24
[MCE-Vlan-interface20]quit
# 在PE 1上配置VPN实例,名称分别为VPN1和VPN2,RD分别取值为30:1和40:1,VPN Target取值分别为10:1和20:1,Export和Import均取此值。
<PE1>system-view
[PE1] ipvpn-instance vpn1
[PE1-vpn-instance-vpn1]route-distinguisher 30:1
[PE1-vpn-instance-vpn1]vpn-target 10:1
[PE1-vpn-instance-vpn1]quit
[PE1] ipvpn-instance vpn2
[PE1-vpn-instance-vpn2]route-distinguisher 40:1
[PE1-vpn-instance-vpn2]vpn-target 20:1
[PE1-vpn-instance-vpn2]quit
(2) MCE与Site间路由配置
MCE与VPN 1直接相连,且VPN 1内未使用路由协议,因此可以使用静态路由进行配置。
# 配置VR1与MCE连接的接口地址为10.214.10.2/24,连接VPN1接口的地址为192.168.0.1/24。向VLAN中增加端口和配置接口IP地址的过程省略。
# 在VR1上配置缺省路由,指定出方向报文的下一跳地址为10.214.10.3。
<VR1>system-view
[VR1] iproute-static 0.0.0.0 0.0.0.0 10.214.10.3
# 在MCE上指定静态路由,去往192.168.0.0/24网段的报文,下一跳地址为10.214.10.2,并将此路由与VPN实例vpn1绑定。
[MCE] iproute-static vpn-instance vpn1 192.168.0.0 24 10.214.10.2
# 显示MCE上为VPN实例vpn1维护的路由信息。
可以看到,已经在MCE上为VPN 1指定了静态路由。
# VPN 2内运行OSPF,在MCE上配置OSPF进程2,并与VPN实例vpn2绑定,以便将VPN 2内的路由学习到VPN实例vpn2的路由表中。
[MCE] ospf 2vpn-instance vpn2
# 发布网段10.214.20.0/24的路由。
[MCE-ospf-2] area0
[MCE-ospf-2-area-0.0.0.0]network 10.214.20.0 0.0.0.255
[MCE-ospf-2-area-0.0.0.0]quit
[MCE-ospf-2] quit
# 在VR2上,配置与MCE连接的接口地址为10.214.20.2/24,连接VPN 2接口的地址为192.168.10.1/24。(配置过程略)
# 配置OSPF进程2,发布网段192.168.10.0/24和10.214.20.0/24的路由。
<VR2>system-view
[VR2] ospf 2
[VR2-ospf-2] area0
[VR2-ospf-2-area-0.0.0.0]network 192.168.10.0 0.0.0.255
[VR2-ospf-2-area-0.0.0.0]network 10.214.20.0 0.0.0.255
[VR2-ospf-2-area-0.0.0.0]quit
[VR2-ospf-2] quit
# 在MCE上查看VPN实例vpn2的路由信息。
可以看到,MCE已经通过OSPF学习到了VPN 2内的私网路由,并与VPN 1内的192.168.0.0路由信息分别维护在两个路由表内,有效进行了隔离。
(3) MCE与PE间路由配置
# MCE使用Ten-GigabitEthernet 1/0/3端口连接到PE1的Ten-GigabitEthernet 1/0/1端口,需要配置这两个端口为Trunk端口,并允许VLAN 30和VLAN40的报文携带Tag通过。
[MCE] interfaceTen-GigabitEthernet 1/0/3
[MCE-Ten-GigabitEthernet1/0/3] port link-type trunk
[MCE-Ten-GigabitEthernet1/0/3] port trunk permit vlan 30 40
[MCE-Ten-GigabitEthernet1/0/3] quit
# 配置PE 1的Ten-GigabitEthernet 1/0/1端口。
[PE1] interfaceTen-GigabitEthernet 1/0/1
[PE1-Ten-GigabitEthernet1/0/1] port link-type trunk
[PE1-Ten-GigabitEthernet1/0/1] port trunk permit vlan 30 40
[PE1-Ten-GigabitEthernet1/0/1] quit
# 在MCE上创建VLAN 30和接口Vlan-interface30,配置接口与VPN实例vpn1绑定,并配置接口的IP地址。
[MCE] vlan 30
[MCE-vlan30] quit
[MCE] interfacevlan-interface 30
[MCE-Vlan-interface30]ip binding vpn-instance vpn1
[MCE-Vlan-interface30]ip address 30.1.1.1 24
[MCE-Vlan-interface30]quit
# 在MCE上创建VLAN 40和接口Vlan-interface40,配置接口与VPN实例vpn2绑定,并配置接口的IP地址。
[MCE] vlan 40
[MCE-vlan40] quit
[MCE] interfacevlan-interface 40
[MCE-Vlan-interface40]ip binding vpn-instance vpn2
[MCE-Vlan-interface40]ip address 40.1.1.1 24
[MCE-Vlan-interface40]quit
# 在PE 1上创建VLAN 30和接口Vlan-interface30,配置接口与VPN实例vpn1绑定,并配置接口的IP地址。
[PE1] vlan 30
[PE1-vlan30] quit
[PE1] interfacevlan-interface 30
[PE1-Vlan-interface30]ip binding vpn-instance vpn1
[PE1-Vlan-interface30]ip address 30.1.1.2 24
[PE1-Vlan-interface30]quit
# 在PE 1上创建VLAN 40和接口Vlan-interface40,配置接口与VPN实例vpn2绑定,并配置接口的IP地址。
[PE1] vlan 40
[PE1-vlan40] quit
[PE1] interfacevlan-interface 40
[PE1-Vlan-interface40]ip binding vpn-instance vpn2
[PE1-Vlan-interface40]ip address 40.1.1.2 24
[PE1-Vlan-interface40]quit
# 配置MCE和PE 1的Loopback0接口,用于指定MCE和PE1的Router ID,地址分别为101.101.10.1和100.100.10.1。配置步骤这里省略。
# 配置MCE启动OSPF进程10,该进程绑定到VPN实例vpn1,关闭OSPF实例的路由环路检测功能,并配置域ID为10。
[MCE] ospf 10router-id 101.101.10.1 vpn-instance vpn1
[MCE-ospf-10]vpn-instance-capability simple
[MCE-ospf-10]domain-id 10
# 在Area0区域发布30.1.1.0网段,并引入VPN 1的静态路由。
[MCE-ospf-10] area0
[MCE-ospf-10-area-0.0.0.0]network 30.1.1.0 0.0.0.255
[MCE-ospf-10-area-0.0.0.0]quit
[MCE-ospf-10]import-route static
# 配置PE 1启动OSPF进程10,绑定到VPN实例vpn1,域ID为10,在Area0区域发布30.1.1.0网段。
[PE1] ospf 10router-id 100.100.10.1 vpn-instance vpn1
[PE1-ospf-10]domain-id 10
[PE1-ospf-10] area0
[PE1-ospf-10-area-0.0.0.0]network 30.1.1.0 0.0.0.255
[PE1-ospf-10-area-0.0.0.0]quit
[PE1-ospf-10] quit
# 显示PE 1上的VPN 1路由信息。
可以看到,VPN 1内的静态路由已经引入到MCE与PE 1间的OSPF路由表中。
MCE与PE 1间配置OSPF进程20,导入VPN实例vpn2的路由信息的过程与上面介绍的配置基本一致,不同的是在MCE的OSPF中配置导入的是OSPF进程20的路由,这里不再赘述,只以显示信息为例表示导入成功后的结果。
至此,通过配置,已经将两个VPN实例内的路由信息完整地传播到PE 1中,配置完成。
