一文带你搞懂VXLAN报文格式,网工先收藏!

简介: 【10月更文挑战第8天】

VXLAN通过在以太网帧外添加UDP封装和VXLAN头部,实现了网络的可扩展性和灵活性,支持多租户环境下的大规模二层网络扩展。本文将详细介绍VXLAN的报文格式、各个字段的具体含义。

VXLAN基于MAC-in-UDP的封装机制,即将原始以太网帧封装在UDP报文中,并通过IP网络进行传输。VXLAN报文的发送和接收由VTEP(VXLAN Tunnel Endpoint)完成。VTEP负责在物理网络和虚拟网络之间进行封装和解封装操作。VXLAN通过IP网络建立隧道,实现跨物理网络的二层网络扩展。

VXLAN报文格式

VXLAN报文格式是在传统以太网帧的基础上,通过添加额外的VXLAN头部、UDP头部、IP头部和外层以太网头部来实现的。

VXLAN报文结构

+------------------------+
| Outer Ethernet Header  |
+------------------------+
| Outer IP Header        |
+------------------------+
| Outer UDP Header       |
+------------------------+
| VXLAN Header           |
+------------------------+
| Inner Ethernet Frame   |
+------------------------+

如上图所示,VXLAN报文主要由五个部分组成:外层以太网头部、外层IP头部、外层UDP头部、VXLAN头部以及内层以太网帧。每个部分都有其特定的功能,以下分别进行详细说明。

外层以太网头部(Outer Ethernet Header)

外层以太网头部是VXLAN报文的最外层封装,用于在物理网络中传输报文。其结构与传统以太网帧头部相同,主要包含以下字段:

  • 目的MAC地址(Destination MAC Address,MAC DA):这是报文的目标MAC地址,通常是下一跳设备(如交换机或路由器)的MAC地址。在VTEP之间传输时,目的MAC地址指向远端VTEP的MAC地址。

  • 源MAC地址(Source MAC Address,MAC SA):这是报文的源MAC地址,通常是当前VTEP设备的MAC地址。

  • 802.1Q标签(802.1Q Tag):这是一个可选字段,用于在报文中携带VLAN Tag信息。VLAN Tag用于在多租户环境中实现网络隔离。

  • 以太网类型(Ethernet Type):该字段指示帧的上层协议类型,例如IPv4、IPv6等。

外层以太网头部的主要作用是确保VXLAN报文能够在物理网络中被正常传输和路由。

外层IP头部(Outer IP Header)

外层IP头部是用于在IP网络中传输VXLAN报文的封装部分。其结构与传统的IP头部相同,主要包括以下字段:

  • 版本(Version):指定IP协议的版本,通常为IPv4(值为4)或IPv6(值为6)。

  • 头部长度(Header Length):指示IP头部的长度。

  • 服务类型(Type of Service,ToS):用于指示报文的服务质量。

  • 总长度(Total Length):表示整个IP报文的长度,包括IP头部和数据部分。

  • 标识(Identification):用于标识IP分片。

  • 标志(Flags):控制和指示IP分片。

  • 片偏移(Fragment Offset):指示分片的位置。

  • 生存时间(Time to Live,TTL):该字段指定报文在网络中可以存在的最大跳数。每经过一个网络设备,TTL值减1,当TTL值为0时,报文将被丢弃。

  • 协议类型(Protocol Type):该字段指定上层协议类型,对于VXLAN报文,该值通常为17,表示UDP协议。

  • 头部校验和(Header Checksum):用于检测IP头部在传输过程中是否发生了错误。

  • 源IP地址(Source IP Address,IP SA):这是报文的源IP地址,通常是VTEP的IP地址。

  • 目的IP地址(Destination IP Address,IP DA):这是报文的目标IP地址,通常是远端VTEP的IP地址。

外层IP头部的主要作用是通过IP网络对VXLAN报文进行路由和转发。

