跳到主要内容

3. 设计要求 (Design Requirements)

3. 设计要求 (Design Requirements)

Geneve 旨在支持网络虚拟化用例, 其中逻辑网络叠加在物理 IP 网络之上. 此类协议的要求来自控制平面的需求, 数据平面设备的能力, 以及对运维简单性的追求.

3.1. 数据平面 (Data Plane)

数据平面必须能够高效地封装和解封装数据包. 这意味着:

  • 低开销 (Low Overhead): 封装头部应尽可能小, 以降低带宽使用和分片风险.
  • 高效处理 (Efficient Processing): 格式应易于在硬件和软件中解析与处理.
  • 协议无关 (Protocol Agnostic): 协议应能够承载任意类型的内部流量, 例如 IPv4, IPv6, Ethernet 等.
  • 多路径 (Multipathing): 协议应支持底层网络中的等价多路径 (Equal-Cost Multipath, ECMP) 路由.

3.2. 控制平面 (Control Plane)

控制平面负责建立隧道并分发策略. 数据平面协议必须支持:

  • 解耦 (Decoupling): 数据平面不应与某个特定控制平面紧密绑定. 同一数据平面应能够配合不同控制平面使用, 例如 SDN 控制器或 BGP-EVPN.
  • 可扩展性 (Extensibility): 控制平面可能需要为数据包附加元数据 (metadata), 以实现安全策略, 服务链等高级功能. 数据平面必须支持一种灵活机制来携带这些元数据.

3.3. 下一代协议支持 (Next-Generation Protocol Support)

新的协议和能力会不断出现. Geneve 通过以下方式面向未来:

  • 避免固定字段 (Avoiding fixed fields): 除交付所需的最小字段外, 头部不应包含可能过时或不够用的固定字段.
  • TLV 选项 (TLV Options): 使用 Type-Length-Value 格式表示选项, 使新的元数据类型无需修改基础协议即可定义.

3.4. 选项 (Options)

Geneve 的一个主要设计目标是支持可变长度选项. 选项用于在隧道端点之间携带元数据. 这些元数据可以用于多种目的, 例如:

  • 策略执行 (Policy enforcement): 应用安全组或访问控制列表 (ACL).
  • 服务链 (Service chaining): 将流量导向一系列中间盒 (middleboxes).
  • 遥测 (Telemetry): 携带性能或调试信息.
  • 源标识 (Source identification): 标识源虚拟机监控器 (hypervisor) 或容器.

3.5. 现有实现 (Existing Implementations)

Geneve 被设计为可在现有硬件和软件平台上实现. 虽然它支持高级功能, 但也应当可以在受限设备上实现协议的基础子集.

3.6. NIC 卸载 (NIC Offloads)

现代网络接口卡 (Network Interface Card, NIC) 提供卸载功能, 例如校验和卸载 (checksum offload) 和大包发送卸载 (Large Send Offload), 以提升性能. Geneve 被设计为在可能时与这些卸载能力兼容, 或允许新的卸载能力被高效实现.

3.7. 调试和 OAM (Debugging and OAM)

操作, 管理和维护 (Operations, Administration, and Management, OAM) 工具对于排查网络问题至关重要. Geneve 包含对 OAM 数据包的支持, 例如 Ping 和 Traceroute, 用于验证叠加网络 (overlay network) 的连通性和性能.