Kernel Linux 5.7 akan mempercepat pencocokan daftar kompleks di NetFilter

Pengembang subsistem pemfilteran dan modifikasi paket jaringan Netfilter diterbitkan serangkaian tambalan yang secara signifikan mempercepat pemrosesan daftar kecocokan besar (kumpulan nftables), yang memerlukan pemeriksaan kombinasi subnet, port jaringan, protokol, dan alamat MAC. Patch sudah diterima di cabang nf-selanjutnya, yang akan diusulkan untuk dimasukkan dalam kernel Linux 5.7. Akselerasi paling nyata dicapai berkat menarik Instruksi AVX2 (di masa depan direncanakan untuk mempublikasikan optimasi serupa berdasarkan instruksi NEON untuk ARM).

Optimasi disertakan dalam modul nft_set_pipapo (PIle PAcket POlicies), yang memecahkan masalah pencocokan konten paket dengan rentang status bidang arbitrer yang digunakan dalam aturan pemfilteran, seperti rentang IP dan port jaringan (nft_set_rbtree dan nft_set_hash memanipulasi pencocokan interval dan refleksi nilai secara langsung). Versi pipapo yang di-vektorisasi menggunakan instruksi AVX256 2-bit pada sistem dengan prosesor AMD Epyc 7402 menunjukkan peningkatan kinerja sebesar 420% ketika mengurai 30 ribu catatan termasuk kombinasi port-protokol. Peningkatan saat membandingkan kombinasi subnet dan nomor port saat mengurai 1000 catatan adalah 87% untuk IPv4 dan 128% untuk IPv6.

Kernel Linux 5.7 akan mempercepat pencocokan daftar kompleks di NetFilter

Pengoptimalan lain, yang memungkinkan penggunaan grup pencocokan 8-bit, bukan 4-bit, juga menunjukkan peningkatan kinerja yang signifikan: 66% saat menguraikan 30 ribu entri protokol port, 43% untuk port subnet_IPv4, dan 61% untuk port subnet_IPv6. Secara total, dengan mempertimbangkan optimalisasi AVX2, kinerja pipapo meningkat dalam pengujian ini masing-masing sebesar 766%, 168%, dan 269%. Karakteristik yang diperoleh untuk perbandingan kompleks berada di depan pemeriksaan lapangan tunggal pohon rb (dengan pengecualian pengujian port+protokol), tetapi sejauh ini mereka tertinggal dibandingkan penggunaan pemeriksaan langsung hash dan drop handler berdasarkan netdev.

Kernel Linux 5.7 akan mempercepat pencocokan daftar kompleks di NetFilter

Sumber: opennet.ru

Tambah komentar