外层UDP头部(Outer UDP Header)

外层UDP头部用于封装VXLAN头部和内层以太网帧。其结构与传统的UDP头部相同,主要包括以下字段:

  • 源端口号(Source Port):这是UDP报文的源端口号,通常通过哈希算法计算得到。源端口号用于实现负载均衡和多路径传输。

  • 目的端口号(Destination Port):这是UDP报文的目标端口号,对于VXLAN报文,该端口号固定为4789,这是VXLAN的标准端口。

  • 长度(Length):该字段表示整个UDP报文的长度,包括头部和数据部分。

  • 校验和(Checksum):该字段用于检测UDP报文在传输过程中是否发生了错误。

外层UDP头部的主要作用是将VXLAN头部和内层以太网帧封装为UDP数据,并通过IP网络进行传输。

VXLAN头部(VXLAN Header)

VXLAN头部是VXLAN报文的核心部分,用于标识和区分不同的VXLAN网络。VXLAN头部结构如下:

+----------------------+----------------------+----------------------+----------------------+
| 8-bit Flags | Reserved (24 bits) | VXLAN Network Identifier (VNI) (24 bits) | Reserved (8 bits)  |
+----------------------+----------------------+----------------------+----------------------+
  • VXLAN标志位(VXLAN Flags):该字段占8位,表示VXLAN的标志。当前仅使用第3位,固定为1,其余位设置为0

  • VNI(VXLAN Network Identifier):VNI是24位的VXLAN网络标识符,用于区分不同的VXLAN网络。通过VNI,VTEP可以将来自不同虚拟网络的流量进行隔离和标识。

  • 保留字段(Reserved):其余的32位均为保留字段,必须设置为0,以备将来扩展使用。

VXLAN头部的主要作用是通过VNI标识不同的虚拟网络,实现大规模网络虚拟化和多租户隔离。

内层以太网帧(Inner Ethernet Frame)

内层以太网帧是来自虚拟机或物理机的原始以太网帧,其结构与传统以太网帧相同,主要包括以下字段:

  • 目的MAC地址(Destination MAC Address,MAC DA):目标设备的MAC地址。

  • 源MAC地址(Source MAC Address,MAC SA):源设备的MAC地址。

  • VLAN标签(VLAN Tag):可选字段,用于在虚拟网络中携带VLAN信息。

  • 以太网类型(Ethernet Type):指示上层协议类型,如IPv4、IPv6等。

  • 数据字段(Data Field):包括上层协议数据,如IP报文、TCP/UDP数据等。

内层以太网帧在VXLAN报文中的作用是携带实际的用户数据,通过VTEP之间的隧道进行传输。

VXLAN报文传输流程

在VXLAN网络中,报文的传输主要依赖于VTEP的封装和解封装操作。下面我们详细介绍VXLAN报文的传输流程。

报文发送过程

当虚拟机(VM)发送数据时,报文首先生成内层以太网帧。然后,位于虚拟机所在主机上的VTEP会对该帧进行VXLAN封装,具体过程如下:

  1. 封装内层以太网帧:VTEP接收到虚拟机发送的内层以太网帧,并确定该帧应通过VXLAN隧道传输。

  2. 添加VXLAN头部:VTEP根据虚拟机所在的虚拟网络,为内层以太网帧添加VXLAN头部。具体操作包括设置VXLAN Flags、分配或检索VNI,并将其填充到VXLAN头部中。

  3. 添加UDP头部:在VXLAN头部前添加UDP头部。源端口号通过哈希算法计算得到,以支持负载均衡和多路径传输;目的端口号固定为4789,即VXLAN的标准端口。

  4. 添加IP头部:在UDP头部前添加IP头部。源IP地址为本地VTEP的IP地址,目的IP地址为目标VTEP的IP地址。IP头部还包括TTL值、协议类型等信息。

  5. 添加外层以太网头部:最后,在IP头部前添加外层以太网头部。源MAC地址为本地VTEP的MAC地址,目的MAC地址为目标VTEP的MAC地址。如果需要,802.1Q VLAN标签也会被添加到外层以太网头部中。

  6. 发送报文:封装完成后,报文通过物理网络传输到目标VTEP。

报文接收过程

目标VTEP收到封装后的VXLAN报文后,会对其进行解封装,具体过程如下:

  1. 接收外层以太网报文:目标VTEP首先接收到外层以太网报文,解析出外层以太网头部、IP头部和UDP头部。

  2. 解析IP头部:目标VTEP解析IP头部,验证目标IP地址是否与本地VTEP匹配,并检查TTL值。

  3. 解析UDP头部:目标VTEP解析UDP头部,验证目的端口号是否为4789,以确保报文是VXLAN报文。

  4. 解析VXLAN头部:目标VTEP解析VXLAN头部,提取VNI,确定报文所属的虚拟网络。

  5. 提取内层以太网帧:根据VXLAN头部中的VNI,目标VTEP将内层以太网帧提取出来,并根据内层以太网帧的目的MAC地址,将其转发到目标虚拟机或物理机。

  6. 转发内层报文:内层以太网帧被送到目标虚拟机或物理机,完成数据的传输。

VXLAN各字段详细解析

为了深入理解VXLAN报文格式,下面将对各个字段进行更详细的解析,解释其具体作用和配置要求。

VXLAN头部详细解析

VXLAN头部在整个报文中起到核心作用,它的设计使得VXLAN能够有效地支持大规模的虚拟网络。VXLAN头部由以下几个部分组成:

VXLAN Flags
  • 字段大小:8位

  • 描述:VXLAN Flags用于指示VXLAN报文的特定特性。当前,只有第3位(最低位从0开始编号)被定义,用于表示该报文是否包含有效的VNI信息。其余位目前未定义,必须设置为0

  • 取值

    • 第3位设置为1:表示VXLAN报文包含有效的VNI信息。
    • 其余位设置为0
  • 作用:通过VXLAN Flags,VTEP可以快速识别报文是否为VXLAN封装的报文,并根据标志位决定是否解析VNI字段。

VXLAN Network Identifier (VNI)
  • 字段大小:24位

  • 描述:VNI是VXLAN网络标识符,用于区分不同的VXLAN段或虚拟网络。通过VNI,VTEP能够将来自不同虚拟网络的流量进行隔离和标识。

  • 取值范围:0 到 16,777,215(2^24 - 1)

  • 作用:VNI允许在同一物理网络上创建多达16,777,216个逻辑隔离的虚拟网络,极大地扩展了传统VLAN的限制(4096个VLAN)。

  • 配置要求

    • 每个VXLAN段需要唯一的VNI。
    • VTEP之间需要共享相同的VNI映射关系,确保正确的流量隔离和转发。
Reserved字段
  • 字段大小:32位(包括24位和8位)

  • 描述:这部分字段目前未被定义,必须设置为0,保留以备将来使用。

  • 作用:保留字段为将来VXLAN协议的扩展提供了空间,确保当前协议的向后兼容性。

外层UDP头部详细解析

外层UDP头部在VXLAN报文中起到将VXLAN报文封装在UDP报文中的作用,使其能够通过现有的IP网络进行传输。下面对UDP头部的各个字段进行详细解析:

源端口号(Source Port)
  • 字段大小:16位

  • 描述:源端口号由发送VTEP根据特定的哈希算法计算得到。该端口号用于支持负载均衡和多路径传输。

  • 取值范围:0 到 65535

  • 作用

    • 不同的源端口号可以用于区分不同的VXLAN隧道,增强流量的分散性。
    • 源端口号的变化有助于在物理网络中实现负载均衡,通过不同的路径分发流量,提高网络的带宽利用率。
  • 配置要求

    • 发送VTEP需要实现一种策略来动态分配和管理源端口号,以确保不同隧道的端口号分布均匀。
