跳到主要内容

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) 的连通性和性能.