แž€แžถแžšแž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แž”แž‰แŸ’แž‡แžธแžŸแŸ’แž˜แžปแž‚แžŸแŸ’แž˜แžถแž‰ NetFilter แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž–แž“แŸ’แž›แžฟแž“แž“แŸ…แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž› Linux 5.7

แžขแŸ’แž“แž€แž”แž„แŸ’แž€แžพแžแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžšแž„แžแž˜แŸ’แžšแž„ แž“แžทแž„แž€แŸ‚แž”แŸ’แžšแŸ‚ Netfilter แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แž‰แŸ’แž…แž”แŸ‹แž”แžŽแŸ’แžแžถแž‰ แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž— แžŸแŸ†แžŽแžปแŸ†แž“แŸƒแž”แŸ†แžŽแŸ‡แžŠแŸ‚แž›แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸƒแž”แž‰แŸ’แž‡แžธแž€แžถแžšแž”แŸ’แžšแž€แžฝแžแž’แŸ† (nftables set) แžŠแŸ‚แž›แžแž˜แŸ’แžšแžผแžœแžฑแŸ’แž™แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž‚แŸ’แž“แžถแž“แŸƒแž”แžŽแŸ’แžแžถแž‰แžšแž„ แž…แŸ’แžšแž€แž”แžŽแŸ’แžแžถแž‰ แž–แžทแž’แžธแž€แžถแžš แž“แžทแž„แžขแžถแžŸแž™แžŠแŸ’แž‹แžถแž“ MAC แŸ” แž”แŸ†แžŽแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แž‘แžฝแž›แž™แž€แž‘แŸ…แž€แŸ’แž“แžปแž„แžŸแžถแžแžถแžšแžฝแž…แž แžพแž™ nf-แž”แž“แŸ’แž‘แžถแž”แŸ‹แžŠแŸ‚แž›แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแŸ’แž“แžพแžฑแŸ’แž™แžŠแžถแž€แŸ‹แž”แž‰แŸ’แž…แžผแž›แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แž›แžธแž“แžปแž… 5.7 แŸ” แž€แžถแžšแž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“แž‚แžฝแžšแžฑแŸ’แž™แž€แžแŸ‹แžŸแž˜แŸ’แž‚แžถแž›แŸ‹แž”แŸ†แž•แžปแžแžแŸ’แžšแžผแžœแž”แžถแž“แžŸแž˜แŸ’แžšแŸแž…แžŠแŸ„แž™แžขแžšแž‚แžปแžŽ แž…แžผแž›แžšแžฝแž˜ แž€แžถแžšแžŽแŸ‚แž“แžถแŸ† AVX2 (แž“แŸ…แž–แŸแž›แžขแž“แžถแž‚แž แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸ’แžšแŸ„แž„แž“แžนแž„แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แž•แŸ’แžŸแžถแž™แž€แžถแžšแž”แž„แŸ’แž€แžพแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แžŸแŸ’แžšแžŠแŸ€แž„แž‚แŸ’แž“แžถแžŠแŸ„แž™แž•แŸ’แžขแŸ‚แž€แž›แžพแž€แžถแžšแžŽแŸ‚แž“แžถแŸ† NEON แžŸแž˜แŸ’แžšแžถแž”แŸ‹ ARM)แŸ”

แž€แžถแžšแž”แž„แŸ’แž€แžพแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž“แŸ…แž€แŸ’แž“แžปแž„แž˜แŸ‰แžผแžŒแžปแž› nft_set_pipapo (PIle PAcket POlicies) แžŠแŸ‚แž›แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž“แŸƒแž€แžถแžšแž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แž˜แžถแžแžทแž€แžถแž“แŸƒแž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แž‡แžฝแžšแžŸแŸ’แžแžถแž“แž—แžถแž–แžœแžถแž›แžแžถแž˜แžขแŸ†แž–แžพแž…แžทแžแŸ’แž แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž€แŸ’แž“แžปแž„แž…แŸ’แž”แžถแž”แŸ‹แžแž˜แŸ’แžšแž„ แžŠแžผแž…แž‡แžถ IP แž“แžทแž„แž‡แžฝแžšแž…แŸ’แžšแž€แž”แžŽแŸ’แžแžถแž‰ (nft_set_rbtree แž“แžทแž„ nft_set_hash แžšแŸ€แž”แž…แŸ†แž€แžถแžšแž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž› แž“แžทแž„แž€แžถแžšแž†แŸ’แž›แžปแŸ‡แž”แž‰แŸ’แž…แžถแŸ†แž„แžŠแŸ„แž™แž•แŸ’แž‘แžถแž›แŸ‹แž“แŸƒแžแž˜แŸ’แž›แŸƒ)แŸ” แž€แŸ†แžŽแŸ‚แžšแž”แžŸแŸ‹ pipapo vectorized แžŠแŸ„แž™แž”แŸ’แžšแžพแž€แžถแžšแžŽแŸ‚แž“แžถแŸ† 256-bit AVX2 แž“แŸ…แž›แžพแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŠแŸ‚แž›แž˜แžถแž“แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŠแŸ†แžŽแžพแžšแž€แžถแžš AMD Epyc 7402 แž”แžถแž“แž”แž„แŸ’แž แžถแž‰แž–แžธแž€แžถแžšแž€แžพแž“แžกแžพแž„แž“แŸƒแžŠแŸ†แžŽแžพแžšแž€แžถแžš 420% แž“แŸ…แž–แŸแž›แž‰แŸ‚แž€ 30 records แžšแžฝแž˜แž‘แžถแŸ†แž„ port-protocol แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž‚แŸ’แž“แžถแŸ” แž€แžถแžšแž€แžพแž“แžกแžพแž„แž“แŸ…แž–แŸแž›แž”แŸ’แžšแŸ€แž”แž’แŸ€แž”แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž‚แŸ’แž“แžถแž“แŸƒแž”แžŽแŸ’แžแžถแž‰แžšแž„ แž“แžทแž„แž›แŸแžแž…แŸ’แžšแž€แž“แŸ…แž–แŸแž›แž‰แŸ‚แž€แž€แŸ†แžŽแžแŸ‹แžแŸ’แžšแžถ 1000 แž‚แžบ 87% แžŸแž˜แŸ’แžšแžถแž”แŸ‹ IPv4 แž“แžทแž„ 128% แžŸแž˜แŸ’แžšแžถแž”แŸ‹ IPv6 แŸ”

แž€แžถแžšแž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แž”แž‰แŸ’แž‡แžธแžŸแŸ’แž˜แžปแž‚แžŸแŸ’แž˜แžถแž‰ NetFilter แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž–แž“แŸ’แž›แžฟแž“แž“แŸ…แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž› Linux 5.7

แž€แžถแžšแž”แž„แŸ’แž€แžพแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แž˜แžฝแž™แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แž”แŸ’แžšแžพแž€แŸ’แžšแžปแž˜แž•แŸ’แž‚แžผแž•แŸ’แž‚แž„ 8 แž”แŸŠแžธแžแž‡แŸ†แž“แžฝแžŸแžฑแŸ’แž™ 4 แž”แŸŠแžธแž แž€แŸแž”แžถแž“แž”แž„แŸ’แž แžถแž‰แž–แžธแž€แžถแžšแž€แžพแž“แžกแžพแž„แž“แŸƒแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแŸ†แžแžถแž“แŸ‹แŸ—แž•แž„แžŠแŸ‚แžšแŸ– 66% แž“แŸ…แž–แŸแž›แž‰แŸ‚แž€แž’แžถแžแžปแž–แžทแž’แžธแž€แžถแžšแž…แŸ’แžšแž€ 30 แž–แžถแž“แŸ‹ 43% แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แŸ’แžšแž€ subnet_IPv4- แž“แžทแž„ 61% แžŸแž˜แŸ’แžšแžถแž”แŸ‹ subnet_IPv6-port แŸ” แžŸแžšแžปแž”แž˜แž€ แžŠแŸ„แž™แž‚แžทแžแž–แžธแž€แžถแžšแž”แž„แŸ’แž€แžพแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž– AVX2 แž€แžถแžšแžขแž“แžปแžœแžแŸ’แžแžšแž”แžŸแŸ‹ pipapo แž”แžถแž“แž€แžพแž“แžกแžพแž„แž€แŸ’แž“แžปแž„แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแž‘แžถแŸ†แž„แž“แŸแŸ‡ 766%, 168% แž“แžทแž„ 269% แžšแŸ€แž„แž‚แŸ’แž“แžถแŸ” แž›แž€แŸ’แžแžŽแŸˆแžŠแŸ‚แž›แž‘แž‘แžฝแž›แž”แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ’แžšแŸ€แž”แž’แŸ€แž”แžŸแŸ’แž˜แžปแž‚แŸ’แžšแžŸแŸ’แž˜แžถแž‰แž‚แžบแž˜แžปแž“แž€แžถแžšแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แžœแžถแž›แžแŸ‚แž˜แžฝแž™ rbtree (แž›แžพแž€แž›แŸ‚แž„แžแŸ‚แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแž…แŸ’แžšแž€ + แž–แžทแž’แžธแž€แžถแžš) แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžšแž แžผแžแž˜แž€แžŠแž›แŸ‹แž–แŸแž›แž“แŸแŸ‡แž–แžฝแž€แž‚แŸแž™แžบแžแž™แŸ‰แžถแžœแž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™แžŠแŸ„แž™แž•แŸ’แž‘แžถแž›แŸ‹แžŠแŸ„แž™แž”แŸ’แžšแžพ แž แžถแžŸแŸ‹ แž แžพแž™แž‘แž˜แŸ’แž›แžถแž€แŸ‹แžขแŸ’แž“แž€แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžŠแŸ„แž™แž•แŸ’แžขแŸ‚แž€แž›แžพ netdev แŸ”

แž€แžถแžšแž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แž”แž‰แŸ’แž‡แžธแžŸแŸ’แž˜แžปแž‚แžŸแŸ’แž˜แžถแž‰ NetFilter แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž–แž“แŸ’แž›แžฟแž“แž“แŸ…แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž› Linux 5.7

แž”แŸ’แžšแž—แž–: opennet.ru

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