目的端口号(Destination Port)
  • 字段大小:16位

  • 描述:目的端口号固定为4789,这是VXLAN的标准端口号,用于标识VXLAN报文。

  • 作用

    • 通过固定的目的端口号,网络设备能够快速识别并处理VXLAN报文。
    • 保证了VXLAN报文的一致性和可预测性,方便VTEP之间的互操作。
  • 取值4789

  • 配置要求

    • 网络设备(如防火墙、路由器)需要允许目的端口号为4789的UDP流量通过,以确保VXLAN报文能够正常传输。
长度(Length)
  • 字段大小:16位

  • 描述:该字段表示整个UDP报文的长度,包括UDP头部和数据部分。

  • 取值范围:8 到 65535

  • 作用

    • 确保接收端能够正确解析整个UDP报文的长度,避免报文截断或溢出。
    • 支持不同大小的VXLAN报文,提高协议的灵活性。
  • 配置要求

    • 在发送和接收端,确保UDP报文长度的正确性,防止由于长度字段错误导致的报文处理问题。
校验和(Checksum)
  • 字段大小:16位

  • 描述:校验和用于检测UDP报文在传输过程中是否发生了错误。

  • 取值范围:0 到 65535

  • 作用

    • 提供基本的数据完整性检查,确保UDP报文在传输过程中未被篡改或损坏。
    • 增强了报文传输的可靠性。
  • 配置要求

    • 校验和必须被正确计算和验证,以确保数据的完整性。
    • 在某些情况下,校验和可以被禁用(值为0),但这会降低报文传输的可靠性。

外层IP头部详细解析

外层IP头部用于将VXLAN报文在IP网络中进行路由和转发。以下是对外层IP头部各字段的详细解析:

版本(Version)
  • 字段大小:4位

  • 描述:指定IP协议的版本,通常为IPv4(值为4)或IPv6(值为6)。

  • 取值

    • 4:IPv4
    • 6:IPv6
  • 作用

    • 确定IP头部的格式和解析方式。
    • 影响后续IP报文处理的步骤和方法。
  • 配置要求

    • VTEP需要根据网络环境选择合适的IP版本,确保与网络中的其他设备兼容。
头部长度(Header Length)
  • 字段大小:4位

  • 描述:指示IP头部的长度,以4字节为单位。

  • 取值范围:最小值为5(20字节),最大值取决于IP版本。

  • 作用

    • 确定IP头部的实际长度,帮助接收端正确解析IP报文。
  • 配置要求

    • 确保IP头部长度字段正确反映实际的头部长度,防止报文解析错误。
服务类型(Type of Service,ToS)
  • 字段大小:8位

  • 描述:用于指示报文的服务质量,包括优先级和延迟敏感性等。

  • 作用

    • 影响IP报文在网络中的转发优先级。
    • 支持不同类型流量的服务质量管理。
  • 配置要求

    • 网络设备可以根据ToS字段实现流量分类和优先级调度。
总长度(Total Length)
  • 字段大小:16位

  • 描述:表示整个IP报文的长度,包括IP头部和数据部分。

  • 取值范围:20(IPv4最小)到 65535 字节

  • 作用

    • 确保接收端能够正确解析整个IP报文的长度,避免报文截断或溢出。
  • 配置要求

    • 确保发送端和接收端对报文长度的处理一致,避免因长度字段错误导致的报文处理问题。
标识(Identification)
  • 字段大小:16位

  • 描述:用于标识IP分片,帮助接收端将分片重新组装。

  • 作用

    • 在报文被分片传输时,确保分片能够被正确识别和组装。
  • 配置要求

    • 在分片传输场景下,确保标识字段的一致性,以避免分片重组错误。
