Cilium hybrid 是针对 TCP 和 UDP 特性设计的优化方案

58 阅读2分钟

Cilium Hybrid 模式分析

Hybrid DSR and SNAT Mode 详细分析

一、核心原理

Hybrid(混合)模式是 Cilium 负载均衡的一种特殊配置,其核心逻辑是:

  • 对 TCP 连接使用 DSR(Direct Server Return,直接服务器返回
  • 对 UDP 连接使用 SNAT(Source Network Address Translation,源网络地址转换)

实现两种模式的差异化应用。

  • DSR 原理:TCP 流量通过负载均衡器转发到后端 Pod 时,仅修改数据包的目标地址(不修改源地址),后端 Pod 直接向客户端回复响应,无需经过负载均衡器中转,回程减少“额外一跳”。

  • SNAT 原理:UDP 流量通过负载均衡器时,会修改数据包的源地址为负载均衡器自身地址,后端 Pod 的响应需先返回负载均衡器,再由负载均衡器转发给客户端。

这种混合模式的设计基于 TCP 和 UDP 的协议特性差异:

  • TCP 是面向连接的可靠协议,适合通过 DSR 降低延迟;

  • UDP 是无连接的,使用 SNAT 可避免 DSR 可能带来的网络配置复杂性(如 MTU 调整)。

二、使用方式

Hybrid 模式通过 Cilium 的 Helm 配置启用,具体步骤如下:

  1. 环境要求需在无 kube-proxy 的环境中使用kubeProxyReplacement=true),并采用原生路由模式routingMode=native)。

  2. Helm 安装命令

    1. helm install cilium cilium/cilium --version 1.18.3 \
          --namespace kube-system \
          --set routingMode=native \
          --set kubeProxyReplacement=true \
          --set loadBalancer.mode=hybrid \  # 启用混合模式
          --set k8sServiceHost=${API_SERVER_IP} \
          --set k8sServicePort=${API_SERVER_PORT}
      
  3. 核心配置项

    1. loadBalancer.mode=hybrid:指定负载均衡模式为混合模式,TCP 自动使用 DSR,UDP 自动使用 SNAT,无需额外配置服务注解。

三、优势
  1. 减少延迟,提升性能:对 TCP 流量使用 DSR,避免响应数据包经过负载均衡器的“额外一跳”,降低网络延迟,尤其适合以 TCP 为主要传输协议的工作负载(如 HTTP、数据库等)。

  2. 避免手动调整 MTU:DSR 模式可能因数据包封装(如 Geneve)导致 MTU(最大传输单元)不匹配,需手动调整网络配置;而混合模式中 UDP 使用 SNAT 可规避这一问题,减少网络配置复杂度。

  3. 兼顾协议特性:针对 TCP(可靠连接)和 UDP(无连接)的不同特性选择最优转发方式:TCP 受益于 DSR 的低延迟,UDP 受益于 SNAT 的配置简洁性。

  4. 无缝集成 Kubernetes 服务:无需修改 Kubernetes Service 定义,通过全局 Helm 配置即可生效,对业务代码和服务配置无侵入性。

总结

Hybrid 模式是 Cilium 针对 TCP 和 UDP 协议特性设计的优化方案,通过“TCP 用 DSR 降延迟,UDP 用 SNAT 避麻烦”的组合,在提升性能的同时降低网络配置成本,尤其适合以 TCP 为主、需兼顾 UDP 的 Kubernetes 环境。

参考:

  1. docs.cilium.io/en/stable/n…