MPLS VPN原理与配置

1.目标
 描述MPLS VPN的模型
 描述MPLS VPN中的基本概念
 描述MPLS VPN路由传递和标签分发
 描述MPLS VPN数据转发流程
 执行MPLS VPN的基本配置

2.MPLS VPN定义
 BGP/MPLS IP VPN网络一般由运营商搭建,VPN用户购买VPN服务来实现用户网络之间的路由传递、数据互通等。
 MPLS VPN使用BGP在运营商骨干网(IP网络)上发布VPN路由,使用MPLS在运营商骨干网上转发VPN报文。BGP/MPLS IP VPN又被简称为MPLS VPN,是一种常见的L3VPN(Layer 3 VPN)技术

3.MPLS VPN网络架构
 MPLS VPN网络架构由三部分组成:CE(Customer Edge)、PE(Provider Edge)和P(Provider),其中PE和P是运营商设备,CE是MPLS VPN用户设备。
 站点(site)就是MPLS VPN的用户,由CE和其他用户设备构成。




4.MPLS VPN技术架构
 MPLS VPN不是单一的一种VPN技术,是多种技术结合的综合解决方案,主要包含下列技术:
 MP-BGP:负责在PE与PE之间传递站点内的路由信息。
 LDP:负责PE与PE之间的隧道建立
 VRF:负责PE的VPN用户管理。
 静态路由、IGP、BGP:负责PE与CE之间的路由信息交换。




5.MPLS VPN常见组网
 根据VPN用户的需求不同,可采用以下几种常见的组网方案:
 Intranet:一个VPN中的所有用户形成闭合用户群,同一VPN站点之间可以互访,不同VPN站点间不能互访。
 Extranet:适用于一个VPN用户希望提供部分本VPN的站点资源给其他VPN的用户访问的场景。
 Hub&Spoke:如果希望在VPN中设置中心访问控制设备,其它用户的互访都通过中心访问控制设备进行,可采用Hub&Spoke组网方案

6.MPLS VPN路由发布
 1.概述
 若想实现同一个VPN的不同站点之间的通信,首先需要完成不同站点之间的路由交互。在基本MPLS VPN组网中,VPN路由信息的发布涉及CE和PE,P路由器只维护骨干网的路由,不需要了解任何VPN路由信息。VPN路由信息的发布过程包括三部分:
 本地CE到入口PE
 入口PE到出口PE
 出口PE到远端CE



 2.CE与PE之间的路由信息交换
 如图,客户X和客户Y属于不同的VPN,分别拥有两个站点,现需要实现站点间的路由信息交互。
 CE与PE之间可以使用静态路由、OSPF、IS-IS或BGP交换路由信息。无论使用哪种路由协议,CE和PE之间交换的都是标准的IPv4路由。
 本地CE到入口PE和出口PE到远端CE的路由信息交换原理完全相同。
 2.1.入口PE到出口PE路由传递 (1)
 PE在接收到CE传递来的路由之后,需要独立保存不同VPN的路由,且需要解决不同的客户使用重叠IP地址空间的问题。



 A.VRF
 VRF(Virtual Routing and Forwarding,虚拟路由转发),又称VPN实例,是MPLS VPN架构中的关键技术,每个VPN实例使用独立的路由转发表项,实现VPN之间的逻辑隔离。



 B.RD
 PE收到不同VPN的CE发来的IPv4地址前缀,本地根据VPN实例配置去区分这些地址前缀。但是VPN实例只是一个本地的概念,PE无法将VPN实例信息传递到对端PE,故有了RD(Route Distinguisher,路由标识符)。
 RD长8字节,用于区分使用相同地址空间的IPv4前缀。
 PE从CE接收到IPv4路由后,在IPv4前缀前加上RD,转换为全局唯一的VPN-IPv4路由



 C.VPN-IPv4地址
 VPN-IPv4地址又被称为VPNv4地址:VPNv4地址共有12个字节,包括8字节的路由标识符RD(Route Distinguisher)和4字节的IPv4地址前缀。



 2.2 入口PE到出口PE路由传递 (2)
 BGP使用TCP作为其传输层协议,提高了协议的可靠性。可以跨路由器的两个PE设备之间直接交换路由。
 BGP拓展性强,为PE间传播VPN路由提供了便利。
 PE之间需要传送的路由条目可能较大,BGP只发送更新的路由,提高传递路由数量的同时不占用过多链路带宽。
 传统的BGP-4不支持处理VPNv4路由。



 A.MP-BGP
 为了正确处理VPN路由,MPLS VPN使用RFC2858(Multiprotocol Extensions for BGP-4)中规定的MP-BGP,即BGP-4的多协议扩展。
 MP-BGP采用地址族(Address Family)来区分不同的网络层协议,既可以支持传统的IPv4地址族,又可以支持其它地址族(比如VPN-IPv4地址族、IPv6地址族等)。
 MP-BGP新增了两种路径属性:
 MP_REACH_NLRI:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。
 MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。
 2.3 入口PE到出口PE路由传递 (3)
 MP-BGP将VPNv4传递到远端PE之后,远端PE需要将VPNv4路由导入正确的VPN实例。
 MPLS VPN使用32位的BGP扩展团体属性-VPN Target(也称为Route Target)来控制VPN路由信息的发布与接收。
 本地PE在发布VPNv4路由前附上RT属性,对端RT在接到到VPNv4路由后根据RT将路由导入对应的VPN实例。



 A.RT
 在PE上,每一个VPN实例都会与一个或多个VPN Target属性绑定,有两类VPN Target属性:
 Export Target(ERT):本地PE从直接相连站点学到IPv4路由后,转换为VPN IPv4路由,并为这些路由添加Export Target属性。Export Target属性作为BGP的扩展团体属性随路由发布。
 Import Target(IRT):PE收到其它PE发布的VPN-IPv4路由时,检查其Export Target属性。当此属性与PE上某个VPN实例的Import Target匹配时,PE就把路由加入到该VPN实例的路由表。



 2.4 入口PE到出口PE路由传递 (4)
 PE根据VPNv4路由所携带的RT将路由导入正确的VPN实例之后,VPNv4路由的RD值剥除,将IPv4路由通告给相应的客户的CE设备。
 站点B和站点D的CE设备就能学习到去往各自远端站点的路由。同理,通过一系列的操作,可以实现同一用户(同一VPN)不同站点之间的路由互通。
 2.5 入口PE到出口PE路由传递 (5)
 VPN在PE站点建立起来,但是P站点没建立:



 解决:
 通过标签解决问题:
 PE和P设备之间运行LDP,交换公网标签,建立PE之间的LSP隧道(公网隧道)。
 入口PE在通过MP-BGP传递VPNv4路由时,会携带私网标签,用于区分不同VPN的数据。
 出口PE在接收到VPNv4路由后,需要执行私网路由交叉和隧道迭代来选择路由。