标志(Flags)
  • 字段大小:3位

  • 描述:控制和指示IP分片。

  • 作用

    • 控制报文是否可以被分片。
    • 指示是否存在更多的分片。
  • 配置要求

    • 根据网络需求和MTU配置,适当设置标志字段,优化报文传输效率。
片偏移(Fragment Offset)
  • 字段大小:13位

  • 描述:指示分片的位置,用于帮助接收端重新组装报文。

  • 作用

    • 确保分片报文能够被正确排序和组装。
  • 配置要求

    • 在分片传输场景下,确保片偏移字段的准确性,以避免分片重组错误。
生存时间(Time to Live,TTL)
  • 字段大小:8位

  • 描述:指定报文在网络中可以存在的最大跳数。每经过一个网络设备,TTL值减1,当TTL值为0时,报文将被丢弃。

  • 作用

    • 防止报文在网络中无限循环。
    • 控制报文在网络中的生命周期。
  • 配置要求

    • 根据网络拓扑和需求,合理设置TTL值,平衡报文到达目的地的概率和网络资源的消耗。
协议类型(Protocol Type)
  • 字段大小:8位

  • 描述:指定上层协议类型,对于VXLAN报文,该值通常为17,表示UDP协议。

  • 作用

    • 确保接收端能够正确解析和处理上层协议数据。
    • 支持多种上层协议的传输和解析。
  • 配置要求

    • VTEP需要正确设置协议类型,以确保UDP报文能够被正确识别和处理。
头部校验和(Header Checksum)
  • 字段大小:16位

  • 描述:用于检测IP头部在传输过程中是否发生了错误。

  • 作用

    • 提供IP头部的基本数据完整性检查。
    • 确保报文在传输过程中未被篡改或损坏。
  • 配置要求

    • 确保发送端和接收端正确计算和验证校验和,以提高报文传输的可靠性。
源IP地址(Source IP Address,IP SA)
  • 字段大小

    • IPv4:32位
    • IPv6:128位
  • 描述:这是报文的源IP地址,通常是VTEP的IP地址。

  • 作用

    • 标识报文的发送端,支持路由和转发。
    • 支持源IP地址过滤和安全策略的实施。
  • 配置要求

    • 确保源IP地址的准确性和唯一性,避免地址冲突和路由错误。
目的IP地址(Destination IP Address,IP DA)
  • 字段大小

    • IPv4:32位
    • IPv6:128位
  • 描述:这是报文的目标IP地址,通常是远端VTEP的IP地址。

  • 作用

    • 确保报文能够正确路由到目标VTEP。
    • 支持目标IP地址过滤和安全策略的实施。
  • 配置要求

    • 确保目的IP地址的准确性,避免报文传输到错误的目标。

外层以太网头部详细解析

外层以太网头部用于在物理网络中传输VXLAN报文,其结构与传统以太网帧头部相同,但在VXLAN环境下具有特定的配置和作用。

目的MAC地址(Destination MAC Address,MAC DA)
  • 字段大小:48位

  • 描述:这是报文的目标MAC地址,通常是下一跳设备(如交换机或路由器)的MAC地址。在VTEP之间传输时,目的MAC地址指向远端VTEP的MAC地址。

  • 作用

    • 确保报文能够在物理网络中被正确路由到目标VTEP。
    • 支持基于MAC地址的转发和过滤。
  • 配置要求

    • 确保目的MAC地址的准确性,避免报文传输到错误的设备。
    • 在多路径和负载均衡场景下,可能需要动态更新目的MAC地址。
源MAC地址(Source MAC Address,MAC SA)
  • 字段大小:48位

  • 描述:这是报文的源MAC地址,通常是当前VTEP设备的MAC地址。

  • 作用

    • 标识报文的发送端,支持源MAC地址过滤和安全策略的实施。
    • 影响基于MAC地址的流量统计和监控。
  • 配置要求

    • 确保源MAC地址的准确性和唯一性,避免地址冲突和网络冲突。
