Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π²ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² 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 Π²Π΅ΡcΠΈΡ pipapo Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ AMD Epyc 7402 ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΏΡΠΈΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° 420% ΠΏΡΠΈ ΡΠ°Π·Π±ΠΎΡΠ΅ 30 ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ
ΡΠ²ΡΠ·ΠΊΠΈ ΠΏΠΎΡΡ-ΠΏΡΠΎΡΠΎΠΊΠΎΠ». ΠΡΠΈΡΠΎΡΡ ΠΏΡΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ²ΡΠ·ΠΊΠΈ ΠΈΠ· ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ° ΠΏΡΠΈ ΡΠ°Π·Π±ΠΎΡΠ΅ 1000 Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠΎΡΡΠ°Π²ΠΈΠ» 87% Π΄Π»Ρ IPv4 ΠΈ 128% Π΄Π»Ρ IPv6.
ΠΡΡΠ³Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 8-Π±ΠΈΡΠΎΠ²ΡΠ΅ Π³ΡΡΠΏΠΏΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ 4-Π±ΠΈΡΠΎΠ²ΡΡ
, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΎΡΡΡΠΈΠΌΡΠΉ ΠΏΡΠΈΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ: 66% ΠΏΡΠΈ ΡΠ°Π·Π±ΠΎΡΠ΅ 30 ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΠΎΡΡ-ΠΏΡΠΎΡΠΎΠΊΠΎΠ», 43% — ΠΏΠΎΠ΄ΡΠ΅ΡΡ_IPv4-ΠΏΠΎΡΡ ΠΈ 61% — ΠΏΠΎΠ΄ΡΠ΅ΡΡ_IPv6-ΠΏΠΎΡΡ. Π ΡΡΠΌΠΌΠ΅, Ρ ΡΡΡΡΠΎΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ AVX2, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ pipapo ΡΠ²Π΅Π»ΠΈΡΠΈΠ»Π°ΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΠ΅ΡΡΠ°Ρ
Π½Π° 766%, 168% ΠΈ 269% ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ Π² rbtree (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΠ° ΡΠ²ΡΠ·ΠΊΠΈ ΠΏΠΎΡΡ+ΠΏΡΠΎΡΠΎΠΊΠΎΠ»), Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΎΡΡΡΠ°ΡΡ ΠΎΡ ΠΏΡΡΠΌΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Ρ
ΡΡΠ΅ΠΉ ΠΈ drop-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° Π±Π°Π·Π΅ netdev.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru