Π‘ΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅Ρ‚ΠΎ Π½Π° слоТни ΡΠΏΠΈΡΡŠΡ†ΠΈ Π½Π° NetFilter Ρ‰Π΅ бъдС ускорСно Π² ядрото Π½Π° Linux 5.7

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° подсистСмата Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° 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.

Π‘ΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅Ρ‚ΠΎ Π½Π° слоТни ΡΠΏΠΈΡΡŠΡ†ΠΈ Π½Π° NetFilter Ρ‰Π΅ бъдС ускорСно Π² ядрото Π½Π° Linux 5.7

Π”Ρ€ΡƒΠ³Π° оптимизация, позволяваща ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° 8-Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³Ρ€ΡƒΠΏΠΈ Π·Π° съвпадСниС вмСсто 4-Π±ΠΈΡ‚ΠΎΠ²ΠΈ, ΡΡŠΡ‰ΠΎ ΠΏΠΎΠΊΠ°Π·Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ подобрСния Π² производитСлността: 66% ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° 30 хиляди записа Π½Π° ΠΏΠΎΡ€Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», 43% Π·Π° subnet_IPv4-port ΠΈ 61% Π·Π° subnet_IPv6-port. ΠšΠ°Ρ‚ΠΎ цяло, ΠΊΠ°Ρ‚ΠΎ сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° AVX2, производитСлността Π½Π° pipapo сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ Π² Ρ‚Π΅Π·ΠΈ тСстовС ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ със 766%, 168% ΠΈ 269%. Π₯арактСристикитС, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Π·Π° комплСксни сравнСния, ΠΈΠ·ΠΏΡ€Π΅Π²Π°Ρ€Π²Π°Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½ΠΎ място rbtree (с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° тСста Π·Π° ΠΏΠΎΡ€Ρ‚+ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»), Π½ΠΎ засСга Ρ‚Π΅ изостават ΠΎΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ Ρ…Π΅ΡˆΠΎΠ²Π΅ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° изпусканС, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° netdev.

Π‘ΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅Ρ‚ΠΎ Π½Π° слоТни ΡΠΏΠΈΡΡŠΡ†ΠΈ Π½Π° NetFilter Ρ‰Π΅ бъдС ускорСно Π² ядрото Π½Π° Linux 5.7

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€