| 华为MPLS VPN技术教程 |
| BGP/MPLS VPN概述
传统VPN使用第二层隧道协议(L2TP、L2F和PPTP等)或者第三层隧道技术(IPSec、GRE等),获得了很大成功,被广泛应用。但是,随着VPN范围的扩大,传统VPN在可扩展性和可管理性等方面的缺陷越来越突出。 通过MPLS(Multiprotocol Label Switching,多协议标签交换)技术可以非常容易地实现基于IP技术的VPN业务,而且可以满足VPN可扩展性和管理的需求。利用MPLS构造的VPN,通过配置,可将单一接入点形成多种VPN,每种VPN代表不同的业务,使网络能以灵活方式传送不同类型的业务。 VRP目前提供比较完全的BGP/MPLS VPN组网能力: l 地址隔离,允许不同VPN之间和VPN与公网之间的地址重叠。 l 支持MP-BGP协议穿越公网发布VPN的路由消息,构建BGP/MPLS VPN。 l 通过MPLS LSP转发VPN的数据流。 l 提供了MPLS VPN的性能监视和故障检测工具。 3.1.1 BGP/MPLS VPN模型1. BGP/MPLS VPN模型
如上图所示,MPLS VPN模型中,包含三个组成部分:CE、PE和P。 l CE(Customer Edge)设备:是用户网络边缘设备,有接口直接与服务提供商相连,可以是路由器或是交换机等。CE“感知”不到VPN的存在。 l PE(Provider Edge)路由器:即运营商边缘路由器,是运营商网络的边缘设备,与用户的CE直接相连。MPLS网络中,对VPN的所有处理都发生在PE路由器上。 l P(Provider)路由器:运营商网络中的骨干路由器,不和CE直接相连。P路由器需要支持MPLS能力。 CE和PE的划分主要是从运营商与用户的管理范围来划分的,CE和PE是两者管理范围的边界。 2. BGP/MPLS VPN中的基本概念(1) vpn-instance vpn-instance是MPLS VPN中实现VPN路由的重要概念。在MPLS VPN的实现中,每个Site在PE上对应一个专门的vpn–instance(vpn –instance通过与接口绑定实现与Site的关联)。如果一个Site中的用户同时属于多个VPN,则该Site对应的vpn-instance中将包括所有这些VPN的信息。 具体来说,vpn-instance的信息中包括:标签转发表、IP路由表、与vpn-instance绑定的接口以及vpn-instance的管理信息(包括RD、路由过滤策略VPN Target、成员接口列表等)。可以认为,它综合了该Site的VPN成员关系和路由规则。 PE负责更新和维护vpn-instance与VPN的关联关系。为了避免数据泄漏出VPN之外,同时防止VPN之外的数据进入,在PE上,每个vpn-instance有一套相对独立的路由表和标签转发表,报文转发信息存储在该vpn-instance的IP路由表和标签转发表中。 (2) MP-BGP MP-BGP(multiprotocol extensions for BGP-4,请参见RFC2283)在PE路由器之间传播VPN组成信息和路由。MP-BGP向下兼容,既可以支持传统的IPv4地址族,又可以支持其他地址族(比如VPN-IPv4地址族)。使用MP-BGP确保VPN的私网路由只在VPN内发布,并实现MPLS VPN成员间的通信。 (3) VPN-IPv4地址族 由于VPN网络是一个私用网络,不同的Site可以使用相同的IP地址来表示。而PE路由器之间使用MP-IBGP来发布与之相连的CE的路由时,是假定IP地址是全球唯一的,二者之间不同的含义会导致路由错误。为了解决这个问题,在发布路由之前MP-BGP需要实现IPv4地址到VPN-IPv4地址族的转换,使之成为全球唯一的地址(故PE路由器需要支持MP-BGP)。 一个VPN-IPv4地址有12个字节,开始是8字节的RD(Route Distinguisher,路由识别符),下面是4字节的IPv4地址。服务供应商可以独立地分配RD,但是,需要把他们专用的AS(Autonomous System—自治系统)号作为RD的一部分。通过这样的处理以后,即使VPN-IPv4地址中包含的4字节IPv4地址重叠,VPN-IPv4地址仍可以保持全局唯一。RD纯粹是为了区别不同的路由,仅在运营商网络内部使用,RD为零的VPN-IPv4地址相当于普通的IPv4地址。 PE从CE接收的路由是IPv4路由,需要引入vpn-instance路由表中,此时需要附加一个RD。在我们的实现中,为来自于同一个用户Site的所有路由设置相同的RD。 3. VPN Target属性VPN Target属性是MP-BGP扩展团体属性之一,主要用来限制VPN路由信息发布。它标识了可以使用某路由的Site的集合,即该路由可以被哪些Site所接收,通过它,可以明确每一个PE路由器可以接收哪些Site传送来的路由。与VPN Target中指明的Site相连的PE路由器,都会接收到具有这种属性的路由。 PE路由器存在两个VPN Target属性集合:一个集合称为Export Targets,在发布本地路由到远端PE路由器时,附加到从某个直连的Site上接收到的路由上;另一个集合称为Import Targets,在接收远端PE发布的路由时,决定哪些路由可以引入此Site的VPN路由表中。 当通过匹配路由所携带的VPN Target属性来过滤PE路由器接收的路由信息时,如果Export VPN Target集合与Import VPN Target集合存在相同项,则该路由被安装到VPN路由表中,进而发布给相连的CE;如果Export VPN Target集合与Import VPN Target集合没有相同项,则该路由被拒绝。 BGP/MPLS VPN的实现 BGP/MPLS VPN的主要原理是:利用BGP在运营商骨干网上传播VPN的私网路由信息,用MPLS来转发VPN业务流。 下面从VPN路由信息的发布和VPN报文转发两个方面介绍BGP/MPLS VPN的实现。 1. VPN路由信息发布(1) CE到PE间的路由信息交换 PE可以通过静态路由、RIP(应支持多实例)、OSPF(应支持多实例)或EBGP学习到与它相连的CE的路由信息,并将此路由安装到VPN-instance中。 (2) 入口PE到出口PE的路由信息交换 入口PE路由器利用MP-IBGP穿越公网,把它从CE学习到的路由信息发布给出口PE(带着MPLS标签),同时,获得出口PE学习到的CE路由信息。 PE之间通过IGP(如RIP、OSPF)来保证VPN内部节点之间的连通性,故应在所有互联接口及loopback接口上运行IGP。 (3) PE之间的LSP建立 为了使用MPLS LSP转发VPN的数据流量,一定在PE之间建立公网LSP。从CE接收报文并建立私网标签栈的PE路由器是ingress LSR,BGP的下一跳(即出口PE路由器)是engress LSR。可以使用LDP建立尽力转发的LSP,也可以使用RSVP建立支持特定QoS的LSP或基于流量工程的LSP。使用LDP建立LSP将在PE之间形成全连接的LSP,本章只讨论这种情况。 (4) PE到CE间的路由信息交换 CE可以通过静态路由、RIP、OSPF、或EBGP,从相连的PE上学习远端的VPN路由。 经过以上的步骤,CE之间将建立可达的路由,完成VPN私网路由信息在公网上的传播。 2. VPN报文的转发VPN报文在入口PE路由器上形成两层标签栈: 内层标签,也称MPLS标签,是由出口PE向入口PE发布路由时分配的(安装在VPN转发表中),在标签栈中处于栈底位置。当从公网上发来的VPN报文到达出口PE时,根据标签查找MPLS转发表就可以从指定的接口将报文发送到指定的CE或者Site。 外层标签,也称LSP的初始化标签,指示了从入口PE到出口PE的一条LSP,在标签栈中处于栈顶位置。VPN报文利用这层标签的交换,就可以沿着LSP到达对端PE。 以下图为例:
图3-3 VPN报文转发示意图 (1) Site1发出一个目的地址为1.1.1.2的IPv4报文到达CE1,CE1查找IP路由表,根据匹配的表项将IPv4报文发送至PE1。 (2) PE1根据报文到达的接口及目的地址查找VPN-instance表项,获得内层标签、外层标签、BGP下一跳(PE2)、输出接口等。进行标签封装后,PE1通过输出接口转发MPLS报文到LSP上的第一个P。 (3) LSP上的每一个P路由器利用交换报文的外层标签转发MPLS报文,直到报文传送到倒数第二跳路由器,即到PE2前的P路由器。倒数第二跳路由器将外层标签弹出,并转发MPLS报文到PE2。 (4) PE2根据内层标签和目的地址查找VPN转发表,确定标签操作和报文的出接口,最终弹出内层标签并由出接口转发IPv4报文至CE2。 (5) CE2查找路由表,根据正常的IPv4报文转发过程将报文传送到Site2。 3.1.3 HoVPN1. 为什么需要HoVPN(1) 分层模型与平面模型 在BGP/MPLS VPN解决方案中,PE设备最为关键,它完成两方面的功能:首先是为用户提供接入功能,这需要PE具有大量接口;然后是管理和发布VPN路由,处理用户报文,这需要PE设备具有大容量内存和高转发能力。 目前的网络设计大多采用经典的分层结构,例如,城域网的典型结构是三层模型:核心层、汇聚层、接入层。从核心层到接入层,对设备的性能要求依次下降,网络的规模则依次扩大。 而BGP/MPLS VPN是一种平面模型,对网络中所有PE设备的性能要求相同,当网络中某些PE在性能和可扩展性方面存在问题时,整个网络的性能和可扩展性将受到影响。 由于BGP/MPLS VPN的平面模型与典型的分层网络模型不相符,在每一个层次上部署PE都会遇到扩展性问题,不利于大规模部署VPN。 (2) HoVPN 为解决可扩展性问题,BGP/MPLS VPN必然要从平面模型转变为分层模型。 在MPLS L3VPN领域,华为公司提出了分层VPN(Hierarchy of VPN,简称HoVPN)解决方案,将PE的功能分布到多个PE设备上,多个PE承担不同的角色,并形成层次结构,共同完成一个PE的功能。 HoVPN对处于较高层次的设备的路由能力和转发性能要求较高,而对处于较低层次的设备的相应要求也较低,符合典型的分层网络模型。 2. HoVPN的实现(1) HoVPN的基本结构
图3-4 HoVPN的基本结构 在上图中,直接连结用户的设备称为下层PE(Underlayer PE)或用户侧PE(User-end PE),简写为UPE;连结UPE并位于网络内部的设备称为上层PE(Superstratum PE)或运营商侧PE(Sevice Provider-end PE),简写为SPE。 多个UPE与SPE构成分层式PE,共同完成传统上一个PE的功能。 & 说明: HoVPN把PE的功能分层实现,因此,这种解决方案有时也被称为分层PE(Hierarchy of VPN,HoPE)。
SPE与UPE的分工是: l UPE主要完成用户接入功能。UPE维护其直接相连的VPN Site的路由,但不维护VPN中其它远程Site的路由或仅维护它们的聚合路由;UPE为其直接相连的Site的路由分配内层标签,并通过MP-BGP随VPN路由发布此标签给SPE; l SPE主要完成VPN路由的管理和发布。SPE维护其通过UPE连接的VPN所有路由,包括本地和远程Site的路由,但SPE不发布远程Site的路由给UPE,只发布VPN实例的缺省路由或聚合路由给UPE,并携带标签。 由于分工的不同,对SPE和UPE的要求也不同:SPE的路由表容量大,转发性能强,但接口资源较少;UPE的路由容量和转发性能较低,但接入能力强。HoVPN充分利用了SPE的性能和UPE的接入能力。 需要说明的是,SPE和UPE是相对的概念。在多个层次的PE结构中,上层PE相对于下层就是SPE,下层PE相对于上层就是UPE。 分层式PE从外部来看同传统上的PE没有区别,可以同普通PE共存于一个MPLS网络。 (2) SPE-UPE SPE和UPE之间运行MP-BGP,可以是MP-IBGP,也可以是MP-EBGP,这取决于UPE和SPE是否属于同一个AS。 采用MP-IBGP时,为了在IBGP对等体之间通告路由,SPE将作为路由反射器,把来自IBGP对等体UPE的VPN路由发布给IBGP对等体SPE,但SPE不作为其它PE的路由反射器。 (3) HoVPN的嵌套与扩展 HoVPN支持分层式PE的嵌套: l 一个分层式PE可以作为UPE,同另一个SPE组成新的分层式PE; l 一个分层式PE可以作为SPE,同多个UPE组成新的分层式PE; l 以上这种嵌套可以多次进行。 通过分层式PE的嵌套,在理论上可以将VPN无限扩展与延伸。
图3-5 分层式PE的嵌套 上图是一个三层的分层式PE,称中间的PE为MPE(Middle-level PE)。SPE和MPE之间,以及MPE和UPE之间,均运行MP-BGP。 & 说明: “MPE”这种说法只是为了表述方便,在HoVPN模型中并没有MPE的概念。
MP-BGP为上层PE发布下层PE上的所有VPN路由,但只为下层PE发布上层PE的VPN实例缺省路由。 SPE维护了这个分层式PE接入的所有Site的VPN路由,路由数目最多;UPE只维护它所直接连接的Site的VPN路由,路由数目最少;MPE的路由数目介于SPE和UPE之间。
|