1. 简介 (Introduction)
1. 简介 (Introduction)
网络虚拟化 (network virtualization) 是一种有用技术, 可在共享物理基础设施之上创建敏捷的多租户环境. 通过将网络拓扑的模拟与物理硬件解耦, 可以构建简单而灵活的控制平面 (control plane), 为相邻的高层应用呈现专用网络的视图. 这通常需要使用隧道协议 (tunneling protocol), 在虚拟化流量穿越物理基础设施时对其进行封装. 控制平面和部署环境的需求在持续演进, 但隧道和封装协议通常是由硬件和/或软件实现的机制, 修改起来可能更加困难. 本文档描述 Geneve (Generic Network Virtualization Encapsulation, 通用网络虚拟化封装), 这是一种协议, 旨在通过为当前和未来的网络用例提供灵活且可扩展的框架, 避免僵硬标准定义带来的问题.
隧道协议定义传输中流量的数据平面 (data plane) 格式. 只要该格式是固定的, 它就会成为系统的"窄腰", 限制创新速度, 类似 IPv4 选项难以演进的情况. Geneve 的目标是定义一种尽可能灵活且可扩展的封装数据格式, 使控制平面能够演进并支持新的用例, 而无需对数据格式进行永久性变更.
当前的虚拟化封装可以分为无状态封装 (例如 VXLAN [RFC7348] 和 NVGRE [RFC7637]) 以及包含状态的封装 (例如 STT [STT]). 有状态协议提供显著的灵活性和性能, 但状态必须在端点之间同步, 这会增加复杂性. 无状态协议更易于实现和调试, 但其数据包中可携带的信息量有限. Geneve 是一种无状态协议, 试图在保持无状态协议简单性的同时, 提供接近有状态协议的灵活性.
1.1. 要求语言 (Requirements Language)
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和 "OPTIONAL" 只有在全部大写出现时, 才应按照 BCP 14 [RFC2119] [RFC8174] 中的描述解释.