一.简介
- MPLS,称之为多协议标签交换,在九十年代中期被提出来,用于解决传统IP报文依赖查表转发而产生的瓶颈,现多用于VPN技术,MPLS报头封装在数据链路层之上,网络层之下。
- 本文为结合了华为技术和新华三技术的大成,即结合了HCIA,HCIP,HCIE Datacom和H3CNE-RS+,H3CSE-RS+,H3CIE-RS+。本文将主要介绍MPLS VPN的基本概念,博主将会在MPLS专栏中持续更新关于MPLS的进阶内容。
二.前言
- VPN(Virtual Private Network,虚拟专用网络)指的是在一个公共网络中实现虚拟的专用网络,从而使得用户能够基于该专用网络实现通信的技术。
- MPLS VPN也是VPN技术中的一种。需要强调的是,本文章所介绍的MPLS VPN指的是BGP/MPLS IP VPN,这是一种被业界广泛使用的三层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,是一种常见的L3VPN(Layer 3 VPN)技术。
2.MPLS VPN网络架构
- MPLS VPN网络架构由三部分组成:CE(Customer Edge)、PE(Provider Edge)和P(Provider),其中PE和P是运营商设备,CE是MPLS VPN用户设备。
- 站点(site)就是MPLS VPN的用户,由CE和其他用户设备构成。
- 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的关系:
- 对于多个连接到同一服务提供商网络的站点,通过制定策略,可以将它们划分0为不同的集合,只有属于相同集合的站点之间才能通过服务提供商网络互访,这种集合就是VPN。
- 一个Site中的设备可以属于多个VPN,换言之,一个site可以属于多个VPN。
- 注:也有可能出现站点为一台主机的情况,此时该主机就是CE设备。本课程仅讨论站点是一个或多个子网,用路由器或交换机作为CE的情况。
3.MPLS VPN技术架构
MPLS VPN不是单一的一种VPN技术,是多种技术结合的综合解决方案,主要包含下列技术:
- MP-BGP:负责在PE与PE之间传递站点内的路由信息。
- LDP:负责PE与PE之间的隧道建立。
- VRF:负责PE的VPN用户管理。
- 静态路由、IGP、BGP:负责PE与CE之间的路由信息交换。
4.选择MPLS VPN的优势
- 对VPN客户而言:
- 不“感知” VPN的存在,不需要部署和维护VPN,降低企业运维难度和成本。
- 一般部署在运营商的MPLS VPN专网上,有一定的安全性保障。
- 对于运营商而言:
- MPLS在无连接的IP网络中增加了面向连接的控制平面,为IP网络增添了管理和运营的手段。
- 支持地址空间重叠。
- 组网方式灵活、可扩展性好。
- 能够方便地支持MPLS TE合理调控现有网络资源,最大限度的节省运营商成本。
5.MPLS VPN常见组网
根据VPN用户的需求不同,可采用以下几种常见的组网方案:
- Intranet:一个VPN中的所有用户形成闭合用户群,同一VPN站点之间可以互访,不同VPN站点间不能互访。
- Extranet:适用于一个VPN用户希望提供部分本VPN的站点资源给其他VPN的用户访问的场景。
- Hub&Spoke:如果希望在VPN中设置中心访问控制设备,其它用户的互访都通过中心访问控制设备进行,可采用句Hub&Spoke组网方案。
四.MPLS VPN路由交互
1.MPLS VPN路由发布概述
- 若想实现同一个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的路由信息交换原理完全相同。
3.入口PE到出口PE路由传递1
- VPN是一种私有网络,不同的VPN独立管理自己的地址范围,也称为地址空间(address space)。
- PE在接收到CE传递来的路由之后,需要独立保存不同VPN的路由,且需要解决不同的客户使用重叠IP地址空间的问题。
- 例如图中用户X和用户Y都使用192.168.1.0/24网段地址。
4.VRF
VRF(Virtual Routing and Forwarding,虚拟路由转发),又称VPN实例,是MPLS VPN架构中的关键技术每个VPN实例使用独立的路由转发表项,实现VPN之间的逻辑隔离。
- 更多关于VRF的知识请查看博主出的文章 《VRF全网最详解》
5.RD
PE收到不同VPN的CE发来的IPv4地址前缀,本地根据VPN实例配置去区分这些地址前缀。但是VPN实例只是一个本地的概念,PE无法将VPN实例信息传递到对端PE,故有了RD(Route Distinguisher,路由标识符)。
- RD长8字节,用于区分使用相同地址空间的IPv4前缀,
- PE从CE接收到IPv4路由后,在IPv4前缀前加上RD,转换为全局唯一的VPN-IPv4路由。
- 配置RD时,只需要指定RD的Administrator子字段和Assiqned Number子字段。
- RD的配置格式有四种,常用的两种如下:
- 16 bit自治系统号:32 bit用户自定义数字(例如:100:1)。
- 32 bit lPv4地址:16 bit用户自定义数字(例如:172.1.1.1:1)。
- RD的结构使得每个运营商可以独立地分配RD,但为了在某些应用场景下保证路由正常,必须保证RD全局唯一。
6.VPN-IPV4地址
- VPN-IPv4地址又被称为VPNV4地址:VPNv4地址共有12个字节,包括8字节的路由标识符RD(Route Distinguisher)和4字节的IPv4地址前缀。
7.入口PE到出口PE路由传递2
- PE之间建立BGP邻居关系,并通过BGP进行路由传递。为什么采用BGP呢?
- BGP使用TCP作为其传输层协议,提高了协议的可靠性。可以跨路由器的两个PE设备之间直接交换路由。
- BGP拓展性强,为PE间传播VPN路由提供了便利。
- PE之间需要传送的路由条目可能较大,BGP只发送更新的路由,提高传递路由数量的同时不占用过多链路带宽。
- 传统的BGP-4不支持处理VPNV4路由。
8.MP-BGP
- 为了正确处理VPN路由,MPLS VPN使用RFC2858(Multiprotocol Extensions forBGP-4)中规定的MP-BGP,即BGP-4的多协议扩展。
- MP-BGP采用地址族来区分不同的网络层协议,既可以支持传统的IPv4地址族,又可以支持其它地址族(比如VPN-IPv4地址族、IPv6地址族等)。
- MP-BGP新增了两种路径属性:
- MP_REACH_NLRl:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。
- MP UNREACH_NLRI:Multiprotocol Unreachable NLRl,多协议不可达NLRI。用于撤销不可达路由。
更详细的介绍请查看本博主的文章《BGP 全网最详解》,位于BGP专栏内。
9.入口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实例。
10.RT
- 在PE上,每一个VPN实例都会与一个或多个VPN Target属性绑定,有两类VPN Target属性:
- Export Target(ERT):本地PE从直接相连站点学到IPv4路由后,转换为VPN IPv4路由,并为这些路由添加ExportTarget属性。Export Target属性作为BGP的扩展团体属性随路由发布。
- Import Target(IRT):PE收到其它PE发布的VPN-IPv4路由时,检查其Export Target属性。当此属性与PE上某个0VPN实例的Import Target匹配时,PE就把路由加入到该VPN实例的路由表。
11.入口PE到出口PE路由传递4
- PE根据VPNv4路由所携带的RT将路由导入正确的VPN实例之后,VPNv4路由的RD值剥除,将IPv4路由通告给相应的客户的CE设备。
- 站点B和站点D的CE设备就能学习到去往各自远端站点的路由。同理,通过一系列的操作,可以实现同一用户(同一VPN)不同站点之间的路由互通。
12.入口PE到出口PE路由传递5
- PE和P设备之间运行LDP,交换公网标签,建立PE之间的LSP隧道(公网隧道)
- 入口PE在通过MP-BGP传递VPNV4路由时,会携带私网标签,用于区分不同VPN的数据。
- 出口PE在接收到VPNV4路由后,需要执行私网路由交叉和隧道迭代来选择路由。
- PE上分配私网标签的方法有如下两种:
- 基于路由的MPLS标签分配:为VPN路由表的每一条路由分配一个标签(onelabel per route)。这种方式的缺点是:当路由数量比较多时,设备入标签映射表ILM(Incoming Label Map)需要维护的表项也会增多,从而提高了对设备容量的要求。
- 基于VPN实例的MPLS标签分配:为整个VPN实例分配一个标签,该VPN实例里的所有路由都共享一个标签。使用这种分配方法的好处是节约了标签。
- 私网路由交叉:VPNv4路由与本地VPN实例的VPN-Target进行匹配的过程称为私网路由交叉。PE在收到VPNv4路由后,既不进行优选,也不检查隧道是否存在,直接将其与本地的VPN实例进行交叉。
- 隧道迭代:为了将私网流量通过公网传递到另一端,需要有一条公网隧道承载这个私网流量。因此私网路由交叉完成后,需要根据目的IPv4前缀进行路由迭代,即该IPv4路由的下一跳有对应的LSP存在;只有隧道迭代成功,该路由才被放入对应的VPN实例路由表。
13.MPLS VPN中的路由交互全过程
14.本节小结
- 在MPLS VPN中,PE与CE,PE与PE之间需要进行VPN路由信息的传递。
- PE与CE之间可以采用BGP、IGP以及静态路由方式交互IPv4路由信息。
- PE与PE之间通过MP-BGP交互VPNv4路由信息,包含:
- RD:与IPv4前缀组合组成VPNv4前缀。
- RT:用于控制PE之间路由信息的接收和发布。
- 标签:数据转发时的内层(私网)标签,在PE上用来区分不同VPN的数据。
五.MPLS报文转发
1.报文转发过程
以图中用户X的站点B访问站点A的192.168.1.0/24网段为例,报文转发过程如下:
六.MPLS VPN配置与实现
关于MPLS的实验有不少,我会另写文章发布到专栏中,请持续关注博主的MPLS专栏,里面是全网最详细的MPLS介绍。