A Linux kernel 5.7 felgyorsítja az összetett listaillesztést a NetFilterben

A Netfilter hálózati csomagok szűrési és módosítási alrendszerének fejlesztői közzétett javítások készlete, amely jelentősen felgyorsítja a nagy egyezési listák (nftables set) feldolgozását, amely alhálózatok, hálózati portok, protokollok és MAC-címek kombinációjának ellenőrzését igényli. A javításokat már elfogadták a fiókba nf-next, amelyet javasolni fognak a Linux 5.7 kernelbe való felvételére. A legszembetűnőbb gyorsulást a megnyerő AVX2 utasítások (a jövőben a tervek szerint az ARM NEON utasításai alapján hasonló optimalizációkat tesznek közzé).

A modulban található optimalizálás nft_set_pipapo (PIle PAcket POLICIES), amely megoldja a csomag tartalmának a szűrési szabályokban használt tetszőleges mezőállapot-tartományokkal való egyeztetésének problémáját, például IP- és hálózati port-tartományokkal (az nft_set_rbtree és nft_set_hash manipulálja az intervallum egyeztetést és az értékek közvetlen tükrözését). A pipapo 256 bites AVX2 utasításokkal vektorizált verziója AMD Epyc 7402 processzorral rendelkező rendszeren 420%-os teljesítménynövekedést mutatott 30 ezer rekord elemzésekor, beleértve a port-protokoll kombinációkat is. Az 1000 rekord elemzésekor az alhálózat és a portszám kombinációjának összehasonlítása esetén a növekedés 87% volt IPv4 és 128% IPv6 esetében.

A Linux kernel 5.7 felgyorsítja az összetett listaillesztést a NetFilterben

Egy másik optimalizálás, amely lehetővé tette a 8 bites helyett 4 bites egyezési csoportok használatát, szintén jelentős teljesítménynövekedést mutatott: 66%-ot 30 ezer port-protokoll bejegyzés elemzésekor, 43%-ot subnet_IPv4-port és 61%-ot subnet_IPv6-port esetében. Összességében, figyelembe véve az AVX2 optimalizációkat, a pipapo teljesítménye ezekben a tesztekben 766%-kal, 168%-kal, illetve 269%-kal nőtt. Az összetett összehasonlítások során kapott jellemzők megelőzik az egyszeri helyszíni ellenőrzéseket rbtree (kivéve a port+protokoll tesztet), de eddig lemaradnak a közvetlen ellenőrzések mögött hash-ek és netdev alapú cseppkezelők.

A Linux kernel 5.7 felgyorsítja az összetett listaillesztést a NetFilterben

Forrás: opennet.ru

Hozzászólás