802.1Q标签(802.1Q Tag)
  • 字段大小:32位(可选)

  • 描述:这是一个可选字段,用于在报文中携带VLAN Tag信息。VLAN Tag用于在多租户环境中实现网络隔离。

  • 作用

    • 支持多租户环境中的VLAN隔离,确保不同租户的流量互不干扰。
    • 允许在物理网络中通过VLAN进行流量分类和管理。
  • 配置要求

    • 在需要VLAN隔离的场景下,启用802.1Q标签。
    • 确保VLAN ID的一致性和正确性,避免跨租户的流量泄漏。
以太网类型(Ethernet Type)
  • 字段大小:16位

  • 描述:该字段指示帧的上层协议类型,例如IPv4、IPv6等。

  • 取值示例

    • 0x0800:IPv4
    • 0x86DD:IPv6
    • 0x0806:ARP
  • 作用

    • 确保报文能够被正确解析和处理。
    • 支持多种上层协议的传输和解析。
  • 配置要求

    • 根据实际应用场景,正确设置以太网类型字段,以确保上层协议能够被正确识别和处理。

内层以太网帧详细解析

内层以太网帧是VXLAN报文中的实际用户数据,其结构与传统以太网帧相同,但在VXLAN环境下,内层以太网帧的处理和传输具有特定的要求和优化。

目的MAC地址(Destination MAC Address,MAC DA)
  • 字段大小:48位

  • 描述:目标设备的MAC地址,指向接收端的设备。

  • 作用

    • 确保内层以太网帧能够被正确转发到目标设备。
    • 支持基于MAC地址的流量分类和安全策略。
  • 配置要求

    • 确保目标MAC地址的准确性,避免流量传输错误。
    • 在多租户和大规模环境下,动态管理MAC地址表,防止地址冲突和资源浪费。
源MAC地址(Source MAC Address,MAC SA)
  • 字段大小:48位

  • 描述:源设备的MAC地址,指向发送端的设备。

  • 作用

    • 标识内层以太网帧的发送端,支持源MAC地址过滤和安全策略的实施。
    • 影响基于MAC地址的流量统计和监控。
  • 配置要求

    • 确保源MAC地址的准确性和唯一性,避免地址冲突和网络冲突。
VLAN标签(VLAN Tag)
  • 字段大小:32位(可选)

  • 描述:可选字段,用于在内层以太网帧中携带VLAN信息,支持网络的逻辑隔离。

  • 作用

    • 支持多租户环境中的VLAN隔离,确保不同租户的流量互不干扰。
    • 允许在虚拟网络中通过VLAN进行流量分类和管理。
  • 配置要求

    • 在需要VLAN隔离的场景下,启用内层VLAN标签。
    • 确保VLAN ID的一致性和正确性,避免跨租户的流量泄漏。
以太网类型(Ethernet Type)
  • 字段大小:16位

  • 描述:指示内层以太网帧的上层协议类型,如IPv4、IPv6等。

  • 取值示例

    • 0x0800:IPv4
    • 0x86DD:IPv6
    • 0x0806:ARP
  • 作用

    • 确保内层以太网帧的上层协议能够被正确解析和处理。
    • 支持多种上层协议的传输和解析。
  • 配置要求

    • 根据实际应用场景,正确设置内层以太网类型字段,以确保上层协议能够被正确识别和处理。
数据字段(Data Field)
  • 字段大小:46到1500字节(可变)

  • 描述:包括上层协议数据,如IP报文、TCP/UDP数据等,是内层以太网帧的实际用户数据。

  • 作用

    • 传输实际的应用数据和网络流量。
    • 支持多种协议和应用场景。
  • 配置要求

    • 确保数据字段的完整性和准确性,避免数据损坏和传输错误。
    • 根据网络需求,优化数据字段的大小和分段,以提高传输效率和性能。

VXLAN报文封装和解封装流程

为了更好地理解VXLAN报文格式,下面将详细介绍VXLAN报文的封装和解封装流程,说明各个字段在实际操作中的作用和配置要求。

报文封装流程

当虚拟机(VM)发送数据时,VTEP需要对内层以太网帧进行封装,以便通过物理网络传输到目标VTEP。具体的封装流程如下:

  1. 接收内层以太网帧:VTEP从虚拟机接收到内层以太网帧,包含源MAC地址、目的MAC地址、VLAN标签(如果有)和数据字段。

  2. 添加VXLAN头部

    • 设置VXLAN Flags字段的第3位为1,其余位为0
    • 分配或检索VNI,以标识该帧所属的VXLAN网络。
    • 填充保留字段为0
    • 将VXLAN头部添加到内层以太网帧之前。
  3. 添加UDP头部

    • 计算源端口号,通常通过哈希算法基于源IP地址、目的IP地址、源端口号等信息生成。
    • 设置目的端口号为4789
    • 计算UDP校验和,确保报文的完整性。
    • 将UDP头部添加到VXLAN头部之前。
  4. 添加IP头部

    • 设置源IP地址为本地VTEP的IP地址。
    • 设置目的IP地址为目标VTEP的IP地址。
    • 设置TTL值,根据网络拓扑选择合适的值(例如64)。
    • 设置协议类型为17,表示UDP。
    • 计算IP校验和,确保报文的完整性。
    • 将IP头部添加到UDP头部之前。
  5. 添加外层以太网头部

    • 设置源MAC地址为本地VTEP的MAC地址。
    • 设置目的MAC地址为目标VTEP的MAC地址,通过查找路由表或MAC地址表获得。
    • 如需,添加802.1Q VLAN标签以支持多租户隔离。
    • 设置以太网类型字段为0x0800(IPv4)或0x86DD(IPv6),根据IP版本选择。
    • 将外层以太网头部添加到IP头部之前。
  6. 发送报文:封装完成后,VTEP通过物理网络将报文发送到目标VTEP。

报文解封装流程

目标VTEP接收到封装后的VXLAN报文后,需要对其进行解封装,以提取内层以太网帧并将其转发到目标虚拟机或物理机。具体的解封装流程如下:

  1. 接收外层以太网报文:目标VTEP从物理网络接收到外层以太网报文,包含外层以太网头部、IP头部、UDP头部、VXLAN头部和内层以太网帧。

  2. 解析外层以太网头部

    • 检查目的MAC地址是否匹配本地VTEP的MAC地址。
    • 如需,解析802.1Q VLAN标签以支持多租户隔离。
    • 验证以太网类型字段,确保报文为IP协议(0x08000x86DD)。
  3. 解析IP头部

    • 验证目的IP地址是否匹配本地VTEP的IP地址。
    • 检查TTL值,确保报文未超出允许的跳数。
    • 验证协议类型字段为17,表示UDP协议。
  4. 解析UDP头部

    • 验证目的端口号为4789,确保报文为VXLAN报文。
    • 校验UDP校验和,确保报文在传输过程中未被篡改或损坏。
  5. 解析VXLAN头部

    • 检查VXLAN Flags字段的第3位是否为1,确认VNI字段有效。
    • 提取VNI,确定报文所属的VXLAN网络。
    • 验证保留字段为0,确保报文格式正确。
  6. 提取内层以太网帧

    • 根据VNI,将内层以太网帧提取出来,准备转发到目标虚拟机或物理机。
    • 如有必要,移除内层VLAN标签,确保内层以太网帧的正确性。
  7. 转发内层报文:将提取的内层以太网帧发送到目标虚拟机或物理机,完成数据传输。

目录
相关文章
|
2天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
4天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1540 5
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
7天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
585 22
|
4天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
201 3
|
10天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
11天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
581 5
|
23天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
7天前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
235 3
|
9天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
327 2