Cloudflare ํ์ฌ
xdpcap ์ ํธ๋ฆฌํฐ๋ tcpdump/libpcap ํํฐ๋ง ํํ์๊ณผ ํธํ๋๋ฉฐ ๋์ผํ ํ๋์จ์ด์์ ํจ์ฌ ๋ ๋ง์ ์์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. Xdpcap์ Linux ์ปค๋ ๋คํธ์ํน ์คํ(tcpdump)์ ์ํด ์ฒ๋ฆฌ๋๊ธฐ ์ ์ ํจํท์ ์ฒ๋ฆฌํ๋ Linux ์ปค๋ XDP ํ์ ์์คํ ์ ์ฌ์ฉํ๋ ํํฐ๋ง, DoS ๋ณดํธ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์์คํ ๊ณผ ๊ฐ์ด ์ผ๋ฐ tcpdump๊ฐ ์ ์ฉ๋์ง ์๋ ํ๊ฒฝ์์ ๋๋ฒ๊น ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. XDP ์ฒ๋ฆฌ๊ธฐ์ ์ํด ์ญ์ ๋ ํจํท์ ํ์๋์ง ์์ต๋๋ค.
eBPF ๋ฐ XDP ํ์ ์์คํ ์ ์ฌ์ฉํ์ฌ ๊ณ ์ฑ๋ฅ์ ๋ฌ์ฑํฉ๋๋ค. eBPF๋ Linux ์ปค๋์ ๋ด์ฅ๋ ๋ฐ์ดํธ์ฝ๋ ์ธํฐํ๋ฆฌํฐ๋ก, ์ด๋ฅผ ํตํด ์์ /๋ฐ์ ํจํท์ ์ ๋ฌ ๋๋ ํ๊ธฐ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๊ณ ์ฑ๋ฅ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. JIT ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ฉด eBPF ๋ฐ์ดํธ์ฝ๋๊ฐ ์ฆ์ ๊ธฐ๊ณ ๋ช ๋ น์ด๋ก ๋ณํ๋๊ณ ๋ค์ดํฐ๋ธ ์ฝ๋ ์ฑ๋ฅ์ผ๋ก ์คํ๋ฉ๋๋ค. XDP(eXpress Data Path) ํ์ ์์คํ ์ ๋คํธ์ํฌ ๋๋ผ์ด๋ฒ ์์ค์์ BPF ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก eBPF๋ฅผ ๋ณด์ํ๋ฉฐ, DMA ํจํท ๋ฒํผ์ ๋ํ ์ง์ ์ก์ธ์ค๋ฅผ ์ง์ํ๊ณ skbuff ๋ฒํผ๊ฐ ๋คํธ์ํฌ ์คํ์ ์ํด ํ ๋น๋๊ธฐ ์ ๋จ๊ณ์์ ์๋ํฉ๋๋ค.
tcpdump์ ๋ง์ฐฌ๊ฐ์ง๋ก xdpcap ์ ํธ๋ฆฌํฐ๋ ๋จผ์ ํ์ค libpcap ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์์ค ํธ๋ํฝ ํํฐ๋ง ๊ท์น์ cBPF(ํด๋์ BPF ํํ)๋ก ๋ณํํ ๋ค์ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ eBPF ๋ฃจํด ํ์์ผ๋ก ๋ณํํฉ๋๋ค.
์ถ์ฒ : opennet.ru