二层VPN
| 二层VPN | |
|---|---|
| 中文名 | 二层虚拟专用网络 |
| 英文名 | Layer 2 VPN (L2VPN) |
| 技术类型 | 网络通信技术 / 虚拟专用网 |
| 核心功能 | 跨公共网络透明传输二层数据帧 |
| 主要服务类型 | VPWS(点到点)、VPLS(多点到多点) |
| 主要信令协议 | LDP、BGP |
| 标准化机构 | IETF |
| 基础RFC | RFC 4664(框架)、RFC 4665(需求) |
二层VPN(全称:Layer 2 Virtual Private Network,缩写L2VPN)是一种在公共网络基础设施上提供数据链路层(OSI第二层)虚拟专用连接的网络技术,其核心特征是服务提供商网络对客户的三层路由信息完全透明,仅负责在客户站点之间透明传输二层数据帧[1][2]。二层VPN最早由IETF于2006年在RFC 4664中正式定义框架,同期发布的RFC 4665规定了服务需求,此后逐步形成了以VPWS(Virtual Private Wire Service)和VPLS(Virtual Private LAN Service)为代表的技术体系[3][4]。二层VPN不参与客户的路由计算和三层协议处理,客户可以独立运行IP、IPX、SNA等任何网络层协议,服务提供商对客户网络的路由结构和IP地址空间完全不可见[2][5]。
定义与基本原理
二层VPN是指在服务提供商骨干网上向客户提供的二层VPN服务,VPN业务在网络的数据链路层(OSI第二层)上进行连接和转发[1][6]。与三层VPN不同,二层VPN对客户网络的路由信息完全透明,服务提供商边缘设备(PE)不参与客户的路由协议交互,也不维护客户的路由表,仅根据二层信息(如MAC地址、VC标签等)进行报文转发。从客户视角看,通过二层VPN连接的多个站点就像通过直连的二层链路或交换网络相连,其路由协议和三层架构可以直接跨VPN运行,无需任何修改[2][5]。
二层VPN的基本原理可以概括为“透传”或“仿真”[1][7]。服务提供商在其骨干网上为客户站点之间建立逻辑的二层连接通道。当客户CE设备发出二层数据帧时,接入的PE设备将其封装(encapsulation)并通过骨干网上的伪线(Pseudowire, PW)或隧道传送到远端PE,远端PE解封装后还原为原始的二层帧再交给目标CE。整个过程中,服务提供商骨干网扮演了一个“二层交换机”的角色[8][6]。该模型被称为“边缘到边缘”的伪线仿真,最初由IETF PWE3工作组定义,后被L2VPN工作组采纳为基本传输机制[9][1]。
主要服务类型
IETF L2VPN工作组将二层VPN划分为多种服务类型,以满足不同的连接需求[1][9][10]。
虚拟专线服务(VPWS)
虚拟专线服务(Virtual Private Wire Service, VPWS)提供两个用户站点之间的**点到点(Point-to-Point)**二层连接,又称虚拟专线(Virtual Leased Line, VLL)[1][4]。VPWS在服务提供商骨干网上为两个CE设备建立一条伪线,使得两个站点之间在二层上直连,如同一条专线。VPWS支持多种接入链路类型,包括Ethernet、VLAN、Frame Relay、ATM、PPP等,是目前部署最广泛的L2VPN服务之一[9][4]。
VPWS采用对等模型,通常在两个PE之间通过信令协议(如Targeted LDP)建立PW。PW建立后,PE将来自源CE的AC接口的二层帧封装并发送到PW上,远端PE解封装后恢复原始帧并交给目标CE[4][11]。
虚拟专用局域网服务(VPLS)
虚拟专用局域网服务(Virtual Private LAN Service, VPLS)提供多个用户站点之间的**多点到多点(Multipoint-to-Multipoint)**二层连接,仿真一个以太网交换局域网的行为[1][12][8]。VPLS使分布在广域范围内的多个用户站点在数据链路层上整合为一个逻辑上的局域网,站点之间可以像在同一个二层交换网络中那样进行通信,支持广播、未知单播和组播(BUM)流量的转发。
VPLS的核心组件是在每台PE上为每个VPLS实例维护一个虚拟交换实例(Virtual Switching Instance, VSI),负责执行以太网桥接功能,包括MAC地址学习、MAC地址表维护、二层转发决策以及水平分割以避免环路[7][12]。PE之间建立全连接的PW网格,形成仿真局域网。VPLS的信令协议主要有两种:基于LDP的信令和基于BGP的自动发现与信令,后者提供了更好的扩展性和自动化能力[13][11]。
IP Only L2VPN
IP Only L2VPN是一种针对IP流量优化的二层VPN服务,在VPWS或VPLS的基础上解封装二层帧头,仅透传IP数据包,以降低协议开销。它不同于三层VPN,因为PE与CE之间不运行路由协议,CE之间通过仿真二层服务直接连接[9]。
虚拟专用组播服务(VPMS)
虚拟专用组播服务(Virtual Private Multicast Service, VPMS)提供点到多点的二层连接服务,主要用于组播业务的高效传输。VPMS利用伪线的点对多点特性,实现组播流量的复制和分发,适用于IPTV、视频会议等场景[9]。
体系架构
二层VPN的网络体系架构由以下几类设备组成[6][2][14]:
- **用户边缘设备(CE)**:位于客户网络边缘的设备(路由器、交换机或主机),直接连接至服务提供商的PE设备。CE不参与VPN信令,也不需要支持MPLS等隧道技术,它只发送和接收标准的二层帧,完全不感知VPN的存在[2][6]。
- **服务商边缘设备(PE)**:服务提供商网络的边缘路由器,是L2VPN的核心设备。PE负责与CE对接,维护接入电路(AC),并与远端PE建立伪线。PE执行二层帧的封装和解封装,并根据VC标签(PW标签)或MAC地址表进行转发决策[2]。在VPLS中,PE还需要维护每个VPLS实例的VSI,执行以太网桥接和MAC地址学习[7][6]。
- **服务商核心设备(P)**:服务提供商骨干网内部的路由器,不直接连接CE。P设备仅根据外层隧道标签进行MPLS标签转发,不感知任何VPN信息,也不维护VSI或PW状态。P设备的存在使得L2VPN具有良好的扩展性,因为VPN状态仅限在PE上维护[6]。
- **接入电路(AC)**:连接CE与PE的物理或逻辑链路。AC可以是以太网端口、VLAN子接口、PPP链路、ATM PVC或帧中继DLCI等。AC的类型决定了客户接入L2VPN的链路层技术[6]。
- **伪线(PW)**:两个PE之间建立的虚拟双向连接,用于承载一个客户VPN的流量。PW由一对相反方向的单向MPLS VC标签(即私网标签)标识。PW本质上是对特定链路层服务(如Ethernet、ATM、FR)在分组交换网络(PSN)上的仿真,其封装方式由PW类型(PW Type)字段标识[6][1]。一条物理隧道(如MPLS LSP、GRE隧道)上可以承载多条PW,分别属于不同客户的L2VPN实例[7]。
- **公网隧道(Tunnel)**:两个PE之间穿越服务提供商骨干网的连接通道,用于承载一条或多条PW。隧道可以是MPLS LSP、MPLS TE隧道、GRE隧道等。隧道在骨干网P设备之间提供基本的连通性,而PW则承载具体的VPN业务[6][7]。
核心组件与工作机制
伪线(Pseudowire, PW)
伪线是L2VPN最基本的数据传输单元,是在分组交换网络上仿真点到点二层链路的技术。每条PW由一对单向MPLS VC标签(私网标签)构成,在源PE上为入方向的客户帧封装内层标签,由目标PE根据该标签识别所属VSI或AC。PW的封装格式由PW Type确定,PW Type标识了所仿真的链路层类型(如Ethernet(0x0005)、Ethernet Tagged Mode(0x0004)、ATM等)。PW的建立由信令协议(如Targeted LDP或BGP)完成,信令消息中携带PW ID、PW Type、MTU、标签等信息[1][4]。
虚拟交换实例(VSI)
VSI是VPLS的核心组件,运行在PE上,为每个VPLS实例维护独立的以太网桥接功能。VSI维护如下状态[7]:
- MAC地址表:记录源MAC地址与出接口(AC或PW)的映射关系。PE通过学习入向帧的源MAC地址来动态建立该表,用于后续二层转发决策。
- 广播域:定义哪些AC和PW属于同一个VPLS实例,广播、未知单播和组播帧会被复制到同一广播域的所有其他端口。
- 水平分割规则:从PW上接收的帧不再向其他PW转发,这是VPLS用于避免环路的关键机制。由于PE之间建立了全连接的PW网格,水平分割结合全连接拓扑可以替代生成树协议(STP)来消除环路[7][12]。
标签转发机制
1. **入口PE处理**:PE从AC接口收到客户CE发来的二层帧,根据AC所属的VSI或VPN实例确定目标远端PE和对应的PW。 2. **压入两层标签**:入口PE向原始二层帧压入两层MPLS标签。内层(私网标签或PW标签)由信令协议(LDP或BGP)分发,用于标识该帧所属的PW和VSI;外层(隧道标签或公网标签)由骨干网路由协议(LDP、RSVP-TE或BGP)分发,用于指引数据包穿越骨干网到达目标PE[7]。 3. **骨干网转发**:P路由器仅根据外层标签进行转发,不检查内层标签的内容。P设备按MPLS标签交换路径(LSP)将携带两层标签的MPLS报文逐跳转发至目标PE。 4. **出口PE处理**:目标PE接收到报文后弹出外层标签,根据内层PW标签确定目标VSI或AC,还原原始二层帧后转发给目标CE。在VPLS场景中,PE还会在转发的同时进行MAC地址学习,动态维护MAC地址表[7]。
控制平面信令
L2VPN的控制平面负责PE的自动发现(Auto-discovery)和PW的建立、维护与拆除,主要依赖以下两种信令协议[1][1]:
- **Targeted LDP(tLDP)**:用于VPWS以及早期VPLS部署中的PW信令。tLDP扩展了LDP协议,引入了PW ID FEC(Forwarding Equivalence Class)和PW Status TLV等新元素,在PE之间协商和交换VC标签。tLDP要求预先手工配置PE之间的对等关系,适用于站点数量相对固定的场景[11][4]。
- **BGP(MP-BGP)**:用于VPLS的自动发现和信令。BGP方式通过扩展BGP NLRI(Network Layer Reachability Information)来携带VPLS成员信息和标签。BGP提供了更好的可扩展性,支持自动成员发现(无需手工配置PE对等体)和复杂的策略控制,是目前现代网络(尤其是大型VPLS部署)的首选方案[13][11]。EVPN方案完全基于BGP,已逐步取代传统VPLS成为新一代多点到点L2VPN的标准[15]。
应用场景
二层VPN因其对客户路由的透明性和对多种二层协议的支持而被广泛应用于以下场景[5][14]:
- **数据中心互联(DCI)**:将分布在不同地理位置的数据中心在二层上连接起来,使各数据中心之间的服务器和虚拟机可以像在同一个广播域内那样通信,支持虚拟机在线迁移(vMotion)等跨数据中心功能。L2VPN在此场景下可以透明地扩展VLAN,保持二层连通性[5]。
- **企业VLAN扩展**:将企业总部和分支机构之间的VLAN在广域网上进行扩展,实现跨地域的端到端二层连接。这对于需要共享广播域的应用(如某些遗留系统、集群软件)尤为适用。
- **传统系统互联**:连接采用非IP协议(如SNA、IPX、DECnet)的传统系统。由于L2VPN不依赖于三层路由,可以直接透传这些协议的数据帧,保持与遗留设备的兼容性[2]。
- **运营商以太网服务**:服务提供商以L2VPN为基础向企业客户提供以太网专线(E-Line,基于VPWS)和以太网局域网(E-LAN,基于VPLS)等城域以太网服务,符合MEF(Metro Ethernet Forum)定义的服务模型[12][8]。
- **多租户数据中心**:云服务提供商利用L2VPN在同一物理网络基础设施上为不同租户提供隔离的二层网络,每个租户独立运行自己的路由和IP地址空间,租户之间相互不可见[5]。
- **5G承载网与移动回传**:在5G网络中,L2VPN常用于N2/N3/N4接口的传输隔离和FlexE切片,利用VPWS或VPLS承载CU分离场景下的F1接口和Xn接口流量,实现低时延和高可靠传输。
与三层VPN的比较
二层VPN与三层VPN是MPLS VPN技术的两大分支,二者在多个关键维度上存在本质区别[5][2][4]。
- **客户路由可见性**:L2VPN对客户路由完全不可见,客户保留路由控制权,可以自由使用任何IP地址空间和路由协议;L3VPN要求PE学习客户路由(通过静态路由、OSPF、BGP等),客户地址空间不能与服务提供商或其它客户重叠(需通过RD解决)[2][5]。
- **协议支持**:L2VPN支持任何网络层协议(IP、IPX、SNA等),以及非IP的遗留协议;L3VPN主要支持IP协议[2]。
- **PE负载**:L2VPN的PE不维护客户路由,仅负责二层转发,负载相对较轻;L3VPN的PE需要为每个VPN维护VRF路由表,当VPN数量较多或路由条目密集时对PE的控制平面和内存要求较高[2][5]。
- **广播/组播**:L2VPN在VPLS模式下原生支持广播和组播,可以透传二层广播域;L3VPN仅支持IP组播,不处理二层广播[2]。
- **灵活性**:L2VPN对客户提供的连接更为透明,客户可以独立设计和运营其上层的三层网络;L3VPN的服务提供商承担了更多路由功能,客户的网络设计受限于服务提供商的路由策略[5]。
选择L2VPN还是L3VPN通常取决于具体需求。如果客户希望保留完全的路由控制权、需要透传非IP协议或需要扩展VLAN,L2VPN是更合适的选择;如果客户希望将路由管理交给服务提供商、降低自身运维复杂度,或需要在大规模分支网络中实现可扩展的IP互联,L3VPN通常更优。在实践中,许多大型企业采用混合部署策略:分支机构之间使用L3VPN进行IP路由互联,数据中心之间使用L2VPN进行二层VLAN扩展[5]。
演进与技术趋势
EVPN(Ethernet VPN)
以太网VPN(Ethernet VPN, EVPN)是L2VPN领域最重要的演进方向之一。EVPN是一种基于BGP控制平面的下一代多点到点L2VPN解决方案,采用MP-BGP来分发MAC地址可达性信息和以太网段信息,替代传统VPLS中依赖数据平面学习MAC的方式。RFC 7432(BGP MPLS-Based Ethernet VPN)定义了EVPN的核心机制[15][16]。
EVPN的关键特性包括:
- **BGP控制平面MAC学习**:PE之间通过BGP路由通告MAC地址,实现快速收敛,避免了传统VPLS数据平面MAC洪泛带来的收敛慢和广播风暴风险。
- **多归属(Multi-homing)**:支持一个CE同时连接多个PE(All-Active或Single-Active模式),提供高可靠性和负载分担能力。
- **灵活的封装**:可承载于MPLS或VXLAN等隧道之上,成为数据中心网络Overlay方案的基础[15]。
- **集成控制**:EVPN能够同时分发MAC地址和IP路由信息,为后续的L2/L3统一控制平面奠定基础。
PBB-EVPN
PBB-EVPN(Provider Backbone Bridging Ethernet VPN)是在EVPN基础上融合IEEE 802.1ah PBB(MAC-in-MAC封装)技术的一种解决方案,定义于RFC 7623。它将客户MAC地址隐藏在骨干MAC地址之后,大幅减少了PE控制平面维护的MAC地址表条目数量。PBB-EVPN在运营商骨干网络中提供了更高的可扩展性和更快的收敛性能[16][17]。
L2VPN over SRv6
随着SRv6(Segment Routing over IPv6)技术的成熟,L2VPN也开始向SRv6承载演进。L2VPN over SRv6采用IPv6扩展头(如SRH)和特定的封装格式(如Ethernet over IPv6封装)实现二层业务在SRv6网络上的透传,简化了控制平面并提升了与IPv6网络的兼容性。
与SDN/NFV的融合
在SDN/NFV环境下,L2VPN的控制平面可以与SDN控制器集成,通过南向接口(如OpenFlow、NETCONF)实现L2VPN的自动化部署和策略编排,提高了网络运维效率。同时,vPE(虚拟PE)等NFV技术的引入,使得L2VPN功能可以部署在通用服务器上,实现了灵活的业务编排和资源弹性伸缩。
优点与局限性
二层VPN的主要优点包括对客户网络的完全透明,客户可以自由使用任何网络层协议和IP地址空间,在VPLS模式下原生支持广播、未知单播和组播流量。相比三层VPN,L2VPN的PE不维护客户路由,减轻了服务提供商边缘设备的控制平面负担,使服务提供商能够支持更多的VPN和接入更多的用户[2]。L2VPN尤其适合数据中心互联、VLAN扩展、传统系统互联等需要二层连通性的场景。同时,客户保留完全的路由控制权,网络设计不受服务提供商策略的限制[5]。
其局限性主要体现在以下几个方面。首先,VPLS采用全连接PW拓扑,当网络站点数量较多时,每个PE需要与其他所有PE建立PW,导致信令开销较大,扩展性受限。其次,L2VPN(特别是VPLS)对广播、未知单播和组播流量进行全网复制和泛洪,可能造成骨干网带宽的浪费和广播风暴的风险。再者,L2VPN的环路避免依赖全连接拓扑和水平分割机制,缺乏生成树协议那种动态的拓扑计算能力。此外,由于PE不参与三层路由,L2VPN无法直接提供基于IP的服务质量(QoS)策略或流量工程,需要依赖底层隧道的QoS能力。最后,L2VPN对服务提供商的运维能力有一定要求,需要专业人员熟悉PW信令和MAC地址管理,这在故障排查时可能增加定位难度。
参考文献
- ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 RFC 4664: Framework for Layer 2 Virtual Private Networks (L2VPNs)
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 2.14 MPLS L2VPN简介
- ↑ RFC 4665: Service Requirements for Layer 2 Provider-Provisioned Virtual Private Networks
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 L2VPN技术详解1:VPWS在MPLS网络中的实现与应用
- ↑ 5.00 5.01 5.02 5.03 5.04 5.05 5.06 5.07 5.08 5.09 5.10 引用错误:
<ref>标签无效;未给name(名称)为:12的ref(参考)提供文本 - ↑ 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 引用错误:
<ref>标签无效;未给name(名称)为:16的ref(参考)提供文本 - ↑ 7.00 7.01 7.02 7.03 7.04 7.05 7.06 7.07 7.08 7.09 引用错误:
<ref>标签无效;未给name(名称)为:13的ref(参考)提供文本 - ↑ 8.0 8.1 8.2 引用错误:
<ref>标签无效;未给name(名称)为:15的ref(参考)提供文本 - ↑ 9.0 9.1 9.2 9.3 9.4 引用错误:
<ref>标签无效;未给name(名称)为:10的ref(参考)提供文本 - ↑ 引用错误:
<ref>标签无效;未给name(名称)为:7的ref(参考)提供文本 - ↑ 11.0 11.1 11.2 11.3 引用错误:
<ref>标签无效;未给name(名称)为:4的ref(参考)提供文本 - ↑ 12.0 12.1 12.2 12.3 引用错误:
<ref>标签无效;未给name(名称)为:14的ref(参考)提供文本 - ↑ 13.0 13.1 引用错误:
<ref>标签无效;未给name(名称)为:9的ref(参考)提供文本 - ↑ 14.0 14.1 引用错误:
<ref>标签无效;未给name(名称)为:5的ref(参考)提供文本 - ↑ 15.0 15.1 15.2 引用错误:
<ref>标签无效;未给name(名称)为:11的ref(参考)提供文本 - ↑ 16.0 16.1 引用错误:
<ref>标签无效;未给name(名称)为:17的ref(参考)提供文本 - ↑ 引用错误:
<ref>标签无效;未给name(名称)为:18的ref(参考)提供文本