eBPF Documentary

eBPF ๊ณต์‹ ๋ฌธ์„œ

eBPF๋Š” ์šด์˜ ์ฒด์ œ ์ปค๋„๊ณผ ๊ฐ™์€ ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ ์ƒŒ๋“œ๋ฐ•์Šค ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ๊ธฐ์ˆ ์—์„œ ๊ธฐ์›ํ•œ ํ˜์‹ ์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ปค๋„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ปค๋„ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ ๊ธฐ์กด ์ปค๋„์˜ ๊ธฐ๋Šฅ์„ ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ™•์žฅ์‹œํ‚ค๋Š” ๊ฒƒ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ค๋žซ๋™์•ˆ ์šด์˜ ์ฒด์ œ๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์„ ๊ด€์ธกํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„์˜ ํŠน๋ณ„ํ•œ ๊ถŒํ•œ ๋Šฅ๋ ฅ ๋•๋ถ„์— ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ, ๋ณด์•ˆ ๋ฐ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ƒ์ ์ธ ๊ณต๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์—, ์šด์˜ ์ฒด์ œ ์ปค๋„์€ ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๊ธฐ์— ๋น ๋ฅด๊ฒŒ ์ง„ํ™”ํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ์ ์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์šด์˜ ์ฒด์ œ ์ˆ˜์ค€์˜ ๊ธฐ๋Šฅ์€ ์šด์˜ ์ฒด์ œ ์™ธ๋ถ€์—์„œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋”๋””๊ฒŒ ๋ฐœ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์š”

eBPF๋Š” ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ๊ทผ๋ณธ์ ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒŒ๋“œ๋ฐ•์Šค ํ”„๋กœ๊ทธ๋žจ์„ ์šด์˜์ฒด์ œ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด์„œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋“ค์€ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ๋Ÿฐํƒ€์ž„์—์„œ ๊ธฐ์กด์˜ ์šด์˜ ์ฒด์ œ์— ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„, ์šด์˜ ์ฒด์ œ๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๊ฒ€์ฆ ์—”์ง„์˜ ๋„์›€์„ ํ†ตํ•ด์„œ ์ถ”๊ฐ€๋œ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฐจ์„ธ๋Œ€ ๋„คํŠธ์›Œํ‚น, ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๊ทธ๋ฆฌ๊ณ  ๋ณด์•ˆ ๊ธฐ๋Šฅ๋“ค๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํฌํ•จํ•˜๋Š” ์ˆ˜๋งŽ์€ eBPF ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ๋“ค์ด ๋“ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐœํŒ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚  eBPF๋Š” ๊ณ ์„ฑ๋Šฅ ๋„คํŠธ์›Œํ‚น, ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ์—์„œ์˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์ ์€ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๊ฐ€์ง€๋Š” ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ํ™•๋ณด, ๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ถ”์  ์ง€์›, ์„ฑ๋Šฅ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ •๋ณด ์ œ๊ณต, ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ๋ณด์•ˆ ๊ฐ•ํ™” ๋“ฑ์˜ ๋งค์šฐ ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฌดํ•œํ•œ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ eBPF๊ฐ€ ๋งŒ๋“ค์–ด๋‚ด๋Š” ํ˜์‹ ์€ ์•„์ง๋„ ์ดˆ๊ธฐ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

eBPF.io๋Š” ๋ชจ๋“  eBPF์˜ ์ฃผ์ œ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ  ํ˜‘๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. eBPF๋Š” ๊ณต๊ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ์ด๋ฉฐ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ฐธ์—ฌํ•˜๊ณ  ์ •๋ณด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด eBPF์˜ ์ฒซ ์†Œ๊ฐœ ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ  ์‹ถ์œผ์‹œ๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ์ถ”๊ฐ€์ ์ธ ์ž๋ฃŒ๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜, ์ฒ˜์Œ์œผ๋กœ ์ฃผ์š” eBPF ํ”„๋กœ์ ํŠธ์— ์ฒ˜์Œ์œผ๋กœ ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด eBPF.io๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์„ ๋„์™€์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BPF๋Š” ์›๋ž˜ โ€˜Berkeley Packet Filterโ€™๋ฅผ ์˜๋ฏธํ–ˆ์ง€๋งŒ, ์ด์ œ eBPF (extended BPF)๊ฐ€ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ์ด์ƒ์˜ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ์—, ํ•ด๋‹น ์•ฝ์–ด๋Š” ๋”์ด์ƒ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. eBPF๋Š” ์ด์ œ ํŠน์ •ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋…๋ฆฝ์ ์ธ ์šฉ์–ด๋กœ ๊ฐ„์ฃผ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค ์†Œ์Šค ์ฝ”๋“œ์™€, ํŠน์ • ๋„๊ตฌ ๋ฐ ๋ฌธ์„œ์—์„œ๋Š” ์•„์ง๋„ BPF๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์žˆ์œผ๋ฉฐ, BPF ๋ฐ eBPF๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋กœ ๋ฐ”๊ฟ”์„œ ์‚ฌ์šฉํ•ด๋„ ํฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ, ์›๋ž˜์˜ BPF๋Š” eBPF์™€ ๊ตฌ๋ถ„์„ ์œ„ํ•ด์„œ cBPF (classic BPF) ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๊ฟ€๋ฒŒ ๊ทธ๋ฆผ์€ eBPF๋ฅผ ์œ„ํ•œ ๊ณต์‹ ๋กœ๊ณ ์ด๋ฉฐ, Vadim Shchekoldin๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ eBPF Summit์—์„œ ํˆฌํ‘œ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๊ณ , ๊ฟ€๋ฒŒ์˜ ์ด๋ฆ„์„ eBee๋กœ ์ด๋ฆ„ ์ง“๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. (๋กœ๊ณ  ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Linux Foundation ๋ธŒ๋žœ๋“œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”)

๋‹ค์Œ ์žฅ์€ eBPF์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์†Œ๊ฐœ์ž…๋‹ˆ๋‹ค. eBPF์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด, eBPF & XDP ์ฐธ์กฐ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์ด eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ๊ฐœ๋ฐœ์ž์ด๊ฑฐ๋‚˜, eBPF๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด, ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๊ณผ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ณ , ์ปค๋„ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํŠน์ • ํ›… ์ง€์ ์„ ์ง€๋‚˜๊ฐˆ ๋•Œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „์˜ ์ •์˜๋œ ํ›…๋“ค์€ ์‹œ์Šคํ…œ ์ฝœ, ํ•จ์ˆ˜ ์ง„์ž… ๋ฐ ์ข…๋ฃŒ, ์ปค๋„ tracepoint, ๋„คํŠธ์›Œํฌ ์ด๋ฒคํŠธ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์‹œ์Šค์ฝœ ํ›…

ํŠน์ •ํ•œ ๋ชฉ์ ์— ํ•„์š”ํ•œ ์‚ฌ์ „์— ์ •์˜๋œ ํ›…์ด ์—†๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ์ปค๋„ ํ”„๋กœ๋ธŒ(kprobe) ๋˜๋Š” ์œ ์ € ํ”„๋กœ๋ธŒ(uprobe)๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ปค๋„ ๋˜๋Š” ์œ ์ € ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์ž„์˜์˜ ์œ„์น˜์— eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ€์ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ›… ๊ฐœ์š”

๋งŽ์€ ๊ฒฝ์šฐ์—, eBPF๋Š” ์ง์ ‘์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋ณด๋‹ค๋Š”, Cilium, bcc, ๋ฐ bpftrace์™€ ๊ฐ™์ด eBPF์— ๋Œ€ํ•œ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„์ ‘์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋“ค์€ ์‚ฌ์šฉ์ž์˜ ์˜๋„์— ๋”ฐ๋ผ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ์ž๋™์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Clang

๋งŒ์ผ, ๊ณ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ง์ ‘ ์ž‘์„ฑ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค ์ปค๋„์€ eBPF ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํ˜•์‹์œผ๋กœ ๋กœ๋“œ ๋˜๋Š” ๊ฒƒ์„ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก , ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, LLVM๊ฐ™์€ ์ปดํŒŒ์ผ๋Ÿฌ ๋„๊ตฌ๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ, C์™€ ๋น„์Šทํ•œ ์ฝ”๋“œ๋ฅผ eBPF ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ • ํ›…์ด ํ™•์ธ๋˜๋ฉด, eBPF ํ”„๋กœ๊ทธ๋žจ์€ bpf ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด์„œ ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋‚ด๋ถ€๋กœ ๋กœ๋“œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ˆ์ฐจ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ eBPF ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ ํˆด์ฒด์ธ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Go

ํ”„๋กœ๊ทธ๋žจ์ด ๋ฆฌ๋ˆ…์Šค ์ปค๋„์— ๋กœ๋“œ ๋˜๋ฉด, ์‹ค์ œ๋กœ ์š”์ฒญ๋œ ํ›…์— ์—ฐ๊ฒฐ๋˜๊ธฐ ์ „ ๋‘ ๊ฐ€์ง€์˜ ์ ˆ์ฐจ๋ฅผ ์‚ฌ์ „์— ์ง„ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋‹จ๊ณ„๋Š” eBPF ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๊ธฐ์— ์•ˆ์ „ํ•œ์ง€๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” eBPF ํ”„๋กœ๊ทธ๋žจ์ด ์—ฌ๋Ÿฌ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š”์ง€๋ฅผ ๊ฒ€์ฆํ•˜๋Š”๋ฐ, ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

๋กœ๋”
  • eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠน๊ถŒ์ด ํ•„์š”์—†๋Š” eBPF๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ, ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋“ค๋งŒ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • eBPF ํ”„๋กœ๊ทธ๋žจ์€ ํฌ๋ž˜์‹œ๊ฐ€ ๋‚˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์— ์•…์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • eBPF ํ”„๋กœ๊ทธ๋žจ์€ ํ•ญ์ƒ ์ข…๋ฃŒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์ด ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋Œ๊ฑฐ๋‚˜, ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)

Just-in-Time (JIT) ์ปดํŒŒ์ผ ๋‹จ๊ณ„๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ตœ์ ํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ฐ˜ํ™”๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ํŠน์ • ๋จธ์‹ ์—์„œ ๋™์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด ์ง‘ํ•ฉ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฌ์ „์— ์ปดํŒŒ์ผ ๋œ ์ปค๋„ ์ฝ”๋“œ ๋˜๋Š” ๋กœ๋“œ ๋œ ์ปค๋„ ๋ชจ๋“ˆ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

eBPF ํ”„๋กœ๊ทธ๋žจ์˜ ์ค‘์š”ํ•œ ์ธก๋ฉด ์ค‘ ํ•˜๋‚˜๋Š” ์ˆ˜์ง‘๋œ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ๋Šฅ๋ ฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ, eBPF ํ”„๋กœ๊ทธ๋žจ์€ eBPF ๋งต์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•ด์„œ ์ˆ˜ ๋งŽ์€ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ์ฐพ์•„์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. eBPF ๋งต์€ eBPF ํ”„๋กœ๊ทธ๋žจ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ € ๊ณต๊ฐ„์—์„œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งต ๊ตฌ์กฐ

๋‹ค์Œ์€ ๋‹ค์–‘ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•˜๋Š” eBPF ๋งต ์œ ํ˜•์˜ ์ผ๋ถ€ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ถ”๊ฐ€์ ์œผ๋กœ ํ•˜๋‚˜์˜ CPU ์ฝ”์–ด ๋˜๋Š” ๋ชจ๋“  CPU ์ฝ”์–ด๋ฅผ ๊ฑธ์ณ์„œ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค์–‘ํ•œ ๋งต์˜ ์ข…๋ฅ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•ด์‹œ ํ…Œ์ด๋ธ”, ๋ฐฐ์—ด
  • LRU (Least Recently Used)
  • ๋ง ๋ฒ„ํผ
  • ์Šคํƒ ์ถ”์ 
  • LPM (Longest Prefix Match)
  • ...

eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ž„์˜์˜ ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ ์ด๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค๋ฉด, eBPF ํ”„๋กœ๊ทธ๋žจ์€ ํŠน์ • ์ปค๋„ ๋ฒ„์ „์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋  ๊ฒƒ์ด๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์‹ , eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ปค๋„์— ์˜ํ•ด ์ œ๊ณต๋˜๋Š” ์ž˜ ์•Œ๋ ค์ง€๊ณ  ์•ˆ์ •์ ์ธ API ์ธ ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—ฌํผ ํ•จ์ˆ˜

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ—ฌํผ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ์ง€์†์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ—ฌํผ ํ•จ์ˆ˜์˜ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑํ•˜๊ธฐ
  • ํ˜„์žฌ ์‹œ๊ฐ„ ๋ฐ ๋‚ ์งœ ๊ฐ€์ ธ์˜ค๊ธฐ
  • eBPF ๋งต ์ ‘๊ทผํ•˜๊ธฐ
  • ํ”„๋กœ์„ธ์Šค/cgroup ์ปจํ…์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ
  • ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ฐ ์ „๋‹ฌ ๋กœ์ง ์กฐ์ž‘ํ•˜๊ธฐ

eBPF ํ”„๋กœ๊ทธ๋žจ์€ ๊ผฌ๋ฆฌ ์žฌ๊ท€(tail call)์˜ ๊ฐœ๋…๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ eBPF ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ํ˜ธ์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ผฌ๋ฆฌ ์žฌ๊ท€ ํ˜ธ์ถœ์€ ๋‹ค๋ฅธ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ํ˜„์žฌ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ execve() ์‹œ์Šคํ…œ ์ฝœ์ด ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค์—์„œ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ผฌ๋ฆฌ ์žฌ๊ท€

ํฐ ํž˜์—๋Š” ๋ฐ˜๋“œ์‹œ ํฐ ์ฑ…์ž„์ด ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

eBPF๋Š” ๊ต‰์žฅํžˆ ๊ฐ•๋ ฅํ•œ ๊ธฐ์ˆ ์ด๋ฉฐ, ํ˜„์žฌ ๋งŽ์€ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ”„๋ผ ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ•ต์‹ฌ์—์„œ ๋™์ž‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. eBPF๋Š” ๋ฆฌ๋ˆ…์Šค ์ปค๋„์— ํฌํ•จ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์—ฌ๊ฒจ์ง€๊ธฐ ๋•Œ๋ฌธ์—, eBPF ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์•ˆ์ „์€ ์ตœ์šฐ์„ ์œผ๋กœ ๊ณ ๋ ค๋˜๋Š” ํ•ญ๋ชฉ์ด์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋งŒ์กฑํ•˜๊ณ ์ž, eBPF ์•ˆ์ „์€ ์—ฌ๋Ÿฌ ๊ณ„์ธต์„ ํ†ตํ•ด์„œ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.

ํŠน๋ณ„ํ•œ ๊ถŒํ•œ ์š”๊ตฌ

eBPF๋ฅผ ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์ด ์—†์–ด๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ, ๋ฆฌ๋ˆ…์Šค ์ปค๋„์— eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•˜๋ ค๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ๋ชจ๋“œ(root)์—์„œ ์‹คํ–‰๋˜๊ฑฐ๋‚˜, CAP_BPF ๊ถŒํ•œ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ, ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ๊ทธ๋žจ์ด eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์ผ ํŠน๋ณ„ํ•œ ๊ถŒํ•œ ์—†์ด๋„ eBPF๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ–ˆ๋‹ค๋ฉด, ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์ด ์—†๋Š” ํ”„๋กœ์„ธ์Šค๋„ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์ด๋Š” ์ปค๋„์˜ ์ œํ•œ์ ์ธ ๊ธฐ๋Šฅ๊ณผ ์ œํ•œ์ ์ธ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋„๊ตฌ

๋งŒ์ผ ์–ด๋– ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด๋„, ๋ชจ๋“  eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์—ฌ์ „ํžˆ eBPF ๊ฒ€์ฆ ๋„๊ตฌ๋ฅผ ๊ฑฐ์ณ๊ฐ€์•ผํ•ฉ๋‹ˆ๋‹ค. eBPF ๊ฒ€์ฆ ๋„๊ตฌ๋Š” ๊ทธ ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • eBPF ํ”„๋กœ๊ทธ๋žจ์€ ํ•ญ์ƒ ์ •์ƒ ์ข…๋ฃŒ๋˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ฒ€์ฆ๋ฉ๋‹ˆ๋‹ค, ์˜ˆ๋ฅผ ๋“ค์–ด eBPF ํ”„๋กœ๊ทธ๋žจ์ด ๋ฃจํ”„๋ฅผ ๋ฐฉํ•ดํ•˜๊ฑฐ๋‚˜(block) ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ ธ์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ผ๋ช… โ€˜์ œํ•œ๋œ ๋ฃจํ”„โ€™๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ์ด๋Š” ๊ฒ€์ฆ ๋„๊ตฌ๊ฐ€ ํ•ด๋‹น ๋ฃจํ”„๊ฐ€ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๊ฐ€์ง€๊ฑฐ๋‚˜, ์ฐธ์ด ๋˜๋Š” ๊ฒƒ์ด ๋ณด์žฅ ๋˜์—ˆ์„ ๋•Œ๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ฒ—์–ด๋‚œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.
  • eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์‹œ์Šคํ…œ์—์„œ ์š”๊ตฌ๋˜๋Š” ํฌ๊ธฐ๋ฅผ ๋งŒ์กฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ž„์˜๋กœ ํฐ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์œ ํ•œํ•œ ๋ณต์žก์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ฆ ๋„๊ตฌ๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ํŒŒ์•…ํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์ •๋œ ์ตœ๋Œ€ ๋ณต์žก์„ฑ์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š”์ง€์— ๋Œ€ํ•ด ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋„๊ตฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ์— ์•ˆ์ „ํ•œ์ง€์— ๋Œ€ํ•ด ํ™•์ธํ•˜๋Š” ๋„๊ตฌ๋กœ, ํ•ด๋‹น eBPF ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋– ํ•œ ํ–‰์œ„๋ฅผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ฒ€์‚ฌํ•˜๋Š” ๋„๊ตฌ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๊ฒฝํ™”

๊ฒ€์ฆ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์ณ์ง€๋ฉด, eBPF ํ”„๋กœ๊ทธ๋žจ์€ ๊ฒฝํ™”(hardening) ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น eBPF ํ”„๋กœ๊ทธ๋žจ์ด ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค์—์„œ ๋กœ๋“œ ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ์˜ ์ ˆ์ฐจ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋ณดํ˜ธ: eBPF ํ”„๋กœ๊ทธ๋žจ์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์ปค๋„ ๋‚ด๋ถ€์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ณดํ˜ธ๋˜๋ฉฐ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ปค๋„ ๋ฒ„๊ทธ ๋ฐ ์•…์˜์ ์ธ ์กฐ์ž‘๊ณผ ๊ฐ™์€ ์–ด๋– ํ•œ ์ด์œ ์—์„œ๋ผ๋„, eBPF ํ”„๋กœ๊ทธ๋žจ์ด ๋ณ€์กฐ๋˜๋Š” ์‹œ๋„๋ฅผ ๋ฐ›๋Š”๋‹ค๋ฉด, ์ปค๋„์€ ์†์ƒ/๋ณ€์กฐ๋œ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ํฌ๋ž˜์‹œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • Spectre ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๋Œ€์ฒ˜: ์ถ”์ธก๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„์—์„œ CPU๋Š” ๋ถ„๊ธฐ๋ฅผ ์ž˜๋ชป ์˜ˆ์ธกํ•˜์—ฌ ์‚ฌ์ด๋“œ ์ฑ„๋„ ๊ณต๊ฒฉ์„ ํ†ตํ•˜์—ฌ ๊ด€์ธก ๊ฐ€๋Šฅํ•œ ๋ถ€์ž‘์šฉ(side effect)๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋กœ๋Š”, eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ผ์‹œ์ ์ธ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•˜์—ฌ ์ œ์–ด๋œ ์˜์—ญ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ฉ”๋ชจ๋ฆฌ ๋งˆ์Šคํ‚น์„ ํ†ตํ•˜์—ฌ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฒ€์ฆ ๋„๊ตฌ๋Š” ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์‹คํ–‰ ๊ฒฝ๋กœ๋“ค์„ ์ถ”์ ํ•˜๊ณ , JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ผฌ๋ฆฌ ์žฌ๊ท€๊ฐ€ ์ง์ ‘์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์„ ์‹œ Retpoline์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์ˆ˜ ๊ฐ€๋ฆฌ๊ธฐ: ์ฝ”๋“œ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์ƒ์ˆ˜๋Š” JIT ์Šคํ”„๋ ˆ์ด ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ€๋ ค์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์ปค๋„ ๋ฒ„๊ทธ๋ฅผ ์•…์šฉํ•˜์—ฌ eBPF ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์นจ์ž…ํ•˜์—ฌ ์ƒ์ˆ˜๋กœ ์œ„์žฅํ•œ ์ฑ„๋กœ ์นจํˆฌํ•œ ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ถ”์ƒํ™”๋œ ๋Ÿฐํƒ€์ž„ ์ปจํ…์ŠคํŠธ

eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ž„์˜์˜ ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. eBPF ํ”„๋กœ๊ทธ๋žจ์˜ ์ปจํ…์ŠคํŠธ ๋ฐ–์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” eBPF ํ—ฌํผ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•ด์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ ‘๊ทผ๊ณผ ํ•ด๋‹น eBPF ํ”„๋กœ๊ทธ๋žจ์ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งŒ์ผ ํŠน์ • ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๋ณด์žฅ ๋˜์—ˆ์„ ๋•Œ๋งŒ eBPF ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์•„๋ฌด eBPF ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์ปค๋„ ๋‚ด๋ถ€์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ž„์˜๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์œ ์‚ฌํ•œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ์‚ดํŽด๋ด…์‹œ๋‹ค. GeoCities๋ฅผ ๊ธฐ์–ตํ•˜์‹œ๋‚˜์š”? 20๋…„ ์ „, ์›น์‚ฌ์ดํŠธ๋Š” ๊ฑฐ์˜ ์ •์  ๋งˆํฌ์—… ์–ธ์–ด(HTML)๋กœ ์ž‘์„ฑ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์›น ํŽ˜์ด์ง€๋Š” ์–ด๋–ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(๋ธŒ๋ผ์šฐ์ €)๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์„œ์˜€์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚ ์˜ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด๋ฉด, ์›น ํŽ˜์ด์ง€๋Š” ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋˜์—ˆ์œผ๋ฉฐ, ๊ธฐ์กด์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ปดํŒŒ์ผ์ด ๋˜์—ˆ๋˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋Œ€๋ถ€๋ถ„์„ ๋Œ€์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ง„ํ™”๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋˜ ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ์š”?

๊ทธ๋ฆผ

