Nucleul Linux 5.7 va accelera potrivirea listelor complexe în NetFilter

Dezvoltatorii subsistemului de filtrare și modificare Netfilter pentru pachetele de rețea publicat un set de patch-uri care accelerează semnificativ procesarea listelor mari de potriviri (nftables set), care necesită verificarea unei combinații de subrețele, porturi de rețea, protocol și adrese MAC. Patch-urile au fost deja acceptate în filială nf-next, care va fi propus pentru includere în nucleul Linux 5.7. Cea mai vizibilă accelerație a fost obținută datorită antrenant Instrucțiuni AVX2 (în viitor este planificată publicarea unor optimizări similare bazate pe instrucțiunile NEON pentru ARM).

Optimizări incluse în modul nft_set_pipapo (PIle PAcket POlicies), care rezolvă problema potrivirii conținutului unui pachet cu intervale de stări ale câmpului arbitrare utilizate în regulile de filtrare, cum ar fi intervalele IP și porturi de rețea (nft_set_rbtree și nft_set_hash manipulează potrivirea intervalului și reflectarea directă a valorilor). Versiunea pipapo vectorizată folosind instrucțiuni AVX256 pe 2 de biți pe un sistem cu procesor AMD Epyc 7402 a arătat o creștere a performanței cu 420% la analizarea a 30 de mii de înregistrări, inclusiv combinații port-protocol. Creșterea când se compară o combinație de subrețea și un număr de port la analiza a 1000 de înregistrări a fost de 87% pentru IPv4 și 128% pentru IPv6.

Nucleul Linux 5.7 va accelera potrivirea listelor complexe în NetFilter

O altă optimizare, care permite utilizarea grupurilor de potrivire de 8 biți în loc de 4 biți, a arătat, de asemenea, câștiguri semnificative de performanță: 66% la analizarea a 30 de mii de intrări de protocol de port, 43% pentru subnet_IPv4-port și 61% pentru subnet_IPv6-port. În total, ținând cont de optimizările AVX2, performanța pipapo a crescut la aceste teste cu 766%, 168% și, respectiv, 269%. Caracteristicile obținute pentru comparații complexe sunt înaintea verificărilor pe teren unic rbtree (cu excepția testului port+protocol), dar până acum rămân în urma verificărilor directe folosind hashuri și drop handlere bazate pe netdev.

Nucleul Linux 5.7 va accelera potrivirea listelor complexe în NetFilter

Sursa: opennet.ru

Adauga un comentariu