文档首页/ 云容器引擎 CCE/ 用户指南/ 网络/ 容器网络/ Pod网络配置/ 优化DataPlane V2模式下conntrack配置
更新时间:2026-07-17 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和Linux的conntrack在功能上相同,默认配置可以满足大部分业务场景的需要,无需调整。

  • 目前只有Dataplane V2 2.1.1及以上插件版本支持自定义配置。
  • 调整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\"}]"

相关文档