๊ฐ„๋‹จํ•œ ๋Œ€๋‹ต์€, JavaScript์˜ ๋„์ž…์œผ๋กœ ์ƒ๊ฒจ๋‚œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅ์„ฑ ๋•๋ถ„์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‚ฌ์‹ค์ƒ ํ•˜๋‚˜์˜ ๋…๋ฆฝ์ ์ธ ์šด์˜์ฒด์ œ ๋งŒํผ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์—„์ฒญ๋‚œ ํ˜๋ช…์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ˜๋ช…์ด ์ผ์–ด๋‚œ ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ์š”? ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋”์ด์ƒ ํŠน์ • ๋ธŒ๋ผ์šฐ์ € ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ œํ•œ๋˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด HTML ํƒœ๊ทธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํ‘œ์ค€ ๊ธฐ๊ด€๋“ค์„ ์„ค๋“ํ•˜๋Š” ๋Œ€์‹ ์—, ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•„์ˆ˜์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋˜์–ด์„œ ํ˜์‹ ์˜ ์†๋„๊ฐ€ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก , HTML์ด ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉฐ ๋ฐœ์ „ํ•˜๊ณ , ์ด๋Ÿฌํ•œ ํ˜์‹ ์—์„œ HTML์ด ๊ธฐ์—ฌํ•œ ๋ถ€๋ถ„๋„ ์žˆ๊ธด ํ•˜์ง€๋งŒ, HTML๋งŒ ์‚ฌ์šฉํ•˜์˜€๋‹ค๋ฉด ์ด๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ eBPF์— ์ ์šฉํ•˜๊ธฐ ์ „์—, JavaScript๊ฐ€ ๋„์ž…๋˜๋ฉฐ ์ƒ๊ฒจ๋‚œ ๋ช‡๊ฐœ์˜ ์ฃผ์š”ํ•œ ์ธก๋ฉด์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

  • ์•ˆ์ „์„ฑ: ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” JavaScript ํ”„๋กœ๊ทธ๋žจ์„ ์ƒŒ๋“œ๋ฐ•์Šคํ™” ํ•˜๊ณ  ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ € ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€์†์  ๋ฐฐํฌ: ๋ธŒ๋ผ์šฐ์ €์˜ ๋ฒ„์ „์„ ์ƒˆ๋กœ ๋ฐฐํฌํ•˜์ง€ ์•Š์•„๋„ ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง์ด ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ž„์˜์˜ ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ์ ๋‹นํ•œ ์ˆ˜์ € ์ €์ˆ˜์ค€์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์„ฑ๋Šฅ: ์ตœ์†Œํ•œ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ํ”„๋กœ๊ทธ๋ฐ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Just-in-Time(JIT) ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋„์ž…์œผ๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด, ์ •ํ™•ํžˆ ๋˜‘๊ฐ™์ด ์ƒ์‘ํ•˜๋Š” ๋‚ด์šฉ์ด eBPF์—๋„ ๊ฐ™์€ ์ด์œ ๋ฅผ ๊ฐ€์ง€๊ณ  ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

eBPF๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๋ด…์‹œ๋‹ค. eBPF๊ฐ€ ๋ฆฌ๋ˆ…์Šค ์ปค๋„์— ๋ฏธ์น˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅ์„ฑ์˜ ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ๊ณ ์ˆ˜์ค€ ์•„ํ‚คํ…์ณ์™€ ์ปค๋„์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด์—์„œ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ปค๋„ ๊ตฌ์กฐ

๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ์ฃผ์š” ๋ชฉ์ ์€ ํ•˜๋“œ์›จ์–ด ๋˜๋Š” ๊ฐ€์ƒ ํ•˜๋“œ์›จ์–ด์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๋Š” API (์‹œ์Šคํ…œ ์ฝœ)๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์ด ์‹คํ–‰๋˜๋ฉฐ ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์ปค๋„์˜ ์—ฌ๋Ÿฌ ์„œ๋ธŒ ์‹œ์Šคํ…œ๊ณผ ๊ณ„์ธต์€ ์ด๋Ÿฌํ•œ ์ปค๋„์˜ ์ฑ…์ž„์„ ๋ถ„์‚ฐํ•˜๋„๋ก ์œ ์ง€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„œ๋ธŒ ์‹œ์Šคํ…œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ๋‹ค์–‘ํ•œ ์š”๊ตฌ๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ด๋А์ •๋„ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ ์›ํ•˜๋Š” ๋™์ž‘์ด ์„ค์ •๋งŒ์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ, ์ปค๋„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ „ํ†ต์ ์œผ๋กœ ํƒํ•ด์ง€๋Š” ๋ฐฉ๋ฒ•์ด์˜€์œผ๋ฉฐ, ์ด๋Š” ์ฃผ๋กœ 2๊ฐ€์ง€์˜ ์˜ต์…˜์œผ๋กœ ์ด๋ค„์ง‘๋‹ˆ๋‹ค:

๋„ค์ดํ‹ฐ๋ธŒํ•œ ์ง€์›

  1. ์ปค๋„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํ•ด๋‹น ๋ณ€๊ฒฝ์ ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์„ค๋“ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ช‡ ๋…„๊ฐ„ ๊ธฐ๋‹ค๋ ค์„œ ์ƒˆ๋กœ์šด ์ปค๋„ ๋ฒ„์ „์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

