Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Netfilter Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠ°ΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΊΠΎΡΡΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΏΠΈΡΡΡΠΈ ΡΡΡ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ (nftables set), ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠΈ, ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅, ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΈ MAC Π°Π΄ΡΠ΅ΡΠΈ. ΠΠ°ΡΠΎΠ²Π΅ΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ° ΠΏΡΠΈΠ΅ΡΠΈ Π² ΠΊΠ»ΠΎΠ½Π° nf-ΡΠ»Π΅Π΄Π²Π°Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.7. ΠΠ°ΠΉ-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎΡΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°ΡΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½Π΅ AVX2 ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ (Π² Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° NEON ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ARM).
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ nft_set_pipapo (PIle PAcket POlicies), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΡ ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ»Π΅ΡΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅, ΠΊΠ°ΡΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π½Π° IP ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅ (nft_set_rbtree ΠΈ nft_set_hash ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Ρ ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅). ΠΠ΅ΡΡΠΈΡΡΠ° Π½Π° pipapo, Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° 256-Π±ΠΈΡΠΎΠ²ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ AVX2 Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΠΏΡΠΎΡΠ΅ΡΠΎΡ AMD Epyc 7402, ΠΏΠΎΠΊΠ°Π·Π° 420% ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° 30 Ρ
ΠΈΠ»ΡΠ΄ΠΈ Π·Π°ΠΏΠΈΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΠΎΡΡ-ΠΏΡΠΎΡΠΎΠΊΠΎΠ». Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΠΈ ΡΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° ΠΈ Π½ΠΎΠΌΠ΅Ρ Π½Π° ΠΏΠΎΡΡ ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° 1000 Π·Π°ΠΏΠΈΡΠ° Π΅ 87% Π·Π° IPv4 ΠΈ 128% Π·Π° IPv6.
ΠΡΡΠ³Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° 8-Π±ΠΈΡΠΎΠ²ΠΈ Π³ΡΡΠΏΠΈ Π·Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ 4-Π±ΠΈΡΠΎΠ²ΠΈ, ΡΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°: 66% ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° 30 Ρ
ΠΈΠ»ΡΠ΄ΠΈ Π·Π°ΠΏΠΈΡΠ° Π½Π° ΠΏΠΎΡΡ-ΠΏΡΠΎΡΠΎΠΊΠΎΠ», 43% Π·Π° subnet_IPv4-port ΠΈ 61% Π·Π° subnet_IPv6-port. ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ, ΠΊΠ°ΡΠΎ ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° AVX2, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° pipapo ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ Π² ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΡΡΡ 766%, 168% ΠΈ 269%. Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΈΠ·ΠΏΡΠ΅Π²Π°ΡΠ²Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎ rbtree (Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΠ° Π·Π° ΠΏΠΎΡΡ+ΠΏΡΠΎΡΠΎΠΊΠΎΠ»), Π½ΠΎ Π·Π°ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·ΠΎΡΡΠ°Π²Π°Ρ ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Ρ
Π΅ΡΠΎΠ²Π΅ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΡΠΊΠ°Π½Π΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° netdev.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru