Connection tracking (conntrack) adalah mekanisme pelacakan koneksi yang memantau dan mencatat status koneksi jaringan, termasuk status TCP seperti SYN, ESTABLISHED, dan CLOSED. Dalam mode Terway Datapath V2 dan IPvlan, conntrack menggunakan peta extended Berkeley Packet Filter (eBPF) untuk menyimpan informasi tentang lalu lintas kontainer. Pada mode lainnya, implementasi Linux conntrack tradisional digunakan. Topik ini menjelaskan cara mengubah ukuran tabel eBPF conntrack untuk performa optimal.
Periksa ukuran tabel conntrack
Ukuran tabel eBPF conntrack bergantung pada kapasitas memori node.
Jalankan perintah berikut untuk melihat ukuran tabel conntrack pada sebuah node:
Ambil nama pod terway-eniip:
# kubectl describe node <nodename> | grep terway-eniip
kube-system terway-eniip-xxxx 350m (8%) 1100m (28%) 200Mi (3%) 256Mi (3%) 16hKueri ukuran tabel conntrack:
# kubectl exec -it -nkube-system terway-eniip-xxxx -c policy -- cilium status --verbose
...
BPF Maps: dynamic sizing: on (ratio: 0.002500)
Name Size
Auth 524288
Non-TCP connection tracking 65536
TCP connection tracking 131072
Endpoint policy 65535
...Deskripsi parameter:
dynamic sizing: on: Mengaktifkan batas atas dinamis untuk peta eBPF. Jika nilainya diatur keoff, Anda dapat mengonfigurasi parameterbpf-map-dynamic-size-ratiountuk mengaktifkan penyesuaian dinamis atau mengonfigurasi parameterbpf-ct-global-any-max,bpf-ct-global-tcp-max, danbpf-nat-global-maxuntuk menentukan ukuran tabel yang berbeda.ratio: 0.002500: Ukuran maksimum peta eBPF berdasarkan proporsi tertentu dari total memori sistem.Non-TCP connection tracking: Jumlah entri maksimum dalam tabel conntrack non-TCP.TCP connection tracking: Jumlah entri maksimum dalam tabel conntrack TCP.
Periksa jumlah entri conntrack
Secara default, setiap node mengekspos port metrik Prometheus. Port default adalah 9962. Tabel berikut menjelaskan metrik yang dapat dikumpulkan dengan menggunakan komponen pemantauan.
Metric | Label dan nilai |
cilium_datapath_conntrack_gc_entries | family: tipe alamat IP. Nilai valid: protocol: tipe protokol. Nilai valid: status: status pembersihan. Dengan menggabungkan semua status, Anda dapat memperoleh jumlah entri conntrack sebelum pembersihan. Nilai valid: |
Ubah port pemantauan default
Parameter | Deskripsi |
prometheus-serve-addr | Port mendengarkan Prometheus. Untuk menonaktifkan port, atur nilainya ke
|
Untuk informasi lebih lanjut tentang cara memodifikasi parameter ini, lihat deskripsi parameter cilium_args di Sesuaikan ConfigMap Terway.
Sesuaikan ukuran eBPF conntrack
eBPF conntrack dan Linux conntrack secara fungsional identik. Pengaturan default dapat memenuhi kebutuhan sebagian besar skenario bisnis tanpa perlu konfigurasi tambahan.
Anda perlu mengubah pengaturan berdasarkan kebutuhan bisnis dalam skenario berikut:
Sejumlah besar koneksi jangka panjang ada.
Pod langsung terpapar ke Internet dan sejumlah besar koneksi setengah terbuka mungkin ada.
Menyesuaikan ukuran tabel conntrack adalah operasi berisiko tinggi. Sebelum Anda menyesuaikan ukuran tabel conntrack di lingkungan produksi, kami sarankan Anda mengevaluasi efek penyesuaian tersebut. Setelah Anda menyesuaikan ukuran tabel conntrack, lihat bagian Periksa Ukuran Tabel Conntrack dalam topik ini untuk memeriksa apakah penyesuaian tersebut berlaku.
Parameter | Deskripsi |
bpf-map-dynamic-size-ratio | ukuran maksimum peta eBPF berdasarkan proporsi tertentu dari total memori sistem.
|
bpf-ct-timeout-regular-any | Periode timeout entri dalam tabel conntrack non-TCP. Nilai default: |
bpf-ct-timeout-regular-tcp | Periode timeout entri koneksi yang telah ditetapkan dalam tabel conntrack TCP. Nilai default: |
bpf-ct-timeout-regular-tcp-fin | Periode timeout koneksi yang sedang ditutup dalam tabel conntrack TCP. Nilai default: |
bpf-ct-timeout-regular-tcp-syn | Periode timeout koneksi yang sedang dibuat dalam tabel conntrack TCP. Nilai default: |
bpf-ct-timeout-service-any | Periode timeout entri dalam tabel conntrack layanan non-TCP. Nilai default: |
bpf-ct-timeout-service-tcp | Periode timeout koneksi layanan yang telah ditetapkan dalam tabel conntrack TCP layanan. Nilai default: |
bpf-ct-timeout-service-tcp-grace | Periode timeout shutdown layanan dengan lancar dalam tabel conntrack TCP layanan. Nilai default: |
conntrack-gc-interval | Interval pembersihan tabel conntrack. Nilai default: Catatan Parameter ini menentukan interval di mana cilium-agent membersihkan tabel conntrack secara proaktif. Jangan tentukan nilai lebih besar dari nilai default. Interval pembersihan yang lebih pendek meningkatkan konsumsi CPU oleh cilium-agent tetapi mencegah tabel conntrack penuh. Anda dapat menyesuaikan batas CPU kontainer Terway di konsol Container Service for Kubernetes (ACK). |
bpf-ct-global-any-max | Ukuran maksimum tabel conntrack layanan non-TCP. Catatan Saat penskalaan dinamis diaktifkan (dynamic sizing: on), kami sarankan Anda menggunakan parameter |
bpf-ct-global-tcp-max | Ukuran maksimum tabel conntrack layanan TCP. Catatan Saat penskalaan dinamis diaktifkan (dynamic sizing: on), kami sarankan Anda menggunakan parameter |
bpf-nat-global-max | Ukuran maksimum tabel NAT BPF. Catatan Nilai parameter bpf-nat-global-max harus lebih kecil dari nilai parameter bpf-ct-global-any-max dan bpf-ct-global-tcp-max. Ukuran default = (Nilai bpf-ct-global-any-max + Nilai bpf-ct-global-tcp-max) × 2/3 Saat penskalaan dinamis diaktifkan (dynamic sizing: on), kami sarankan Anda menggunakan parameter |
Untuk informasi lebih lanjut tentang cara memodifikasi parameter ini, lihat deskripsi parameter cilium_args di Sesuaikan ConfigMap Terway.
Dengan bpf-map-dynamic-size-ratio diatur ke 0.0025, ukuran peta untuk kapasitas memori node yang berbeda:
Memori Node | Ukuran CT map (TCP) | Ukuran CT map (any) | Ukuran NAT map |
7,5 GiB | 131.072 | 65.536 | 131.072 |
16 GiB | 151.765 | 75.882 | 151.765 |
30 GiB | 284.560 | 142.280 | 284.560 |
240 GiB | 2.276.484 | 1.138.242 | 2.276.484 |
Contoh
Blok kode sampel berikut mengatur bpf-map-dynamic-size-ratio ke 0.003 dan bpf-ct-timeout-regular-tcp ke 1h.
10-terway.conf: |
{
"cniVersion": "0.4.0",
"name": "terway",
"capabilities": {"bandwidth": true},
"eniip_virtual_type": "IPvlan",
"cilium_args": "--bpf-map-dynamic-size-ratio=0.003 --bpf-ct-timeout-regular-tcp=1h",
"type": "terway"
}