์ปค๋„ ๋ชจ๋“ˆ

  1. ์ปค๋„ ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งค ์ปค๋„์˜ ๋ฆด๋ฆฌ์ฆˆ๊ฐ€ ์ปค๋„ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ง€์†์ ์œผ๋กœ ์ปค๋„ ๋ชจ๋“ˆ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ณด์•ˆ ๊ฒฝ๊ณ„์„ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ฆฌ๋ˆ…์Šค ์ปค๋„์„ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ฐ์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

eBPF๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ปค๋„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ปค๋„ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜์ง€ ์•Š์•„๋„, ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ํŠน์ • ํ–‰๋™์„ ์žฌํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์˜ต์…˜์ด ์ƒ๊น๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ธก๋ฉด์—์„œ, ์ด๋Š” JavaScript ๋ฐ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋“ค์ด ๊ธฐ์กด์— ๋ณ€๊ฒฝ์ด ์–ด๋ ต๊ฑฐ๋‚˜ ๋งŽ์€ ๋น„์šฉ์ด ๋ฐœ์ƒํ–ˆ๋˜ ์‹œ์Šคํ…œ์˜ ํ˜์‹ ์„ ์‹œ์ž‘ํ–ˆ๋˜ ๊ฒƒ๊ณผ ๋งค์šฐ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

eBPF์˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ ๋„๊ตฌ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋“ค์€ ๋ชจ๋‘ ์‚ฌ์šฉ์ž๋“ค์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์š”๊ตฌ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค:

bcc

BCC๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์—๋‹ค๊ฐ€ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ํฌํ•จํ•˜์—ฌ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ฃผ๋กœ eBPF ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ฑฐ๋‚˜, ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์œ ์ € ๊ณต๊ฐ„์—์„œ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์‹œ์Šคํ…œ ํ”„๋กœํŒŒ์ผ๋ง/์ถ”์  ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž‘์„ฑ๋œ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์€ eBPF ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ปค๋„์— ์ž๋™์œผ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

bcc

bpftrace

bpftrace๋Š” ๋ฆฌ๋ˆ…์Šค eBPF๋ฅผ ์œ„ํ•œ ๊ณ ์ˆ˜์ค€์˜ ์ถ”์  ์–ธ์–ด์ด๋ฉฐ ์ƒ๋Œ€์ ์œผ๋กœ ์ตœ๊ทผ์˜ ๋ฆฌ๋ˆ…์Šค ์ปค๋„(4.x) ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. bpftrace๋Š” LLVM์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ eBPF ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๊ณ , BCC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ๋ˆ…์Šค eBPF ์„œ๋ธŒ ์‹œ์Šคํ…œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ kprobe, uprobe, tracepoint์™€ ๊ฐ™์€ ๊ธฐ์กด์˜ ์ปค๋„ ์ถ”์  ๊ธฐ๋Šฅ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. bpftrace ์–ธ์–ด๋Š” awk์™€ C์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ๊ณผ DTrace ๋ฐ SystemTap๊ณผ ๊ฐ™์€ ๊ธฐ์กด์˜ ์ถ”์  ๋„๊ตฌ์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

bpftrace

eBPF Go ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

eBPF Go ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” eBPF ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  eBPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋ชจ๋“ˆํ™”ํ•œ ๋ฒ”์šฉ eBPF ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ์ˆ˜์ค€์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ํ†ตํ•˜์—ฌ ์ž‘์„ฑ๋˜๊ณ , clang/LLVM ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ eBPF ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.

Go

libbpf C/C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

libbpf ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” C/C++์—์„œ ๋™์ž‘ํ•˜๋Š” ๋ฒ”์šฉ eBPF ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, clang/LLVM ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ƒ์„ฑ๋œ eBPF ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์„ ์ปค๋„๋กœ ๋กœ๋“œํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋„๋ก BPF ์‹œ์Šคํ…œ ์ฝœ์„ ์ถ”์ƒํ™” ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

Libbpf

eBPF์— ๋Œ€ํ•ด์„œ ๋” ๋งŽ์ด ์•Œ์•„๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ์˜ ์ถ”๊ฐ€ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”:

Generic

Deep Dives

Cilium

Hubble