Geneve 把内层协议数据装进 UDP。固定头 8 字节,选项长度写在 Opt Len,按 4 字节计,不含这 8 字节。版本不是 0 时,端点必须丢掉。目的端口默认 6081。规范是 2020 年 11 月的 RFC 8926。这份头本身不加密。

固定的 8 字节里,长度只数选项

一个可独立引用的定义句:Geneve 头由 8 字节固定部分和零个或多个选项组成。Opt Len 是 6 位,表示选项字段的长度,以 4 字节的倍数计,不含固定头。因此整个 Geneve 头最短 8 字节,最长 260 字节(RFC 8926 第 3.4 节)。

6 位的最大值是 63。63 乘 4 再加 8,等于原文写的 260。原文没有把 63 印出来。载荷从固定头末尾再跳过这个偏移开始。

字段宽度发送与接收
Ver2 位当前版本是 0。端点收到未知版本必须丢掉
Opt Len6 位选项总长,4 字节为单位,不含固定的 8 字节
O1 位控制报文。端点不得转发其载荷
C1 位有关键选项。不支持解析选项的端点必须据此丢掉
Rsvd.6 位发送必须为 0,收到必须忽略
Protocol Type16 位内层协议数据的类型。以太网是 0x6558
VNI24 位虚拟网络里的一个元素。转发语义由控制平面定义
Reserved8 位发送必须为 0,收到时忽略

关键词只在全大写时按 BCP 14 解释。上表里的「必须」对应第 3.4 节的大写 MUST。8 位 Reserved 的「收到时忽略」在原文没有再写一个 MUST。中转设备遇到未知版本时,必须把它当成载荷未知的 UDP 来处理,而不是按端点的规则丢掉。中转设备必须不管 Opt Len 取什么值,都保持一致的转发,包括等价多路径怎么选。中转设备不得因为 C 位丢掉包,也不得因为 O 位改变转发。这份控制报文的载荷,中转设备不得尝试解释。

VNI 可以被用于等价多路径的转发决定,也可以用来区分被封装包里重叠的地址空间。这是 MAY。等价多路径 能稳定使用的,仍是它看得到的外层头。VNI 在 UDP 载荷里。某一台路由器会不会读它,本文没有测量。

关键位在选项类型的最高位

一个可独立引用的定义句:每个选项有 4 字节头:16 位类、8 位类型、3 位保留、5 位长度。类型的最高位是关键位。接收端点不认识这个选项且该位为 1 时,必须丢掉。任一选项置了这一位,固定头里的 C 位也必须置 1(RFC 8926 第 3.5 节)。

长度以 4 字节为单位,不含这 4 字节选项头。长度为 0 表示只有选项头、没有选项数据。原文用小写 may 写出,每项总长可以在 4 到 128 字节之间。5 位的最大值是 31,31 乘 4 再加 4,等于 128。原文没有把 31 印出来。所有选项的总长如果不等于 Opt Len,这个包无效;处理选项的隧道端点收到时必须静默丢掉。句子里的条件是「处理选项的端点」,不是每一个收到包的设备。

3 位保留在发送时必须为 0,收到时必须忽略。中转设备不得因为类型里的关键位丢掉包。

第 2.2.1 节还有一句小写 must:隧道端点要能解析变长头,包括任何选项。第 3.4 节则用大写规定,不支持选项解析的端点,在 C 位为 1 时必须丢掉;C 位为 0 时,端点可以用 Opt Len 剥掉全部选项,再转发解封装后的包,这是 MAY。两句不要合成「每个端点都会解析选项」。

选项只能由隧道端点生成和终结。中转设备不得修改 Geneve 头,不得插入或删除选项;选项的内容和顺序也不得被中转设备修改。中转设备可以解释选项,但第 2.2.1 节把这种参与写成 OPTIONAL。不解释 Geneve 头的中转设备,必须把这些包当成其他 UDP 包,并保持一致的转发。

类的取值由 IANA 的 Geneve Option Class 登记分配。2026 年 10 月 19 日没有逐项核对该登记里已经分出的类。控制平面如何挑选选项,原文写明不在这份规范里。

6081 是目的端口,两端不对调

一个可独立引用的定义句:IANA 把 UDP 6081 分配为 Geneve 固定的众所周知目的端口。这个众所周知的值应当默认使用;规范用大写建议实现把它做成可配置。选定的端口用来识别 Geneve,不得像 TCP 那样在一条连接的两端对调(RFC 8926 第 3.3 节)。

「应当默认使用」在原文是小写 should。「做成可配置」是 RECOMMENDED。控制平面如何通知改后的端口,不在这份规范里。

2026 年 10 月 19 日检索 IANA 服务名与端口登记。摘录里 UDP 6081 的服务名是 geneve,参考为 RFC 8926,修改日期显示为 2020-05-04;TCP 6081 显示为 Reserved。这是登记表的摘录,不是对整页历史的审计。

