L2VPN 的封装,本质上就是 MPLS 的封装,如图1所示。
图1 MPLS 报文格式的澄清
图1-A是当初第11章所介绍的内容,将 MPLS Header 插在链路层 Header 和 IP Header 之间,所以 MPLS 也被称为2.5层协议。
但是这样的 MPLS 对于 L2VPN 来说,就好像有点说不通,因为 L2VPN 中,MPLS 所承载的是二层报文,并不是 IP 报文。所以针对 L2VPN,MPLS 的报文格式就是图1-B所示的内容,MPLS Header 后面跟的是 L2PDU。
抽象地讲,图1-A与图1-B是一样的,因为“IP Header + IP PDU”(以下简称 IP Packets)也好,“L2PDU”也罢,都可以理解为“PW PDU”,只不过对于 L2VPN 来说,MPLS PDU 可能还包括其他类型的 PDU(比如 ATM Frame),不仅仅是“IP Packets”而已。
不过,这种抽象的说法,只是对 MPLS 有意义,它只是说明 MPLS 的协议无须做任何改变,就可以完全适应 L2VPN 和 L3VPN。但是从报文的封装来说,两者的差别还是非常明显。
L2VPN 与 L3VPN 的 MPLS 封装,如图2所示。
图2 MPLS 的封装:L2VPN 与 L3VPN
通过图2可以看到,对于 L3VPN 而言,它并不在意 L2 Header(ETH Header1),只须关心“IP Packets”被从 CE1 传递到 CE2。而 L2VPN 则不同,它所追求的是整个报文“L2 Frame”(L2 Header + L2 PDU)被从 CE1 传递到 CE2。
所以,对于 L3VPN,MPLS 封装的是 IP Packets,对于 L2VPN,MPLS 封装的是整个 L2 Frame。由于 L2VPN 的承载电路实际上是 PW,所以被封装的的“L2 Frame”也被称为 PW PDU。
“封装整个 L2 Frame”,就是 L2VPN 的基本封装机制。但是,这只是基本封装机制,具体到不同的 L2 协议,其细节也有所不同。
比如,对于 ATM,假设1个 ATM 被封装到1个 PW PDU,其封装格式如图3所示。
图3 ATM 封装举例
图3-A 表达的是1个原始 ATM 信元(ATM Cell),包含5字节的 ATM Header 和 48字节的 ATM PDU。图3-B 表达的是该信元被 L2VPN 封装以后的格式。可以看到,5字节的 ATM Header 被裁剪成了4字节,其中 HEC(Header Error Control,信息头差错控制)字段被移除了。
说明:
(1)我们暂时忽略图3中的 MPLS Label 和 Control Word
(2)由于主题的原因,我们不再介绍 ATM Header 中各字段的含义
我们再看看 Ethernet 报文被 L2VPN 封装的情形,如图4所示。
图4 Ethernet 封装举例
图4-A 是原生的 Ethernet 报文(其中8字节的前导符属于物理层,并不是 Ethernet 报文的一部分),图4-B 是 L2VPN 所封装的 Ethernet 报文。可以看到,Ethernet Header 中的 FCS(Frame Check Sequence,帧校验序列)字段(以及8字节的前导符字段)被移除了。
当然,无论是 ATM 的 HEC 还是 Ethernet 的 FCS,在 PE2 转发给 CE2 时,都会被再度添加上。
如果我们忽略这些细节(ATM 的 HEC、Ethernet 的 FCS),仍然可以认为 L2VPN 的基本封装机制是“封装整个 L2 Frame”。
以上就是L2VPN 的封装的介绍。
如果你还有其他问题,欢迎进行咨询探讨,希望桂哥网络的专业的解决方案,可以解决你目前遇到的问题。
TikTok千粉号购买平台:https://tiktokusername.com/
TOP