A Netfilter hálózati csomagok szűrése és módosítása alrendszer fejlesztői egy olyan patch-gyűjtemény, amely jelentősen felgyorsítja a nagy összehasonlító listák (nftables set) feldolgozását, ahol szükséges a hálózati alhálózatok, portok, protokollok és MAC-címek kombinációjának ellenőrzése. A patch-ek már elfogadásra kerültek a , amely a Linux 5.7 kernelbe lesz javasolva. A legnagyobb sebességnövekedést az utasítások kihasználásával sikerült elérni (a jövőben hasonló optimalizálásokat terveznek NEON utasítások alapján ARM-ra vonatkozóan).
Az optimalizálások a (PIle PAcket POlicies) modulba lettek beépítve, amely a csomag tartalmának összehasonlítását végzi a szűrési szabályokban alkalmazott tetszőleges állapotmezők tartományával, például IP és hálózati port tartományokkal (nft_set_rbtree és nft_set_hash manipulálja a tartományok és értékek közvetlen tükrözésének összehasonlítását). Az AVX2 256 bites utasítások által vektorozott pipapo verzió egy AMD Epyc 7402 processzorral rendelkező rendszeren 420%-os teljesítményjavulást mutatott 30 000 bejegyzés feldolgozása során, amelyek port-protokoll párokat tartalmaztak. Az alhálózatból és portszámból álló páros összehasonlítása 1000 bejegyzés feldolgozása során 87%-os növekedést mutatott IPv4 esetén és 128%-os növekedést IPv6 esetén.

Egy másik optimalizálás, amely lehetővé teszi a 8 bites összehasonlító csoportok használatát a 4 bitesek helyett, szintén érezhető teljesítményjavulást mutatott: 66%-ot 30 000 port-protokoll bejegyzés feldolgozása során, 43%-ot alhálózat_IPv4-port esetén és 61%-ot alhálózat_IPv6-port esetén. Összességében, figyelembe véve az AVX2 optimalizálásokat, a pipapo teljesítménye a megadott tesztekben 766%-kal, 168%-kal és 269%-kal növekedett. Az összetett összehasonlítások jellemzői a ellenőrzéseinél (kivéve a port+protokoll páros teszteredményeit), de még mindig elmaradnak a közvetlen ellenőrzésekhez viszonyítva, amelyeket és netdev alapú drop-kezelők használnak.

Forrás: opennet.ru
