У ядры Linux 5.7 будуць паскораны складаныя супастаўленні па спісах у NetFilter

Распрацоўнікі падсістэмы фільтравання і мадыфікацыі сеткавых пакетаў Netfilter апублікавалі набор патчаў, якія значна паскараюць апрацоўку вялікіх спісаў супастаўлення (nftables set), у якіх патрабуецца праверка спалучэння падсетак, сеткавых партоў, пратаколу і MAC-адрасоў. Патчы ўжо прыняты ў галінку nf-next, якая будзе прапанавана для ўключэння ў склад ядра Linux 5.7. Найбольш прыкметнага паскарэння ўдалося дабіцца дзякуючы задзейнічанню інструкцый AVX2 (у далейшым плануецца апублікаваць падобныя аптымізацыі на базе інструкцый NEON для ARM).

Аптымізацыі ўнесены ў модуль nft_set_pipapo (PIle PAcket POlicies), вырашальны задачу супастаўлення змесціва пакета з ужывальнымі ў правілах фільтрацыі адвольнымі дыяпазонамі стану палёў, такімі як дыяпазоны IP і сеткавых партоў (nft_set_rbtree і nft_set_hash маніпулююць супастаўленнем інтэрвалаў і прамым адлюстраваннем значэнняў). Вектарызаваная пры дапамозе 256-разрадных інструкцый AVX2 версія pipapo на сістэме з працэсарам AMD Epyc 7402 паказала прырост прадукцыйнасці на 420% пры разборы 30 тысяч запісаў, якія ўключаюць звязкі порт-пратакол. Прырост пры параўнанні звязку з падсеткі і нумары порта пры аналізе 1000 запісаў склаў 87% для IPv4 і 128% для IPv6.

У ядры Linux 5.7 будуць паскораны складаныя супастаўленні па спісах у NetFilter

Іншая аптымізацыя, якая дазваляе выкарыстоўваць 8-бітавыя групы супастаўлення замест 4-бітавых, таксама паказала адчувальны прырост прадукцыйнасці: 66% пры разборы 30 тысяч запісаў порт-пратакол, 43% – подсеть IPv4-порт і 61% подсет IPv6-порт. У суме, з улікам аптымізацый AVX2, прадукцыйнасць pipapo павялічылася ў паказаных тэстах на 766%, 168% і 269% адпаведна. Атрыманыя для складаных супастаўленняў характарыстыкі апярэджваюць праверкі адзінкавых палёў у rbtree (за выключэннем тэсту звязкі порт+пратакол), але пакуль адстаюць ад прамых праверак пры дапамозе хэшаў і drop-апрацоўшчыкаў на базе netdev.

У ядры Linux 5.7 будуць паскораны складаныя супастаўленні па спісах у NetFilter

Крыніца: opennet.ru

Дадаць каментар