二层虚拟专用网络技术详解1:VPWS在MPLS网络中的实现与应用
本文首先介绍了L2虚拟专用网络的基本概念及其在运营商网络中的作用,说明了二层虚拟专用网络为不同地点的站点提供统一互联的优势。重点部分详细解析了VPWS(虚拟专线服务)作为L2虚拟专用网络的典型实现方式,内容涵盖其架构模型、标签封装、转发流程、MTU处理、控制协议等核心技术细节,并结合网络结构图和实际案例,深入展现了VPWS在MPLS网络中的具体应用。
1. L2虚拟专用网络介绍
Virtual Private Network虚拟专用网络是一种创建加密链接或是隧道的技术。而L2虚拟专用网络是一种通过共享的共有或私有的网络来延伸客户局域网的技术。它使处于不同地点的站点就像在一个局域网内一样。
- 只提供2层连接。对于客户来说,运营商只是一个大的交换机。
- 部署在MPLS核心网之上,支持许多接入技术。
1.1 运营商提供L2虚拟专用网络的动机
- 允许运营商用一套基础设施提供IP服务和旧的服务。
- 通过运营商提供的L2虚拟专用网络服务,客户可以使用自己的路由协议(包括基于非IP的协议),QoS策略和安全机制等。
- 地址空间的私有性,运营商不知道客户的地址空间。
- 客户的CPE可以不用路由器,而可以只使用一台以太网交换机。
1.2 缩写
缩写 | 全称 |
---|---|
SP | Service Provider |
L2虚拟专用网络 | Layer 2 Virtual Private Network |
VPWS | Virtual Private Wire Service (point to point) |
VPLS | Virtual Private LAN Service (Point to Multipoint) |
以太网虚拟专用网络 | Ethernet Virtual Private Network |
PW | Pseudowire |
EVC | Ethernet Virtual Circuit |
BD | Bridge Domain |
BDI | Bridge Domain Interface |
EFP | Ethernet Flow Point |
PBB | Provider Backbone Bridging |
1.3 L2虚拟专用网络模式
- VPWS:提供点到点的伪线服务。
- VPLS:提供多点到多点的伪线服务
- 以太网虚拟专用网络:使用BGP来学习和分发MAC地址,不需要伪线。
- PBB-以太网虚拟专用网络:除了以太网虚拟专用网络的BGP控制平面,还结合了PBB的MAC-in-MAC技术,是核心网的操作更简单高效。
1.4 L2虚拟专用网络控制层面协议
L2虚拟专用网络的控制层面协议指的是PE之间通过什么机制来发现对方和交换标签并建立起L2虚拟专用网络。
L2虚拟专用网络类型 | 控制层面协议 | 说明 |
---|---|---|
VPWS | Targeted LDP (tLDP) | 点到点伪线的信令 |
VPLS | BGP或LDP | 两者都可以使用,现代网络中更常见的是基于 BGP 的 VPLS。 |
以太网虚拟专用网络 | BGP | 下一代标准,用于取代传统的 VPLS。 |
2. EVC模型
2.1 EVC
- 它可以认为是一个概念上的服务管道。
- 它描述了一个逻辑的端到端的以太服务路径,用来在运营商网络之上连接2个及以上的客户站点。
- 它是一个传输以太服务的模型,而不是一种具体的技术。
2.2 Service Instance
- 它是在路由器物理接口下一个EVC的实现。一个接口下可以有多个EVC。
- 它有效地定义了一个EFP。
- 一个EFP Service Instance是连接BD和物理接口的虚拟接口。
2.3 BD
- 一个广播域或是仿真局域网。
- 每个BD有一张MAC地址表。
- 可以将不同VLAN的接口或是没有VLAN标签的接口放到一个BD下面。这在传统的基于VLAN的交换模式是无法实现的。
2.4 EFP
- 是一个2层的逻辑接口,用来给接口下的流量分类。
- 在同一个物理接口上可以多个不同的EFP连接到同一个BD,每个EFP有自己的匹配规则和重写操作。
- 一个物理接口接收到了一个数据帧,根据接口下的EFP匹配原则匹配,并在匹配到的EFP下面学到,并转发到同一BD下的一个或多个EFP。如果没有匹配的EFP,则会丢弃此数据帧。
- 可以进行VLAN的重写,譬如让出的VLAN和进的VLAN不同。
2.5 BDI
BDI是一个3层接口,作为BD下EFP连接的终端的网关,用于访问其他网段或是互联网。
3 LDP拓展
如在MPLS LDP的文章中谈到LDP通过标签映射消息来传递FEC和标签的绑定,它包括FEC TLV,Label TLV和可选参数TLV。FEC TLV用于解释标签的含义,在VPWS的情况下用来标识标签绑定的特定的PW。
在RFC 4447使用LDP来建立和维持伪线的标准中,指定了3种新的TLV,2种新的FEC组件和一些新的错误代码。
3.1 PWid FEC Element
当伪线两端都使用相同的4字节的VC ID来配置伪线的时候,回用到这条PWid FEC Element,包括下面的字段。
- FEC Element类型:8比特,值为0x80(128)。
- 控制字位: 1比特,值为1则此伪线启用了控制字,值为0则为未启用。
- PW类型: 15比特,譬如譬如以太网标签模式,PPP,SONET等。
- PW信息长度:8比特,包括PW ID和接口参数子TLV的字节数。如果为0,则意味着使用Group ID的参数。
- Group ID:32比特,将PW按物理和隧道接口分组。如果此接口有状态变化,允许一条消息通告多条PW的状态变化。
- PW ID:32比特,也就是配置的VC ID。只有伪线两端的PW ID和PW类型一致的情况下,伪线才能起来。
- 接口参数子TLV: 譬如MTU,MTU不一致也影响伪线的建立。
3.2 PW Status TLV
在LDP通知消息中包含PW Status TLV,包含了PE报告的危险状态信息。32位状态码标识了不同的状态。此TLV也可能包含在标签映射消息和标签撤回消息里。
4. VPWS
4.1 AToM
AToM是Any Transport over MPLS的缩写 ,它允许运营商在统一的MPLS网络上提供多种类型的L2流量。它是思科实现VPWS的形式。
运行AToM的条件如下:
- 核心网运行IP路由协议,PE之间IP可达。
- 核心网运行MPLS,PE之间存在LSP。
- 必须使用环回接口来发起和终结L2流量。
- 核心网路由器建议使用/32的环回接口地址作为LDP的RID。
EoMPLS是用AToM的一种,用于在MPLS网络中传递以太帧。不过EoMPLS除了可以传递点到点的VPWS,还可以传递多点到多点的VPLS。
4.2 伪线参考模型
- Attachment Circuit(AC):是一个连接PE和CE的物理或虚拟的电路。
- Pseudowire(PW):伪线是一条逻辑的端到端的虚拟链接。就像光纤有收发端一样,伪线的内部是有两条单向的PW1和PW2。因为MPLS的LSP也是单向的,因此伪线的去程和回城可能走不同的物理路径。
- PSN Tunnel:PSN指的是实际传输数据的底层网络,Tunnel指的是经过PSN的物理传输路径,它可以承载多条伪线。
- Native Service:客户网络存在的原始的2层协议(以太,FR,ATM)。
- Emulated Layer-2 Service:由运营商提供的虚拟服务,是物理直连的替代。
4.3 VPWS流量封装
运营商在MPLS网络里使用三层封装来隔离不同客户的流量。
- 隧道标签:将流量从一个PE送到另一个PE。
- VC标签:标识客户的点到点的伪线。因为点到点伪线只有,所以TTL被设置成2。它是最内层的标签,所以栈底位为设置成1。
- 控制字:当PSN网络为MPLS时使用。为可选项,但是有些原生的2层协议则为要求必须有控制字。对于以太网,则为可选项。
4.3.1 隧道标签
- 最外层标签,决定数据包穿越MPLS网络的LSP。
- 将服务和传输解耦,它不关心具体承载的服务(PW)。
- 路径复用,多条伪线可以共用一条LSP。
4.3.1 VC标签
- 最内层标签,VPWS由两条单向的伪线组成,每条伪线都由下游LER给上游LER分配一个唯一的VC标签。
- VC标签可以通过T-LDP,BGP或是手工配置来分配。
4.3.3 控制字
报文字段:
- 4比特0。
- 4比特的FLAG位。
- 2比特的FRG位,用来标识是否分片。第一个比特是B位也就是开始位,第二个比特是E位也就是结束位。对于未分片的数据包的B位和E位都是0。
- 6比特的长度位,在分片和填充(以太网数据帧小于64字节)的情况下,让出口PE决定原始帧的大小并移除填充比特。
- 16比特的序列号,在PSN底层网络有ECMP的情况下,出口PE使用序列号来以正确的顺序来组装数据帧。
MTU限制引起的分片流程:
- 入口PE收到客户网络的2层帧,发现它的大小大于MPLS网络的MTU。
- PE将大的数据帧分片来适应MPLS网络的MTU,封装后发给出口PE。
- 出口PE根据序列号来决定接收到数据包的顺序,根据长度位移除填充比特并得到原始数据帧的长度,最后组装回原来的数据帧发送给客户网络。
4.4 VPWS转发层面流程
- CE1发送原生的L2流量,譬如以太帧。
- PE1压上内层标签用来识别PW或VC,再压上外层的隧道标签用于将流量送到PE2。
- 经过P1,交换上层标签,下层标签不变。
- P2通过次末跳弹出机制将最上层的标签弹出,将带VC标签的数据包发给PE2。
- PE2查收VC标签对应的PW或VC,并剥离VC标签,将以太帧发送给CE2。
4.5 以太帧在MPLS网络中的传播
入口PE在收到客户的以太帧的时候,会将最前面的前导码和最后的校验码移除。在客户以太帧头部前面封装隧道标签,VC标签和控制字。最后再封装进以太帧,以太的类型为MPLS,表示后面接的MPLS的标签而不是IP包。抓包的文件显示如下:
当一个带有VLAN标签的以太帧到达PE的时候,这个标签有两种情况:
- 由PE前面的运营商的交换机打上的区分服务的标签。
- 客户设备产生的标签,不用于区分服务。
但是PE不会自动进行判断,而是由操作员通过配置告诉路由器怎么处理这个标签。客户的非区分服务的标签总会被携带,需要处理的是区分服务的标签。
- 接口模式/以太原生模式:将以太帧发送到伪线前剥离服务区分标签。PW类型为0x0005,同一个AC收到的以太帧都通过同一条伪线。
- VLAN模式/以太标签模式:每个以太帧都必须有服务区分标签,如缺失则加上一个占位的假标签。PW类型为0x0004,同一个AC收到的以太帧根据服务区分标签来映射到不同的伪线上。
思科设备默认使用VC类型5(接口模式)来建立伪线,如果被提议被远端PE拒绝则会使用VC类型4(VLAN模式)。也可以在配置中手工指定使用哪种类型。
4.6 重写操作
通过使用rewrite ingress tag pop 1 symmetric
,入口PE将最外层的标签弹掉再进入PW,到出口PW再将标签加回去。2层TAG,则只会弹出最外层标签。
4.7 MTU
VPWS不支持分片,如有超过MTU的数据包会直接丢弃且不会有任何的通知机制。
- 如果客户发送的以太帧大于AC MTU,入口AC则会丢弃此数据包。
- 经过PE处理过的客户以太帧,譬如经过rewrite处理,加上PW报头。如果这个值超过了PW的MTU,入口PE在把它发到MPLS前就丢弃此数据包。
- 经过MPLS封装后的数据,如果它大于经过的MPLS的路径上的任意一个物理接口的MTU,这个数据包会被P路由器丢弃。
没有机制去检查MPLS网络内的MTU。MPLS网络内路由器的MTU应该设置为足够大。
PW的MTU来自于AC的MTU,两端的PE会协商一个MTU值,通常是两者种小的那个值。
📚 延伸阅读
更多内容持续更新于我的博客:https://www.zenseek.site