Il kernel Linux 5.7 accelererà la corrispondenza di elenchi complessi in NetFilter

Sviluppatori del sottosistema di filtraggio e modifica Netfilter per i pacchetti di rete hanno pubblicato un insieme di patch che velocizzano significativamente l'elaborazione di grandi match list (set nftables), che richiedono il controllo di una combinazione di sottoreti, porte di rete, protocollo e indirizzi MAC. Le patch sono già state accettate nel ramo nf-successivo, che verrà proposto per l'inclusione nel kernel Linux 5.7. L'accelerazione più evidente è stata ottenuta grazie a coinvolgente Istruzioni AVX2 (in futuro si prevede di pubblicare ottimizzazioni simili basate su istruzioni NEON per ARM).

Ottimizzazioni incluse nel modulo nft_set_pipapo (PIle PAcket POlicies), che risolve il problema della corrispondenza del contenuto di un pacchetto con intervalli di stati di campo arbitrari utilizzati nelle regole di filtraggio, come intervalli di porte di rete e IP (nft_set_rbtree e nft_set_hash manipolano la corrispondenza degli intervalli e la riflessione diretta dei valori). La versione di pipapo vettorizzata utilizzando istruzioni AVX256 a 2 bit su un sistema con un processore AMD Epyc 7402 ha mostrato un aumento delle prestazioni del 420% durante l'analisi di 30mila record comprese le combinazioni porta-protocollo. L'aumento confrontando una combinazione di una sottorete e un numero di porta durante l'analisi di 1000 record è stato dell'87% per IPv4 e del 128% per IPv6.

Il kernel Linux 5.7 accelererà la corrispondenza di elenchi complessi in NetFilter

Un'altra ottimizzazione, che consente l'uso di gruppi di corrispondenza a 8 bit invece che a 4 bit, ha mostrato anche significativi miglioramenti delle prestazioni: 66% durante l'analisi di 30mila voci di protocollo di porta, 43% per subnet_IPv4-port e 61% per subnet_IPv6-port. In totale, tenendo conto delle ottimizzazioni AVX2, le prestazioni di pipapo in questi test sono aumentate rispettivamente del 766%, 168% e 269%. Le caratteristiche ottenute per confronti complessi sono superiori alle verifiche sul singolo campo rbtree (ad eccezione del test porta+protocollo), ma finora sono rimasti indietro rispetto ai controlli diretti utilizzando hash e gestori di drop basati su netdev.

Il kernel Linux 5.7 accelererà la corrispondenza di elenchi complessi in NetFilter

Fonte: opennet.ru

Aggiungi un commento