源端口由发起的隧道端点选择。属于同一条被封装流的包,源端口应当相同,以免换路造成重排。为了在多条链路上分散,源端口应当用来自被封装包头部的散列,例子是传统五元组。因为它表示的是流,不是真正的 UDP 连接,整个 16 位范围都可以使用,这是 MAY。IPv6 还可以另外用流标签提供熵,原文指向 RFC 6438。2026 年 10 月 19 日没有重读 RFC 6438。

VXLAN 一文写的是另一份封装:固定 8 字节、24 位 VNI、目的端口应当默认 4789,并且没有选项长度。那篇依据的 RFC 7348 是 Informational。2026 年 10 月 19 日没有重读 RFC 7348,因此下表右侧只重复那篇文章已经写出的字段,不把两份规范合成一份。

Geneve,本文重读的 RFC 8926VXLAN 一文已经写出的点
头长固定 8 字节,选项可把总长加到 2608 字节,没有 Opt Len
网络标识24 位 VNI。控制平面定义解封装后怎么转发24 位 VNI,I 位必须为 1
内层是什么协议类型指出。以太网为 0x6558内层以太网帧
目的端口默认 6081,不得对调应当默认 4789
这份头是否加密第 6 节写没有内建安全机制该文写 RFC 7348 没有定义加密

同日的 RFC 元数据把状态标成 Proposed Standard,没有把它标成已被取代,也没有列出它取代了哪一份 RFC。页首分类行是 Standards Track。同日检索 勘误页,没有列出勘误条目。

校验和默认要算,加密不在这 8 字节里

IPv4 上,为了保护 Geneve 头、选项和载荷,UDP 校验和应当按第 3.3 节指向的 RFC 768 和 RFC 1122 生成。IPv6 上,为了把 IP 头也保护进去,默认必须生成;例外写在紧接着的那一段。收到非零校验和时,隧道端点必须核验;不正确必须丢掉,否则必须接受并解封装。2026 年 10 月 19 日没有重读这一句所引的 RFC 1122 和 RFC 8200。

第 4.3 节允许在额外条件下把校验和设为 0。IPv4 上应当使用校验和;运营者可以关掉,若完整性已由 IPsec 或其他校验和提供,或者满足第 4.3.1 节的条件 a、b、c 之一。IPv6 上默认必须使用。端点可以配置成 0,但第 4.3.1 节要求处在它所定义的流量受管受控环境,并满足 a、b、c 之一,然后还要满足该节第 1 到第 5 条。其中第 2 条写明:若仍用 0,实现必须满足 RFC 6936 第 4 节的全部要求,以及第 5 节里与 Geneve 相关的第 1 条。端口级的零校验和规则见 UDP 校验和。同日没有重读 RFC 6936,因此不把那两条的原文在这里重写一遍。

第 4.2 节:Geneve 自己不提供拥塞控制,依赖载荷里的流量。因此必须与已受拥塞控制的流量一起使用,或者用在该节所指的流量受管受控环境里,以免造成拥塞。某一条路径算不算这种环境,本文不判断。

第 6 节写明:它封装在 UDP/IP 里,没有任何内建的安全机制。能接触底层网络的人可以窥看、改动或注入;本文不提供这些做法的步骤。穿过不可信链路时,原文用小写 should 写,应当使用 IPsec 这类 VPN 技术,为组成 Geneve 封装的 IP 包提供认证和/或加密。若运营者认定需要机密性,则应当使用加密,这句是大写 SHOULD,例子包括 IPsec 和 DTLS。离开运营者安全域的 Geneve 流量,应当用加密机制保护,这句也是 SHOULD。这些句子是风险取舍,不是对某一产品的推荐。

端点到端点已经加密时,中转设备看不见 Geneve 头和选项。此时中转设备必须把这些包当成其他 IP 包,并保持一致的转发。这句在第 6.4 节,用的是 IP 包;第 3.5.1 节对不解释 Geneve 头的中转设备,用的是 UDP 包。两句的对象不同,不要并成同一条。

第 4.1 节把适用环境写成数据中心,以及单一运营者或相邻合作运营者管理的受控网络,不是普通互联网上的一般要求。本文没有核对某一远程接入客户端是否发送目的端口 6081,也没有测量哪一家云用了哪一个选项类。

核对清单

  1. Opt Len 只数选项:单位是 4 字节,不含固定的 8 字节。原文写的总长上限是 260;
  2. 版本和 C 位决定端点丢不丢:未知版本必须丢。不解析选项的端点,只在 C 位为 1 时必须丢;
  3. 中转设备不改头:不得插入或删除选项,也不得按 Opt Len、O 位或 C 位改变转发;
  4. 6081 不对调:默认目的端口。源端口可以为了熵用满 16 位。TCP 6081 在当天登记表里是保留;
  5. 这 8 字节不加密:机密性是另加的 SHOULD,取决于运营者的风险判断。看见 6081 不等于远程接入 VPN。