电信技术研究 2008年第l2期 基于MPLS的VPN技术 何鹏石盛平戴勤书 摘要:基于MPLS的VPN技术是MPLS的一个重要应用,具有网络配置简单、可 扩展性好以及提供安全性等特点。本文结合实际数据分析,阐述了三层VPN技术 的基本原理、实现方法,重点介绍了二层VPN技术体制、封装格式、信令机制, 并就两种VPN技术做了比较,对信号识别和研制相关产品有一定意义。 关键词:MPLS三层VPN二层VPN LSP隧道RSVP LDP 1引言 目前,在世界范围内存在两大核心网络技术,一种是计算机界倡导且广泛应用的IP 网络技术,另一种是电信界推崇的ATM技术。但随着业务的广泛发展,两类技术都出 现了瓶颈性缺点。lP技术不支持Qos业务,并且随着网络规模扩大,其路由交换也存在 问题。ATM技术实现较为复杂,运营维护费用高制约了其快速发展。 协议标记交换(MPLS)是一种可在多种第二、三层媒质上进行标记交换的网络技 术。它吸取了ATM高速交换的优点,把面向连接引入控制,是介于2・3层的2.5层协议。 它结合了第二层交换和第三层路由的特点,将第二层的基础设施和第三层的路由有机地 结合起来。第三层的路由在网络的边缘实施,而在MPLS的网络核心采用第二层交换。 MPLS技术结合了交换和路由技术,可较好地解决原有技术所存在的缺陷。 虚拟专用网(VPN)是一种利用公众网络资源来建立专用通信网络的技术,它可以 使企业利用公众网的资源将分散在各地的办事机构和客户等动态地连接起来,使网络提 供商、企业和最终客户三者都获利。目前用于构建VPN网络的公共网络包括Intemet、 帧中继、ATM等,在公共网络上组建的VPN跟企业现有的私有网络一样可提供安全性、 可靠性和可管理性等。 作为一种高效的IP骨干网技术平台,MPLS为实现VPN提供了一种灵活的并且具 有可扩展性的技术基础。采用MPLS技术实现VPN的技术方案将大大改善传统IP网络 的缺陷,又能提供和帧中继和ATM网络一样的安全性保证,可以很好地适应VPN业务 的需求。故本文在分析各类实际信号的基础上,总结介绍了基于MPLS的VPV技术原 理、数据格式和实际样本数据分析结果,对信号识别和相关产品的开发有一定意义。 2 MPLSVPN模型基本原理 2.1 MPLS VPN基本概念 图1为MPLS VPN模型,在该模型中网络由运营商的骨干网与用户的各个Site组成, 所谓的VPN就是对Site集合的划分,一个VPN就对应一个若干Site组成的集合。 26 科技论文 \( l \ 备注:CE(Custom Edge)用户Site中直接与服务提供商相连的边缘设备,一般是路由 器PE(Provider Edge)骨干网中的边缘设备,它直接与用户CE相连P路由器(Provider Router)骨干网中不与CE直接相连的设备 图1 MPLSVPN模型 2.2 MPLS VPN基本原理 用户端的路由器(cE)首先通过静态路由或BGP将用户网络中的路由信息通知提供 商路由器(PE),同时在PE之间采用BGP协议传送VPN・IP的信息以及相应的标记(VPN 的标记,简称为内层标记),而在PE与P路由器之间则采用传统的OSPF协议相互学习 路由信息,采用LDP协议进行路由信息与标记(骨干网络中的标记,以下称为外层标记) 的绑定。此时,CE、PE以及P路由器中基本的网络拓扑以及路由信息已经形成。PE路 由器拥有了骨干网络的路由信息以及每一个VPN的路由信息。 当属于某一VPN的CE用户数据进入网络时,在CE与PE连接的接口上可以识别 出该CE属于哪一个VPN,进而到该VPN的路由表中去读取下一跳的地址信息,同时 在前传的数据包中打上VPN标记(内层标记),这时得到的下一跳地址为与该PE作Peer 的PE的地址。为了达到这个目的端的PE,此时在起始端PE中需读取骨干网络的路由 信息,从而得到下一个P路由器的地址,同时采用LDP在用户前传数据包中打上骨干网 络中的标记(外层标记)。在骨干网络中,初始PE之后的P均只读取外层标记的信息来 决定下一跳,因此骨干网络中只是简单的标记交换。 在到达目的端PE之前的最后一个P路由器时,将外层标记去掉,读取内层标记, 找到VPN,并送到相关的接口上,进而将数据传送到VPN的目的地址。 2.3 MPLSVPN实现基本方式 VPN有多种实现方式,具体可以分为用户管理的VPN解决方案(CPE-VPN)和 提供商实施的VPN解决方案(PP—VPN)。 CPE--VPN方案是用户自己设置、管理并维护VPN网关设备,通过公共IP网在各 个分支机构和公司总部之间建立基于标准VPN隧道的连接,隧道协议通常采用二层隧 道协议(L2TP)、点到点隧道协议(PPTP)、IPsec、IP in IP和通用路由选择封装(GRE) 等,并且利用各种加密技术和网络地址转换(NAT)技术来保障数据传输的安全。VPN 27 电信技术研究 2008年第12期 隧道连接的建立与管理完全由用户自己负责,提供商不需要调整或改变网络的结构与性 能,这种方式也就是通常所说的“自建VPN”方式。 \ 户或远程拨号接入用户。利用该网关设备,可以在全网范围内根据具体的VPN网络需 PP-VPN方案是指在提供商的公共数据网上设置VPN网关设备,用于专线接入用 \ 求,通过隧道封装、虚拟路由器或MPLS等技术建立VPN,并且可以采用加密技术以保 障数据传输的安全。VPN连接的建立完全由提供商负责,对用户透明,这种方式也就是 通常所说的“外包VPN”方式。 按照VPN实现的网络层次进行分类,VPN可以分为二层VPN和三层VPN,这两 种技术都是属于PP~VPN方案。 3基于第三层的VPN网络模型 如图2所示,基于第三层的MPLS VPN允许服务商使用自己的IP骨干,为客户提供 VPN服务。其使用BGP把VPN的路由信息分布到供应商的骨干中,并使用MPLS把VPN 流量从一个站点转发到另一个站点上。每一个VPN具有独自的VPN标识符,每一个VPN 的用户只能与自己VPN网络中的成员进行通信,而也只有VPN的成员才能有权进入该 VPN。 图2基于第三层的VPN网络模型 设置CE、PE、P这3种网络设备,其中在CE-PE、PE—PE之间使用BGP协议作为 标记控制协议,其中CE PE之间属于BGP自治域问会晤(即EBGP),而PE-PE之间属于 BGP自治域内会晤(即IBGP)。PE。P之间以使用IETF为MPLS定义的任何标记控制协议, 即LDP、CR.LDP、RSVP.TE等。在PE设备上维护多个VRF,这些VRF可用路由索引 的方式来组织。每个连接入PE的Site都对应于其中一个VRF,VRF的建立和修改由 BGP协议负责。 MPLS可以看做是一种面向连接的技术。每个MPLS VPN数据报都携带标记栈,栈 中至少含有两个标记,其中栈顶标记,也就是外部标记,决定数据报从入口PE到出13 PE之间所走的LSP隧道,在被所经过的P路由器转发时不断被替换。而栈底标记(即 内部标记),则与RD值对应,代表数据报所属的VPN,将在入13 PE处被压入标记栈栈 底,而在整个转发过程中不会被读取,仅当到了出口PE时才把它剥离,并根据这标记 值找到相应VRF,再决定它的下一站的Site。从得到的数据分析也可以看出两个VPN 网络可以同时传输数据,PE可以根据栈底标记区别出不用VPN,给出正确转发路由。 标签交换的工作过程可概括为以下3个步骤: 2R 科技论文 (1)由LDP(标签分布协议)和传统路由协议(OSPF、BGP等)一起,在LSR中建立路 由表和标签映射表; (2)LER接收IP包,完成第三层功能,并给IP包加上标签:在MPLS出口的LER 上,将分组中的标签去掉后继续进行转发; (3)LSR对分组不再进行任何第三层处理,只是依据分组上的标签通过交换单元对 其进行转发。 4基于第二层的VPN网络模型 4.1基本原理 二层MPLS VPN提供基于MPLS网络的二层VPN服务,使运营商可以在统一的 MPLS网络上提供基于不同数据链路层的二层VPN,包括ATM、FR、VLAN、Ethemet、 PPP等。同时,MPLS网络仍可以提供传统IP、MPLS L3VPN、流量工程和QoS等服务。 简单来说,二层MPLS VPN就是在MPLS网络上透明传输用户二层数据。从用户的 角度来看,MPLS网络是一个二层交换网络,可以在不同节点间建立二层连接。 4.2二层MPLS VPN实现方式 二层MPLS VPN的实现主要包括如何对用户的第二层帧进行封装和如何在MPLS 骨干网中传输封装后的帧,但目前没有形成正式标准。目前主要有Martini草案和 Kompella草案,其中Martini是较为常用的一种方式。 Martini草案定义了通过建立点到点的链路来实现MPLS L2 VPN的方法。它以标记 分发协议(Label Distribution Protoco1)为信令协议来传递双方的VC标签,称为Martini 方式MPLS二层VPN。其封装方式如图3。 隧道标记 Tunnel Label D< S TTL 虚电路标记 VC Labd D< S TTL 控制字 Rsvd}Fhgs l L啦gt Sequence Numbe ̄ 图3 Martini方式MPLS封装方式 其中,控制字为可选项,配合VC Lable使用;Rsvd为4bits,预留将来使用; Flags为4bits,用于传送与特定协议有关的控制信息;Length为8bits,标识包的长度, 以便在出VI路由器可以删除填充比特。 二层MPLS VPN使用标签栈使得数据报文在MPLS网络中透明传送:外层标签 (Tunnel Labe1)用于将报文从一个PE传送到另一个PE;内层标签(VC标签)用于区 分不同VPN中的不同连接;接受端PE根据VC标签决定将报文传送给哪个CE。控制 字的作用首先是用于保证帧的传输顺序,其次是满足传输最小帧的要求,最重要的是传 送封装的原第二层帧帧头中的控制消息,目前Martini草案可以对很多第二层帧进行封 装,包括ATM,以太网,HDLC以及PPP等,对每一种协议封装的大体结构相同,但等 效虚电路标记和控制字中的相应字段各异。 29 电信技术研究 2008年第12期 4.3二层MPLSVPN数据封装 通过实际信号样本数据分析,目前二层MPLS VPN主要提供ATM业务。 4.3.1 AAL5 CPCS.SDU模式承载ATM业务 该模式中,入口LSR需要重新封装完整的AAL5 CPCS—SDU使其成为独立的一帧, 但ALL5的尾巴字节不需要传输。控制字是需要的,但其使用是可选的。入VI LSR一旦 决定不让其生效,必须将其置0,而出口LSR如果其忽略该字节也必须将其置0。 2 3 0 1 2 34 5 6 7 8 9 0 l 2 3 4 5 6 7 8 9 0 1 2 34 5 6 7 8 9 0 1 +・十一十一+・+-十一+一十斗-十一+一+・+-+一十一十斗斗一+一十一+一+-+一十斗.十.+一+-+一+.+.+斗 I Rsvd lTIEILICI Lend SeqIuence Number(optiona1) l +一+一+一+.+一+一+一+斗一+-+.+一+ +.+.+.+-4-.+.+-+-+-+-+斗.+,+.+.+.+.+.+斗 I ATM AAL5 CPCS.SDU 图4 AAL5 CPCS—SDU封装方式 控制字(controlword)中T/E/L/C比特的作用如下:T为标识传送类型ATM CELL 或AAL5 CPCS—PDU;E为映射AALSCPCS—PDU尾部显式前向拥塞指示(EFCI);L为映 射ATMCELL中的包丢失优先级(cLP);C为映射AAL5CPCS-PDU尾部C/R比特。 该模式每一帧长度不定,Length字段指示了ATM AAL5 CPCS—SDU数据单元的长 度。当长度大于64字节时,Length字段被置0,否则指示实际长度。 数据包1:ff03 02 81 00 68 54 fO0 6d b5 02 QQ 2昼QQ QQ 03 CC 45 00 O0 28 cO 6a 40 O0 31 06 47 cfOc 2a 33 15 7c 06 86 5l 0l bb 11 c6 d0 a4 4a ca 05 e3 30 2d 50 ll 19 20 fo lC O0 0O e4 24 el df。 数据包2:ff03 02 81 00 68 54 fr00 6d b5 02 QQ QQ QQ 03 CC 45 O0 O0 3c 34 6b O0 O0 f2 0l 40 34 dl bf8O 51 7c 06 86 0a 00 0O ad 7e 03 O0 05 ca 50 49 4e 47 20 62 79 20 49 50 43 68 65 63 6b 2O 53 65 72 76 65 72 20 4d 6f6e 69 74 6f72 20 77 20 l1 d2 1f。 以上两个数据包都是AAL5 CPCS—SDU模式承载的ATM业务数据,其控制字T、E、 L、C均被置0不起作用。数据包1 AAL5 CPCS—SDU数据单元长度为46,小于64字节 有指示,数据包2 AAL5 CPCS-SDU数据单元长度大于64,Length字段被置0。 4.3.2 ATMCELL模式承载ATM业务 该模式的封装由可选4字节控制字,4字节ATM信元头和信元负载组成(不包括 HEC字节)。如果要使用控制字节,但不需要字节中的标志位其作用,必须将其置0, 且在接受端被放弃。4字节信元头包含了VPI,VCI值,PTI和C位分别为输入信元的 PTI和C位,头部不包含输入信元的HEC字节。 3O 科技论文 0 1 0 l 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9,0 1 2 34 5 6 7 8 9 0 1 +.+.+.十一+.+.+.+斗.+一+-+.+.+.+.+.+斗 +一+一+一+-+一十斗一+一+・+一+・+一+一+一+ Con c rol Wo rot【0 D ci 0ribI) +.+ +.+一+.+.+.+斗.+-+一+.+一+.+.+一+斗一+一十一十-+-+一+斗-+・+一+-+一+-+・+ + I vP T l VC T I PTI l C +.+.+.+.+一十-+-+斗-+.+一+-+-+-+一+一+斗・+・+-+一+-+一+斗一+一+一+・+・+-十一+-+ I AT Pay J0ad(48 bytes) + +.+.+一+一+ + +斗一+一+.+-+一+一+.+-+斗 +一+一+一+一+一+斗一+一+一+一+-十一+-+-+ 图5 ATM CELL封装方式 目前该模式的数据主要采用AAL1和AAL5类型。如以下数据样本: 数据包1:ff03 02 81 00 dO 2c fr0O 42 9d 02 QQ垒Q Q鱼垒Q af23 09 8b fffffffd 7f6fbb c5 8c a9 72 e0 0c a8 cO ba bc d4 de c9 1l da 6f3b e5 87 a8 c4 effrfffffFfffrfe 6f 72 ec 98。 数据包2:if03 02 81 00 dO 2c f00 42 9d 02 QQ垒Q Q 垒Q垒曼4b ce 07 73 58 93 03 e1 da f9 96 a6 e9 2b 12 73 0e 63 ea 0e 03 fr仃仃fffffrfr7c 81 78 00 19 42 00 OO 0O 10 00 df6b 07 41 c5 a3 35 2a。 数据包3:ff03 02 8l O0 df54 fe o0 5b e1.02 OfdO Off0.aa aa 03 00 00 00 08 00 45 00 00 30 84 57 4O 00 0c 06 c7 af54 f5 0a 90 40 c3 82 79 ca 0e 00 l9 a7 80 6b 44 00 00 00 00 70 02 ffff83 71 00。 数据包4:ffO3 O2 81 00 df54 fe 00 5b el Q2 Q£ Q Q£ 02 04 05 b4 O1 0l O4 02 00 00 00 O0 0O 00 00 00 00 0O 00 OO O0 0O 00 0O OO 0O OO 00 00 00 00 00 00 00 00 O0 0O O0 00 O0 00 0O 00 38 b7 37 ba。 数据包5:ff03 02 8l O0 df54 fe 0O 5b e1 Q2 Q£旦Q Q£ aa aa 03 00 00 00 08 00 45 00 00 30 09 64 40 00 69 06 1f6C 58 fe CC bd 40 c3 82 79 47 59 00】9 5d f4 26 03 0O O0 O0 00 7O O2 fa fD d3 CC 00。 其中,数据包1、2都是ATM CELL AAL1模式承载的ATM业务数据,o0 4O O6 40 为ATM信元头和信元负载,使用同一标签的数据包是具有连续计数特征(数据包l计 数字节为3,数据包2计数字节为4)的AAL1业务。 数据包3、4、5都是ATM CELL AAL5模式承载的ATM业务数据,该模式是把完 整的数据包分拆为统一字长的ATM CELL信元封装传输,通过ATM头部的PT(净荷类 型)字段指示包的开始结束,0指示传送数据包开始和中间的ATM CELL信元,1指示 传送数据包结束的ATM CELL信元,这个符合ALL5传输模式,可以将分拆的ATM CELL 数据包合并成整体的数据包进行分析。 4.3二层MPLSVPN信令机制 Tunnel LSP负责将第2层信息由入口端传送到出口端。LSP建立可以采用静态配置 或通过信令建立。目前主要使用的协议是LDP,CR—LDP,RSVP TE。 对于一条LSP,一旦在Ingress节点为报文分配了标签,流量的转发就完全由标签决 电信技术研究 2008年第l2期 定了。流量对LSP的中间节点是透明的,从这个意义上说,一条LSP可以看作是一条 LSP隧道。使用RSVP建立LSP隧道的过程可以简单描述为:Ingress LSR产生Path消 息,向Egress LSR方向发送;Egress LSR收到Path消息后,产生Resv消息,返回Ingress LSR,同时,Resv消息在沿途的LSR上进行资源预留;当Ingress LSR收到Resv消息时, LSP建立成功。 采用RSVP—TE建立的LSP具有资源预留功能,沿途的LSR可以为该LSP分配一定 的资源,使在此LSP上传送的业务得到保证。 LSP建立以后,PE之间通过扩展的LDP发现机制建立LDP会话关系,通过下游自 主标记分发模式分发标记,从Egress LSR开始,各自采用有序控制方式及下游按需模式 的标记请求过程向下游发起标记请求消息,直至出口LSR。各个中间LSR将依据这些限 制参数进行路由选择,并进行相应的资源预留,标记请求消息顺利到达出口LSR之后, 从出口LSR开始,各LSR采用有序控制方式及下游按需模式的标记映射过程,沿着原 路径向上游节点回复标记映射消息。比较核心标记映射消息中包含了一个新的FEC单 元,即VC FEC单元,这个单元包含VC标记的消息,如标记类型,VC ID等,这些VC 标记是和不同VPN相关联的。当消息映射消息顺利回到Egress LSR后,则标记分发形 成的VC—LSP建立完成。数据就可以根据其封装的LABEL在MPLS网络中进行传输了, 其实际样本数据如下。 数据包l:ff03 02 81 00 72 ed 3e 45 cO 00 74 b8 95 00 00 40 06 aa e3 0a ff00 2l 0a fr 00 2d 02 86 04 Oc 26 9b c0 10 33 a2 OO e3 80 l8 06 00 d3 48 OO 00 0l 01 08 0a O0 8d 55 9f 00 lfc2 2b 00 0l OO 5e Oa fF00 21 00 00 Q生 0O OO 28 O0 0O 04 30 01 00 9d 14 28 69。 00丝QQ QQ Q垒lf.Ol o0 o0 l0 8O o0鲤O8 1O 14 80 00 77 92 85 7a 0c 04 04 02 02 00 00 04 00 00 04 1f02 03 00 04 00 O0 O0 lf04 数据包2:ff03 OO 2l 45 cO O0 a4 frfc 0O 00 ff2e 9fOc Oa 10 03 a2 Oa 10 03 al 10 o2 b8 86 ffO0 00 90 00 10 0l 07 Oa fr00 20 00 0O 0l 4a 0a ffO0 2d……。 数据包3:ff03 00 2l 46 cO 01 2O fff0 00 00 f2e 0e ae 0a f00 22 0a f00 2d 94 04 00 O0 10 12 c0 ff00 01 O8 00 10 01 07 0a f00 i2d 00 00 73 fc……。 其中,数据包1为LDP会话建立过程中比较核心的消息映射消息,0x O4 O0指示了 该消息类型,其中包括了新的FEC单元,其FEC单元类型值为128,VC值为0009指 示为ATM n—to-one VCC信元传输模式。0x o0 0O 04 lf表示其分配的标签值。 数据包2、3分别是RSVP协议中的RSVP消息和PATH消息,0x 02和0x 01指示 其消息类型,通过该协议建立LSP。 5二、三层MPLS vPN比较 基于MPLS的第二层VPN和基于MPLS的第三层VPN都采用MPLS机制在网络核 心部分传输,它们之间的基本区别在于服务提供商和用户边缘路由器之间的关系如何处 理。在二层VPN MPLS中,用户边缘路由器与服务提供商边缘路由器直接对等;而三层 VPN MPLS中,用户边缘路由器通过第二层链路或者服务提供商提供的IP隧道与其他 的用户边缘路由器对等。 相对于二层MPLS VPN,三层MPLS VPN适合中小型网络,其每个站点不大,站点 32 科技论文 内路由数目不多,接入方式多样,自身网络管理能力差,路由可以外包给运营商,开销 也不大。但其可靠性,可扩展性不好。 相对于三层MPLS VPN,二层MPLS VPN具有以下特点: (1)可扩展性强:MPLS L2VPN只建立二层连接关系,不引入和管理用户的路由信 息。这大大减轻了PE甚至整个sP(服务提供商)网络的负担,使服务提供商能支持更 多的VPN和接入更多的用户。 (2)可靠性和私网路由的安全性得到保证:由于不引入用户的路由信息,MPLS L2VPN不能获得和处理用户路由,保证了用户VPN路由的安全。 (3)支持多种网络层协议:包括IP、IPX、SNA等。 6结束 本文阐述了三层VPN技术的基本原理、实现方法,结合实际信号数据分析了三层 VPN的应用情况,重点介绍了二层MPLS VPN技术体制、封装格式、信令机制,并结 合实际信号数据分析,澄清了三种主要承载数据的封装方式。最后就两种MPLS VPN技 术做了比较。 基于MPLS的二层VPN是服务供应商为客户提供第二层服务的一种网络。服务供 应商不必参与客户的第三层网络(特别是在路由方面),从而为服务供应商和PE路由器提 供了多种优势。相对于三层MPLS VPN,二层MPLS VPN可扩展性强、可靠性和私网路 由的安全性得到保证,支持多种网络层协议,在今后会得到更为广泛的应用和发展。 参考文献 [1】El Mghazli,L3VPN operations and Management Framewok[M].RFC4 l 76,Oct.2005 [2]Luca,Martini.Encapsulation Methods for Transport of Layer 2 Frames Over IP and MPLS Networks,Nov 200 1 [3]张继军,杨壮.新一代城域光传送技术.北京邮电大学出版社.2005 【4]冯径。多协议标记交换技术。人民邮电出版社.2005 33