文档首页/ 云容器引擎 CCE/ 用户指南/ 网络/ 容器网络/ Pod网络配置/ 优化DataPlane V2模式下conntrack配置
更新时间:2026-10-14 GMT+08:00
分享

优化DataPlane V2模式下conntrack配置

conntrack是连接跟踪机制的一种实现,用于跟踪和记录网络连接的状态,例如TCP连接的状态(SYN、ESTABLISHED、CLOSED等)。开启DataPlane V2后,集群对应的conntrack信息不再存储在Linux conntrack表里,而是存储在eBPF map里。

当前DataPlane V2默认启用cilium的配置参数“--bpf-map-dynamic-size-ratio=0.0025”,此参数表示几个大型eBPF map的上限容量根据节点总内存量计算得出,且最少条目数会确保131072,详见cilium eBPF map。而kube-proxy会根据机器的核数设置Linux conntrack表的最大条目数。kube-proxy的默认设置为每核最多32768个条目,且无论机器核数多少,最小条目数始终为131072。

下表展示了当cilium配置参数为“--bpf-map-dynamic-size-ratio=0.0025”时,kube-proxy和cilium为其各自的连接跟踪表设置的值。

vCPU

Memory (GiB)

Kube-proxy CT entries

Cilium CT entries

1

3.75

131072

131072

2

7.5

131072

131072

4

15

131072

131072

8

30

262144

284560

16

60

524288

569120

32

120

1048576

1138240

64

240

2097152

2276480

96

360

3145728

4552960

检查当前conntrack配置

若您需要查看DataPlane V2一个节点当前conntrack表大小,您可以执行以下操作。

  1. 获取节点yangtse-cilium Pod名称。

    kubectl describe node <nodename>  | grep yangtse-cilium

    预期回显如下:

     kube-system                yangtse-cilium-tdhzb                      100m (5%)     1 (51%)     128Mi (0%)       0 (0%)         1d

  2. 检查conntrack表大小。

    kubectl exec -it -nkube-system yangtse-cilium-tdhzb -- cilium status --verbose | grep -A23 "BPF Maps"

    以下示例是8G节点上的输出:

    BPF Maps:   dynamic sizing: on (ratio: 0.002500)
      Name                          Size
      Auth                          524288
      Non-TCP connection tracking   65536
      TCP connection tracking       131072
      Endpoints                     65535
      IP cache                      512000
      IPv4 masquerading agent       16384
      IPv6 masquerading agent       16384
      IPv4 fragmentation            8192
      IPv4 service                  65536
      IPv6 service                  65536
      IPv4 service backend          65536
      IPv6 service backend          65536
      IPv4 service reverse NAT      65536
      IPv6 service reverse NAT      65536
      Metrics                       1024
      Ratelimit metrics             64
      NAT                           131072
      Neighbor table                131072
      Endpoint policy               16384
      Policy stats                  65536
      Session affinity              65536
      Sock reverse NAT              65536

    部分关键输出项说明如下:

    主要输出项

    默认值

    主要作用

    配置参数

    dynamic sizing: on

    0.0025

    根据系统总内存比例确定eBPF Map的大小,包含以下Map:

    • cilium_ct_{4,6}_global
    • cilium_ct_{4,6}_any
    • cilium_nodeport_neigh{4,6}
    • cilium_snat_v{4,6}_external
    • cilium_lb{4,6}_reverse_sk

    bpf-map-dynamic-size-ratio

    Non-TCP connection tracking

    65536

    非TCP连接跟踪Map,主要用于UDP、ICMP等无连接协议的反向包匹配,对应的eBPF Map名为cilium_ct_any{4,6}_global 。

    bpf-ct-global-any-max

    TCP connection tracking

    131072

    TCP连接跟踪Map,记录TCP连接五元组、方向、状态、revNAT信息等,对应的eBPF Map名为cilium_ct{4,6}_global。

    bpf-ct-global-tcp-max

    NAT

    131072

    BPF NAT/SNAT Map,常见于BPF masquerade、NodePort SNAT、egress SNAT等路径。

    NAT Map大小不能超过TCP+ Non-TCP CT 总容量的2/3。

    bpf-nat-global-max

    Sock reverse NAT

    65536

    Socket LB 反向NAT Map,主要用于UDP和 getpeername()

    bpf-sock-rev-map-max

调整conntrack配置

eBPF Conntrack Map承担与Linux Conntrack类似的连接状态跟踪功能。默认配置可以满足大多数业务场景,通常无需调整。当节点存在大量并发连接或长连接,导致Conntrack条目长期占用,并出现Map压力升高、条目插入失败或新建连接异常时,可根据业务规模调整相关参数。

  • 仅DataPlane V2插件2.1.1及以上版本支持自定义Conntrack配置。
  • 调整Conntrack Map容量属于高风险操作,请充分验证后再应用到生产环境。增大容量会占用更多节点内存,修改后滚动重启yangtse-cilium还可能重建相关 Map,并影响现有连接。
  • 不建议仅通过缩短垃圾回收周期解决容量不足问题。过短的回收周期会增加cilium-agent的CPU开销。

支持调整的主要参数如下:

配置参数

默认值

说明

bpf-map-dynamic-size-ratio

0.0025

根据节点总内存动态计算 cilium_ct_{4,6}_global、cilium_ct_{4,6}_any、cilium_nodeport_neigh{4,6}、cilium_snat_v{4,6}_external 和 cilium_lb{4,6}_reverse_sk 等 Map 的容量。Map 已满时,新建 TCP、UDP 或 NAT 连接可能失败。

bpf-ct-global-any-max

未显式设置

非 TCP Conntrack Map 的最大条目数。通常建议优先通过 bpf-map-dynamic-size-ratio 统一调整。

bpf-ct-global-tcp-max

未显式设置

TCP Conntrack Map 的最大条目数。通常建议优先通过 bpf-map-dynamic-size-ratio 统一调整。

bpf-nat-global-max

未显式设置

全局 NAT Map 的最大条目数。通常建议优先通过 bpf-map-dynamic-size-ratio 统一调整。

bpf-sock-rev-map-max

65536

Socket LB 反向 NAT Map 的最大条目数,主要用于 Socket LB 的反向地址转换,包括 UDP 流量和 getpeername() 地址还原。

conntrack-gc-interval

5m0s

cilium-agent 主动清理 Conntrack 条目的周期。缩短周期有助于更快回收条目,但会增加 CPU 开销。

bpf-ct-timeout-regular-any

1m0s

普通非 TCP Conntrack 条目的超时时间。

bpf-ct-timeout-regular-tcp

6h0m0s

普通 TCP 已建立连接的 Conntrack 条目超时时间。

bpf-ct-timeout-regular-tcp-fin

10s

TCP 连接关闭阶段的 Conntrack 条目超时时间。

bpf-ct-timeout-regular-tcp-syn

1m0s

TCP 连接建立阶段的 Conntrack 条目超时时间。

bpf-ct-timeout-service-any

1m0s

Service 非 TCP Conntrack 条目的超时时间。

bpf-ct-timeout-service-tcp

6h0m0s

Service TCP 已建立连接的 Conntrack 条目超时时间。

bpf-ct-timeout-service-tcp-grace

1m0s

Service TCP 连接优雅关闭阶段的 Conntrack 条目超时时间。

当您的业务符合下面场景时,请根据业务需要合理调整配置。

业务场景

CCE Standard集群(VPC网络模型)

CCE Turbo集群

  • 单节点Pod数 < 80
  • 单节点活跃TCP连接 < 20万
  • ClusterIP/NodePort数量不多

bpf-ct-global-tcp-max: "524288"

bpf-ct-global-any-max: "262144"

bpf-nat-global-max: "524288"

bpf-sock-rev-map-max: "262144"

bpf-ct-global-tcp-max: "524288"

bpf-ct-global-any-max: "262144"

bpf-nat-global-max: "524288"

bpf-sock-rev-map-max: "262144"

  • 单节点Pod数80~100
  • 单节点活跃TCP连接20万~100万
  • 节点上有Proxy代理业务
  • 大量ClusterIP/NodePort/LoadBalancer

bpf-ct-global-tcp-max: "2097152"

bpf-ct-global-any-max: "524288"

bpf-nat-global-max: "1048576"

bpf-sock-rev-map-max: "524288"

bpf-ct-global-tcp-max: "1048576"

bpf-ct-global-any-max: "524288"

bpf-nat-global-max: "524288"

bpf-sock-rev-map-max: "524288"

  • 单节点Pod数100+
  • 单节点活跃TCP连接100万~300万
  • 节点是核心流量入口或出口
  • 大量ClusterIP/NodePort/LoadBalancer
  • BPF masquerade压力较高

bpf-ct-global-tcp-max: "4194304"

bpf-ct-global-any-max: "1048576"

bpf-nat-global-max: "2097152"

bpf-sock-rev-map-max: "1048576"

bpf-ct-global-tcp-max: "2097152"

bpf-ct-global-any-max: "1048576"

bpf-nat-global-max: "1048576"

bpf-sock-rev-map-max: "1048576"

您可以根据您的业务规模创建如下cilium社区原生的ConfigMap配置。

apiVersion: v1
kind: ConfigMap
metadata:
  name: cilium-config
  namespace: kube-system
data:
  bpf-ct-global-tcp-max: "524288"
  bpf-ct-global-any-max: "262144"
  bpf-nat-global-max: "524288"
  bpf-sock-rev-map-max: "262144"

当您配置好cilium-config,您可以通过执行以下命令滚动重建yangtse-cilium即可生效:

uuid=$(uuidgen)
kubectl patch daemonset -nkube-system yangtse-cilium --type='json' -p="[{\"op\": \"add\", \"path\": \"/spec/template/metadata/annotations/change-id\", \"value\": \"$uuid\"}]"

相关文档