? ? ? ?MPLS VPN不是单一的一种VPN技术,是多种技术结合的综合解决方案。除非特别指出,否则MPLS VPN即指BGP/MPLS IP VPN。
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 层VPN)技术
MPLSVPN的骨干网也可以由企业自行搭建,技术层面与运营商搭建基本一致
CE、PE、P?
站点与VPN
MP-BGP
MP-BGP(MultiProtocolBGP):拓展的BGP协议,可提供对多种地址族的支持
VRF
VRF(Virtual Routing and Forwarding,虚拟路由转发),又称VPN实例,是MPLS VPN架构中的关键技术,每个VPN实例使用独立的路由转发表项,实现VPN之间的逻辑隔离。
VRF技术实现了同一物理设备上不同网络之间的逻辑隔离,当在物理设备上部署多个VRF实例时,每一个VRF实例就相当于一个虚拟的网络设备。VRF实例之间的接口和路由天然隔离,当同一个物理设备连接到多个相同的网段时,也不用担心IP地址冲突的问题。
?VRF技术广泛应用在防火墙虚拟系统、BGP/MPLSIPVPN等多个场景中。?
MPLS VPN不是单一的一种VPN技术,是多种技术结合的综合解决方案,主要包含下列技术:
静态路由、IGP、BGP:负责PE与CE之间的路由信息交换。
对VPN客户而言:
对于运营商而言:
MPLS TE(MPLS Traffic Engineering,MPLS流量工程):基于一定约束条件LSP隧道,并将流量引入到这些隧道中进行转发,使网络流量按照指定的路径进行传输。可以在不进行硬件升级的情况下对现有网络资源进行合理调配和利用,并对网络流量提供带宽和QoS保证,最大限度的节省成本。
根据VPN用户的需求不同,可采用以下几种常见的组网方案:
Intranet组网是最简单也是最典型的MPLS VPN组网方案,
若想实现同一个VPN的不同站点之间的通信,首先需要完成不同站点之间的路由交互。在基本MPLS VPN组网中,VPN路由信息的发布涉及CE和PE,P路由器只维护骨干网的路由,不需要了解任何VPN路由信息。 VPN路由信息的发布过程包括三部分:
CE与PE之间的路由信息交换
如图,客户X和客户Y属于不同的VPN,分别拥有两个站点,现需要实现站点间的路由信息交互。
CE与PE之间可以使用静态路由、OSPF、IS-IS或BGP交换路由信息。无论使用哪种路由协议,CE和PE之间交换的都是标准的IPv4路由。
本地CE到入口PE和出口PE到远端CE的路由信息交换原理完全相同。
VPN是一种私有网络,不同的VPN独立管理自己的地址范围,也称为地址空间(address space)。
PE在接收到CE传递来的路由之后,需要独立保存不同VPN的路由,且需要解决不同的客户使用重叠IP地址空间的问题。
例如图中用户X和用户Y都使用192.168.1.0/24网段地址。
??? ?以下两种情况允许VPN使用重叠的地址空间:
PE收到不同VPN的CE发来的IPv4地址前缀,本地根据VPN实例配置去区分这些地址前缀。但是VPN实例只是一个本地的概念,PE无法将VPN实例信息传递到对端PE,故有了RD(Route Distinguisher,路由标识符)。
??? ?配置RD时,只需要指定RD的Administrator子字段和Assigned Number子字段。
??? ?RD的配置格式有四种,常用的两种如下:
??????????? ?16 bit自治系统号:32 bit用户自定义数字(例如:100:1)。
??????????? ?32 bit IPv4地址:16 bit用户自定义数字(例如:172.1.1.1:1)。
??? ?RD的结构使得每个运营商可以独立地分配RD,但为了在某些应用场景下保证路由正常,必须保证RD全局唯一。
VPN-IPv4地址又被称为VPNv4地址:VPNv4地址共有12个字节,包括8字节的路由标识符RD(Route Distinguisher)和4字节的IPv4地址前缀。
PE之间建立BGP邻居关系,并通过BGP进行路由传递。为什么采用BGP呢?
为了正确处理VPN路由,MPLS VPN使用RFC2858(Multiprotocol Extensions for BGP-4)中规定的MP-BGP,即BGP-4的多协议扩展。
MP-BGP采用地址族来区分不同的网络层协议,既可以支持传统的IPv4地址族,又可以支持其它地址族(比如VPN-IPv4地址族、IPv6地址族等)。
MP-BGP新增了两种路径属性:
MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。
??? ?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)组成。
??? ?AFI标识网络层协议,对应RFC3232的“Address Family Number”所定义的地址族值。例如IPv4的值是1,IPv6的值是2。
??? ?SAFI表示NLRI的类型。AFI值为1,SAFI值为128表示NLRI中的地址为MPLS-labeled VPN-IPv4地址。
??? ?下一跳信息(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相同。
MP-BGP将VPNv4传递到远端PE之后,远端PE需要将VPNv4路由导入正确的VPN实例。
MPLS VPN使用BGP扩展团体属性:VPN Target(也称为Route Target)来控制VPN路由信息的发布与接收。
本地PE在发布VPNv4路由前附上RT属性,对端PE在接到VPNv4路由后根据RT将路由导入对应的VPN实例。
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实例的路由表。
??? ?与RD相同,RT由Type、Administrator和Assigned Number三个字段构成,长度也是8字节。
??? ?配置VPN-Target时,只需要指定VPN-Target的Administrator子字段和Assigned Number子字段。VPN-Target的配置格式与RD格式一致。
PE根据VPNv4路由所携带的RT将路由导入正确的VPN实例之后,VPNv4路由的RD值剥除,将IPv4路由通告给相应的客户的CE设备。
站点B和站点D的CE设备就能学习到去往各自远端站点的路由。同理,通过一系列的操作,可以实现同一用户(同一VPN)不同站点之间的路由互通。
数据转发时遇到的问题
PE和P设备之间运行LDP,交换公网标签,建立PE之间的LSP隧道(公网隧道)。
入口PE在通过MP-BGP传递VPNv4路由时,会携带私网标签,用于区分不同VPN的数据。
出口PE在接收到VPNv4路由后,需要执行私网路由交叉和隧道迭代来选择路由。
??? ?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实例路由表。