MPLS VPN技术

> 作者:行癫 ------

第一节:MPLS VPN原理与配置

一:MPLS VPN概述

1.MPLS VPN定义
​ BGP/MPLS IP VPN网络一般由运营商搭建,VPN用户购买VPN服务来实现用户网络之间的路由传递、数据互通等 ​ MPLS VPN使用BGP在运营商骨干网上发布VPN路由,使用MPLS在运营商骨干网上转发VPN报文,BGP/MPLS IP VPN又被简称为MPLS VPN image-20220217194835189
2.MPLS VPN网络架构
​ MPLS VPN网络架构由三部分组成:CE(Customer Edge)、PE(Provider Edge)和P(Provider),其中PE和P是运营商设备,CE是MPLS VPN用户设备 ​ 站点(site)就是MPLS VPN的用户,由CE和其他用户设备构成 ![image-20220217210159362](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220217210159362.png) ​ CE:用户网络边缘设备,有接口直接与运营商网络相连。CE可以是路由器或交换机,也可以是一台主机。通常情况下,CE“感知”不到VPN的存在,也不需要支持MPLS ​ PE:运营商边缘路由器,是运营商网络的边缘设备,与CE直接相连。在MPLS网络中,对VPN的所有处理都发生在PE上,对PE性能要求较高 ​ P:运营商网络中的骨干路由器,不与CE直接相连。P设备只需要具备基本MPLS转发能力,不维护VPN相关信息 **站点的含义可以从下述几个方面理解:** ​ 站点是指相互之间具备IP连通性的一组IP系统,并且这组IP系统的IP连通性不需通过运营商网络实现 ​ 站点的划分是根据设备的拓扑关系,而不是地理位置。如图所示,公司A的X省网络和公司A的Y省网络需要通过运营商的骨干网进行互联,所以它们被划分为两个站点。若在当前X省网络和Y省网络的CE之间增加一条物理专线,不需要通过运营商网络就可以互通,那么这两张网络就是一个站点 **站点与VPN的关系:** ​ 对于多个连接到同一服务提供商网络的站点,通过制定策略,可以将它们划分为不同的集合,只有属于相同集合的站点之间才能通过服务提供商网络互访,这种集合就是VPN ​ 一个Site中的设备可以属于多个VPN,换言之,一个Site可以属于多个VPN
3.MPLS VPN技术架构
MPLS VPN不是单一的一种VPN技术,是多种技术结合的综合解决方案,主要包含下列技术: ​ MP-BGP:负责在PE与PE之间传递站点内的路由信息 ​ LDP:负责PE与PE之间的隧道建立 ​ VRF:负责PE的VPN用户管理 ​ 静态路由、IGP、BGP:负责PE与CE之间的路由信息交换 ![image-20220217210606263](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220217210606263.png)
4.为什么要选择MPLS VPN
**对VPN客户而言:** ​ “感知”不到VPN的存在,不需要部署和维护VPN,降低企业运维难度和成本 ​ 一般部署在运营商的MPLS VPN专网上,有一定的安全性保障 **对于运营商而言:** ​ MPLS在无连接的IP网络中增加了面向连接的控制平面,为IP网络增添了管理和运营的手段 ​ 支持地址空间重叠、支持重叠VPN、组网方式灵活、可扩展性好 ​ 能够方便地支持MPLS TE合理调控现有网络资源,最大限度的节省运营商成本 ​ MPLS TE(MPLS Traffic Engineering,MPLS流量工程):基于一定约束条件LSP隧道,并将流量引入到这些隧道中进行转发,使网络流量按照指定的路径进行传输。可以在不进行硬件升级的情况下对现有网络资源进行合理调配和利用,并对网络流量提供带宽和QoS保证,最大限度的节省成本
5.MPLS VPN常见组网
根据VPN用户的需求不同,可采用以下几种常见的组网方案: ​ Intranet:一个VPN中的所有用户形成闭合用户群,同一VPN站点之间可以互访,不同VPN站点间不能互访 ​ Extranet:适用于一个VPN用户希望提供部分本VPN的站点资源给其他VPN的用户访问的场景 ​ Hub&Spoke:如果希望在VPN中设置中心访问控制设备,其它用户的互访都通过中心访问控制设备进行,可采用Hub&Spoke组网方案 ![image-20220217211611714](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220217211611714.png)

二:MPLS VPN路由交互

1.MPLS VPN路由发布概述
​ 若想实现同一个VPN的不同站点之间的通信,首先需要完成不同站点之间的路由交互。在基本MPLS VPN组网中,VPN路由信息的发布涉及CE和PE,P路由器只维护骨干网的路由,不需要了解任何VPN路由信息。VPN路由信息的发布过程包括三部分: ​ 本地CE到入口PE ​ 入口PE到出口PE ​ 出口PE到远端CE ![image-20220218102818324](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218102818324.png)
2.CE与PE之间的路由信息交换
​ 如图,客户X和客户Y属于不同的VPN,分别拥有两个站点,现需要实现站点间的路由信息交互 ​ CE与PE之间可以使用静态路由、OSPF、IS-IS或BGP交换路由信息。无论使用哪种路由协议,CE和PE之间交换的都是标准的IPv4路由 ​ 本地CE到入口PE和出口PE到远端CE的路由信息交换原理完全相同 ![image-20220218103045001](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103045001.png)
3.入口PE到出口PE路由传递(1)
​ PE在接收到CE传递来的路由之后,需要独立保存不同VPN的路由,且需要解决不同的客户使用重叠IP地址空间的问题 ![image-20220218103114637](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103114637.png) ​ VPN是一种私有网络,不同的VPN独立管理自己的地址范围,也称为地址空间(address space)。不同VPN的地址空间可能会在一定范围内重合,例如图中用户X和用户Y都使用192.168.1.0/24网段地址,这就发生了地址空间的重叠 **以下两种情况允许VPN使用重叠的地址空间:** ​ 两个VPN没有共同的站点 ​ 两个VPN有共同的站点,但此共同站点中的设备不与两个VPN中使用重叠地址空间的设备互访 **VRF** ​ VRF(Virtual Routing and Forwarding,虚拟路由转发),又称VPN实例,是MPLS VPN架构中的关键技术,每个VPN实例使用独立的路由转发表项,实现VPN之间的逻辑隔离 ![image-20220218103320279](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103320279.png) **RD** ​ PE收到不同VPN的CE发来的IPv4地址前缀,本地根据VPN实例配置去区分这些地址前缀。但是VPN实例只是一个本地的概念,PE无法将VPN实例信息传递到对端PE,故有了RD(Route Distinguisher,路由标识符) ​ RD长8字节,用于区分使用相同地址空间的IPv4前缀 ​ PE从CE接收到IPv4路由后,在IPv4前缀前加上RD,转换为全局唯一的VPN-IPv4路由 ![image-20220218103426695](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103426695.png) 注意: ​ 配置RD时,只需要指定RD的Administrator子字段和Assigned Number子字段 ​ RD的配置格式有四种,常用的两种如下: ​ 16bits自治系统号:32bits用户自定义数字(例如:100:1) ​ 32bits IPv4地址:16bits用户自定义数字(例如:172.1.1.1:1) ​ RD的结构使得每个运营商可以独立地分配RD,但为了在某些应用场景下保证路由正常,必须保证RD全局唯一 **VPN-IPv4地址** ​ VPN-IPv4地址又被称为VPNv4地址:VPNv4地址共有12个字节,包括8字节的路由标识符RD(Route Distinguisher)和4字节的IPv4地址前缀 ![image-20220218103818426](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103818426.png)
4.入口PE到出口PE路由传递(2)
PE之间建立BGP邻居关系,并通过BGP进行路由传递。为什么采用BGP呢? ​ BGP使用TCP作为其传输层协议,提高了协议的可靠性。可以跨路由器的两个PE设备之间直接交换路由 ​ BGP拓展性强,为PE间传播VPN路由提供了便利 ​ PE之间需要传送的路由条目可能较大,BGP只发送更新的路由,提高传递路由数量的同时不占用过多链路带宽 传统的BGP-4不支持处理VPNv4路由 ![image-20220218103919029](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103919029.png) **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。用于撤销不可达路由 ![image-20220218104058234](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104058234.png) **注意:** NLRI:Network Layer Reachability Information,网络层可达信息 关于地址族的一些取值请参考RFC3232(Assigned Numbers) MP_REACH_NLRI用于发布可达路由及下一跳信息。该属性由一个或多个三元组组成,格式如下: ​ 地址族信息(Address Family Information)域:由2字节的地址族标识AFI(Address Family Identifier)和1字节的子地址族标识SAFI(Subsequent Address Family Identifier)组成 ​ 下一跳信息(Next Hop Network Address Information)域:由一字节的下一跳网络地址长度和可变长度的下一跳网络地址组成 ​ 网络层可达性信息(NLRI)域:由一个或多个三元组<长度、标签、前缀>组成 MP_UNREACH_NLRI用于通知对等体删除不可达的路由。该属性的格式如下: ​ 地址族标识AFI:与MP_REACH_NLRI属性中的相同 ​ 子地址族标识SAFI:与MP_REACH_NLRI属性中的相同,表示NLRI的类型 ​ 撤销路由(Withdrawn Routes):不可达路由列表,也是由一个或多个NLRI组成。BGP发言者可以通过在撤销路由域中携带与之前发布的可达路由中相同的NLRI来撤销路由 MP-BGP的报文类型、VPNv4路由发布策略仍与普通BGP相同
5.入口PE到出口PE路由传递 (3)
​ MP-BGP将VPNv4传递到远端PE之后,远端PE需要将VPNv4路由导入正确的VPN实例 ​ MPLS VPN使用BGP扩展团体属性-VPN Target(也称为Route Target)来控制VPN路由信息的发布与接收 ​ 本地PE在发布VPNv4路由前附上RT属性,对端PE在接到VPNv4路由后根据RT将路由导入对应的VPN实例 ![image-20220218104407514](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104407514.png) **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实例的路由表 ![image-20220218104458786](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104458786.png)
6.入口PE到出口PE路由传递 (4)
​ PE根据VPNv4路由所携带的RT将路由导入正确的VPN实例之后,VPNv4路由的RD值剥除,将IPv4路由通告给相应的客户的CE设备 ​ 站点B和站点D的CE设备就能学习到去往各自远端站点的路由。同理,通过一系列的操作,可以实现同一用户(同一VPN)不同站点之间的路由互通 ![image-20220218104538484](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104538484.png)
7.数据转发时遇到的问题
![image-20220218104602974](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104602974.png)
8.入口PE到出口PE路由传递 (5)
​ PE和P设备之间运行LDP,交换公网标签,建立PE之间的LSP隧道(公网隧道) ​ 入口PE在通过MP-BGP传递VPNv4路由时,会携带私网标签,用于区分不同VPN的数据 ​ 出口PE在接收到VPNv4路由后,需要执行私网路由交叉和隧道迭代来选择路由 ![image-20220218104806411](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104806411.png) **PE上分配私网标签的方法有如下两种:** ​ 基于路由的MPLS标签分配:为VPN路由表的每一条路由分配一个标签(one label per route)。这种方式的缺点是:当路由数量比较多时,设备入标签映射表ILM(Incoming Label Map)需要维护的表项也会增多,从而提高了对设备容量的要求 ​ 基于VPN实例的MPLS标签分配:为整个VPN实例分配一个标签,该VPN实例里的所有路由都共享一个标签。使用这种分配方法的好处是节约了标签 ​ 私网路由交叉:VPNv4路由与本地VPN实例的VPN-Target进行匹配的过程称为私网路由交叉。PE在收到VPNv4路由后,既不进行优选,也不检查隧道是否存在,直接将其与本地的VPN实例进行交叉 ​ 隧道迭代:为了将私网流量通过公网传递到另一端,需要有一条公网隧道承载这个私网流量。因此私网路由交叉完成后,需要根据目的IPv4前缀进行路由迭代,即该IPv4路由的下一跳有对应的LSP存在;只有隧道迭代成功,该路由才被放入对应的VPN实例路由表
9.MPLS VPN中的路由交互全过程
![image-20220218105341534](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218105341534.png) ​ IGP或者EBGP交换私网IPv4路由 ​ 客户私网路由被学习到VPN路由表中(VPN实例路由表) ​ IPv4路由引入到MP-BGP(如果PE-CE之间运行的就是BGP,则无需手工执行路由引入操作) RD被添加到IPv4路由上,构成VPNv4路由; ​ VPNv4路由被PE1通过MP-IBGP的Update消息通告给PE2。Update消息携带着MP_REACH_NLRI属性(包含VPNv4路由前缀,下一跳和标签等重要信息)和RT属性。 ​ PE2根据RT将路由导入特定的VRF,同时将VPNv4路由的RD剥除,将IPv4路由通告给相应的客户的CE设备 ​ 客户IPv4路由被通告给CE设备

三:MPLS VPN报文转发

1.报文转发过程 (1)
以图中用户X的站点B访问站点A的192.168.1.0/24网段为例,报文转发过程如下: ![image-20220218105632866](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218105632866.png)
2.报文转发过程 (2)
![image-20220218105659613](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218105659613.png) ​ PE2根据报文入接口找到VPN实例,查找对应VPN的转发表 ​ 匹配目的IPv4前缀,并打上对应的内层标签(I-L) ​ 根据下一跳地址,查找对应的Tunnel-ID ​ 将报文从隧道发送出去,即打上公网(外层)MPLS标签头(O-L1)
3.报文转发过程 (3)
![image-20220218110122698](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110122698.png) ​ 骨干网的所有P设备都对该报文进行外层标签交换,直到到达PE1
4.报文转发过程 (4)
![image-20220218110350111](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110350111.png) ​ PE1收到该携带两层标签的报文,交给MPLS处理,MPLS协议将去掉外层标签 ​ PE1继续处理内层标签:根据内层标签确定对应的下一跳,并将内层标签剥离后,以纯IPv4报文的形式发送给CE1
5.报文转发过程 (5)
![image-20220218110736336](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110736336.png) ​ CE1收到该IPv4报文后,进行常规的IPv4处理流程

四:MPLS VPN配置与实现