3.MPLS VPN报文转发



 3.1 报文转发过程 (1)



 3.2 报文转发过程 (2)



 3.3 报文转发过程 (3)



 3.4 报文转发过程 (4)



 3.5 报文转发过程 (5)



4.配置命令 - VPN实例配置
 创建VPN实例/进入VPN实例视
 [PE] ip vpn-instance vpn-instance-name
 使能VPN实例的IPv4地址族/进入VPN实例IPv4地址族视图
 [PE-vpn-instance-InstanceName] ipv4-family
 配置VPN实例的VPN-Target属性
 [PE-vpn-instance-InstanceName] vpn-target vpn-target &<1-8> [ both | export-extcommunity | import-extcommunity ]
 将接口绑定到VPN[PE-GigabitEthernet0/0/0]ip binding vpn-instance vpn-instance-name

5.MPLS VPN配置示例
 5.1 背景
 客户X及Y各自有2个站点,现需要通过MPLS VPN实现站点之间的互联,分别对应VPNX和VPNY;
 互联接口、AS号及IP地址信息如图;
 客户X站点与PE之间采用OSPF交互路由信息,客户Y站点与PE之间采用BGP交互路由信息



 5.2 配置思路
 MPLS VPN骨干网配置
 1.1 IGP配置,实现骨干网的IP连通性。
 1.2 MPLS与MPLS LDP配置,建立MPLS LSP公网隧道,传输VPN数据。
 1.3 MP-BGP配置,建立后续传递VPNv4路由的MP-BGP对等体关系。
 VPN用户接入配置
 2.1 创建VPN实例并配置参数(RT、RD)
 2.2 将接口加入VPN实例
 2.3 配置PE与CE之间的路由交换
 5.3 数据规划
 MPLS骨干网采用单区域OSPF实现路由互通,所有PE和P互联接口均使能MPLS LDP功能



 5.4 MPLS VPN骨干网配置
 在MPLS VPN骨干网络内部署OSPF,MPLS VPN骨干网络内部署的OSPF用于实现骨干网络内部的路由互通。
 以PE1节点的OSPF配置为例
 [PE1]ospf 100 router-id 1.1.1.1
 [PE1-ospf-100]area 0
 [PE1-ospf-100-area-0.0.0.0]network 10.0.12.1 0.0.0.0
 [PE1-ospf-100-area-0.0.0.0]network 1.1.1.1 0.0.0.0
 在PE1、P、PE2节点配置MPLS及LDP,以PE1为例
 [PE1]mpls lsr-id 1.1.1.1
 [PE1]mpls
 Info: Mpls starting, please wait... OK!
 [PE1-mpls]mpls ldp
 [PE1-mpls-ldp]Interface GigabitEthernet 0/0/0
 [PE1-GigabitEthernet0/0/0]mpls
 [PE1-GigabitEthernet0/0/0]mpls ldp
 在PE1及PE2之间建立MP-BGP对等体关系,以PE1为例
 [PE1]bgp 123
 [PE1-bgp]router-id 1.1.1.1
 [PE1-bgp]peer 3.3.3.3 as-number 123
 [PE1-bgp]peer 3.3.3.3 connect-interface LoopBack 0
 #进入BGP-VPNv4地址族视图,并使能与对等体3.3.3.3的VPNv4地址族能力。
 [PE1-bgp]ipv4-family vpnv4 unicast
 [PE1-bgp-af-vpnv4]peer 3.3.3.3 enable
 配置验证
 查看公网隧道建立情况
 [PE1]display mpls lsp
 [PE2]display mpls lsp
 查看MP-BGP邻居状态,以PE1为例
 [PE1]display bgp vpnv4 all peer
 5.5 VPN用户接入配置
 创建VPN实例并按照规划配置RD与RT参数,以PE1为例
 [PE1]ip vpn-instance VPNX
 [PE1-vpn-instance-VPNX]route-distinguisher 100:1
 [PE1-vpn-instance-VPNX-af-ipv4] vpn-target 100:321 import-extcommunity
  IVT Assignment result:
 Info: VPN-Target assignment is successful.
 [PE1-vpn-instance-VPNX-af-ipv4] 100:123 export-extcommunity
  EVT Assignment result:
 Info: VPN-Target assignment is successful.
 [PE1-vpn-instance-VPNX-af-ipv4] quit
 [PE1-vpn-instance-VPNX]quit
 [PE1]ip vpn-instance VPNY
 [PE1-vpn-instance-VPNY]route-distinguisher 200:1
 [PE1-vpn-instance-VPNY-af-ipv4]vpn-target 200:234 import-extcommunity
 [PE1-vpn-instance-VPNY-af-ipv4]vpn-target 200:432 export-extcommunity
 [PE1-vpn-instance-VPNY-af-ipv4]quit
 [PE1-vpn-instance-VPNY]quit
 将接口绑定到VPN实例:
 [PE1]interface GigabitEthernet 0/0/1
 [PE1-GigabitEthernet0/0/1]ip binding vpn-instance VPNX
 Info: All IPv4 related configurations on this interface are removed!
 Info: All IPv6 related configurations on this interface are removed!
 [PE1-GigabitEthernet0/0/1]ip address 192.168.100.2 24
 [PE1-GigabitEthernet0/0/1]interface GigabitEthernet 0/0/2
 [PE1-GigabitEthernet0/0/2]ip binding vpn-instance VPNY
 Info: All IPv4 related configurations on this interface are removed!
 Info: All IPv6 related configurations on this interface are removed!
 [PE1-GigabitEthernet0/0/2]ip address 192.168.100.2 24
 部署CE1-PE1、CE3-PE2间的路由信息交互,以PE1为例:
 #创建与实例绑定的OSPF进程
 [PE1]ospf 2 vpn-instance VPNX
 [PE1-ospf-2]area 0
 [PE1-ospf-2-area-0.0.0.0]network 192.168.100.0 0.0.0.255
 #配置OSPF进程与MP-BGP之间的路由双向引入
 [PE1]ospf 2 vpn-instance VPNX
 [PE1-ospf-2]import-route bgp
 [PE1-ospf-2]quit
 [PE1]bgp 123
 [PE1-bgp]ipv4-family vpn-instance VPNX
 [PE1-bgp-VPNX]import-route ospf 2
 部署CE2-PE1、CE4-PE2间的路由信息交互,以CE2和PE1为例
 #配置CE2上的EBGP,并引入直连路由192.168.1.0/24
 [CE2]BGP 200
 [CE2-bgp]peer 192.168.100.2 as-number 123
 [CE2-bgp]network 192.168.1.0 24
 [CE2-bgp]quit
 #配置PE1上VPN实例的EBGP对等体
 [PE1]bgp 123
 [PE1-bgp]ipv4-family vpn-instance VPNY
 [PE1-bgp-VPNY]peer 192.168.100.1 as-number 200
 配置验证
 查看VPNX用户的CE路由学习情况
 [CE1]display ip routing-table