Aya ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฒซ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ด๋ฅผ ํตํด JIT๋ฅผ ์ฌ์ฉํ๋ ํน์ ๊ฐ์ ๋จธ์ ์ Linux ์ปค๋ ๋ด๋ถ์์ ์คํ๋๋ Rust ์ธ์ด๋ก eBPF ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ค๋ฅธ eBPF ๊ฐ๋ฐ ๋๊ตฌ์ ๋ฌ๋ฆฌ Aya๋ libbpf ๋ฐ bcc ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋์ libc ํฌ๋ ์ดํธ ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ ์์คํ ํธ์ถ์ ์ง์ ์ก์ธ์คํ๋ Rust๋ก ์์ฑ๋ ์์ฒด ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค. Aya๋ฅผ ๋น๋ํ๋ ๋ฐ์๋ C ์ธ์ด ๋๊ตฌ๋ ์ปค๋ ํค๋ ํ์ผ์ด ํ์ํ์ง ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ MIT ๋ฐ Apache 2.0 ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ :
- ํ์ฌ ์ปค๋์์ ์ ๊ณตํ๋ ์ ํ์ ๋ํ ์ ํ ํ์ธ ๋ฐ ๋งคํ์ ์ํด BPF ์์ฌ ์ฝ๋๋ก ์ ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ BTF(BPF ์ ํ ํ์) ์ง์. BTF๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๋ฒ์ ์ Linux ์ปค๋๊ณผ ๋ค์ ์ปดํ์ผํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์๋ ๋ฒ์ฉ eBPF ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- eBPF์ ์์ ์ ๊ณ ๋ คํ์ฌ ํจ์๋ฅผ ์ฌ์ ์ํ๋ ๋ฐํ์์ผ๋ก aya๋ฅผ ์ฌ์ฉํ๋ ์ผ๋ฐ ํ๋ก๊ทธ๋จ๊ณผ ์ ์ฌํ ๋ฐฉ์์ผ๋ก eBPF์ฉ ํ๋ก๊ทธ๋จ์ ์ค๊ณํ ์ ์๋ "bpf-to-bpf" ํธ์ถ, ์ ์ญ ๋ณ์ ๋ฐ ์ด๊ธฐํ ํ๋ก๊ทธ๋จ์ ์ง์ํฉ๋๋ค.
- ์ผ๋ฐ ๋ฐฐ์ด, ํด์ ๋งต, ์คํ, ํ, ์คํ ์ถ์ ์ ๋ฌผ๋ก ์์ผ ๋ฐ ์ฑ๋ฅ ์ถ์ ๊ตฌ์กฐ๋ฅผ ํฌํจํ ๋ค์ํ ์ปค๋ ์ ํ์ ์ง์ํฉ๋๋ค.
- ํธ๋ํฝ ํํฐ๋ง ๋ฐ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ, cgroup ํธ๋ค๋ฌ ๋ฐ ๋ค์ํ ์์ผ ์์ , XDP ํ๋ก๊ทธ๋จ์ ํฌํจํ์ฌ ๋ค์ํ ์ ํ์ eBTF ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๊ธฐ๋ฅ.
- ๋น์ฐจ๋จ ๋ชจ๋ tokio ๋ฐ async-std์์ ๋น๋๊ธฐ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์ํ ํ๋ซํผ์ ์ง์ํฉ๋๋ค.
- ์ปค๋ ์ด์ ๋ธ๋ฆฌ ๋ฐ ์ปค๋ ํค๋ ํ์ผ์ ์ฐ๊ฒฐํ์ง ์๊ณ ๋ ๋น ๋ฅธ ์ด์ ๋ธ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ ์ฌ์ ํ ์คํ์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. API๋ ์์ง ์์ ํ๋์ง ์์์ผ๋ฉฐ ๊ณ์ ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ๋ํ ๊ณํ๋ ๋ชจ๋ ๊ธฐํ๊ฐ ์์ง ์คํ๋์ง ์์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ฐ๋ง๊น์ง Aya์ ๊ธฐ๋ฅ์ libbpf์ ๋๋ฑํ๊ฒ ๋ง๋ค๊ณ 2022๋ XNUMX์์ ์ฒซ ๋ฒ์งธ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ง๋ค ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. ๋ํ Linux ์ปค๋์ฉ Rust ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ํ์ํ Aya์ ์ผ๋ถ๋ฅผ eBPF ํ๋ก๊ทธ๋จ ๋ก๋, ์ฐ๊ฒฐ ๋ฐ ์ํธ ์์ฉ์ ์ฌ์ฉ๋๋ ์ฌ์ฉ์ ๊ณต๊ฐ ๊ตฌ์ฑ ์์์ ๊ฒฐํฉํ ๊ณํ๋ ์์ต๋๋ค.
eBPF๋ Linux ์ปค๋์ ๋ด์ฅ๋ ๋ฐ์ดํธ์ฝ๋ ํด์๊ธฐ๋ก์ ๋คํธ์ํฌ ์์
ํธ๋ค๋ฌ ์์ฑ, ์์คํ
์์
๋ชจ๋ํฐ๋ง, ์์คํ
ํธ์ถ ๊ฐ๋ก์ฑ๊ธฐ, ์ก์ธ์ค ์ ์ด, ํ์ด๋ฐ์ ์ ์งํ๋ฉด์ ์ด๋ฒคํธ ์ฒ๋ฆฌ, ์์
๋น๋ ๋ฐ ์๊ฐ ๊ณ์ฐ, kprobes/uprobes /tracepoints๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ํฉ๋๋ค. JIT ์ปดํ์ผ ์ฌ์ฉ ๋๋ถ์ ๋ฐ์ดํธ์ฝ๋๋ ์ฆ์ ๊ธฐ๊ณ ๋ช
๋ น์ด๋ก ๋ณํ๋๊ณ ๋ค์ดํฐ๋ธ ์ฝ๋ ์ฑ๋ฅ์ผ๋ก ์คํ๋ฉ๋๋ค. XDP๋ DMA ํจํท ๋ฒํผ์ ์ง์ ์ก์ธ์คํ ์ ์๋ ๊ธฐ๋ฅ๊ณผ ํจ๊ป ๋คํธ์ํฌ ๋๋ผ์ด๋ฒ ์์ค์์ BPF ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ณผ๋ํ ๋คํธ์ํฌ ๋ถํ์์ ์์
ํ๊ธฐ ์ํ ๊ณ ์ฑ๋ฅ ํ๋ก์ธ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru