searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

VXLAN 报文通信机制与OVS解包流程

2025-06-20 03:26:25
13
0

一、VXLAN 简介:为了解决 VLAN 的局限

    传统的 VLAN802.1Q)使用 12 VLAN ID,仅支持最多 4096 个逻辑网络。这对于现代大规模数据中心来说远远不够。VXLANVirtual eXtensible LAN)应运而生。它引入了 24 位的 VNIVXLAN Network Identifier),支持 最多 1677 万个逻辑网络,是 VLAN 4000 倍以上。

VXLAN 的核心思想是:

         将原始二层以太网帧封装进 UDP/IP 数据报中,构建基于 IP 网络的大二层 overlay 网络。

二、VXLAN 报文结构详解

下面是 VXLAN 报文的结构图,图中展示了从最外层到最内层的字段定义:

 报文构自外向内包含以下几个部分:

2.1 外层封装部分:

Outer Ethernet Header  :传统以太网头,MAC DA / SA,标识物理链路传输

Outer IP Header             :为封装后的 IP 数据包,VTEP 的第址

Outer UDP Header         : Source Port 随机,Dest Port 一般为 4789VXLAN 默认端口)

2.2 VXLAN Header 字段详解:

Flags                              : 8 bit 必须设置为 0x08,表示 VNI 有效

Reserved                        : 8 bit 保留位,必须为 0

Group ID                        :16 bit        多播组 ID,现多用于保留

VNI                                 :24 bit        VXLAN Network Identifier,逻辑网络 ID

Reserved                        : 8 bit 保留位,必须为 0

2.3原始报文部分

L2  Inner Ethernet Header    :Inner Ethernet Header,源 MAC、目的 MAC
L3  Inner IP Header               :源 IP、目的 IP,协议类型(如 TCP/UDP)
L4 Inner TCP/UDP Header    :源端口、目的端口、校验和等字段
应用 Payload                         :应用层数据,例如 HTTP、DNS、数据包负在等

三、VXLAN 的通信流程

以下是 VXLAN 的基本通信过程:

VM1 VTEP1 → 封装为 VXLAN 报文 → 网络传输 → VTEP2 → 解封装 → VM2

具体过程如下:

         1.      VM1 发出一个以太网帧(如 ARPICMP);

         2.      VTEP1 查询 VXLAN 映射表,查找目标 MAC 所属的目标 VTEP 第址;

         3.      若查找到,直接封装并发送到目标 VTEP

         4.      若未查找到,触发洪泛(BUM 流量);

         5.      VTEP2 收到 VXLAN 报文后解封装,并将内部帧送给 VM2

         6.      同时学习源 MACVNIVTEP 的映射,更新本地转发。

四、OVS 中对 VXLAN 报文的分层识别与解析机制

在我们的 OVS 数据通路中,VXLAN 报文被明确划分为两层结构:外层报文(Outer Packet)与内层报文(Inner Packet)。我们通过模块化的解析流程,在

 parser 阶段完成识别与字段提取,并将关键协议栈信息逐级传递给后续模块用于匹配与动作决策。以下是该过程的详细说明:

parser 模块 中,首先对报文的协议栈进行递归式解析,从而实现外层协议字段的快速识别:

1、当报文为以太类型为 IPv4 (0x0800)、ipv6(0x08dd),进入 L3 层解析;

2、 IP 协议字段为 UDP ,进入 L4 层处理;

3、进一步检查,vxlan层,即可判断该报文为 VXLAN 封装。

此时,parser 将其标记为“VXLAN 报文”,并执行特定的 VXLAN 解析路径。

4.1外层字段提取

4.2 内层字段提取

解析完成后,parser 会将所有有效字段、信息封装向后续模块传递。后续模块通过读取这些字段完成匹配与动作决策

0条评论
0 / 1000
luohw5
3文章数
0粉丝数
luohw5
3 文章 | 0 粉丝
原创

VXLAN 报文通信机制与OVS解包流程

2025-06-20 03:26:25
13
0

一、VXLAN 简介:为了解决 VLAN 的局限

    传统的 VLAN802.1Q)使用 12 VLAN ID,仅支持最多 4096 个逻辑网络。这对于现代大规模数据中心来说远远不够。VXLANVirtual eXtensible LAN)应运而生。它引入了 24 位的 VNIVXLAN Network Identifier),支持 最多 1677 万个逻辑网络,是 VLAN 4000 倍以上。

VXLAN 的核心思想是:

         将原始二层以太网帧封装进 UDP/IP 数据报中,构建基于 IP 网络的大二层 overlay 网络。

二、VXLAN 报文结构详解

下面是 VXLAN 报文的结构图,图中展示了从最外层到最内层的字段定义:

 报文构自外向内包含以下几个部分:

2.1 外层封装部分:

Outer Ethernet Header  :传统以太网头,MAC DA / SA,标识物理链路传输

Outer IP Header             :为封装后的 IP 数据包,VTEP 的第址

Outer UDP Header         : Source Port 随机,Dest Port 一般为 4789VXLAN 默认端口)

2.2 VXLAN Header 字段详解:

Flags                              : 8 bit 必须设置为 0x08,表示 VNI 有效

Reserved                        : 8 bit 保留位,必须为 0

Group ID                        :16 bit        多播组 ID,现多用于保留

VNI                                 :24 bit        VXLAN Network Identifier,逻辑网络 ID

Reserved                        : 8 bit 保留位,必须为 0

2.3原始报文部分

L2  Inner Ethernet Header    :Inner Ethernet Header,源 MAC、目的 MAC
L3  Inner IP Header               :源 IP、目的 IP,协议类型(如 TCP/UDP)
L4 Inner TCP/UDP Header    :源端口、目的端口、校验和等字段
应用 Payload                         :应用层数据,例如 HTTP、DNS、数据包负在等

三、VXLAN 的通信流程

以下是 VXLAN 的基本通信过程:

VM1 VTEP1 → 封装为 VXLAN 报文 → 网络传输 → VTEP2 → 解封装 → VM2

具体过程如下:

         1.      VM1 发出一个以太网帧(如 ARPICMP);

         2.      VTEP1 查询 VXLAN 映射表,查找目标 MAC 所属的目标 VTEP 第址;

         3.      若查找到,直接封装并发送到目标 VTEP

         4.      若未查找到,触发洪泛(BUM 流量);

         5.      VTEP2 收到 VXLAN 报文后解封装,并将内部帧送给 VM2

         6.      同时学习源 MACVNIVTEP 的映射,更新本地转发。

四、OVS 中对 VXLAN 报文的分层识别与解析机制

在我们的 OVS 数据通路中,VXLAN 报文被明确划分为两层结构:外层报文(Outer Packet)与内层报文(Inner Packet)。我们通过模块化的解析流程,在

 parser 阶段完成识别与字段提取,并将关键协议栈信息逐级传递给后续模块用于匹配与动作决策。以下是该过程的详细说明:

parser 模块 中,首先对报文的协议栈进行递归式解析,从而实现外层协议字段的快速识别:

1、当报文为以太类型为 IPv4 (0x0800)、ipv6(0x08dd),进入 L3 层解析;

2、 IP 协议字段为 UDP ,进入 L4 层处理;

3、进一步检查,vxlan层,即可判断该报文为 VXLAN 封装。

此时,parser 将其标记为“VXLAN 报文”,并执行特定的 VXLAN 解析路径。

4.1外层字段提取

4.2 内层字段提取

解析完成后,parser 会将所有有效字段、信息封装向后续模块传递。后续模块通过读取这些字段完成匹配与动作决策

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0