Linux ์ปค๋„ 5.7์€ NetFilter์—์„œ ๋ณต์žกํ•œ ๋ชฉ๋ก ์ผ์น˜ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ํŒจํ‚ท์šฉ Netfilter ํ•„ํ„ฐ๋ง ๋ฐ ์ˆ˜์ • ํ•˜์œ„ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์ž ์ถœํŒํ•˜๋‹ค ์„œ๋ธŒ๋„ท, ๋„คํŠธ์›Œํฌ ํฌํŠธ, ํ”„๋กœํ† ์ฝœ ๋ฐ MAC ์ฃผ์†Œ์˜ ์กฐํ•ฉ์„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์ผ์น˜ ๋ชฉ๋ก(nftables ์„ธํŠธ)์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ด๋Š” ํŒจ์น˜ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. ํŒจ์น˜๊ฐ€ ์ด๋ฏธ ๋ธŒ๋žœ์น˜์— ์Šน์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. nf-๋‹ค์Œ, Linux 5.7 ์ปค๋„์— ํฌํ•จ๋˜๋„๋ก ์ œ์•ˆ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” ๊ฐ€์†์€ ๋‹ค์Œ ๋•๋ถ„์— ๋‹ฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งค๋ ฅ์ ์ธ AVX2 ๋ช…๋ น์–ด(ํ–ฅํ›„ ARM์šฉ NEON ๋ช…๋ น์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ์‚ฌํ•œ ์ตœ์ ํ™”๋ฅผ ๊ฒŒ์‹œํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค).

๋ชจ๋“ˆ์— ํฌํ•จ๋œ ์ตœ์ ํ™” nft_set_pipapo (PIle PAcket POlicies)๋Š” ํŒจํ‚ท์˜ ๋‚ด์šฉ์„ IP ๋ฐ ๋„คํŠธ์›Œํฌ ํฌํŠธ ๋ฒ”์œ„์™€ ๊ฐ™์€ ํ•„ํ„ฐ๋ง ๊ทœ์น™์— ์‚ฌ์šฉ๋˜๋Š” ์ž„์˜์˜ ํ•„๋“œ ์ƒํƒœ ๋ฒ”์œ„์™€ ์ผ์น˜์‹œํ‚ค๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค(nft_set_rbtree ๋ฐ nft_set_hash๋Š” ๊ฐ„๊ฒฉ ์ผ์น˜ ๋ฐ ๊ฐ’์˜ ์ง์ ‘ ๋ฐ˜์˜์„ ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค). AMD Epyc 256 ํ”„๋กœ์„ธ์„œ๊ฐ€ ์žฅ์ฐฉ๋œ ์‹œ์Šคํ…œ์—์„œ 2๋น„ํŠธ AVX7402 ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒกํ„ฐํ™”๋œ pipapo ๋ฒ„์ „์€ ํฌํŠธ ํ”„๋กœํ† ์ฝœ ์กฐํ•ฉ์„ ํฌํ•จํ•˜์—ฌ 420๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ๋•Œ 30%์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. 1000๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•  ๋•Œ ์„œ๋ธŒ๋„ท๊ณผ ํฌํŠธ ๋ฒˆํ˜ธ์˜ ์กฐํ•ฉ์„ ๋น„๊ตํ–ˆ์„ ๋•Œ ์ฆ๊ฐ€์œจ์€ IPv87์˜ ๊ฒฝ์šฐ 4%, IPv128์˜ ๊ฒฝ์šฐ 6%์˜€์Šต๋‹ˆ๋‹ค.

Linux ์ปค๋„ 5.7์€ NetFilter์—์„œ ๋ณต์žกํ•œ ๋ชฉ๋ก ์ผ์น˜ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.

8๋น„ํŠธ ๋Œ€์‹  4๋น„ํŠธ ์ผ์น˜ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ตœ์ ํ™”์—์„œ๋„ ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ฆ‰, 66๋งŒ ๊ฐœ์˜ ํฌํŠธ ํ”„๋กœํ† ์ฝœ ํ•ญ๋ชฉ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ๋•Œ 30%, subnet_IPv43-port์˜ ๊ฒฝ์šฐ 4%, subnet_IPv61-port์˜ ๊ฒฝ์šฐ 6%์ž…๋‹ˆ๋‹ค. ์ „์ฒด์ ์œผ๋กœ AVX2 ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ์ด ํ…Œ์ŠคํŠธ์—์„œ pipapo์˜ ์„ฑ๋Šฅ์ด ๊ฐ๊ฐ 766%, 168%, 269% ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋น„๊ต๋ฅผ ์œ„ํ•ด ์–ป์€ ํŠน์„ฑ์€ ๋‹จ์ผ ํ•„๋“œ ๊ฒ€์‚ฌ๋ณด๋‹ค ์•ž์„œ ์žˆ์Šต๋‹ˆ๋‹ค. rbtree (ํฌํŠธ+ํ”„๋กœํ† ์ฝœ ํ…Œ์ŠคํŠธ ์ œ์™ธ) ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•œ ์ง์ ‘ ํ™•์ธ๋ณด๋‹ค ๋’ค์ฒ˜์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ netdev๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋“œ๋กญ ํ•ธ๋“ค๋Ÿฌ.

Linux ์ปค๋„ 5.7์€ NetFilter์—์„œ ๋ณต์žกํ•œ ๋ชฉ๋ก ์ผ์น˜ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€