Padanan senarai kompleks NetFilter akan dipercepatkan dalam kernel Linux 5.7

Pembangun subsistem penapisan dan pengubahsuaian paket rangkaian Netfilter diterbitkan satu set tampalan yang mempercepatkan pemprosesan senarai pemetaan besar (set nftables) dengan ketara, yang memerlukan pemeriksaan gabungan subnet, port rangkaian, protokol dan alamat MAC. Tampalan sudah diterima masuk ke dalam cawangan nf-seterusnya, yang akan dicadangkan untuk dimasukkan ke dalam kernel Linux 5.7. Pecutan yang paling ketara dicapai terima kasih kepada pertunangan Arahan AVX2 (pada masa hadapan, ia dirancang untuk menerbitkan pengoptimuman serupa berdasarkan arahan NEON untuk ARM).

Pengoptimuman dibuat pada modul nft_set_pipapo (PIle PAcket POlicies), yang menyelesaikan masalah memadankan kandungan paket dengan julat arbitrari keadaan medan yang digunakan dalam peraturan penapisan, seperti julat IP dan port rangkaian (nft_set_rbtree dan nft_set_hash memanipulasi padanan selang dan pantulan langsung nilai). Versi pipapo yang divektorkan dengan arahan AVX256 2-bit pada sistem dengan pemproses AMD Epyc 7402 menunjukkan peningkatan prestasi sebanyak 420% apabila menghuraikan 30 rekod yang termasuk pengikatan protokol port. Peningkatan padanan pautan daripada subnet dan nombor port apabila menghuraikan 1000 entri ialah 87% untuk IPv4 dan 128% untuk IPv6.

Padanan senarai kompleks NetFilter akan dipercepatkan dalam kernel Linux 5.7

Satu lagi pengoptimuman, membenarkan penggunaan kumpulan pemetaan 8-bit dan bukannya 4-bit, juga menunjukkan peningkatan prestasi yang boleh diukur: 66% apabila menghuraikan 30k entri protokol port, 43% untuk subnet_IPv4-port dan 61% untuk subnet_IPv6-port. Secara keseluruhan, dengan mengambil kira pengoptimuman AVX2, prestasi pipapo meningkat dalam ujian ini masing-masing sebanyak 766%, 168% dan 269%. Ciri-ciri yang diperoleh untuk perbandingan kompleks adalah mendahului ujian medan tunggal dalam rbtree (dengan pengecualian ujian port + protokol), tetapi setakat ini mereka ketinggalan daripada ujian langsung menggunakan cincang dan lepaskan pengendali berdasarkan netdev.

Padanan senarai kompleks NetFilter akan dipercepatkan dalam kernel Linux 5.7

Sumber: opennet.ru

Tambah komen