知识卡片

VXLAN如何用L2 over L4解决VLAN的两个缺陷及其性能代价

结构图卡

内容

容器分布在不同物理主机上,物理网络拓扑相对固定,跟不上分布式系统逻辑 拓扑(扩缩、断路、限流)的变动频率,这正是SDN(把控制平面和数据平面 分离)变得迫切的原因——下层物理网络叫Underlay,上层逻辑网络叫Overlay。 VLAN是网络虚拟化的早期成果,靠在以太帧里加VLAN Tag划分广播域,缩小 广播域、提升安全性,但有两个致命缺陷:一是1998年制定的802.1Q规范只给 VLAN ID留了12位存储空间,最多支持4096个VLAN,云计算数据中心动辄数以 万计的设备远远不够(后来802.1AQ规范打两层Tag扩到2²⁴=1677万个,即QinQ, 但至今不算普及);二是VLAN天生为二层网络设计,无法跨数据中心传递(数据 中心间只能走三层网络)。VXLAN(IETF定义的NVO3标准之一,典型的Overlay 网络)用L2 over L4(MAC in UDP)的封装模式统一解决这两个问题:把原本 在二层传输的以太帧整个塞进四层UDP报文体里,自带24位VLAN ID(同样支持 1677万个取值),二层网络因此能在三层范围内自由扩展,不受数据中心间 传输的物理限制,也不需要任何专门硬件支持,只要三层可达就能部署(每个 边缘入口靠VTEP设备负责封包解包)。代价是两方面:传输效率下降——VXLAN 封装新增的报文头(VXLAN 8字节+UDP 8字节+IP 20字节+以太帧MAC头14字节) 共占50字节,传大量数据时占比小,传几个字节的小包时代价高昂;传输性能 下降——每个报文的封包解包都是额外处理开销,尤其是软件实现的VTEP。

结构图

flowchart LR
    A[VLAN缺陷1: Tag仅12位, 最多4096个] -->|802.1AQ双Tag扩到1677万, 但不普及| B[QinQ]
    A2[VLAN缺陷2: 天生二层, 无法跨数据中心] --> C[VXLAN: L2 over L4]
    B -.仍无法跨数据中心.-> C
    C --> D[以太帧整体塞进UDP报文体, 24位VLAN ID支持1677万]
    D --> E[代价: 50字节额外报文头开销+封解包性能损耗]

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第12章"容器间网络"12.1.3节 "虚拟化网络设备"(源文件:_epub-src对应OEBPS/Text/chapter147.xhtml) - 结论依据:原文说明VLAN Tag仅12位导致4096上限、天生二层无法跨数据中心 两个缺陷,VXLAN用L2 over L4封装以太帧到UDP报文体、自带24位VLAN ID 解决这两个问题,并量化说明50字节额外报文头开销及封解包的性能损耗, 直接支撑本卡片的结构梳理。 - 原始内容:VXLAN采用L2 over L4(MAC in UDP)的报文封装模式,把原本在 二层传输的以太帧放到四层UDP协议的报文体内……新增加的报文头部分就 占了整整50字节……每个VXLAN报文的封包和解包操作都属于额外的处理过程。