1.配置命令 - VPN实例配置
![image-20220218110921136](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110921136.png) ![image-20220218110931125](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110931125.png)
2.配置命令 - MP-BGP配置
![image-20220218111050198](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218111050198.png)
3.配置命令 - PE与CE间路由配置
![image-20220218111121675](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218111121675.png)
4.MPLS VPN配置示例 - 背景介绍
![image-20220218111157869](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218111157869.png) ​ 客户X及Y各自有2个站点,现需要通过MPLS VPN实现站点之间的互联,分别对应VPNX和VPNY ​ 互联接口、AS号及IP地址信息如图 ​ 客户X站点与PE之间采用OSPF交互路由信息,客户Y站点与PE之间采用BGP交互路由信息
5.MPLS VPN配置示例 - 配置思路
**MPLS VPN骨干网配置** ​ IGP配置,实现骨干网的IP连通性 ​ MPLS与MPLS LDP配置,建立MPLS LSP公网隧道,传输VPN数据 ​ MP-BGP配置,建立后续传递VPNv4路由的MP-BGP对等体关系 **VPN用户接入配置** ​ 创建VPN实例并配置参数(RT、RD) ​ 将接口加入VPN实例 ​ 配置PE与CE之间的路由交换
6.MPLS VPN配置示例 - 数据规划
​ MPLS骨干网采用单区域OSPF实现路由互通,所有PE和P互联接口均使能MPLS LDP功能 **PE上的VPN相关配置如表格:** ![image-20220218111418110](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218111418110.png)
7.部署配置
**MPLS VPN骨干网配置** ​ 在MPLS VPN骨干网络内部署OSPF,MPLS VPN骨干网络内部署的OSPF用于实现骨干网络内部的路由互通 ​ 以PE1节点的OSPF配置为例 ```shell [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为例 ```shell [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为例 ```shell [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 ``` **MPLS VPN骨干网配置 - 配置验证** ​ 查看公网隧道建立情况 ```shell [PE1]display mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 3.3.3.3/32 NULL/1025 -/GE0/0/0 1.1.1.1/32 3/NULL -/- ``` ```shell [PE2]display mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 3.3.3.3/32 3/NULL -/- 1.1.1.1/32 NULL/1024 -/GE0/0/0 ``` ​ 查看MP-BGP邻居状态,以PE1为例 ```shell [PE1]display bgp vpnv4 all peer BGP local router ID : 1.1.1.1 Local AS number : 123 Total number of peers : 1 Peers in established state : 1 Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre fRcv 3.3.3.3 4 123 16 18 0 00:14:20 Established 0 ``` **VPN用户接入配置** ​ 创建VPN实例并按照规划配置RD与RT参数,以PE1为例 ```shell [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]vpn-target 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实例 ```shell [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为例 ```shell #创建与实例绑定的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 [PE1-ospf-2-area-0.0.0.0]quit ``` ```shell #配置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为例 ```shell #配置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 ``` ```shell #配置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路由学习情况 ```shell [CE1]display ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1 192.168.2.0/24 OSPF 10 4 D 192.168.100.2 GigabitEthernet0/0/0 192.168.100.0/24 Direct 0 0 D 192.168.100.1 GigabitEthernet0/0/0 192.168.200.0/24 O_ASE 150 1 D 192.168.100.2 GigabitEthernet0/0/0 ``` ```shell [CE3]dis ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.1.0/24 OSPF 10 4 D 192.168.200.2 GigabitEthernet0/0/0 192.168.2.0/24 Direct 0 0 D 192.168.2.254 GigabitEthernet0/0/1 192.168.100.0/24 O_ASE 150 1 D 192.168.200.2 GigabitEthernet0/0/0 192.168.200.0/24 Direct 0 0 D 192.168.200.1 GigabitEthernet0/0/0 ``` ​ 查看VPNY用户的CE路由学习情况 ```shell [CE2]display ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1 192.168.2.0/24 EBGP 255 0 D 192.168.100.2 GigabitEthernet0/0/0 192.168.100.0/24 Direct 0 0 D 192.168.100.1 GigabitEthernet0/0/0 ``` ```shell [CE4]display ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.2.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1 192.168.1.0/24 EBGP 255 0 D 192.168.100.2 GigabitEthernet0/0/0 192.168.200.0/24 Direct 0 0 D 192.168.100.1 GigabitEthernet0/0/0 ``` ```shell [PE2] display bgp vpnv4 vpn-instance VPNX routing-table 192.168.1.0 24 BGP local router ID : 3.3.3.3 Local AS number : 123 VPN-Instance VPNX, Router ID 3.3.3.3: Paths: 1 available, 1 best, 1 select BGP routing table entry information of 192.168.1.0/24: Label information (Received/Applied): 1026/NULL From: 1.1.1.1 (1.1.1.1) Relay token: 0x1 Original nexthop: 1.1.1.1 ``` ```shell [PE2]display mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 1.1.1.1/32 NULL/1024 -/GE0/0/0 1.1.1.1/32 1024/1024 -/GE0/0/0 ``` ​ 以192.168.2.0/24网段到192.168.1.0/24网段的数据为例,外层标签为1024,由MPLS LDP分配。内层标签为1026,由MP-BGP分配 ``` No. Time Source Destination Protocol Length Info 5 12.109000 192.168.2.254 192.168.1.254 ICMP 102 Echo (ping) request Frame 5: 102 bytes on wire (816 bits), 102 bytes captured (816 bits) on interface 0 Ethernet II, Src: HuaweiTe_b1:15:3e (00:e0:fc:b1:15:3e), Dst: HuaweiTe_49:20:bb (00:e0:fc:49:20:bb) MultiProtocol Label Switching Header, Label: 1024, Exp: 0, S: 0, TTL: 254 MultiProtocol Label Switching Header, Label: 1026, Exp: 0, S: 1, TTL: 254 Internet Protocol Version 4, Src: 192.168.2.254, Dst: 192.168.1.254 Internet Control Message Protocol ```

第二节:MPLS VPN部署与应用

一:MPLS VPN应用与组网概述

1.MPLS VPN典型应用
目前,MPLS VPN的主要应用包括企业互连和虚拟业务网络 ​ 企业互连应用:可通过MPLS VPN将分布在各地的分支机构和合作伙伴的IP网络连接在一起 ​ 虚拟业务网络:可在同一物理网络上运行多种业务,如VoIP、IPTV等,为每个业务建立一个VPN,实现业务隔离 ![image-20220218112540999](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112540999.png) **MPLS VPN的主要优点包括但不限于以下几项:** ​ 可以实现“一点接入,全网连通”,支持异种介质的互连。而不像传统专线那样在每一对用户设备间采用同样的介质连接,可方便地提供普遍服务 ​ 可以实现“弹性带宽”,采用流量监管技术,在保证用户基本带宽的同时,对突发流量尽力而为,同时基本带宽也可以“软扩容”,即根据用户的需求在一个范围内连续选择 ​ 在资源隔离或隧道绑定的MPLS VPN技术保证下,充分保证每个VPN的专有带宽,满足各类业务有不同的用户,不同的流量模型,不同的QoS要求
2.MPLS VPN基本组网 - Intranet
​ 当采用Intranet组网方案时,一个VPN中的所有用户形成闭合用户群,相互之间能够进行流量转发,VPN中的用户不能与任何本VPN以外的用户通信,其站点通常是属于同一个组织 ![image-20220218112633978](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112633978.png) ​ PE需要为每个站点创建VPN实例,并配置全网唯一的RD ​ PE通过配置Import RT和Export RT来控制不同VPN的站点做到无法互访
3.MPLS VPN基本组网 - Extranet
​ 当采用Extranet组网方案时,VPN用户可将部分站点中的网络资源给其他VPN用户进行访问 ![image-20220218112719775](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112719775.png) **如图,Site 2作为能被VPN1和VPN2访问的共享站点,需要保证:** ​ PE2能够接收PE1和PE3发布的VPNv4路由 ​ PE2发布的VPNv4路由能够被PE1和PE3接收 ​ PE2不把从PE1接收的VPNv4路由发布给PE3,也不把从PE3接收的VPNv4路由发布给PE1
4.MPLS VPN基本组网 - Hub&Spoke
​ 当采用Hub&Spoke方案时,可以将多个站点中的一个站点设置为Hub站点,其余站点为Spoke站点。站点间的互访必须通过Hub站点,通过Hub站点集中管控站点间的数据传输 ![image-20220218112820498](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112820498.png) ​ Spoke站点需要把路由发布给Hub站点,再通过Hub站点发布给其他Spoke站点。Spoke站点之间不直接交互路由信息 ​ Spoke-PE需要设置Export Target为“Spoke”,Import Target为“Hub” ​ Hub-PE上需要使用两个接口或子接口(创建两个VPN实例),一个用于接收Spoke-PE发来的路由,其VPN实例的Import Target为“Spoke”;另一个用于向Spoke-PE发布路由,其VPN实例的Export Target为“Hub” **从Site1到Site2的路由发布过程如下:** ![image-20220218112917570](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112917570.png) ​ Spoke-CE1发布路由给Spoke-PE1 ​ Spoke-PE1通过IBGP将该路由发布给Hub-PE ​ Hub-PE通过VPN实例(VPN_in)的Import Target属性将该路由引入VPN_in路由表,并发布给Hub-CE ​ Hub-CE学习到该路由,并将该路由发布给Hub-PE的VPN实例(VPN_out) ​ Hub-PE通过VPN_out发布该路由给Spoke-PE2(携带VPN_out的Export Target属性) ​ Spoke-PE2该路由发布给Spoke-CE2
5.MCE组网
​ 当一个私网需要根据业务或者网络划分VPN时,不同VPN用户间的业务需要完全隔离。此时,为每个VPN单独配置一台CE将增加用户的设备开支和维护成本 ​ 具有MCE(Multi-VPN-Instance,CE多实例CE)功能的CE设备可以在MPLS VPN组网应用中承担多个VPN实例的CE功能,减少用户网络设备的投入 ![image-20220218113034752](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113034752.png) ​ MCE将PE的部分功能扩展到CE设备,通过将不同的接口与VPN绑定,并为每个VPN创建和维护独立的路由转发表(Multi-VRF) ​ MCE与对应的PE之间可以通过物理接口、子接口或者逻辑接口进行互联,PE上需要将这些接口绑定到对应的VPN实例
6.MPLS VPN跨域组网
​ 随着MPLS VPN解决方案的广泛应用,服务的终端用户的规格和范围也在增长,在一个企业内部的站点数目越来越大,某个地理位置与另外一个服务提供商相连的需求变得非常的普遍,例如国内运营商的不同城域网之间,或相互协作的运营商的骨干网之间都存在着跨越不同自治系统(AS,Autonomous System)的情况 ​ 一般的MPLS VPN体系结构都是在一个AS内运行,任何VPN的路由信息都是只能在一个AS内按需扩散。AS之间的MPLS VPN部署需要通过跨域(Inter-AS) MPLS VPN解决方案来实现 ![image-20220218113137850](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113137850.png) **RFC2547中提出了三种跨域VPN解决方案,分别是:** ​ 跨域VPN-OptionA(Inter-Provider Backbones Option A)方式:需要跨域的VPN在ASBR(AS Boundary Router)间通过专用的接口管理自己的VPN路由,也称为VRF-to-VRF ​ 跨域VPN-OptionB(Inter-Provider Backbones Option B)方式:ASBR间通过MP-EBGP发布标签VPN-IPv4路由,也称为EBGP redistribution of labeled VPN-IPv4 routes ​ 跨域VPN-OptionC(Inter-Provider Backbones Option C)方式:PE间通过Multi-hop MP-EBGP发布标签VPN-IPv4路由,也称为Multihop EBGP redistribution of labeled VPN-IPv4 routes

二:MPLS VPN典型场景部署介绍

1.部署Intranet场景的MPLS VPN
​ 如图所示,客户X及Y各自有2个站点,现需要通过MPLS VPN实现站点之间的互联,分别对应VPNX和VPNY ​ 互联接口、AS号及IP地址信息,CE与PE通过如图的协议或方法交换路由信息 ![image-20220218113307716](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113307716.png) **部署思路** ​ MPLS VPN骨干网配置 ​ IGP配置,实现骨干网的IP连通性 ​ MPLS与MPLS LDP配置,建立MPLS LSP公网隧道,传输VPN数据 ​ MP-BGP配置,建立后续传递VPNv4路由的MP-BGP对等体关系 ​ VPN用户接入配置 ​ 创建VPN实例并配置参数(RT、RD) ​ 将接口加入VPN实例 ​ 配置PE与CE之间的路由交换 **PE-CE之间部署OSPF ** ![image-20220218113601464](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113601464.png) ```shell [CE1] ospf 1 [CE1-ospf-1] area 0 [CE1-ospf-1-area-0.0.0.0] network 192.168.100.0 0.0.0.255 [CE1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255 ``` 注意: ​ CE1的OSPF配置还是传统的OSPF配置,CE1无需支持VRF ```shell [PE1] ospf 1 vpn-instance VPNX [PE1-ospf-1] area 0 [PE1-ospf-1-area-0.0.0.0] network 192.168.100.0 0.0.0.255 [PE1-ospf-1-area-0.0.0.0] quit [PE1-ospf-1] import bgp ``` 注意: ​ PE1用于跟CE1对接的OSPF进程必须与对应的VPN实例绑定。将PE1的VPN实例VPNX的路由表中的BGP路由(主要是PE1通过BGP获知的、到达站点B的客户路由)引入OSPF,以便将这些路由通过OSPF通告给CE1。 ```shell [PE1] bgp 123 [PE1-bgp] ipv4-family vpn-instance VPNX [PE1-bgp] import-route ospf 1 ``` 注意: ​ 将PE1的VPN实例VPNX的路由表中通过OSPF进程1学习到的OSPF路由引入BGP,从而将到达站点A的客户路由转换成BGP的VPNv4路由,以便通告给远端的PE2。 **PE-CE之间部署静态路由** ![image-20220218113803680](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113803680.png) ```shell [CE2] ip route-static 192.168.1.0 24 192.168.200.2 [CE2] ip route-static 192.168.100.0 24 192.168.200.2 ``` 注意: ​ CE2需配置到达站点A内的各个网段的静态路由 ```shell [PE2] ip route-static vpn-instance VPNX 192.168.2.0 24 192.168.200.1 ``` 注意: ​ PE2需配置到达站点B内各个网段的静态路由 ```shell [PE2] bgp 123 [PE2-bgp] ipv4-family vpn-instance VPNX [PE2-bgp] import-route static ``` 注意: ​ 将PE2的VPN实例VPNX的路由表中的静态路由引入BGP,从而将客户路由转换成BGP的VPNv4路由,以便通告给远端的PE1 **PE-CE之间部署EBGP** ![image-20220218113941502](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113941502.png) ```shell [CE3] bgp 100 [CE3-bgp] peer 192.168.100.2 as-number 123 [CE3-bgp] network 192.168.1.0 24 ``` 注意: ​ CE3只需要执行普通BGP配置,且无需支持VRF。 ```shell [PE1] bgp 123 [PE1-bgp] ipv4-family vpn-instance VPNY [PE1-bgp-VPNY] peer 192.168.100.1 as-number 100 ``` 注意: ​ 当PE与CE之间使用BGP交互客户路由时,无需在PE上手工执行路由重分发操作。在本例中,PE1通过BGP从CE3学习到的客户路由后,PE1会自动将这些路由转换成VPNv4路由并通告给PE2;而PE1通过BGP从PE2获知到达站点D的路由后,会自动将它们转换成IPv4路由并通告给CE3。 **特殊场景下的BGP配置 - AS号替换** ​ 在MPLS VPN场景中,若PE与CE之间运行EBGP交互路由信息,则可能会出现两个站点的AS号相同的情况 ![image-20220218114103361](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218114103361.png) ​ 若CE1通过EBGP向PE1发送一条私网路由,并经过PE2发送到CE2,则CE2会由于AS号重复丢弃这条路由,导致属于同一VPN的Site 1和Site 2之间无法连通 ​ 可以在PE上执行peer substitute-as命令使能AS号替换功能,即PE用本地AS号替换收到的私网路由中CE所在VPN站点的AS号,这样对端CE就不会因为AS号重复而丢弃路由了 ```shell [PE1] bgp 123 [PE1-bgp] ipv4-family vpn-instance vpn1 [PE1-bgp-vpn1] peer 192.168.100.1 substitute-as ``` ​ PE1在向CE1发送BGP路由时,若发现AS_Path中包含65001,则会用本地AS号,也就是123去替换65001。所以,若有一条路由从CE2传给PE2,再由PE2传给PE1,当PE1再传递给CE1,此时BGP路由的AS_Path属性为{123,123} **特殊场景下的BGP配置 - SoO** 在CE多归属场景,若使能了BGP的AS号替换功能,可能会引起路由环路,需要SoO(Site of Origin)特性来避免环路 ​ CE1与CE3处于同一个VPN站点1,CE2位于站点Site2,Site1和Site2站点所在的AS号都为65001。PE与CE之间运行的都是EBGP路由协议,为了Site 1和Site 2之间的路由可以正常学习,需要在PE1和PE2上配置AS号替换功能 ​ CE1传递站点内的路由给PE1,PE1传递该路由给CE3,由于配置AS号替换,CE3会接收该路由,可能会导致产生路由环路 ```shell [PE1] bgp 123 [PE1-bgp] ipv4-family vpn-instance vpn1 [PE1-bgp-vpn1] peer 192.168.100.1 soo 200:1 [PE1-bgp-vpn1] peer 192.168.200.1 soo 200:1 ``` 配置了BGP邻居的SoO后: ​ 接收到该邻居的BGP路由时,会在路径属性中携带该SoO属性并通告给其他BGP邻居 ​ 向该邻居通告BGP路由时,会检查路由中的SoO属性是否与配置的SoO值相同,若相同则不通告,避免引起环路 ![image-20220218114307638](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218114307638.png) **PE-CE之间部署IS-IS** ![image-20220218114328243](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218114328243.png) ```shell [CE4] isis 1 [CE4-isis-1] network-entity 49.0001.0000.0000.1111.00 [CE4-isis-1] is-level level-2 [CE4-isis-1] quit [CE4] interface GigabitEthernet 0/0/0 [CE4-GigabitEthernet0/0/0] isis enable 1 [CE4-GigabitEthernet0/0/0]quit [CE4] interface GigabitEthernet 0/0/1 [CE4-GigabitEthernet0/0/1] isis enable 1 #GE0/0/1接口是192.168.2.0/24网段所在接口 ``` ```shell [PE2] isis 1 vpn-instance VPNY [PE2-isis-1] network-entity 49.0002.0000.0000.2222.00 [PE2-isis-1] is-level level-2 [PE2-isis-1] import-route bgp level-2 [PE2-isis-1] quit [PE2] interface GigabitEthernet 0/0/2 [PE2-GigabitEthernet0/0/2] isis enable 1 [PE2] bgp 123 [PE2-bgp] ipv4-family vpn-instance VPNY [PE2-bgp] import-route isis 1 ```