[2026-07-18] NetEdit An Orchestration Platform for eBPF Network Functions at Scale
Motivation
๊ธฐ์กด์ ํ๊ณ
๊ธฐ์กด ์ด์์ฒด์ ์ ํธ์คํธ ๋คํธ์ํฌ ์คํ์ ๊ตฌ์กฐ๊ฐ ๊ณ ์ . ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํด ๋คํธ์ํน ์คํ ๋ฐ ํ๋กํ ์ฝ ์ค์ ์ ์ค์๊ฐ์ผ๋ก Fine-tuningํ๊ธฐ ์ด๋ ค์
- Fine-tuning : ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์
์ ํธ๋ํฝ ํจํด, Latency ์๊ตฌ ์ฌํญ ๋ฐ ๊ธฐ์ ํ๋์จ์ด ํน์ฑ์ ๋ง๊ฒ ๋คํธ์ํฌ ๋งค๊ฐ ๋ณ์(์ด๊ธฐ cwnd, rwnd, timeout ๋ฑ)์ ์ฌ๊ตฌ์ฑํ์ฌ ๋ฐ์ดํฐ ์ ์ก ํจ์จ์ ๊ทน๋ํํ๋ ๊ณผ์
- ํ์์ฑ : ๋๊ท๋ชจ ํ๊ฒฝ์์๋ ์๋ฐฑ๋ง ๊ฐ์ ์ปจํ ์ด๋์ ์๋ง ๊ฐ์ ์๋น์ค, ๊ฐ ์๋น์ค์ ํน์ฑ๊ณผ ํ๋์จ์ด ๊ท๊ฒฉ ๋ฑ์ด ์ด์ง์ ์ด๋ผ ๋ฒ์ฉ ์ค์ ์ด ์๋ ๊ฐ ํน์ฑ์ ๋ง๊ฒ fine-tuning์ ํด์ผ ํจ
- eBPF
- ๋์ ๋ฐฐ๊ฒฝ : ์ด์์ฒด์ ์ปค๋ ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ๋์ ์ผ๋ก ์ฃผ์ . ์ธํ๋ผ ์๋๋ ์ปค๋ ์ ๊ทธ๋ ์ด๋ ๋ฅ๋ ฅ์ ์ ํด ํ์ง ์์ผ๋ฉด์๋ ๊ธฐ๋ฅ์ ๋์ ํ์ฌ ์ ์ฐ์ฑ๊ณผ ์ธ๋ฐํ ์ ์ด ๊ธฐ๋ฅ ์ ๊ณต
- eBPF์ ํ๊ณ : eBPF๋ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ฐ์ ์์
์ ํ์ฉ๋์ด ๋ค์๊ณผ ๊ฐ์ ํ๊ณ ๋ฐ์
- ๋จ์ผ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฃผ๋ก ์ฌ์ฉ๋์ด ์๋ง์ ์๋น์ค์ ํ๋์จ์ด์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ง์ถ์ด ์์์ eBPF ์ฝ๋๋ฅผ ์ ์ฐํ๊ฒ ๊ต์ฒดํ๊ณ ๊ด๋ฆฌํ๋ ํ์ดํ๋ผ์ธ์ด ์์
- ๋ค์ ์๋น์ค๊ฐ ๊ณต์กดํ๋ ๊ณ ๋์ ๋์ ํ๊ฒฝ์์ ํ์์ ์ผ๋ก ์๊ตฌ๋๋ ๊ณ ๊ฐ์ฉ์ฑ ๋ณด์ฅ(High availability guarantees)๊ณผ ์๊ฒฉํ ํ
์คํธ ๊ธฐ๋ฅ(Rigorous testing capabilities)์ ์ง์ํ๋ ๊ธฐ๋ณธ ์์๊ฐ ๊ฒฐ์ฌ
- ๊ณ ๊ฐ์ฉ์ฑ : ์์คํ ์ ๊ด๋ฆฌ ๋ฐ ์ ์ด ํ๋ก์ธ์ค์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ํด ์ฌ์์๋๋๋ผ๋, ์ค์ ํจํท์ ์ฒ๋ฆฌํ๋ ์ปค๋ ๋ฐ์ดํฐ ํ๋ฉด์ ์ค๋จ ์์ด ๋คํธ์ํฌ ์ ์ฑ (ํ๋ ์ค์ )์ ์ง์ ์งํํ ์ ์๋ ์์คํ ์ ๋ณต์๋ ฅ. ๊ธฐ์กด ์์คํ ์์ eBPF ํ๋ก๊ทธ๋จ์ ์๋ช ์ฃผ๊ธฐ๋ ์ฌ์ฉ์ ๊ณต๊ฐ(User-space)์ ๊ด๋ฆฌ ํ๋ก์ธ์ค์ ์์กดํ์ฌ ๊ด๋ฆฌ ํ๋ก์ธ์ค๊ฐ ์ผ์์ ์ผ๋ก ์ข ๋ฃ๋๋ฉด, ์ปค๋์ด ์ฐ๊ฒฐ๋ eBPF ๊ฐ์ฒด์ ์ค์ ์ํ๋ฅผ ์์๋ก ์ด๊ธฐํ ๋ฐ ์ ๊ฑฐํด๋ฒ๋ ค ์ง์์ ์ธ ์ ์ฑ ์ ์ฉ์ด ๋ถ๊ฐ๋ฅ
- ์๊ฒฉํ ํ
์คํธ ๊ธฐ๋ฅ : BPF์ ๊ธฐ๋ณธ ๋ด์ฅ ๊ฒ์ฆ๊ธฐ(Verifier)๋ ์ฝ๋๊ฐ ์ปค๋์ ๋ค์ด์ํค์ง ์๋๋ค๋ ์ต์ํ์ ์์ ์ฑ(๋ฃจํ, ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ ์ ํ)๋ง ๊ฒ์ฌํ ๋ฟ, ๋ค์ค ํ๋ก๊ทธ๋จ์ด ์ฝํ ๋์ ํ๊ฒฝ์์ ๋ฐ์ํ๋ ๋
ผ๋ฆฌ์ ์ถฉ๋์ด๋ ๊ต์ฐจ ๊ธฐ๋ฅ ๊ฐ์ญ(Cross-Feature Interactions)์ ๊ฒ์ฆํ ์ฒด๊ณ๊ฐ ์ง์ ์ํจ
- ๊ต์ฐจ ๊ธฐ๋ฅ ๊ฐ์ญ : ๋ค์ค ์๋น์ค ํ๊ฒฝ์์๋ ๋์ผํ ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋ฐ ํจํท ์ํ์ ๋ํด ๋ชฉ์ ์ด ๋ค๋ฅธ ์ฌ๋ฌ ๋คํธ์ํฌ ํ๋ก๊ทธ๋จ(์: ๋ฐฉํ๋ฒฝ, ๋์ญํญ ์ ํ, ํผ์ก ์ ์ด)์ด ๋์์ ๋ถ์ฐฉ๋์ด ์คํ. ์คํ ์ฐ์ ์์ ์ถฉ๋, ์ ์ด ๋ก์ง ๋ฎ์ด์ฐ๊ธฐ, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ(Shared Map) ์ค์ผ ๋ฑ์ ์๊ธฐ์น ์์ ๋ถ์์ฉ์ด ๋ฐ์
- ๋ค์ค ์๋น์ค ํ๊ฒฝ์์ ์ด๋ฌํ ๊ฒฐํจ์ ํน์ ์ปจํ ์ด๋๋ฅผ ๋์ด ํธ์คํธ ๋ ธ๋ ์ ์ฒด์ ์ปค๋ ํจ๋์ด๋ ๋ง๋น๋ฅผ ์ ๋ฐ
โ ์๋น์ค์ ํ๋์จ์ด ํ๊ฒฝ ๋ณํ์ ๋ง์ถฐ ์์์ eBPF ํ๋ก๊ทธ๋จ์ ๊ณ ์(High velocity)์ผ๋ก ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌํ๊ณ , ๋๊ท๋ชจ ์๋ฒ ๊ตฐ์ ๊ฑธ์ณ ๋ค์ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑ๊ณผ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ค์์์ ์์ ํ๊ฒ ์กฐ์จ(Orchestration)ํ ์ ์๋ ํตํฉ ์์คํ ์ธ NetEdit์ ๊ฐ๋ฐ์ด ์๊ตฌ
Challenge
- C1 (๋ค์ํ๊ณ ๋ณํํ๋ ์ปค๋ ํ ํฌ์ธํธ) : ๋ค์ํ ์ปค๋ ๋ฆด๋ฆฌ์ค์ ๊ฑธ์ณ ๋ ธ์ถ๋๋ eBPF ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์งํํจ. ๋ค์์ ์ปค๋ ํ๊ฒฝ์์ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌํ๊ณ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๋ณต์ก์ฑ์ผ๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปค๋ ํ ํฌ์ธํธ๋ก๋ถํฐ ๋ถ๋ฆฌํ๊ฒ ๋จ. ๋ชจ๋ eBPF ํ๋ก๊ทธ๋จ ๋ฐ ์ปค๋ ๋ฒ์ ์ ๊ฑธ์ณ ํต์ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํจ
- C2 (์ ๊ทธ๋ ์ด๋ ์ค ์ค๋จ) : ์ ๊ทธ๋ ์ด๋ ์ค ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ eBPF ํ๋ก๊ทธ๋จ์ ๊ณ์ ์๋ํด์ผ ํจ.
- C3 (๋ณต์กํ๊ณ ์ ์์ ์ธ ๊ตฌ์ฑ): eBPF ํ๋ก๊ทธ๋จ์ ์๋น์ค ์๊ตฌ ์ฌํญ๊ณผ ๋คํธ์ํฌ ์ํ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ ์ฉ๋ ์ ์์ผ๋ฉฐ, ์ด ๋์ ๋ชจ๋ ๋น ๋ฅด๊ฒ ๋ณํ์ ์ ์
- C4 (๋์ ์๋น์ค ๋ฐฐ์น): eBPF ํ๋ก๊ทธ๋จ์ ํน์ ์ธํ๋ผ์ ๋ง์ถฐ์ง ์ ์์ผ๋ฉฐ, ์ด๋ eBPF ๊ธฐ๋ฅ์ ์ธํ๋ผ ํน์ฑ(์: ํ๋์จ์ด)๊ณผ ๊ฒฐํฉ์ํด. ๊ทธ๋ฌ๋ ์๋น์ค ๋ฐฐ์น๋ ๋์ ์ด๋ฉฐ eBPF ํ๋ก๊ทธ๋จ ํธํ์ฑ๊ณผ๋ ๋ฌด๊ดํจ.
- C5 (์๊ด๋ ์ปค๋ ๋ฒ๊ทธ): eBPF ํ๋ก๊ทธ๋จ ์์ฒด๋ ๊ฒ์ฆ๋ ์ ์์ง๋ง, ํน์ ์ปค๋-eBPF ์ํธ์์ฉ์์ ์๋ ค์ง์ง ์์ ์ฌ๋ฌ ๋ฒ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋จ. ์์ ์ฑ์ ํฅ์ํ๊ธฐ ์ํด eBPF ํ๋ก๊ทธ๋จ์ ๊ฒฉ๋ฆฌํ์ฌ eBPF-์ปค๋ ์ธํฐํ์ด์ค๋ฅผ ์๊ฒฉํ๊ฒ ๊ฒ์ฆํ๋ ํ ์คํธ ํ๋ ์์ํฌ๋ฅผ ๊ตฌ์ถํจ
Background
eBPF
ํน์ Hook-point์ ๋๋ฌํ์ ๋ ์คํ๋๋๋ก ๋ณด์ฅ๋๋ stateless ์ฝ๋ ์กฐ๊ฐ. ์ ํ๋ ์ฝ๋ ํฌ๊ธฐ์ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ ์ปค๋์ด ๋ก๋ฉ ์ ์ฝ๋์ ์ ํจ์ฑ์ ๊ฒ์ฆํ๊ณ ํ์ธํ๋ ๊ธฐ์
- eBPF maps : ์ธ๋ถ ๋ฐ์ดํฐ ๊ตฌ์กฐ. ํ๋ก๊ทธ๋จ ์คํ ๊ฐ ์ํ ์ ์ง ๋๋ ํ๋ก๊ทธ๋จ ๊ฐ ์ํ ๊ณต์ ์ ๋ชฉ์ . User-space์์๋ ์์คํ ์ฝ๋ก ์ ๊ทผ ๊ฐ๋ฅ
- ์ฑํ ์ด์
- ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋ ์์ ์ด ํ์ํ์ง ์์ ํฌ๋ช
์ฑ(transparency)์ ์ ๊ณต
- ํฌ๋ช ์ฑ : ์์คํ ์ ํน์ ๊ธฐ๋ฅ์ด ํ์ ๊ณ์ธต์์ ์๋ํ ๋, ์์ ๊ณ์ธต์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ทธ ์กด์ฌ๋ฅผ ์ธ์งํ๊ฑฐ๋ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ํ์ ์์ด ๊ธฐ์กด ์ํ ๊ทธ๋๋ก ๋์ํ ์ ์๋ ํน์ฑ
- ์ปค๋ ๋ชจ๋๊ณผ ๋ฌ๋ฆฌ ์ปค๋ ์
๊ทธ๋ ์ด๋ ์ ์ฝ๋ ์ฌ์์ฑ์ด ํ์ํ์ง ์์ ์ปค๋ ์งํ์ ๋ํ ์ ์๋ ฅ์ด ๋์
- ์ปค๋ ๋ชจ๋์ ๋ด๋ถ API๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์์กดํ์ฌ ์๋ก์ด ๋ฒ์ ์ด ๋์ค๋ฉด ํธํ์ด ๋์ง ์์ ์ฝ๋๋ฅผ ์ฌ์์ฑํด์ผ ํจ
- eBPF๋ ํฌํผ ํจ์๋ฅผ ํตํด์ ์ปค๋๊ณผ ์ํธ์์ฉํ๋ฏ๋ก ์ปค๋ ์
๊ทธ๋ ์ด๋์ ์ ์๋ ฅ์ด ๋์ ์ฝ๋๋ฅผ ์ฌ์์ฑํ ํ์๊ฐ ์์
kprobe๋ฅผ ํตํ ์์ ํจ์ ํํน์ ์ตํ์ ์๋จ์ผ๋ก ๊ฐ์ฃผ๋๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก๋ ๋ด๋ถ ์ปค๋ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋ ์๋ณ์๊ฐ ๊ณ ์ ๋์ด ๋ณด์ฅ๋๋ ์์ ์ ์ธ ์ธํฐํ์ด์ค์ธ Tracepoints๋ฅผ ํ์ฉ- ๋คํธ์ํฌ ํ๋ ์์ญ์์๋ ํจํท ์ฒ๋ฆฌ ์คํ์ ํ์คํ๋ XDP, TC(Traffic Control) ํ ํฌ์ธํธ๋, ์ปค๋ ํจ์ ํฌ์ธํฐ๋ฅผ ๊ตฌ์กฐ์ฒด ํํ๋ก ์์ ํ๊ฒ ๋์ฒดํ๋ struct_ops ๋ฑ์ ํ์ฉํ์ฌ ์ปค๋ ๋ด๋ถ ํจ์์ ๋ช ์นญ ๋ณ๊ฒฝ์ผ๋ก๋ถํฐ eBPF ๋ก์ง์ ๊ฒฉ๋ฆฌ(Decoupling)
- BPF CO-RE (Compile Once โ Run Everywhere) ๋ฐ BTF (BPF Type Format) : . CO-RE ๊ธฐ์ ์ BTF๋ผ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ, ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ๋จ์ผ eBPF ๋ฐ์ด๋๋ฆฌ๊ฐ ํ๊ฒ ์ปค๋์ ์ ์ฌ(Load)๋ ๋ BPF ๋ก๋๊ฐ ๋์ ์ปค๋์ ๋ ์ด์์ ์ฐจ์ด๋ฅผ ์๋ณํ๊ณ ๋ณ์ ๋ฐ ๊ตฌ์กฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์คํ์ ์ ๋ฐํ์์ ๋์ ์ผ๋ก ์ฌ๋ฐฐ์น
- ์ธ๋ฐํ ์ ์ด : IPTable์ ๊ฐ์ ์ง์ ๋๊ตฌ๋ ์ง์ํ๋ ๊ธฐ๋ฅ์ด ์ ํ์ . eBPF๋ ํฌํธ ๋ฒํธ, ํน์ NIC ๋ชจ๋ธ ๋ฑ ๋ค์ํ ๊ธฐ์ค์ ๊ธฐ๋ฐํ ๋งค์นญ์ ํฌํจํ์ฌ ๊ด๋ฒ์ํ ๋คํธ์ํน ๊ธฐ๋ฅ ์ ์ด๋ฅผ ์ ๊ณต
- ํจํท์ ํค๋์ ํ์ด๋ก๋๋ฅผ ๊ฒ์ฌํ์ฌ ํน์ ์กฐ๊ฑด๊ณผ ์ผ์นํ๋ ์ง ์๋ณ - ๊ตฌ๊ธ ๋ฑ์ ์์ฉ์ ๊ณต๊ฐ ์คํ(userspace stacks)์ ๋์ ํ์ฌ ์ ์ฐํ ๋คํธ์ํฌ ํ๋์ ์ํํ์ง๋ง, ์ด๋ ์ข ์ข ๋ณต์กํ ์ปค๋ ์ต์ ํ๋ ํน์ ๋คํธ์ํฌ ์นด๋๋ฅผ ์๊ตฌ
- ์ฌ์ฉ์ ๊ณต๊ฐ ์คํ : ํจํท ์ฒ๋ฆฌ๋ฅผ ์ด์์ฒด์ ์ปค๋์ ๊ธฐ๋ณธ ๋คํธ์ํน ์คํ์ ๋งก๊ธฐ์ง ์๊ณ ์ปค๋์ ์ฐํ(Kernel Bypass)ํ์ฌ, ์ฌ์ฉ์ ๊ณต๊ฐ(User-space) ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์์ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ์ง์ ์ฒ๋ฆฌํ๋ ์ํคํ ์ฒ
- ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋ ์์ ์ด ํ์ํ์ง ์์ ํฌ๋ช
์ฑ(transparency)์ ์ ๊ณต
Motivating Example
- ํต์ฌ ๊ฐ๋
์ ์
- Migration : ์คํ ์ค์ธ ์๋น์ค, VM ๋๋ ์ปจํ ์ด๋๋ฅผ ํ์ฌ ๊ตฌ๋ ์ค์ธ ๋ฌผ๋ฆฌ์ ์๋ฒ์์ ๋ค๋ฅธ ๋ฌผ๋ฆฌ์ ์๋ฒ๋ก ์ด๋์ํค๋ ํ๋ก์ธ์ค.
- ํผ์ก ์ ์ด ํ๋ (Congestion Control Tuning): ๋คํธ์ํฌ ๊ฒฝ๋ก ์์ ๋ณ๋ชฉ ํ์ ๋ฐ ํจํท ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ก์ ์ธก์ ํผ์ก ์๋์ฐ(cwnd)๋ฅผ ์กฐ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ ์ต์ ํ ๊ณผ์ . RTT, ํจํท ์์ค ๋ฑ์ ์งํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํต์ ๊ฒฝ๋ก ์ ์ฒด์ ๋์ญํญ ํ๊ณ๋ฅผ ์ข
ํฉ์ ์ผ๋ก ๋ฐ์ํ๋ ์ ์ญ์ ํน์ฑ์ ์ง๋.
- ์๋ฅผ ๋ค์ด, RTT๊ฐ ํฐ ๊ฒ์ ๋ณด๊ณ Cross-region์ด ๋ฐ์ํ์์ ์๋ณ
- ์ด๊ธฐ ์๋์ฐ (Initial Window, IW): TCP ์ฐ๊ฒฐ์ด ์ค์ ๋ ์งํ, ์์ ์ธก์ ํ์ธ ์๋ต(ACK)์ ๋๊ธฐํ์ง ์๊ณ ์ก์ ์ธก์ด ๋คํธ์ํฌ๋ก ์ฐ์ ์ ์กํ ์ ์๋ ์ต๋ ํจํท ํ์ฉ๋.
- IW๊ฐ ํด ๊ฒฝ์ฐ RTT๋ฅผ ์ต์ํํจ์ผ๋ก์จ ์์ ์ง์ฐ ์๊ฐ ์ฑ๋ฅ์ด ํฅ์
- ToR (Top of Rack) ์ค์์น: ๋จ์ผ ์๋ฒ ๋(Rack) ๋ด๋ถ์ ๋ฐฐ์น๋์ด, ํด๋น ๋์ ์ฅ์ฐฉ๋ ๋ฌผ๋ฆฌ์ ์๋ฒ๋ค์ ํธ๋ํฝ์ ์ํธ ์ฐ๊ฒฐํ๊ณ ์์ ๊ณ์ธต ๋คํธ์ํฌ๋ก ์ ๋ฌํ๋ ์ฃ์ง ์ค์์น ์ฅ๋น.
- ๋ฒํผ ์ถ์ (Buffer Buildup): ์ค์์น ๋ฒํผ์ ๋์ ๋๋ ํ์.
- Example
- ์๋น์ค A : RTT ๋ฐ ํธ๋ํฝ ํจํด์ ๊ธฐ๋ฐ์ผ๋ก rwnd ํฌ๊ธฐ๋ฅผ ์ ํํ์ฌ burst๋ฅผ ์ํํ๋ ํ๋ ๊ธฐ๋ฅ ์ ์ฉ
- ๋ค๋ฅธ ๋ฌผ๋ฆฌ์๋ฒ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋, RTT์ ๊ฐ์ ๊ฑฐ์์ ๋คํธ์ํฌ ํต์ ํ๊ฒฝ์ ๋์ผํ๊ฒ ์ ์ง๋๋ฏ๋ก ๊ธฐ์กด ํผ์ก ์ ์ด ํ๋(์: Cubic ์๊ณ ๋ฆฌ์ฆ)์ ๋ณ๊ฒฝ ์์ด ์ ์ง ๊ฐ๋ฅํจ. ๊ทธ๋ฌ๋ NIC ์๋์ rwnd์ ์๊ด๊ด๊ณ๋ก ์ธํด ์๋์ฐ ์ค์ ์ ๋ฐ๋์ ์ฌ์กฐ์ ๋์ด์ผ ํจ.
- ๋ง์ด๊ทธ๋ ์ด์
์, NIC ์๋์ rwnd์ ์๊ด๊ด๊ณ
- ๊ณ ์ NIC ํ๊ฒฝ : rwnd๊ฐ ์์ ์๋ก ๋์ญํญ์ ์ถฉ๋ถํ ํ์ฉํ์ง ๋ชปํจ
- ์ ์ NIC ํ๊ฒฝ : rwnd๊ฐ ํด ์๋ก ํ๋์จ์ด ์ฒ๋ฆฌ ์ฉ๋์ ์ด๊ณผํ๋ ํธ๋ํฝ ๋ฒ์คํธ ๋ฐ์ํ์ฌ ToR ์ค์์น์์ ๋ฒํผ ์ถ์ ๋ฐ ๊ฒฝํฉ์ผ๋ก ์ธํ ํจํท ๋๋ ๋ฐ์
- ์๋น์ค B : ๋์ RTT๋ฅผ ๊ฐ์ง๋ cross-region ํ๋ฆ์๋ง ์ ์ฉ๋๋ ํน์ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ(Cubic)์ด ์ ์ฉ
- A์ ๊ธฐ์กด ์๋ฒ๋ฅผ ์๋น์ค B๊ฐ ๋์ฒดํ ๋, ์๋น์ค ๊ตฌ๋์ ์์ ์ง์ฐ ์๊ฐ(Startup Latency) ํฅ์์ ์ํด ํน์ TCP ์ด๊ธฐ ์๋์ฐ ๊ฐ์ ์ค์ ํ๋ ํ๋ ๊ธฐ๋ฅ ์๊ตฌ
- ์๋น์ค A, B ๋ชจ๋ ๋ค๋ฅธ ์ฌ๋ฌ ์๊ฑด๋ค๋ก ํธ๋ํฝ ํ๋กํ์ผ์ด ๋ณํํ ์ ์์
- ์๋น์ค A : RTT ๋ฐ ํธ๋ํฝ ํจํด์ ๊ธฐ๋ฐ์ผ๋ก rwnd ํฌ๊ธฐ๋ฅผ ์ ํํ์ฌ burst๋ฅผ ์ํํ๋ ํ๋ ๊ธฐ๋ฅ ์ ์ฉ
- ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ๋์ ํน์ฑ (Dynamism of Configuration Changes)
- ์์ ๊ฐ์ด, ๋ง์ด๊ทธ๋ ์ด์ ์ด๋ ํธ๋ํฝ ํ๋กํ์ผ์ ๋ณํ๋ก ๋คํธ์ํฌ ์ค์ (ํ๋ ์ ์ฑ )์ด ๋ณํ๋จ
- ํ๋ ์ ์ฑ ์ ์๊ฐ์ ๋ณ๊ฒฝ ๋น๋ ๋ฐ ๋ณ๋ ํญ์ ์์นํํ ์งํ
-
๋กฑํ ์ผ์ ํน์ฑ: 1๊ฐ์๊ฐ ์คํ ๋ฆฌ์ง(Storage) ๋ฐ ๊ธฐ๊ณ ํ์ต(ML) ์๋น์ค์ ์ค์ ์ ์ฉ๋ ๋คํธ์ํฌ ํ๋ ์ ์ฑ (tuningFeatures)์ ์ด๊ฐ์๋ฅผ ์ถ์

- ์ธํ๋ผ์ ์ํ ๋ณํ์ ๋ฐ๋ผ ์ด์์ฒด์ ์ปค๋์ ๋์ ์ผ๋ก ์ฃผ์ (Load/Attach) ๋ฐ ์ ๊ฑฐ(Detach)๋๋ eBPF ํ๋ก๊ทธ๋จ์ ๊ฐ์์ ์ข ๋ฅ๊ฐ ์ค์๊ฐ์ผ๋ก ์ฆ๊ฐ
- ๋๋ถ๋ถ(ํ๊ท )์๋ ์์์ ๊ธฐ๋ณธ์ ์ธ ๋คํธ์ํฌ ํ๋ ์ ์ฑ (๋ถํฌ์ ๋จธ๋ฆฌ, Head)๋ง์ด ํ์ฑํ๋์ง๋ง, ์ผ์์ ์ธ ํธ๋ํฝ ๋ฒ์คํธ๋ ํ๋์จ์ด ๋ง์ด๊ทธ๋ ์ด์ ๋ฑ ์์ธ์ ์ธ ์ฃ์ง ์ผ์ด์ค(Edge cases)๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๊ณ ๋๋ก ํนํ๋ ์๋ง์ ์ธ๋ถ ํ๋ ์ ์ฑ ๋ค(๋ถํฌ์ ๊ผฌ๋ฆฌ, Tail)์ด ์ฐ๋ฐ์ ์ผ๋ก ํ์ฑํ๋์ด p95 ์์น๋ฅผ ๊ธ๊ฒฉํ ๋์ด์ฌ๋ฆฌ๋ ๋น๋์นญ์ ํต๊ณ ๋ถํฌ๋ฅผ ์๋ฏธ
- ์์คํ ๊ด๋ฆฌ์๊ฐ ์ฌ์ ์ ์ ์ํ ๋ฒ์ฉ ํ๋กํ ์ฝ ์ค์ ์ด๋ ์ ์ ํด๋ฆฌ์คํฑ๋ง์ผ๋ก๋ ๋กฑํ ์ผ์ ์์นํ ์๋ง์ ์์ธ์ ์ฃ์ง ์ผ์ด์ค(Edge cases)์ ์ธ๋ถ ์๊ตฌ์ฌํญ์ ํฌ๊ดํ ์ ์๋ค
Requirement
- ๊ฐ๋ฐ ํฌ๋ช
์ฑ(C1)
- eBPF ๊ธฐ์ ์ ๋คํธ์ํฌ ์คํ์ ์ฌ๋ฌ ์ง์ ์ ํ ํฌ์ธํธ๋ฅผ ์ ๊ณต. ํ์ง๋ง ๊ฐ ํ ํฌ์ธํธ๋ง๋ค eBPF ํ๋ก๊ทธ๋จ์ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ loadํ๊ณ ํน์ ์ด๋ฒคํธ์ attach/detach ํ๋ ๋ฐ ํ์ํ ์ปค๋ API, ์์คํ ์ฝ, ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด ๋ฑ์ด ๋ค๋ฆ
- ์ค์ ๊ธฐ๋ฅ์ ๋ก์ง๋ณด๋ค ์๋ก ๋ค๋ฅธ ํ ํฌ์ธํธ ์ธํฐํ์ด์ค ๊ท๊ฒฉ์ ๋ง์ถ๊ณ ์ฐ๋ํ๊ธฐ ์ํ glue-code๋ฅผ ์์ฑํ๋ ๋ฐ ๋ ๋ง์ด ๋น์ฉ์ด ์๋ชจ
โ ๋ค์ํ ํ ํฌ์ธํธ๋ฅผ ๊ด๋ฆฌํ ์ฒด๊ณ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ํ์
- ๊ณ ๊ฐ์ฉ์ฑ (C2)
- ์ํ ๋ณด์กด ๋ฌธ์
- ๊ฐ์ฒด ํ ๋น ๋ฐ ์ฐธ์กฐ ์ ์ง: ์ฌ์ฉ์ ๊ณต๊ฐ์ ๋ฐ๋ชฌ ํ๋ก์ธ์ค๊ฐ eBPF ํ๋ก๊ทธ๋จ ๋ฐ ๋งต(Map)์ ์ปค๋์ ์ ์ฌํ๋ฉด FD๊ฐ ๋ฐํ๋๋ฉฐ, ํด๋น FD๊ฐ ์ ์ง๋๋ ๋์ ์ปค๋ ๋ด eBPF ๊ฐ์ฒด์ ์ฐธ์กฐ ์นด์ดํธ๊ฐ 1 ์ด์์ผ๋ก ๋ณด์ฅ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์กด์
-
ํ๋ก์ธ์ค ์ข ๋ฃ์ ์์ ํ์: ๋ฐ๋ชฌ ํ๋ก์ธ์ค์ ํฌ๋์ ๋๋ ์ ๋ฐ์ดํธ์ ์ํ ์ฌ์์์ด ๋ฐ์ํ ๊ฒฝ์ฐ, ํด๋น ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๋ ๋ชจ๋ FD๋ฅผ ๊ฐ์ ๋ก ๋ซ์
โ FD ํ์ ๊ฒฐ๊ณผ๋ก eBPF ๋งต์ ์ฐธ์กฐ ์นด์ดํธ๊ฐ 0์ผ๋ก ํ๋ฝํ๋ฉด, ์ปค๋์ ์ด๋ฅผ ๊ณ ์ ๊ฐ์ฒด(Orphaned Object)๋ก ๊ฐ์ฃผํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง๋ฅผ ์ํด ์ฆ๊ฐ ํ ๋น์ ํด์ . ์ด๋ก ์ธํด ๋งต ๋ด๋ถ์ ์ ์ง๋๋ ๋คํธ์ํฌ ์ธ์ ๋ฐ ํ๋ ์ํ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์๋ฉธ.
- ์๊ธ ์ ์ฉ : ํ๋ก๊ทธ๋จ์ ํจํท ์ ์ ์ด๋ ์ฐ๊ฒฐ ์์(SYN)๊ณผ ๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์๋ ๋ ์คํ๋จ. ์ด๋ฏธ ํต์ ์ด ์งํ๋์ด ํต์ ์ค์ธ ๊ธฐ์กด์ ์ฅ๊ธฐ ์ฐ๊ฒฐ์ ๋ํด์๋ ์ ์ฑ ์ ๊ฐฑ์ ํ์ฌ ์ ์ฉํ๊ธฐ ์ด๋ ค์
โ ์ปค๋์ ์๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์์กดํ์ง ์๊ณ Control Plane์ด ํ์ฌ ๋คํธ์ํฌ ์ํ๋ฅผ ๋ฐํ์ผ๋ก eBPF ๊ฐ์ฒด์ ๋ณด์กด๊ณผ ์ ์ฑ ๊ฐฑ์ (ํธ๋ฆฌ๊ฑฐ)์ ์ง์ ์ ์ดํ ์ ์๋ ์ํคํ ์ฒ๊ฐ ํ์์
- ์ํ ๋ณด์กด ๋ฌธ์
- ์์ ํ๊ณ ์ ํํ ๋ฐฐํฌ(C5) : ๊ฒ์ฆ๊ธฐ๊ฐ ๋
ผ๋ฆฌ์ ์ ํ์ฑ์ ๋ณด์ฅํ์ง๋ ์์.
- ๋๊ท๋ชจ ๋ฐฐํฌ ํ๊ฒฝ์์๋ ๋จ์ผ ๋ฌผ๋ฆฌ ์๋ฒ ๋ด์์ ๋์ผํ ํจํท์ด๋ ํต์ ์ฐ๊ฒฐ(Connection) ์ํ์ ๋ํด ๋ค์์ eBPF ํ๋ก๊ทธ๋จ(์: ๋ฐฉํ๋ฒฝ, ๋ก๋๋ฐธ๋ฐ์, ํผ์ก ์ ์ด ํ๋)์ด ๋์์ ๊ฐ์ ํ๋ ๋ฐ, ์คํ ์์ ์กฐ์ ์ด๋ ๋๊ธฐํ๊ฐ ๋ณด์ฅ๋์ง ์์ผ๋ฉด race condition์ด ๋ฐ์
โ eBPF ์ปค๋ ์ธํฐํ์ด์ค๋ฅผ ํ ์คํธํ๊ณ ๋ฒ๊ทธ๋ฅผ ์๋ณํ ์ ์๋ ํ๋ ์์ํฌ ๋์ ์ด ํ์
- ์ปจํ
์คํธ ๋ง์ถคํ ์ค์ผ์คํธ๋ ์ด์
(C3/C4) : ์ ํ๋ฆฌ์ผ์ด์
์ ํน์ฑ, ํธ๋ํฝ ํ๋กํ์ผ, ํ๋์จ์ด ์ํ ๋ฑ ์์คํ
์ ์ค์๊ฐ Context์ ์ธ์งํ์ฌ, ๊ทธ์ ๋ถํฉํ๋ eBPF ํ๋ก๊ทธ๋จ ๋ฐ ๋คํธ์ํฌ ํ๋ ์ ์ฑ
์ ์๋์ผ๋ก ๋ฐฐํฌ, ๊ฐฑ์ , ํ์ํ๋ ๋์ ์์ ์ ์ด ํ๋ ์์ํฌ
- ๊ธฐ์กด ๋ฐฉ์์ ํ๊ณ: ๋ชจ๋ ์๋ฒ์ ์ผ๊ด๋ ์ ์ฑ ์ ๊ฐ์ ํ๊ฑฐ๋ ์๋์ผ๋ก ๋ฐฐํฌ
- ์๊ตฌ ์ฌํญ
- ์ถ์ํ : ์๋น์ค์ ํ์ฅ ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ๋ฑ์ ์ธํ๋ผ ๋ณ๋ ์ํ๋ฅผ ์์ ๊ณ์ธต์ผ๋ก ์๋ํ๊ณ ์ํฉ์ ๋ง๋ eBPF ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌ๋ฅผ ์๋ ์กฐ์ ํ๋ ๋งค์ปค๋์ฆ
- ์ ์ฑ ์ธ์ด์ ๋ฒ์ฉ์ฑ๊ณผ ํ๋์ ํน์์ฑ : ์ด์ง์ ์ธ ๊ธฐ์ ํ๋์จ์ด์ ํธ๋ํฝ ํน์ฑ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค์ ํ๋ ์ค์ ์ ๊ณ ๋๋ก ํนํ๋์ด์ผ ํ๋, ๋๊ท๋ชจ ํ๊ฒฝ์ ๊ด๋ฆฌ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ๊ธฐ ์ํด ์์ ์ ์ด ์ธํฐํ์ด์ค(์ ์ฑ ์ธ์ด)๋ ์ถ์์ ์ด๊ณ ๋ฒ์ฉ์ ์ผ๋ก ์ค๊ณ
- ํ๋ก๊ทธ๋จ ์๋ช ์ฃผ๊ธฐ ๋์ ์ ์ด : ์ธํ๋ผ ์ฅ์ ๋ ์๋น์ค ๋ณ๋๊ณผ ๊ฐ์ ๋์ ํ๊ฒฝ์ ๋์ํ๊ธฐ ์ํด, ํ๋ก๊ทธ๋จ์ ์ ์ฌ ๋ฐ ํด์ ๊ณผ์ ์ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ์ ์ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ค์ผ์คํธ๋ ์ด์ ์ด ์๊ตฌ
COMPARISONOFOPENSOURCE EBPF
ORCHESTRATORS
๋น๊ต
- ์ ๋์ ๋์ ๋ฐ ๋ง์ถคํ ๋ชฉ์ : NetEdit์ eBPF๋ฅผ ์กฐ๊ธฐ์ ๋์ . ๋ฒ์ฉ์ ์ ์ด์ ์ด์ ์ ๋ง์ถ๋ ํ ๋๊ตฌ์ ๋ฌ๋ฆฌ ์์ฌ์ ๊ณ ์ ํ ์๋น์ค ํน์ฑ ๋ฐ ๋ฌผ๋ฆฌ์ ์ธํ๋ผ ํ๊ฒฝ์ ๊ณ ๋๋ก ํนํ๋ ๋ง์ถคํ ํ๋ ๊ธฐ๋ฅ ์ ๊ณต์ ๋ชฉํ๋ก ์ค๊ณ๋จ.
- ์ฅ๊ธฐ ํ๋ก๋์ ์ด์ ๊ฒ์ฆ: ์ต๊ทผ 2~3๋ ๋ด์ ๊ณต๊ฐ๋ ๋ฒ์ฉ ์คํ์์ค eBPF ๊ด๋ฆฌ ๋๊ตฌ๋ค๊ณผ ๋๋นํ์ฌ, NetEdit์ ์ง๋ 6๋ ๊ฐ ์ค์ ๋๊ท๋ชจ ์์ฉ(Production) ํ๊ฒฝ์์ ์ด์๋๋ฉฐ ์์คํ ์์ ์ฑ๊ณผ ์คํจ์ฑ์ ์ ์ฆ
- ์คํ์์ค ๊ธฐ์ ๊ธฐ๋ฐ ์ ๊ณต: ํ์ฌ ์ฌ์ฉ๋๋ ๋ค์์ ์คํ์์ค eBPF ์ค์ผ์คํธ๋ ์ดํฐ๋ NetEdit ์ธก์ด ๋ฆฌ๋
์ค ๋ฉ์ธ๋ผ์ธ์ ์ ์ ์ ์ผ๋ก ์
์คํธ๋ฆผ(Up-stream)ํ ์ปค๋ ์์ ์ฌํญ๊ณผ ๊ธฐ์ถํ๋ ๊ธฐ์ ๋ฌธ์์ ์ง์ ์ ์ผ๋ก ๊ธฐ๋ฐํ์ฌ ๊ตฌ์ถ๋จ
- ์ ์คํธ๋ฆผ(Up-stream): ์ํํธ์จ์ด ๊ฐ๋ฐ ์กฐ์ง์ด ์์ฒด์ ์ผ๋ก ์์ ํ๊ฑฐ๋ ๊ธฐ๋ฅ ํ์ฅ์ ์ด๋ฃฌ ๋ฆฌ๋ ์ค ์ปค๋ ์์ค ์ฝ๋๋ฅผ ๊ณต์ ๋ฆฌ๋ ์ค ๋ฉ์ธ๋ผ์ธ ์ ์ฅ์์ ์ ์ถํ์ฌ ์ต์ข ์ ์ผ๋ก Merge์ํค๋ ๊ธฐ์ ์ ๊ธฐ์ฌ ๊ณผ์ ์ ์๋ฏธ
- ๋
ธ๋ ์ค์ฌ ํต์ vs ์ ํ๋ฆฌ์ผ์ด์
๋ฐํ์ ๊ธฐ๋ฐ ์ ์ญ ์ ์ด
- ๊ธฐ์กด ์ค์ผ์คํธ๋ ์ดํฐ๋ค์ ์ฃผ๋ก ๋จ์ผ ํธ์คํธ ๊ด๋ฆฌ์ ์ค์
- NetEdit์ ์๋ฐฑ๋ง ๋์ ์๋ฒ ์์์ ๋์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ช ์ฃผ๊ธฐ(์์, ์ข ๋ฃ, ํธ๋ํฝ ๋ณํ)๋ฅผ ์ค์๊ฐ์ผ๋ก ์ธ์งํ์ฌ, ๊ฐ ํธ์คํธ์ ํ์ํ eBPF ํ๋ ์ ์ฑ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ํ์ ๋ง์ถฐ ์ ์ญ์ ์ผ๋ก ๋๊ธฐํํ๊ณ ์ ์ด
- ๋๊ท๋ชจ ์ธํ๋ผ์ ์์ ๋ฐ ์ ์ฑ
์ถฉ๋ ๋ฐฉ์ง
- ์์์ ์ต์ ํํ๋ ์ง์ฐ ๋ก๋ฉ(Lazy loading)๊ณผ ์ ์ฑ ์ ์ฉ ๋ฒ์๋ฅผ ์๊ฒฉํ ๊ฒฉ๋ฆฌํ๋ ์ค์ฝํ(Scoping) ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์.
- NetEdit์ ์ด ๋ ๊ฐ์ง ์ถ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํจ์ผ๋ก์จ ๋๊ท๋ชจ ํ๊ฒฝ์์ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ๋ CPU ์ค๋ฒํค๋๋ฅผ ๋ง๊ณ , ํ๋ ์ ์ฑ ๋ค์ด ์๋ฑํ ์๋น์ค์ ์ ์ฉ๋๋ ์ค๋ฅ๋ฅผ ์ฐจ๋จ.
- ํต์ ๋ ํ๊ฒฝ์ ํ๊ณ ๊ทน๋ณต ๋ฐ ์ค์ ์ด์ ์ปจํ
์คํธ(Operational Context)
- eBPF ๋ฐฐํฌ๋ฅผ ๋จ์ํํ๋ ค๋ ๊ธฐ์กด์ ์ฐ๊ตฌ๋ ๋๊ตฌ๋ค์ ํน์ ํ ํฌ์ธํธ(Attach-points)์ ๊ตญํ๋์ด ์๊ฑฐ๋, ์ฅ์ ์ ์ด์ง์ฑ์ด ๋๋ฌดํ๋ ์ค์ ์ธํ๋ผ์ ๋ณต์ก์ฑ(Operational Context)์ ๋ฐ์ํ์ง ๋ชปํจ.
- NetEdit์ 6๋ ๊ฐ ์ค์ ๋๊ท๋ชจ ํ๋ก๋์ ํ๊ฒฝ์์ ๊ฒช์ ํ๊ณ๋ค์ ๋ฐํ์ผ๋ก, ํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ๊ณผ ๊ด๋ฆฌ๋ฅผ ์ค์ง์ ์ผ๋ก ๋จ์ํํ๋ ํนํ ๊ธฐ๋ฅ๋ค์ ๋์ .
Design
์ค๊ณ ์์น
- eBPF๋ฅผ ์ปค๋ ๊ณ์ธต์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ
- ๊ธฐ์กด์ ํ๊ณ : eBPF๋ ์ปค๋์ด ๋ฉ๋ชจ๋ฆฌ๋ CPU ์์์ ์์ฒด์ ์ผ๋ก ๋ฐฐ๋ถํ๋ ๋ฐฉ์(ํด๋ฆฌ์คํฑ)๊ณผ ๋ด๋ถ ํจ์ ๊ท๊ฒฉ(primitives)์ ์ง์ ์ ์ผ๋ก ์ข
์. ์ด๋ฌํ ๋ด๋ถ ๊ท์น๋ค์ด ๋ฒ์ ์ ๋ฐ๋ผ ์ผ๊ด์ฑ ์์ด ๋น๋ฒํ๊ฒ ๋ณ๊ฒฝ๋์ด ์ปค๋ ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๊ฑฐ๋ ์ฅ์ ๋ฅผ ์ ๋ฐ
- ํด๋ฆฌ์คํฑ : ์ต์ ์ ์๋ฒฝํ ํด๋ต์ ์ํ์ ์ผ๋ก ๋ณด์ฅํ์ง๋ ์์ผ๋, ์ ํ๋ ์๊ฐ๊ณผ ์ปดํจํ
์์ ๋ด์์ ์คํ ๊ฐ๋ฅํ๊ณ ์์ฉ ๊ฐ๋ฅํ ์์ค์ ๊ทผ์ฌํด๋ ๊ฒฐ์ ์ ๋๋ฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒฝํ์ ๊ท์น.
- EX) ์ปค๋์ด ๋ฏธ๋์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํจํด์ ์์ธกํ์ฌ ๊ณ์ฐํ๋ ๋์ , ๊ณผ๊ฑฐ์ ์ ๊ทผ ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก โ์ต๊ทผ์ ๊ฐ์ฅ ์ ๊ฒ ์ฌ์ฉ๋ ํ์ด์ง(LRU)โ๋ฅผ ์ฐ์ ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ซ์๋ด๋ ์์ ๊ด๋ฆฌ ์๊ณ ๋ฆฌ์ฆ
- ํด๋ฆฌ์คํฑ : ์ต์ ์ ์๋ฒฝํ ํด๋ต์ ์ํ์ ์ผ๋ก ๋ณด์ฅํ์ง๋ ์์ผ๋, ์ ํ๋ ์๊ฐ๊ณผ ์ปดํจํ
์์ ๋ด์์ ์คํ ๊ฐ๋ฅํ๊ณ ์์ฉ ๊ฐ๋ฅํ ์์ค์ ๊ทผ์ฌํด๋ ๊ฒฐ์ ์ ๋๋ฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒฝํ์ ๊ท์น.
- ํด๊ฒฐ ๋ฐฉ์ : ์ปค๋์ ์ธ๋ถ ๊ตฌํ๊ณผ eBPF ํ๋ก๊ทธ๋จ ์ฌ์ด์ ํต์ ๋ ๋ ๋ฆฝ ๊ณ์ธต์ ๋
- ํจ๊ณผ : ํ์ ์ด์์ฒด์ ์ปค๋์ ๊ธฐ๋ณธ ๋์ ๋ฐฉ์์ด๋ ๋ฒ์ ์ฐจ์ด๋ฅผ ํฌ๊ฒ ๊ณ ๋ คํ์ง ์๊ณ ๋, ์ธํ๋ผ ์ ์ญ์์ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก eBPF ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌ ๋ฐ ์ ์ดํ ์ ์์ผ๋ฉฐ ํฅํ์ ์๋ก์ด ์๊ตฌ์ฌํญ์๋ ์ ์ฐํ๊ฒ ๋์
- ๊ธฐ์กด์ ํ๊ณ : eBPF๋ ์ปค๋์ด ๋ฉ๋ชจ๋ฆฌ๋ CPU ์์์ ์์ฒด์ ์ผ๋ก ๋ฐฐ๋ถํ๋ ๋ฐฉ์(ํด๋ฆฌ์คํฑ)๊ณผ ๋ด๋ถ ํจ์ ๊ท๊ฒฉ(primitives)์ ์ง์ ์ ์ผ๋ก ์ข
์. ์ด๋ฌํ ๋ด๋ถ ๊ท์น๋ค์ด ๋ฒ์ ์ ๋ฐ๋ผ ์ผ๊ด์ฑ ์์ด ๋น๋ฒํ๊ฒ ๋ณ๊ฒฝ๋์ด ์ปค๋ ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๊ฑฐ๋ ์ฅ์ ๋ฅผ ์ ๋ฐ
- ํตํฉ๋ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ (Integrated Lifecycle Management) : ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐํ์ ์ํ ๋ณํ(์์ฑ, ์ค์ผ์ผ๋ง, ๋ง์ด๊ทธ๋ ์ด์
, ์ฌ๋ถํ
๋ฑ) ์ด๋ฒคํธ๋ฅผ ํ์ ์ด์์ฒด์ ์ปค๋ ๊ณ์ธต์์ ๋์ํ๋ eBPF ํ๋ก๊ทธ๋จ(๋คํธ์ํฌ ํ๋ ์ ์ฑ
)์ ๋ฐฐํฌ ๋ฐ ์ ์ด ๊ณผ์ ๊ณผ ๋์ ์ผ๋ก ์ฐ๋ํ๊ณ ๋๊ธฐํํ๋ ์์คํ
์ํคํ
์ฒ ๊ธฐ๋ฒ
- ๊ธฐ์กด์ ํ๊ณ : eBPF๋ ์๋น์ค๊ฐ Migration ํ๋ ์ง, Scaling ํ๋ ์ง ๋ฑ ํด๋ฌ์คํฐ ์ฐจ์์ ์์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ ์ ์๋ ์์ผ๊ฐ ์์
- ํด๊ฒฐ ๋ฐฉ์ : ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ณํ ์ด๋ฒคํธ๋ฅผ eBPF ํ๋ก๊ทธ๋จ ๊ด๋ฆฌ ์์คํ ์ผ๋ก ์ ๋ฌํ๋ ์ ์ฉ API๋ฅผ ๊ฐ๋ฐ
- ํจ๊ณผ : ์์ ์๋น์ค์ lifecycle (์์ฑ, ํ์ฅ ์๋ฉธ)์ ํ์ ํ๋ ๊ธฐ๋ฅ์ lifecycle (์ฃผ์ , ๋ณ๊ฒฝ, ํด์ )๊ฐ ํตํฉ๋์ด ์กฐ์จ. ์ฆ, ์๋น์ค์ ์ด๋์ด๋ ํ์ฅ์ ๋ง์ถฐ ํ์ํ ์ปค๋ ๋คํธ์ํฌ ํ๋ ์ ์ฑ ์ด ์๋์ผ๋ก ๋ฐ๋ผ๋ค๋๋ฉฐ ์ ์ฉ๋๊ฑฐ๋ ํ์
- Fail-open
- ๊ธฐ์กด์ ํ๊ณ : ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ ๊ธฐ๋ฅ ๊ฐ์ , ๋ฒ๊ทธ ์์ ๋ฑ์ ์ํด NetEdit์ ์ ๋ฐ์ดํธํ๊ณ ์ฌ๋ฐฐํฌ๋ฅผ ํด์ผ ํ๋ฉฐ, ์ด ๊ณผ์ ์์ ์๊ธฐ์น ๋ชปํ ํฌ๋์๋ ์ฌ๋ถํ ์ด ๋ฐ์
- ํด๊ฒฐ ๋ฐฉ์ : ์ค์ ์ ์ด ํ๋ก์ธ์ค๊ฐ ๋ค์ด๋๋๋ผ๋, ์ด์ ์ ์ด์์ฒด์ ์ปค๋์ ์ฃผ์ ํด ๋ ๊ฐ๋ณ ๋คํธ์ํฌ ์ ์ด ์ ์ฑ (eBPF ํ๋ ๊ธฐ๋ฅ)๋ค์ด ์ด์์ฒด์ ์ ์ํด ๊ฐ์ ๋ก ์ญ์ ๋๊ฑฐ๋ ๋ฉ์ถ์ง ์๋๋ก ๋ ๋ฆฝ์ฑ์ ๋ถ์ฌ
- ํจ๊ณผ : ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์ง์์ ๊ฐ์ฉ์ฑ์ ํ์์ ๊ฒฝํ. ๊ฐ๋ฐ์๋ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ด ์๋ํ์ง ์์๋ eBPF ํ๋ก๊ทธ๋จ์ ์ ๊ทผํ์ฌ ๋ด๋ถ ์ํ๋ฅผ ๋ค์ฌ๋ค๋ณด๊ณ ๋๋ฒ๊น ์ ์ํํ ์ ์์
- ์ต์ ์ค๋ฒํค๋ : ๋ญํน, ์ถ์ฒ ์์คํ , ๋จธ์ ๋ฌ๋ ์ถ๋ก ๋ฐ ํ๋ก ํธ์๋ ์๋น์ค์ ๊ฐ์ด ์ง์ฐ ์๊ฐ์ ๋ฏผ๊ฐํ ์๋น์ค๋ฅผ ์ง์ํ๊ธฐ ์ํด ํจ์จ์ ์ธ ์์ ์ฌ์ฉ์ ์ผ๋์ ๋๊ณ ์ค๊ณ
Overview
- 3๊ฐ์ง ์ญํ
- ํด๋ฌ์คํฐ ๊ด๋ฆฌ ์์คํ : ์ฌ๋ฌ ๋ฌผ๋ฆฌ ์๋ฒ๋ฅผ ํด๋ฌ์คํฐ๋งํ์ฌ ๊ทธ ์์์ ๋์ํ๋ eBPF ํ๋ก๊ทธ๋จ์ ์ค์์์ ํต์ ๋ฐ ๋ฐฐํฌ
- ๊ฐ๋ฐ ํ๋ซํผ : eBPF ํ๋ก๊ทธ๋จ์ ์ฒ์๋ถํฐ ๋๊น์ง ์๋ก ์ง๋ ๋์ , ์กฐ๋ฆฝํ ์ ์๋ ํ์คํ๋ ๋ถํ(์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์)์ ์ ๊ณตํ๊ณ , ๋ฐฐํฌํ๊ธฐ ์ ์ ํ ์คํธํ๋ ํ๊ฒฝ์ ์ ๊ณต
- ์ ์ฑ ๊ตฌ์ฑ ์์ง : ๋์ ์ธ ์กฐ๊ฑด ํ์์ ๋ฐ์ํ๋ ์์ ์๋น์ค ์๊ตฌ์ฌํญ์ ์ ํํ ํ์ ๋ฐฐํฌ๋ก ๋ณํ
- ์ํคํ
์ฒ
- Control plane : ์ ์ฑ ์ ๊ด๋ฆฌํ๊ณ ์ด๋ฅผ eBPF๊ฐ ์ดํดํ ์ ์๋ primitives๋ก ๋์ ์ผ๋ก ๋ณํ
- Data plane : ์ค์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์์ญ. ์ปค๋์ eBPF ๊ด๋ฆฌ๋ก๋ถํฐ decouple ํ์ฌ ๋ช ๋ น์ ์ํ
- ๋์ ํ๋ฆ
- ๋ถํ ์, ์ปค๋ ๊ณต๊ฐ(Data plane)์ ๊ฒ์ฌ. ์ด์ ์ ์คํ๋ ํ๋ ๊ธฐ๋ฅ(eBPF ํ๋ก๊ทธ๋จ)์ ์์ฌ๋ฌผ์ ์ญ์ ํ์ฌ ์ถฉ๋์ด ์๋ ์ด๊ธฐ ์ํ๋ฅผ ํ๋ณด
- ์ค์ ์ ๋ถ์ํ์ฌ loadํ ํ๋ ๊ธฐ๋ฅ์ ๋ชฉ๋ก์ ๊ฒฐ์ ํ๊ณ BPFAdapter ์ถ์ํ๋ฅผ ์ฌ์ฉํ์ฌ data palne์ attach
- ์์ ์๋น์ค์ ์ํ๋ฅผ ๊ฐ์ : Control plane์ด ์๋ฒ์์ ์๋ํ๋ ์ปจํ ์ด๋ ๊ด๋ฆฌ ์์คํ ๊ณผ ํต์ ๋ง์ ๊ตฌ์ถํ์ฌ ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก ์คํํ๋ ์ง ์ข ๋ฃ๋์๋ ์ง ๋ชจ๋ํฐ๋ง
- ์๋น์ค์ ๋ณ๊ฒฝ์ด ๊ฐ์ง๋๋ฉด, NetEdit ๋ด๋ถ์ ์์ฌ๊ฒฐ์ ๋ชจ๋์ธ PolicyEngine์ด ํด๋น ์๋น์ค์ ํน์ฑ์ ๋ง๋ ๋คํธ์ํฌ ์ ์ด ์ ์ฑ ์ ๊ฒฐ์ . BPFAdapter๋ฅผ ํตํด ์ปค๋์ ๋์ ์ผ๋ก load/attach. ์๋น์ค๊ฐ ์ข ๋ฃ๋๋ฉด ํด๋น ํ๋ก๊ทธ๋จ์ detach
- ํธ๋ํฝ์ด ๋ค์ด์ค๋ฉด eBPF ํ๋ก๊ทธ๋จ์ด ํจํท์ ๊ฒ์ฌํ๊ณ ConfigStore์ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ฌ ํธ๋ํฝ์ ๋น ๋ฅด๊ฒ ํต๊ณผ์ํฌ์ง, ์ฐจ๋จํ ์ง, ํน์ ์ต์ ํํ ์ง ํ๋์ ์
NETEDIT DATAPLANE
eBPF๋ฅผ ์ปค๋๊ณผ decouplingํ์ฌ ์ ์ด๊ถ์ ํ๋
BPFAdapter์ ํตํ interface decoupling

- ๋ฌธ์ ์ํฉ : ๋ค์ํ ํ ํฌ์ธํธ๋ง๋ค ๋ฐฉ๋ฒ, ๊ท์น, ๋งค๊ฐ ๋ณ์ ๋ฑ์ด ๋ค๋ฆ
- ํด๊ฒฐ ๋ฐฉ์ : ๋ค์ํ ๋ถ์ฐฉ ๋ฐฉ์์ ๋ณต์ก์ฑ์ ์๋ํ๊ธฐ ์ํด BPFAdapter๋ผ๋ ์ธํฐํ์ด์ค ๋ฐฐ์น.
- attach, detach, execute ๋ฑ์ ํจ์ ํธ์ถ๋ก ์คํ ํ ์ ์๊ฒ ๋ง๋ฆ
- ํจ๊ณผ : Control plane์ ํ ํฌ์ธํธ์ ์ธ๋ถ ์ฌํญ์ ์ ํ์๊ฐ ์์
- ๊ธฐ์กด๊ณผ ์ฐจ์ด์
- Lazy loading
- ๋ฌธ์ ์ํฉ : ๋ชจ๋ eBPF ํ๋ก๊ทธ๋จ์ ์๋ฒ๊ฐ ์ผ์ง ๋ ์ปค๋์ loadํ๋ฉด ์ฌ์ฉํ์ง ์๋ ํ๋ก๊ทธ๋จ๊น์ง ์์ ์ ์
- ํด๊ฒฐ ๋ฐฉ์ : Active policy์ด ๋ฐ์ํ ๋๊น์ง ์ปค๋์ loadํ๋ ๊ฒ์ ๋ฏธ๋ฃธ
- ์ด๋ ์ ์ฑ ์ธํฐํ์ด์ค๊ฐ ํ๋์ ์ ์ฉํ ๋์ ์๋น์ค๋ง ์ง์ ํ๋ ๊ฒ์ด ์๋๋ผ ํด๋น ์๋น์ค๋ก ๋ค์ด์ค๋ ํจํท์ ํ๋กํ ์ฝ, ํค๋ ํจํด ๋ฑ ํจํท ๋ถ๋ฅ ๊ธฐ์ค๊ณผ ๋์ ํธ๋ํฝ ์์ฑ์ ๋ช ์์ ์ผ๋ก ์ ์ธ
- ์์ )
{"target_service": "web-frontend", "classifier": {"layer4_protocol": "TCP", "dst_port": 443, "tcp_flag": "SYN"}}
- ๋ช
์์ ์คํ ๋ฆฌ์ง ๊ด๋ฆฌ (Explicit Storage Management)
- ๋ฌธ์ ์ํฉ : ์ปค๋์ด Map์ ์์๋ก ๊ด๋ฆฌํ์ฌ Map์ ์์๋ก ์ง์ฐ๊ฑฐ๋ ์ ๊ทผ์ ์ ํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์. ์๋ก ๋ค๋ฅธ ๋ eBPF ํ๋ก๊ทธ๋จ์ด ํ๋์ Map์ ๊ณต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์์ ์ ์ํํ ๋ ๋ฐ์ดํฐ ์ ์ค์ด๋ ์์คํ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์
- ํด๊ฒฐ ๋ฐฉ์ : ์ปค๋์ด ์๋ ๊ด๋ฆฌ(์๋ฌต์ )ํ๋ ๊ฒ์ ๋ฉ์ถ๊ณ NetEdit์ด ๋ช ์์ ์ผ๋ก ๊ด๋ฆฌ
- Lazy loading
๊ณ ๊ฐ์ฉ์ฑ์ ์ํ Heuristics Decoupling
๋ช ์์ ๊ฐ๋น์ง ์ปฌ๋ ์

- ๋ฌธ์ ์ํฉ : ์ปค๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด ์ฐธ์กฐ ์นด์ดํ ๊ธฐ๋ฒ์ ์ฌ์ฉ. ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ ์นด์ดํธ๊ฐ 0์ผ๋ก ๋จ์ด์ ธ eBPF ํ๋ก๊ทธ๋จ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ํด ์ญ์ . ๋ฐ๋ชฌ ์ฌ์์๋๋ ์๊ฐ๋์ ๋คํธ์ํฌ ์ ์ฑ ์ด ์์ค
- ํด๊ฒฐ ๋ฐฉ์
- eBPF ์ ์ฉ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ํ ์์ ์ ์ ์ดํ ์ ์๋ primitives ๋์
- Pinning ์ฌ์ฉ. eBPF ๊ฐ์ฒด(ํ๋ก๊ทธ๋จ์ด๋ Map)๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์๋ง ๋๋ ๊ฒ์ด ์๋๋ผ ์ปค๋ ๋ด๋ถ์ ํน์ํ ํ์ผ ์์คํ
๊ฒฝ๋ก(
pin-fs)์ ํ์ผ ํํ๋ก ๋ง์ดํธ. ์ปค๋ ์ ์ฅ์์ ํ์ผ ์์คํ ์ ๊ณ ์ ๋ ๊ฐ์ฒด๋ ๋๊ตฐ๊ฐ๊ฐ ์ฌ์ฉ ์ค์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ฏ๋ก ๊ฐ์ ๋ก ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํ์ง ์์- Map ์ญ์ Pinning์ ํ์ฌ ์ํ ์ ๋ณด๊ฐ ์ด๊ธฐํ ๋๋ ์ค๋ฅ๋ฅผ ๋ง๊ณ ์ฌ๋ถํ ์ ํ Context๋ฅผ ๋๊ธฐํ
์๊ธ์ ์ ์ฑ ์งํ
- ๋ฌธ์ ์ํฉ : Event-driven ๊ตฌ์กฐ์ eBPF ํ๋ก๊ทธ๋จ์ ์ฌ๋ถํ
์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์
- ํ๋ก๊ทธ๋จ์ด ๊บผ์ง ์ฐฐ๋์ ์๋ก ๋งบ์ด์ง ์ฐ๊ฒฐ
- ํ๋ก๊ทธ๋จ์ด ๋๊ธฐ ์ ์ ๋งบ์ด์ง ์ฅ๊ธฐ ์ง์ ์ฐ๊ฒฐ
- ์ ๋ ์ฐ๊ฒฐ์ ๋ค์ ์ผ์ง ์ดํ์ ์ฐ๊ฒฐ ์์ฑ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง ์์ ์ฐ๊ฒฐ ์์ฑ ์ด๋ฒคํธ์ ํธ๋ฆฌ๊ฑฐ ๋๋ eBPF ํ๋ก๊ทธ๋จ์ด ์คํ ๋์ง ์์. ์๋ก์ด ๊ท์น์ด๋ ์ ์ฑ ์ด ์ ์ฉ๋์ง ์์
-
ํด๊ฒฐ ๋ฐฉ์ : NetEdit์ด ๋ฅ๋์ ์ผ๋ก eBPF๋ฅผ ํธ๋ฆฌ๊ฑฐ

- ๋ฉฑ๋ฑ์ฑ์ด๋ผ๋ ์กฐ๊ฑด์ด ํ์ : ๋์ผํ ์ ์ฑ ์ ์ฌ๋ฌ ๋ฒ ์ ์ฉํด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์์ผ ํจ
bpf-iter๋ผ๋ ๊ธฐ์ ์ ์ด์ฉํด, ์ ์ด ์์คํ ์ด ์ง์ ํ์ฌ ์ ์ง๋๊ณ ์๋ ๋ชจ๋ ์ฐ๊ฒฐ ๋ชฉ๋ก์ ์ํํ์ฌ ์ ๋ฐ์ดํธ๋ eBPF ์ ์ฑ ์ ์ผ๊ด์ ์ผ๋ก ๊ฐ์ ์ฃผ์- ์์ ๊ทธ๋ฆผ ์ค๋ช
- (a) : NetEdit์ด ๋ค์ด๋๋ฉด eBPF ํ๋ก๊ทธ๋จ๋ ์ ์ง๋๊ฑฐ๋ ํ์.
- ๋นจ๊ฐ ๋ง๋ ๋ถ๋ถ, ์์คํ ์ด ์ฌ๋ถํ ๋์ด ์๋ก์ด eBPF ํ๋ก๊ทธ๋จ์ ์ปค๋์ ๋ถ์ฐฉํ๋ ์๊ฐ๊น์ง ์ ์ฑ ๊ณต๋ฐฑ์ด ๋ฐ์
- (b) : ๋ค์ด๋๋๋ผ๋ ์ฌ์ ํ ํธ๋ํฝ ์ ์ด(Fail-open) ์๋ก์ด ์
๋ฐ์ดํธ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด detachํ๊ณ ๋ค์ attach๊น์ง ๊ณต๋ฐฑ์ด ๋ฐ์
- bpf_iter์ด ํธ๋ฆฌ๊ฑฐ ๋์ด ํ์ฑํ๋ ๋คํธ์ํฌ ์ธ์ ์ ์ํํ์ฌ ์ ์ฑ ์ ์๊ธํ์ฌ ์งํ
- (a) : NetEdit์ด ๋ค์ด๋๋ฉด eBPF ํ๋ก๊ทธ๋จ๋ ์ ์ง๋๊ฑฐ๋ ํ์.
๋ฐ์ดํฐ ์ด๋ช ๊ณต๋์ฒด ํ์ ์ ๊ฑฐ(Eliminate Data Fate-Sharing)
- ๋ฌธ์ ์ํฉ : ๊ธฐ์กด์ ์ค์ผ์คํธ๋ ์ดํฐ๋ค์ Control plane์์ ๊ด๋ฆฌ ๋ฐ ๊ด์ธก์ ํ์ฌ ๋ค์ด๋ ๊ฒฝ์ฐ ๊ด์ธก์ ํ์ง ๋ชปํ์ฌ ๊ฐ์์ฑ ์์ค
- ํด๊ฒฐ ๋ฐฉ์ : ๊ด๋ฆฌ ํ๋ก์ธ์ค์ ๊ด์ธก ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฆฌ.
metrics exporter: ํตํด ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ DB์ ์ ์กํ๋ ๊ฒฝ๋ ์์ด์ ํธ ํ๋ก์ธ์ค
- ํจ๊ณผ : NetEdit์ด ๋ค์ด๋๋ ๋๋ฒ๊น ๋ฐ์ดํฐ๋ ์ฑ๋ฅ ์งํ๊ฐ ์ธ๋ถ๋ก ์ ์ก ๋ฐ ๊ธฐ๋ก
์ ํ์ฑ์ ์ํ eBPF ๊ฐ Decoupling
์ฌ๋ฌ eBPF ํ๋ก๊ทธ๋จ์ด ํ๋ ฅํ๊ธฐ ์ํด ์์ฐจ์ ์ผ๋ก ์คํ๋๊ฑฐ๋ (chaining) Map์ ๊ณต์ ํด์ผ ํ์ง๋ง ํ ํฌ์ธํธ๋ง๋ค ์๋ก ๋ค๋ฅธ ๊ท์น์ ์ ์ฉ. ์ด๋ค ์์น์์๋ ๋ช ์๋ โ์ฐ์ ์์โ์ ๋ฐ๋ผ ์์๊ฐ ๊ฒฐ์ ๋๊ณ , ๋ค๋ฅธ ์์น์์๋ ๋จ์ํ ์ปค๋์ โ๋ช ๋ น์ด๊ฐ ์ ๋ ฅ๋ ์์(์๊ฐ์)โ์ ๋ฐ๋ผ ์์๊ฐ ๋ฌด์์๋ก ๊ฒฐ์ ๋๋ ๋ฌธ์ ๋ฐ์
eBPF ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ
- ๋ฌธ์ ์ํฉ : ํ๋์ ํ ํฌ์ธํธ์ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋ถ์ฐฉ๋ ๋์๋ ๋ถ์ฐฉ ์์์ ๋ฐ๋ผ ์คํ๋๋ ๋ฐ ๋๊ท๋ชจ ์๋ฒ ํ๊ฒฝ์์๋ ๋ฌด์์ ์์๋ก ์ค์น. ์์๊ฐ ์ํค๊ฑฐ๋ ์์ธก ํ ์ ์๊ฒ ๋จ
- ํด๊ฒฐ ๋ฐฉ์ : ๋ฐฐ์ด์ ๋ง๋ค์ด ํด๋น ํ
ํฌ์ธํธ์ ์คํ ๋
ผ๋ฆฌ๋ก ๋งคํ
- ๊ฐ ์์คํ ์ ๋ถ์ฌ ๋ฐ์ ๊ณ ์ ์ ์ฐ์ ์์์ ๋ฐ๋ผ ํน์ ์ธ๋ฑ์ค์ ๋งคํ
- ๋ถ์ฐฉ์ ๋ฌด์์ ์์๋ก ๋์ง๋ง ๋ฐฐ์ด ๊ตฌ์กฐ๋ฅผ ํตํด ์ฐ์ ์์๊ฐ ๋์ ํ๋ก๊ทธ๋จ์ด ๋จผ์ ์ฒ๋ฆฌํ์ฌ ์ถฉ๋์ ๋ฉ์ถค
- Index 0: ๋ณด์ ๋ฐฉํ๋ฒฝ (์ต์ฐ์ ์์)
- Index 1: ํธ๋ํฝ ๋์ญํญ ์ ํ (QoS)
- Index 2: ํจํท ๋ก๊น ๋ฐ ๋ชจ๋ํฐ๋ง (์ตํ์ ์์)
- ๋ชจ๋ํฐ๋ง ํ๋ก๊ทธ๋จ์ด ๋จผ์ ์ค์น๋ ์ ์์ง๋ง Index 2์ ๋งคํ๋์ด Index 0๋ถํฐ ์คํ
- TC ๊ฐ์ ํจํท ๋จ์ ํ ํฌ์ธํธ์์๋ Ingress์ Egress ๋ ์ ์ฉ ์์๊ฐ ๋ค๋ฅด๋ฏ๋ก ๊ฐ ๋ฐฐ์ด์ ๊ฑฐ์ธ์์ฒ๋ผ ๋ฐ๋๋ก ๋ฐฐ์นํ์ฌ ์ ์ด ์์ ๋ณด์ฅ
- ํจ๊ณผ : ์์ธก ๊ฐ๋ฅํ ์์๋ฅผ ๋ณด์ฅํ๊ณ ์ถฉ๋์ ๋ง์. DevOps (์ด์ ๊ฐ๋ฐํ)์ด ํธ๋ํฝ์ ์ ์ฌ์ ํ๋ฆ์ ์ ์ถํ ์ ์๊ฒ ๋ณด์ฅ
Shared Maps
- ๋ฌธ์ ์ํฉ : eBPF ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ loadํ ๋ ๊ฐ ํ๋ก๊ทธ๋จ๋ง์ ์ํ Map์ ์์ฑ. ๋ฐ์ดํฐ ๊ตํ์ ์ํด ๊ฐ์ ๋งต์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ก๊ทธ๋จ ์์ค ์ฝ๋ ์ ๊ฐ์ ์ด๋ฆ์ด๋ ์์ฑ์ ๋งต์ ์ ์ธํด๋ ๋จ์ผ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ์ฐ๊ฒฐํ์ง ์๊ณ ๋ถ๋ฆฌํ์ฌ ๋ณต์ ๊ฐ ๋๋ ํ์์ด ๋ฐ์. ์ด๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น์ ๋ฐ์ดํฐ ํํธํ ๋ฌธ์ ๋ฐ์
- ํด๊ฒฐ ๋ฐฉ์ : BPFAdapter๊ฐ eBPF ํ๋ก๊ทธ๋จ ์คํ ๊ด๋ฆฌ์ Map ๊ด๋ฆฌ๋ฅผ decoupling. ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์์์ ๊ณต์ ์ํ ํต์
- ๋์ ํ๋ฆ
- BPFAdapter๊ฐ ์ด๋ค ํ๋ก๊ทธ๋จ์ด ์ด๋ค ๋งต์ ๊ณต์ ํ๋ ์ง ์ถ์
- ํน์ ํ์ผ ์์คํ ๊ฒฝ๋ก์ ๋ช ์์ ์ผ๋ก ๊ณต์ Map์ Pinning ์์ผ ๋ฌถ์ด๋
- eBPF ํ๋ก๊ทธ๋จ๋ค์ด load ๋ ๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ Map์ ์ฐธ์กฐํ๋๋ก ๋ณด์ฅ
- ๋์ ํ๋ฆ
- ํจ๊ณผ : ๋ถํ์ํ ๋ณต์ ๋ฅผ ์ฐจ๋จํ๊ณ eBPF ํ๋ก๊ทธ๋จ๋ค์ด ๊ฐ์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ฐธ์กฐ
NETEDIT CONTROLPLANE
- ์ด๋ค ์๋น์ค ๋ฐ ํธ๋ํฝ ํ๋ฆ์ ํ๋ ์ ์ฑ ์ ๋งค์นญํ๋ ์์
- ๊ฐ์์ฑ ํ๋ณด๋ฅผ ์ํ ์ธก์ ๋๊ตฌ ํ์ฑํ
Policy Store
๊ฐ ํ๋ ๊ธฐ๋ฅ์ ์ ํ์ ์ผ๋ก ํ์ฑํํ๋ ์ ์ฑ ๋ค์ ์ ์ฅ์
Policy
- Classifier : ์ ์ฑ
์ด ์ ์ฉ๋ ๋ก์ปฌ ๋ฐ ์๊ฒฉ ์๋ ํฌ์ธํธ
- ๋ก์ปฌ ์๋ํฌ์ธํธ : ์ ์ด ๋์์ ๊ณ ์ ๋ ์๋ฒ๋ IP ๋จ์๊ฐ ์๋, ํน์ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ํํ๋ ๋
ผ๋ฆฌ์ โ์์
(Job)โ์ ๋ฌถ์์ผ๋ก ์ถ์ํํ์ฌ ์ ์
- ์์) ๊ฒฐ์ ์น์ธโ ๋ก์ง์ ๋ด๋นํ๋ 50๊ฐ์ ์ปจํ
์ด๋๊ฐ ๋ฐ์ดํฐ์ผํฐ ๋ด ์์ญ ๋์ ๋ฌผ๋ฆฌ ์๋ฒ์ ๋ฌด์์๋ก ๋ถ์ฐ๋์ด ์คํ ์ค์ด๋ฉฐ, ์์๋ก ์์ฑ ๋ฐ ์๋ฉธํ์ฌ IP ์ฃผ์๊ฐ ๊ณ์ ๋ณ๊ฒฝ
- IP 10.0.0.1 ~ 10.0.0.50์ ๋ณด์ ์ ์ฑ ์ ์ฉโ์ด๋ผ๊ณ ์ค์ ํ ๊ฒฝ์ฐ, IP๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ ์ฑ ์ ์๋ก ์์ ํ๊ณ ๋ฐฐํฌํด์ผ ํ๋ ๊ทน์ฌํ ๊ด๋ฆฌ ์ค๋ฒํค๋๊ฐ ๋ฐ์
- ๊ฒฐ์ ์น์ธ ์์ ์ ์ํํ๋ ๋ชจ๋ ์ปจํ ์ด๋ ํ๋ก์ธ์ค์ ์งํฉ ์์ฒด๋ฅผ ๋ก์ปฌ ์๋ํฌ์ธํธ๋ก ์ ์ธ. IP์ ์๊ด ์์ด ์ ์ฑ ์ด ์ฃผ์
- ์์) ๊ฒฐ์ ์น์ธโ ๋ก์ง์ ๋ด๋นํ๋ 50๊ฐ์ ์ปจํ
์ด๋๊ฐ ๋ฐ์ดํฐ์ผํฐ ๋ด ์์ญ ๋์ ๋ฌผ๋ฆฌ ์๋ฒ์ ๋ฌด์์๋ก ๋ถ์ฐ๋์ด ์คํ ์ค์ด๋ฉฐ, ์์๋ก ์์ฑ ๋ฐ ์๋ฉธํ์ฌ IP ์ฃผ์๊ฐ ๊ณ์ ๋ณ๊ฒฝ
- ์๊ฒฉ ์๋ํฌ์ธํธ : ๋ชฉ์ ์ง๋ฅผ ํน์ ์๋ธ๋ท์ด๋ IP ๋์ญ์ผ๋ก ํ๋์ฝ๋ฉํ์ง ์๊ณ , โ๋์ผํ ์๋ฒ ๋(Rack)โ, โ๋์ผํ ๋ฐ์ดํฐ์ผํฐโ, โ๋์ผํ ๋๋ฅโ๊ณผ ๊ฐ์ด ์ถ๋ฐ์ง ๋๋น ๋คํธ์ํฌ ํ ํด๋ก์ง ์์ ์๋์ ์ธ ์์น ๋ฐ ๊ฑฐ๋ฆฌ๋ก ์ง์
- ๋ก์ปฌ ์๋ํฌ์ธํธ : ์ ์ด ๋์์ ๊ณ ์ ๋ ์๋ฒ๋ IP ๋จ์๊ฐ ์๋, ํน์ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ํํ๋ ๋
ผ๋ฆฌ์ โ์์
(Job)โ์ ๋ฌถ์์ผ๋ก ์ถ์ํํ์ฌ ์ ์
- Config : ํ๋ ๊ธฐ๋ฅ์ ์ธ์ ๋ฐ ๋งค๊ฐ ๋ณ์๋ฅผ ์ง์ ํ๋ ํ๋. Key-value ํํ๋ก ์ ์ฅ๋์ด ๊ฐ๊ธฐ ๋ค๋ฅธ ํ๋ ํ๋ก๊ทธ๋จ๋ค์ด ์๊ตฌํ๋ ํ๋ผ๋ฏธํฐ์ ํํ๋ ๊ฐ์๊ฐ ๋ฌ๋ผ๋ ์ ์ฐํ๊ฒ ์ ์ฅํ๊ณ ์ฃผ์ ๊ฐ๋ฅํจ
- Disable list : local source endpoint์ ์ ์ฉ๋๋ matcher. ์ ์ฑ
์ ๋นํ์ฑํํ๊ฒ ํด์ฃผ๋ ๋ธ๋๋ฆฌ์คํธ
- ๋๋ฒ๊น ์ ๋ฌธ์ ์ ๊ด๋ จ ์๋ ์ ์ฑ ์ ๋ฐฐ์ ํ์ฌ ์ฉ์ดํจ.
- ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ํด๋น ์ ์ฑ ์์ฒด๋ฅผ ๋ฐ๊พธ๋ฉด ํด๋น ์ ์ฑ ์ด ์ ์ฉ๋ ๋ค๋ฅธ ์๋ฒ์์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์. ๋ ์์ ๋ ์ ์ฑ ์ ์๋ ์ํ๋ก ๋๋๋ฆฌ๋ ๊ณผ์ ์์ ์ํ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์. ์๋ณธ ์ ์ฑ ์ ๋ณด์กดํ ์ํ์์ ํน์ ์๋ํฌ์ธํธ์์๋ง ์์ธ๋ฅผ ์ ์ธํ์ฌ ํ ์คํธ ๋ฒ์๋ฅผ ์ข๊ฒ ์ค์ ํ ์ ์์ผ๋ฉฐ ์์ ํ๊ฒ ๋ณต๊ตฌ ๊ฐ๋ฅ
PolicyEngine

Design : ํธ๋ํฝ ์ ์ด ์ ํ์ฌ ์ง์ฐ ์๊ฐ์ ๋์ ์ผ๋ก ๋ฐ์ํ๋ ๋ฐฉ์์ ์ด๋ก ์ ์ผ๋ก๋ ์ต์ ์ ์ฑ๋ฅ์ ๋ผ ์ ์์ง๋ง ๊ฑฐ๋ํ ๋ถ์ฐ ํ๊ฒฝ์์๋ ์ค์๊ฐ ๋ณํ๊ฐ ์์คํ ์ ์์ธก์ฑ์ ๋จ์ด๋จ๋ ค ์ฅ์ ๋ฐ์์ ์์ธ ํ์ ์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ฌ
โ ๊ด๋ฆฌ์๊ฐ ์ค๊ณํ ํ ํด๋ก์ง์ ๊ธฐ๋ฐํ์ฌ eBPF ํ๋ก๊ทธ๋จ์ ์ผ๊ณ ๋๋ ์ ์ ์ด๊ณ ์์ ์ ์ธ ๋ฐฉ์ ์ฌ
- ๊ณ์ธต์ ์ฃผ์ ํ ๋น์ ํตํด ๋๋ต์ ์ธ ์์น์ฑ๊ณผ ์ด๋ ์ ๋์ ํ๋์จ์ด ํน์ฑ์ ์ถ๋ก ๊ฐ๋ฅํ๊ฒ ํจ
- ์๋ฅผ ๋ค์ด, ํด๋ฌ์คํฐ ์ฃผ์๋ ํน์ ์ ๋์ฌ ๋ด์ ๊ทธ๋ฃนํํ๊ณ ๋์ ์ฃผ์๋ ํ์ ์ ๋์ฌ๋ก ํ ๋น
ํต์ฌ ๋ชจ๋
- ScopeResolver : ์ ์์ค์ ๋ฐ์ดํฐ์ธ IP ์ฃผ์ ์ ๋์ฌ์ ์
๋ ฅ๋ฐ์ ๊ณ ์์ค์ ๋
ผ๋ฆฌ์ ์ ๋ณด์ธ ๊ฐ์ ๋, ๋ฐ์ดํฐ ์ผํฐ, ๋ค๋ฅธ ๋๋ฅ ๋ฑ ์๋์ ๊ฑฐ๋ฆฌ ๊ฐ๋
์ผ๋ก ๋ณํ
- ์ด๋ฐ ๊ฐ๊ฒฐํ ์๋์ ๊ฑฐ๋ฆฌ ํํ์ ์ธ์ ํ ๋ ํ๋ฆฌ์นด ์ ํ์ ์ ์ฉ
- ์ธ์ ํ ๋ ํ๋ฆฌ์นด : ํธ๋ํฝ ์ง์ฐ์ ์ต์ํ ํ๊ธฐ ์ํด ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ๋ณต์ ์๋ฒ
- ์ด๋ฐ ๊ฐ๊ฒฐํ ์๋์ ๊ฑฐ๋ฆฌ ํํ์ ์ธ์ ํ ๋ ํ๋ฆฌ์นด ์ ํ์ ์ ์ฉ
- InfraResolver : ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ดํฐ์ ์ง์ ํต์ ํ์ฌ, ํ์ฌ ์๋ฒ์์ ์ด๋ค ์์
(Job/Service)์ด ์ค์ ๋ก ์คํ ์ค์ธ์ง, ๊ทธ ์์
์ด ์ด๋ค IP๋ฅผ ์ฐ๊ณ ์๋์ง ์ค์๊ฐ์ผ๋ก ์ถ์
- ๊ธฐ์กด์๋ ์๋ก์ด ์ปจํ ์ด๋๊ฐ ์ฒ์ deploy ๋ ๋์๋ง eBPF ์ ์ฑ ์ ๋ฐ์ด ๋ฃ์๋ ๋ฐ NetEdit์ ๋์ ์์ด ํ์ฑํ๋ ์๋น์ค๋ฅผ ์ถ์ ํ์ฌ ์ค๋๋ ์ปจํ ์ด๋์๋ ์๋ก์ด ์๋น์ค๊ฐ ํ์ฑํ๋๋ฉด eBPF ํ๋ก๊ทธ๋จ์ ๋์ ์ผ๋ก load/unload ๊ฐ๋ฅ
The Initializer
๋ชฉ์
- ํ๋ ๊ธฐ๋ฅ์ด ๊ฒฐ์ ๋ก ์ ์์๋ก ์ ์ฉ
- ์ผ๊ด๋ ๋์์ ์ ์งํ๊ณ ํ๋ก๊ทธ๋จ ์คํ ์์๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ์ ์ฌ์ ์ธ ๋ฒ๊ทธ๋ฅผ ์ํํ๋ ๋ฐ ๋์
- ํ๋ ๊ธฐ๋ฅ ๊ฐ์ ์ข ์์ฑ ์ถฉ์กฑ
- ์ ์์ ์ธ ์ฌ์์, ์ถฉ๋ ํ ์ฌ์์, ์ด๊ธฐ ์์ ๊ฐ์ ์์คํ ์ํ ๋์ ์งํ ์ค์ธ ์ฐ๊ฒฐ์ ์ ์ฑ ์ ์ฉ

- ํ๋ก๊ทธ๋จ์ detaching์ unpinningํ์ฌ ์ด์ ์ธ์คํด์ค ์ ๋ฆฌ
- ์๋ก์ด ํ๋ ๊ธฐ๋ฅ loadํ๊ณ pinning
- bpf-iter๋ฅผ ์ฌ์ฉํ์ฌ eBPF ํ๋ก๊ทธ๋จ์ ํน์ ์ ์ฑ ์ ์ฉ
- ์ฌ์์ ๋์ flow๋ค๋ ๋ถ๋ฅ ๊ฐ๋ฅ
MetricExporter ๋ฐ Auditor
MetricExporter
- ์ปค๋์์ eBPF ํ๋ก๊ทธ๋จ์ด ์์ ์ ํ ๋๋ง๋ค eBPF Map์ ์ฑ๊ณต ์คํจ ์ฌ๋ถ๋ฅผ ์นด์ดํฐ ํํ๋ก ๊ธฐ๋ก
- ์ด ์ซ์๋ ๋จ์ํ ๋ฐฐ์ด ํํ์ด๋ฏ๋ก ์ฌ์ฉ์ ๊ณต๊ฐ์์ MetricExporter์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฝ์ด์(Polling)ํ์ฌ ํด์ํ๊ณ ๋ณํ
- NetEdit์ด ์ฌ์์ํ๋ ๋์์๋ ์์งํด์ผ ํ๋ฏ๋ก NetEdit๊ณผ ๋ถ๋ฆฌ
- NetEdit์ ์๋ก์ด ๋คํธ์ํฌ ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค๋ฉด, โ์๋ก์ด BPF ๋งต์ด ์์ฑ๋์์ผ๋ ์ฌ๊ธฐ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ผโ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ MetricExporter ์ธก์ ์ ๋ฌ
Auditor
- ๋ชฉ์ : eBPF ์ ์ฑ ์ด ์ค์ ๋ก ์ ์ฉ๋์ด ์ํ๋ ๋๋ก ์ ์ด๋๋ ์ง ํ์ธ
- โFBFlow ํ๋ ์์ํฌ : ํธ๋ํฝ ์ ์ฒด๋ฅผ ๊ฐ์ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ ํ๊ธฐ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ํจํท ์ํ๋ง
- ํจํท ํค๋ ๋ฟ๋ง ์๋๋ผ ์ ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์ OS ๋ด๋ถ์ ๊ตฌ์ฒด์ ์ธ ์ฐ๊ฒฐ ์ํ(MSS, window ๋ฑ)์ ๋ฌถ์ด์ ์์งํ์ฌ ์ ์ฑ ์ด ์ ์ ์ฉ๋๋ ์ง ํ์ธ
- ์ค๋ฒํค๋ ๋ฌธ์
- FBFlow์ BPF ๋ด์ ์ด๋ฌํ ํ๋๋ฅผ ๊ธฐ๋กํ๋ ๊ฒ์ ๊ฐ๋จ
- MSS ๊ฐ, ์๋์ฐ ํฌ๊ธฐ ๊ฐ์ ํ๋๋ค์ ๋จ์ํ๊ณ ๊ท์น์ ์ธ ์ ์์ด๋ฏ๋ก ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ฑฐ์น ๋ ์ฉ๋์ด ํฌ๊ฒ ์ค์ด๋๋ ์ ์ํธ๋กํผ ํน์ฑ์ด ์์
- MetricExporter : eBPF ์ฝ๋ ์์ฒด๊ฐ ์์คํ ๋ด๋ถ์์ ๋ฐํ์ ์๋ฌ๋ ์ถฉ๋ ์์ด ์ ์์ ์ผ๋ก ์๋ํ๋์ง๋ฅผ ํ๋จ.
- Auditor : ์ ์์ ์ผ๋ก ์คํ๋ eBPF ์ฝ๋๊ฐ ๋์ ํธ๋ํฝ์ ์ฌ๋ฐ๋ฅธ ๊ท์น์ ๋ฐ๋ผ ๋ณํ๋๋์ง๋ฅผ ๊ฒ์ฆ.
Application
Diversity

- 2๊ฐ ์ ์ธํ๊ณ Transport ๊ณ์ธต์์ ๋์
- ์ด์ : ์ ํ ์ฐ๊ตฌ๋ค ๋ณด๋ฉด ์ ์ก ๊ณ์ธต ์ต์ ํ๋ฅผ ํตํด ์ฑ๋ฅ ํฅ์์ด ๋ง์ด ์ผ์ด๋จ
- ํ๋ ๊ธฐ๋ฅ์ ๋ค์์ฑ : ์ ์ก ๊ณ์ธต ๋ด์์๋ ๋ค์ํ ํ
ํฌ์ธํธ์ ๋ถ์ฐฉ
- 1 ~ 5 : ๊ธฐ์กด ์ปค๋ ํต์ ๊ท์น์ ์ฐ์ง๋ง ๋งค๊ฐ๋ณ์๋ฅผ ๋์ ์ผ๋ก ์ค์
- 6 ~ 8 : ์์ ํ ์๋ก์ด ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์์ฑ
- ์ปค๋ ๋ชจ๋์ด ์๋ eBPF ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฑ. ์ด๋
- eBPF ์ด์
- ๋ฆฌ๋ ์ค ์ปค๋ ๋คํธ์ํน ์คํ์ ์ฝ๋๋ฅผ ์ง์ ์์ ํ๊ณ ์ฌ์ปดํ์ผํด์ผ ํ๋ ๊ณ ์ํ ๊ณผ์ ์ ์๋ต
- ๋ฐํ์ ๋์ loadingํ๋ ํน์ฑ์ด ์๋ก์ด ์๊ณ ๋ฆฌ์ฆ์ ์คํ, ํ ์คํธ, ๋ฐฐํฌ์์ ์ ์ฐ์ฑ๊ณผ ์๋๋ฅผ ์ ๊ณต.
- ๋ฌผ๋ฆฌ์ ์ธ ์ปค๋ ํจ์น ๊ณผ์ ์ ๋ฐฐ์ ํจ์ผ๋ก์จ ๋จ์ผ ํ๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ฐ ์์ ํ์ ์๋ชจ๋๋ ์๊ฐ๊ณผ ์ฐ๊ตฌ ์ธ๋ ฅ์ ์ ๊ฐ
- eBPF ์ด์
- ์ปค๋ ๋ชจ๋์ด ์๋ eBPF ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฑ. ์ด๋
TuningFeature Building Blocks

- ๊ฐ๊ฐ์ ํ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ฐ๋ฅ๋ถํฐ ์๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ด ์๋๋ผ, ํ๋ ์์ํฌ ๋ด์ ๋ฏธ๋ฆฌ ๊ตฌ์ถ๋ ๊ธฐ๋ฅ ๋ชจ๋(๋น๋ฉ ๋ธ๋ก)๋ค์ ๋ ๊ณ ๋ธ๋ก์ฒ๋ผ ์กฐ๋ฆฝํ๊ณ ์ฌ์ฌ์ฉํ๋ ๊ตฌ์กฐ๋ก ์ ์ฐ์ฑ๊ณผ ๊ฐ๋ ฅํจ์ ์ค
- ๋น๋ฉ ๋ธ๋ก์ ๋ถ๋ฅ
- Core ๊ธฐ๋ฅ : ๋ชจ๋ ํ๋ ๊ธฐ๋ฅ์์ ์ฌ์ฉํ๋ ์๊ท๋ชจ ๊ธฐ๋ฅ ๊ทธ๋ฃน
- BPFAdapter : eBPF ์ฝ๋๋ฅผ ์์คํ ์ ์ฝ๊ฒ ์ฐ๊ฒฐํด ์ฃผ๋ ์ถ์ํ ์ธํฐํ์ด์ค
- MetricsExporter : ์๋ ์ํ๋ฅผ ์์นํํ์ฌ ๋ชจ๋ํฐ๋งํ๋ ๋๊ตฌ
- A/B ํ ์คํธ ํ๊ฒฝ : ์์ ํ๊ฒ ์ค์ ์๋ฒ์ ์ฝ๋๋ฅผ ์ฌ๋ ค๋ณด๋ ํ
- Transport ๊ธฐ๋ฅ : Transport ํ๋กํ ์ฝ์ ๋ค์ํ ์ธก๋ฉด์ ํ๋ํ๋ ๋ฐ ํ์ํ ๊ณตํต ๊ธฐ๋ฅ
- ScopeResolver๋ RTT ๋ฐ ์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฐ๊ฒฐ ๋ถ๋ฅ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๋ฐ์ดํฐ ์ ์ก ์๋๋ฅผ ์ ์ดํ๋ ๋ค์์ ํ๋ ๊ธฐ๋ฅ์ด ์ด ๋ชจ๋์ ๊ณตํต์ผ๋ก ํธ์ถ
- ์ ํฅ(emerging) ๊ธฐ๋ฅ
- SharedMaps : ์๋ก ๋ค๋ฅธ ํ๋ ๊ธฐ๋ฅ๋ค๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฅ
- WarmReboots : ํ๋ ์์ํฌ ์์ฒด๋ฅผ ์ ๋ฐ์ดํธํ ๋ ๋คํธ์ํฌ ํจํท์ ์ ์ค์ ๋ฐฉ์งํ๋ ๋ฌด์ค๋จ ์ฌ๋ถํ ๊ธฐ๋ฅ
- Core ๊ธฐ๋ฅ : ๋ชจ๋ ํ๋ ๊ธฐ๋ฅ์์ ์ฌ์ฉํ๋ ์๊ท๋ชจ ๊ธฐ๋ฅ ๊ทธ๋ฃน
Developer Productivity Improvement
Transport ํ๋ ๊ธฐ๋ฅ์ ์ด์ ์ ๋ง์ถฐ์ ์ธ ๊ฐ์ง ํ๋ ๊ธฐ๋ฅ๋ฅผ ๊ธฐ์ค์ผ๋ก, ๊ธฐ์กด ๊ฐ๋ฐ ๋ฐฉ์๊ณผ NetEdit ๋์ ์ดํ์ ์์ ์๊ฐ์ ์ ๋ํํ์ฌ ๋น๊ต. 6๊ฐ์ โ ๋ช ์ฃผ ์์ค์ผ๋ก ๊ฐ์
- ์ด์
- ๋จ์ํ ์ถ์ํ ๋ฐ ๋ฐํ์ ํ๋ ์์ํฌ ๋์ : ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ๊ณ ์ํํ ์ปค๋ ์ฝ๋๋ Low-level ์์คํ ์ ์ด ๋ฐฉ์์ ์กฐ์ํ์ง ์๊ณ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฐ๋ฐ
- ๊ณตํต ์ ํธ๋ฆฌํฐ์ ์ฌ์ฌ์ฉ : ํธ๋ํฝ์ ์๋ณํ๊ฑฐ๋ ์ฐ๊ฒฐ ๋ฒ์๋ฅผ ์ง์ ํ๋ ๋๊ตฌ(Scope Resolver)์ฒ๋ผ ๋ชจ๋ ํ๋ ๊ธฐ๋ฅ์ ๊ณตํต์ผ๋ก ์๊ตฌ๋๋ ๋ถ๊ฐ์ ์ธ ์ฝ๋๋ฅผ ๋งค๋ฒ ์๋ก ์์ฑํ ํ์๊ฐ ์์ด ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์ค
- ์๋ํ๋ ํ ์คํธ ๋ฐ ๋ฐฐํฌ ๋งค์ปค๋์ฆ : ๋ฐฐํฌ์ ์ ๋ขฐ์ฑ์ ๋์ด๊ณ ๋ ๋น ๋ฅธ ๋ฐฐํฌ๋ฅผ ๋ณด์ฅ
Design Lessons For Hookpoint Selection
- Control-Overhead Tradeoff : ํ ํฌ์ธํธ๊ฐ Low-level์ด๋ฉด ๋ชจ๋ ํจํท์ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ง๋ง ์ค๋ฒํค๋๊ฐ ์ปค์ง. ํต์ ์ฐ๊ฒฐ์ด ๋งบ์ด์ง๊ฑฐ๋ ์ค์ ์ด ๋ณ๊ฒฝ๋ ๋๋ง ์คํ๋๋ high-level์ ํ ํฌ์ธํธ๋ฅผ ์ค์ ํ๋ฉด CPU ๋ถํ๋ ์ค์ด๋ค์ง๋ง ํต์ ํ ์ ์๋ ๊ถํ์ด ์ ํ
- ์ฑ๊ณต ์ฌ๋ก
- BET-tuner : ์ค์บ๋น์ (scavenger) ํผ์ก ์ ์ด ๊ตฌํ์ ์ ๊ณต.
- ์ด๊ธฐ์๋ ๋คํธ์ํฌ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ํ์ธํ๊ธฐ ์ํด ๋น๋ฒํ๊ฒ ํ์ธํ๊ธฐ ์ํด
sockops์ ๋ถ์ฐฉ๋๋ฉฐ QoS ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ธฐ ์ํด RTT ์ฝ๋ฐฑ์ ์์กด- ๊ธฐ์กด์ ๋์ ํ๋ฆ
- ์ฐ๊ฒฐ ์๋ฆฝ ์ eBPF
sockopsํ๋ก๊ทธ๋จ์ ํธ์ถ - eBPF ํ๋ก๊ทธ๋จ์ด ํด๋น ์์ผ์ ๋ํด RTT ๋ณ๊ฒฝ์ ์ฝ๋ฐฑ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋๋ก ์ค์
- ACK ์์ ์ ๋ง๋ค RTT ๋ค์ ๊ณ์ฐ. eBPF ํ๋ก๊ทธ๋จ์ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถ
- eBPF ํ๋ก๊ทธ๋จ์ด ์ง์ฐ ์๊ฐ, ๋์ญํญ ์ํ๋ฑ์ ํ๊ฐํ ํ
bpf_setsockoptํฌํผ ํจ์๋ฅผ ํธ์ถํ์ฌ ์์ผ์ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ด๋ ๊ด๋ จ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ณ๊ฒฝ - 3-4 ๋ฐ๋ณต
- ์ฐ๊ฒฐ ์๋ฆฝ ์ eBPF
- ๊ธฐ์กด์ ๋์ ํ๋ฆ
- ์ฌ์ ๋์์ ์ธ
socksetopts๋ก ๋ณ๊ฒฝํ์ฌ ์์ ๋ ๋๋ง ํธ๋ฆฌ๊ฑฐ ๋์ด ์ต๋ 200๋ฐฐ ํธ์ถ์ด ๊ฐ์- ๋์ ํ๋ฆ
- ์ฌ์ฉ์ ๊ณต๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ด QoS๋ฅผ ๋ฎ์ถ๊ฑฐ๋ ์ค์ ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด
setsockopt()์์คํ ์ฝ์ ํธ์ถ - eBPF
socksetoptsํ๋ก๊ทธ๋จ ํธ๋ฆฌ๊ฑฐ - eBPF ํ๋ก๊ทธ๋จ์ด ์์ฒญ๋ ์ต์ ์ ๋ถ์ํ๊ณ , ํน์ ์กฐ๊ฑด(์: ๋ฐฑ๊ทธ๋ผ์ด๋ ํธ๋ํฝ)์ ๋ง์กฑํ ๊ฒฝ์ฐ ์์ผ์ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ค์บ๋น์ (Scavenger) ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ณ๊ฒฝ
- ์ฌ์ฉ์ ๊ณต๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ด QoS๋ฅผ ๋ฎ์ถ๊ฑฐ๋ ์ค์ ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด
- ๋์ ํ๋ฆ
- ์ด๊ธฐ์๋ ๋คํธ์ํฌ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ํ์ธํ๊ธฐ ์ํด ๋น๋ฒํ๊ฒ ํ์ธํ๊ธฐ ์ํด
- ๋ฐฐ๊ฒฝ ์ง์
- scavenger ํผ์ก ์ ์ด : ๋์ญํญ ์ค ์์ฌ ๋์ญํญ๋ง์ ํ์ฉํ์ฌ ๊ธฐ๋ณธ ํธ๋ํฝ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ผ์น์ง ์๋ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ. ๋์ญํญ ๊ฒฝํฉ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์ฆ์ ์ ์ก๋ฅ ์ ๋ฎ์ถค
sockops: ์์ผ ์์ค์ ์ด๋ฒคํธ. TCP ์ํ ๋ณํ ๋ฐ ์ฃผ์ ์ด๋ฒคํธ(TCP ์ฐ๊ฒฐ ์๋ฆฝ ๋ฐ ์ข ๋ฃ, ์ํ ์ ํ, ์ฌ์ ์ก ํ์์์) ๋ฐ์์ eBPF ํ๋ก๊ทธ๋จ์ด ํธ์ถ.- RTT ์ฝ๋ฐฑ : RTT ๊ฐ์ด ๊ณ์ฐ๋๊ฑฐ๋ ๊ฐฑ์ ๋ ๋๋ง๋ค ํธ์ถํ๋๋ก ์ ์๋ ํจ์.
sockopsํ๊ฒฝ์์๋ ํจํท์ ๋ํ ACK์ ์์ ํ๊ณ RTT๋ฅผ ์ฐ์ถํ๋ ๋งค์์ ๋ง๋ค ์ฝ๋ฐฑ
socksetopts์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ผ์ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ ์์คํ ์ฝ์ ํธ์ถํ ๋ eBPF ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ ํ ํฌ์ธํธ
- BET-tuner : ์ค์บ๋น์ (scavenger) ํผ์ก ์ ์ด ๊ตฌํ์ ์ ๊ณต.
- ์คํจ ์ฌ๋ก : RWND ํฌ๊ธฐ๋ฅผ ์กฐ์ํ๋ ๊ณผ์
- ๊ธฐ์กด์๋ TC ํ ํฌ์ธํธ๋ฅผ ํตํด ๋ชจ๋ ๊ฐ๋ณ ํจํท์ ๋ํด eBPF ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ ํจํท๋ง๋ค RWND๋ฅผ ์ฌ์์ฑ โ CPU ์ค๋ฒํค๋ ๋ฐ์
- sockops๋ก ์ ํ (์ฐ๊ฒฐ ์๋ฆฝ, ์ํ ๋ณ๊ฒฝ ๋ฑ)์์๋ง ํธ๋ฆฌ๊ฑฐ
- sockops ํธ๋ฆฌ๊ฑฐ๋ก eBPF ํ๋ก๊ทธ๋จ์ด ์คํ๋์ด RWND๋ฅผ ์์ฑํด๋ ๊ทธ ์ดํ์
tcp_select_window()์ ๊ฐ์ ์ปค๋ ๋ด๋ถ ํจ์๋ฅผ ํตํด RWND ๊ฐ์ ์ฌ์์ฑ. - ์ด๋ฅผ ๋ง์ผ๋ ค๋ฉด ์ปค๋์ ํต์ฌ TCP ์์ค ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ ๋ฐ ์ปค๋ ์ฝ๋ ์์ ์์ด ์์ ํ๊ฒ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ค๋ eBPF์ ์กด์ฌ ์๋ฏธ๋ฅผ ๋ถ์
- TC(Traffic Control) ํ
ํฌ์ธํธ๋ ํจํท์ด ์์ฑ๋์ด ๋คํธ์ํฌ ์นด๋(NIC)๋ก ๋ด๋ ค๊ฐ๊ธฐ ์ง์ (qdisc)์ ์์นํ๊ธฐ ๋๋ฌธ์
tcp_select_window()ํ์ ๋ฎ์ด์์ธ ์ ๋ฐ์ ์์
- sockops ํธ๋ฆฌ๊ฑฐ๋ก eBPF ํ๋ก๊ทธ๋จ์ด ์คํ๋์ด RWND๋ฅผ ์์ฑํด๋ ๊ทธ ์ดํ์
- ๊ตํ
- ์๊ตฌ๋๋ ์ ํ์ฑ์ ๋ง์กฑํ๊ณ ํ์ํ ๋์์ ์ ๊ณตํ๋ ์ง
- ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ธก์
- eBPF ์ธํฐํ์ด์ค๊ฐ ์์กดํ ์ ์๋ ์ปค๋ ๋ด๋ถ ๊ธฐ๋ฅ์ ๋ํ ์ดํด๊ฐ ํ์
- 1๋ฒ์ ๊ณต์ ๋ฌธ์๊ฐ ์๊ณ 2๋ฒ์ ๊ด์ธก ๋๊ตฌ๊ฐ ์กด์ฌํ์ง๋ง ์ปค๋ ๋ด๋ถ ์ํฅ์ ๋ฉ๋ด์ผ์ด ์๊ธฐ ๋๋ฌธ์ ๊น์ด ์ดํดํด์ผ ํจ
Evaluation
Deployment Characterization
- ์ธํ๋ผ ๋ฐฐํฌ ํํฉ : ๋ฐ์ดํฐ ์ผํฐ ์๋ฒ์ ์ฝ 98.4%์ NetEdit์ด ์ค์น๋จ.
- ํน์ ์ปค๋ ํจ์น์ ๋ฐ๋ฅธ ๋ฒ์ ์ ์ฝ์ผ๋ก ์ธํด 100% ๋ฐฐํฌ์๋ ๋๋ฌํ์ง ๋ชปํจ.
- ํ๋ ๊ธฐ๋ฅ ๋ถ๋ฅ
- ์ ์ฒด ์ ์ฉ ๊ทธ๋ฃน (100%): NetEdit์ด ํ์ฑํ๋ ๋ชจ๋ ์๋ฒ์์ ์ฌ์ฉ๋๋ ํ์ ์ ์ก ๊ธฐ๋ฅ (์: InitCWND, BET).
- ์นด๋๋ฆฌ(Canary) ๊ฒ์ฆ ๊ทธ๋ฃน (10%): ์๋ก์ด NetEdit ๊ธฐ๋ณธ ์์๋ฅผ ํ ์คํธํ๊ธฐ ์ํด ์๊ท๋ชจ ์๋ฒ์๋ง ํ์ฑํ๋๋ ๋จ์ผ ํน์ ๊ธฐ๋ฅ (Touchstone)
- ํน์ ๋ชฉ์ ๊ทธ๋ฃน (2% ๋ฏธ๋ง): ํน์ ์๋น์ค ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ๊ทน์์์ ์๋ฒ์๋ง ์ ํ์ ์ผ๋ก ๋ฐฐํฌ๋๋ ํ์ ๊ธฐ๋ฅ (์: MSS Tuner).
Performance Benefits of tuningFeatures
- NetEdit ํ์ฑํ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ด์
- ์ง์ฐ ์๊ฐ ๊ฐ์ : ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ, ์๋์ฐ ํฌ๊ธฐ, ํจํท ํฌ๊ธฐ ์กฐ์ ์ ํตํด ์คํ ๋ฆฌ์ง ๋ฐ ๊ด๊ณ ์๋น์ค ๋ฑ์ ๊ผฌ๋ฆฌ ์ง์ฐ ์๊ฐ(Tail latency) ์ต์ ํ.
- ์ธํ๋ผ ํจ์จ์ฑ ๊ทน๋ํ: ๋คํธ์ํฌ ๋ฒ์คํธ ๋ณ๋ชฉ ์์ด ํน์ ์คํ ๋ฆฌ์ง ์๋ฒ์ ์ ์ฌ๋(Load)์ 2๋ฐฐ ์ฆ๊ฐ์ํด. ์ฐ์ ์์๊ฐ ๋ฎ์ ๋ฆฌ์ ๊ฐ ํธ๋ํฝ์ ๊ฐ๋ฑ ์ฒ๋ฆฌํ์ฌ ๋๊ท๋ชจ ๋น์ฉ ์ ๊ฐ ๋ฌ์ฑ.
- ์ด์ ์์ ์ฑ: ๋คํธ์ํฌ ํจํท ์ฌ์ ์ก์ ์ ์๋ฏธํ ๊ฐ์๋ฅผ ํตํด ์์ ํ์ฉ๋๋ฅผ ๋์ด๊ณ , ์ด์ ๊ฒฝ๊ณ (Alarm) ๋ ธ์ด์ฆ๋ฅผ ์ค์ฌ ๋ฌธ์ ํด๊ฒฐ(Troubleshooting) ํจ์จ์ฑ ์ฆ๋.
- NetEdit ๋นํ์ฑํ ์ ๋ฐ์ํ๋ ๊ณ์ธต๋ณ ์ฑ๋ฅ ์ ํ
- ์๋น์ค ๊ณ์ธต (Service Layer):
- ML ์ถ๋ก : ํ๊ท QPS(์ด๋น ์ฟผ๋ฆฌ ์) 29% ํ๋ฝ, 99๋ถ์(Tail) ์งํ์์ 59.21% ๊ธ๊ฐ.
- ์คํ ๋ฆฌ์ง : ํ๊ท ๋ธ๋ก ์ฝ๊ธฐ ์ฑ๋ฅ 37.14% ์ ํ, 99๋ถ์ ์งํ์์ 65.85%์ ์น๋ช ์ ์ฑ๋ฅ ํ๋ฝ.
- ํธ์คํธ ๊ณ์ธต
- ์ ์ฒด ํธ๋ํฝ ์ฌ์ ์ก ๋ฐ์ 4.5๋ฐฐ ์ฆ๊ฐ.
- ํ์์์(Timeout)์ผ๋ก ์ด๋ฐ๋ ์น๋ช ์ ์ฌ์ ์ก 29๋ฐฐ ํญ๋ฑ.
- ์ /๋ค์ด๋งํฌ ์ฒ๋ฆฌ๋(Throughput) 10% ๊ฐ์.
- ๋คํธ์ํฌ ๊ณ์ธต
- ๋ฐ์ดํฐ ์ผํฐ์ ToR(Top-of-Rack) ์ค์์น ๋ค์ด๋งํฌ์์ ํผ์ก์ผ๋ก ์ธํ ํจํท ํ๊ธฐ(Congestion discards)๊ฐ 363.7% ํญ์ฆ.
- ์๋น์ค ๊ณ์ธต (Service Layer):
Overhead
- Control Plane
- ์์ ์ ์ ์จ: CPU ํ๊ท 0.00023% (95๋ฐฑ๋ถ์์ 0.00026%), ๋ฉ๋ชจ๋ฆฌ ํ๊ท 26MB (95๋ฐฑ๋ถ์์ 60.5MB)
- ํน์ง: ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ ์ง์์ ์ํ ์ต์ํ์ ๊ธฐ๋ฅ๋ง์ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์ด ์ฌ์ฉ์ ๊ณต๊ฐ(userspace)์์ ๊ทน๋๋ก ๋ฎ์ ๋ฆฌ์์ค ์ค๋ฒํค๋๋ฅผ ์ ์งํจ.
- Data Plane
- ํํ๋ฆฐํธ ์ต์ํ: ๋๊ท๋ชจ ํ๋ก๋์
ํ๊ฒฝ์ ์ ์ฝ์ ๋ง์ถ์ด eBPF ํ๋ก๊ทธ๋จ์ ๋ฆฌ์์ค ์๋ชจ๋ฅผ ์๋์ ์ผ๋ก ๊ฒฝ๋ํ.
- ํ ํ๋ฆฐํธ : ํ๋์จ์ด๋ ์ํํธ์จ์ด๊ฐ ์ค์ ๋ก ์ด์๋๋ ๊ณผ์ ์์ ์ ์ ํ๋ ์์์ ์ด๋ (๋ฌผ๋ฆฌ์ ๊ณต๊ฐ, ์ ๊ธฐ, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, ๋์คํฌ ๊ณต๊ฐ, CPU ๋ฑ๋ฑ)
- ์ต์ ํ ๊ธฐ๋ฒ: Shared maps ๋ฐ Lazy loading์ ์ ์ฉํ์ฌ ๋งต์ ์ฌ์ฌ์ฉํ๊ณ ์ค๋ณต ๊ธฐ๋ฅ์ ๋ฐฉ์งํ๋ฉฐ, ๋งค์นญ๋๋ ์ ์ฑ ์ด ์กด์ฌํ ๋๊น์ง ๋ก๋ฉ์ ์ฐ๊ธฐํ์ฌ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ ์ ๋ฅผ ๋ช ์์ ์ผ๋ก ๊ฐ์์ํด.
- ํํ๋ฆฐํธ ์ต์ํ: ๋๊ท๋ชจ ํ๋ก๋์
ํ๊ฒฝ์ ์ ์ฝ์ ๋ง์ถ์ด eBPF ํ๋ก๊ทธ๋จ์ ๋ฆฌ์์ค ์๋ชจ๋ฅผ ์๋์ ์ผ๋ก ๊ฒฝ๋ํ.
- Lazy Loading ๋น์ฉ ์ ๊ฐ ํจ๊ณผ
- ํจ์จ์ฑ ์ฆ๋ช : ์๊ตฌ๋๋ eBPF ํ๋ก๊ทธ๋จ๋ง ์์คํ ์ Attachํ๋ ์ง์ฐ ๋ก๋ฉ ๊ธฐ์ ์ ์ฑ๋ฅ ์ด์ ์ ๊ต์ฐจ ๊ฒ์ฆํจ.
- ์ฑ๋ฅ ์งํ: 10๊ฐ ๋ฐ์ดํฐ ์ผํฐ์ ๊ฑธ์น ์คํ ๊ฒฐ๊ณผ, ์ง์ฐ ๋ก๋ฉ์ด ์ ์ฉ๋ eBPF ํ๋ก๊ทธ๋จ์ ๋ฏธ์ ์ฉ ํ๋ก๊ทธ๋จ ๋๋น ํ๊ท 14% (99๋ฐฑ๋ถ์์ ๊ธฐ์ค 27%)์ CPU๋ง์ ์๋นํ์ฌ ๊ด๋ชฉํ ๋งํ ์์ ์ ๊ฐ ํจ๊ณผ๋ฅผ ๋ฌ์ฑํจ.
EXPERIENCES,OUTAGES,ANDOPEN
SOURCE
Deployment Experiences
๋๊ท๋ชจ ํ๋ก๋์ ํ๊ฒฝ์์์ eBPF ํ๋ก๊ทธ๋จ ๋ฐฐํฌ ๊ฒฝํ
- ๋ฌธ์ ์ํฉ
- ๊ฒ์ฆ๊ธฐ๊ฐ ์ปค๋ ์ถฉ๋ ๋ฐฉ์ง๋ฅผ ๋ณด์ฅํด๋ ๊ธฐ์ ์ปค๋ ์ธํฐํ์ด์ค์ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ์ฌ ๋๊ท๋ชจ ํ๋ก๋์
์ฅ์ ๋ฅผ ์ผ์ผํฌ ์ ์์
- ๊ธฐ์ ์ปค๋ ์ธํฐํ์ด์ค์ ๋ฒ๊ทธ : logic error, race condition ๊ฐ์ ํ์
- ๋ง์ดํฌ๋ก์๋น์ค ํ
์คํธ ํตํฉํ๊ณ ์ ํจ
- eBPF์ ์ปค๋์ ๊ฐํ ๊ฒฐํฉ์ผ๋ก ๊ธฐ์กด ๋ง์ดํฌ๋ก์๋น์ค ํ ์คํธ ๋ฐฉ๋ฒ๋ก (A/B ํ ์คํธ, cgroups ๊ธฐ๋ฐ ๊ฐ์ํ ๊ฒฉ๋ฆฌ)์ ์ฌ์ฌ์ฉํ ์ ์์
- BPP-TCP-CCA์ ๊ฐ์ ํน์ ์ปค๋ ๊ณ์ธต์์๋ ๋์ผํ ์ด๋ฆ์ eBPF ํ๋ก๊ทธ๋จ์ ๋ํ ๋ค์ค ์ธ์คํด์ค ๊ฒฉ๋ฆฌ๋ฅผ ์ง์ํ์ง ์์ ์ถฉ๋์ด ๋ฐ์ํจ
- ๊ฒ์ฆ๊ธฐ๊ฐ ์ปค๋ ์ถฉ๋ ๋ฐฉ์ง๋ฅผ ๋ณด์ฅํด๋ ๊ธฐ์ ์ปค๋ ์ธํฐํ์ด์ค์ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ์ฌ ๋๊ท๋ชจ ํ๋ก๋์
์ฅ์ ๋ฅผ ์ผ์ผํฌ ์ ์์
- ํด๊ฒฐ ๋ฐฉ์
- ๋จ์ ํ
์คํธ
- ํ๋ก๊ทธ๋จ์ด ์ค์ ๋ก ๋ก๋๋๋ ์ง ํ์ธ. packetdrill์ ์ด์ฉํ์ฌ ๊ฐ์ง ํจํท์ ์์๋ณด๋ฉฐ ์๋ฎฌ๋ ์ด์ . ์นด์ดํฐ ๋ฐ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์ ๊ฐ์ eBPF ์ธก์ ๊ฐ ๋ถ์์ ํตํด ๋ก๋ ๋ฐ ๋์์ ์ ํจ์ฑ์ 1์ฐจ ๊ฒ์ฆํจ.
- ๋ค์ํ ํ๋ก๋์
์์
๋ถํ์ ํจ๊ป ํ๋ก๋์
ํ๊ฒฝ์์ ๋จ์ ํ
์คํธ.
- ๊ธฐ์กด ๋ฐฉ์ : cgroups์ ๊ฐ์ ๊ฐ์ํ ๊ธฐ์ ์ ํตํด ๋์ผํ ๋ง์ดํฌ๋ก ์๋น์ค์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๊ฒฉ๋ฆฌ
- ์ด์
- ๋์ผํ ์๋น์ค์์ ์์ ๋ ๊ธฐ์กด ๋ฒ์ ๊ณผ ์ ๊ท ๋ฒ์ ์ ๋์์ ์คํํ๋ฉด์ ๋น๊ต ๊ฒ์ฆ์ด ๊ฐ๋ฅ
- ๊ฒฉ๋ฆฌ๋ฅผ ํด๋์ผ๋ฉด ํฌ๋์, ๋ฌดํ ๋ฃจํ ๋ฑ์ด ๋ฐ์ํด๋ ํธ์คํธ ์ ์ฒด๋ก ์ ํ๋๋ ๊ฒ์ ์ฐจ๋จ
- ์๋ฅผ ๋ค์ด ๋ฌดํ๋ฃจํ์ ๋น ์ ธ ํด๋น CPU ์ ์ ์จ์ ๋ ์ ํ๋ ค๊ณ ์๋ํ์ง๋ง ํด๋น ์ธ์คํด์ค์ ํ ๋น๋ ์ฌ์ฉ๋์ด ์ ์๋์ด ์์ด ํธ์คํธ ์ ์ฒด์ ์ํฅ์ ๋ฐ์ง ์์
- ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ตฌ์ถํ๋ ๊ฒ ๋ณด๋ค ์ค๋ฒํค๋๊ฐ ์ต์ํ
- ํ๊ณ : ๋์ผํ eBPF ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ์ธ์คํด์ค์ ๋ํ ๊ฒฉ๋ฆฌ ๋ฐ ๊ฐ์ํ๋ฅผ ์ง์ํ์ง ์์
- ์์ : BPF-TCP-CCA ๋ถ์ฐฉ ์ง์ ์์๋ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ์ฌ๋ฌ eBPF ํ๋ก๊ทธ๋จ์ ์ง์ํ์ง ์์ (TC, XDP๋ ์ง์)
- ์ด์
- ํด๊ฒฐ ๋ฐฉ์
- ๋์ผํ ํธ์คํธ์์ ํ
์คํธ์ฉ๊ณผ ์ด์์ฉ eBPF ํ๋ก๊ทธ๋จ์ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด ๋๋ฏธ cgroups์ ์ฌ์ฉ
- ํ๋ก์ธ์ค ๊ทธ๋ฃน ๋จ์๋ก ์คํ ๋ฒ์๋ฅผ ์ ํํ์ฌ ์ด์ ํธ๋ํฝ์ด ์ ์ ๋์ง ์๋ ๋๋ฏธ ๊ทธ๋ฃน์ ๋ง๋ฆ
- ํ ์คํธ์ฉ eBPF๋ ์ด ๋๋ฏธ ๊ทธ๋ฃน์๋ง attach
- ๊ฒฉ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ ํ
ํฌ์ธํธ์ ๊ฒฝ์ฐ์๋ ๋ก๋ ์ ์ด์ ๋ฒ์ ๊ณผ์ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ํ
์คํธ์ฉ eBPF ํ๋ก๊ทธ๋จ์ ์ด๋ฆ์ ์ฌ์์ฑ(Rewrite)ํ๋ ๊ฒ์ด ํฌํจ
- ์ปค๋ global ๋ฉ์ปค๋์ฆ์ ๋ณ๊ฒฝํ์ฌ ๊ทธ๋ฃน ๋จ์ ๋ถํ ์ด ๋ถ๊ฐ๋ฅ
- ์ปค๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๋ eBPF ํ๋ก๊ทธ๋จ์ โ์ด๋ฆโ์ผ๋ก ์๋ณ. ์ด์ ๋ฒ์ ๊ณผ ํ ์คํธ ๋ฒ์ ์ด ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง๋ฉด ์ปค๋์ด ์ค๋ณต ๋ฑ๋ก์ ๊ฑฐ๋ถ
- eBPF ํ๋ก๊ทธ๋จ์ ์ปค๋์ ๋ก๋ํ๊ธฐ ์ง์ , ๋ด๋ถ ์๋ณ์ ์ด๋ฆ์ ๊ฐ์ ๋ก ๋ณํ(์:
bbrโbbr_test)ํ์ฌ ๋ณ๋ ฌ ํ ์คํธ ์ํ ๊ฐ๋ฅ
- ๋์ผํ ํธ์คํธ์์ ํ
์คํธ์ฉ๊ณผ ์ด์์ฉ eBPF ํ๋ก๊ทธ๋จ์ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด ๋๋ฏธ cgroups์ ์ฌ์ฉ
- ๊ธฐ์กด ๋ฐฉ์ : cgroups์ ๊ฐ์ ๊ฐ์ํ ๊ธฐ์ ์ ํตํด ๋์ผํ ๋ง์ดํฌ๋ก ์๋น์ค์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๊ฒฉ๋ฆฌ
- ๋จ์ ํ
์คํธ
โ ์ ์๋ ๋์ ํ๋ก๊ทธ๋จ ๋ณ๊ฒฝ ๋ฐ ๊ฒฉ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ํตํด ์์คํ ์์ ์์ด ๊ธฐ์กด NetEdit์ A/B ํ ์คํธ ์ธํ๋ผ๋ฅผ ์จ์ ํ ํ์ฉ. ํ๋ก๋์ ์ํฌ๋ก๋์ ๋ณ๋ ฌ๋ก ์์ ํ eBPF ํ ์คํธ๋ฅผ ์ํํ๋ ํ๊ฒฝ์ ๊ตฌ์ถ
Production Outages

Failure Classification
- ์ปค๋/์ธํ๋ผ ๋ฒ๊ทธ
- ์ปค๋-eBPF ์ธํฐํ์ด์ค ๋ฒ๊ทธ : ์์์น ๋ชปํ ์ฝ๋ ์คํ ํ๋ฆ(์: ๋ฌดํ ๋ฐ๋ณต ํธ์ถ)์ด ๋ฐ์ํ๋ฉด, ์ปค๋์ด ์ค์๋ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ณ ๊ฐ๋๊ณ ์์คํ ์ด ๋ฉ์ถ๋ ํ์
- ์ปค๋ ์ด์์ฑ ๋ฒ๊ทธ : ์ด์์ฒด์ (๋ฆฌ๋ ์ค ์ปค๋)์ ๋ฒ์ ์ ๋ฐ๋ผ eBPF๋ฅผ ์ง์ํ๋ ๋ฐฉ์์ด ๋ฌ๋ผ ์๊ธฐ๋ ๋ฌธ์ . ๋์ผํ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ผ๋ ์ด๋ค ๋ฒ์ ์์๋ ์ ์ ์๋ํ๊ณ , ์ด๋ค ๋ฒ์ ์์๋ ์์คํ ์ ์ฒด๊ฐ ๋ค์ด(์ปค๋ ํจ๋)๋๋ ํ์
- ๊ธฐ๋ฅ ๊ฐ ์ํธ์์ฉ ๋ฒ๊ทธ : ๋์ผํ ์คํ ์ง์ (ํ ํฌ์ธํธ)์ ์ฌ๋ฌ ๊ฐ์ eBPF ํ๋ก๊ทธ๋จ์ด ๋์์ ์ฐ๊ฒฐ๋ ๋ ๋ฐ์ํฉ๋๋ค. ํ๋ก๊ทธ๋จ A์์ ๋ฐ์ํ ์ฌ์ํ ์ค๋ฅ๊ฐ ํ๋ก๊ทธ๋จ B์ ์คํ ์์ฒด๋ฅผ ๊ฐ๋ก๋ง์ ์ฐ์์ ์ธ ์ฅ์ ๋ฅผ ์ผ์ผํค๋ ํ์
- ๊ธฐํ ์ธํ๋ผ ์ข
์์ฑ : eBPF ํ๋ก๊ทธ๋จ ์์ฒด๊ฐ ์๋๋ผ, ์ด๋ฅผ ๊ตฌ๋ํ๋ ์ฃผ๋ณ ํ๊ฒฝ(์๋ํ ์คํฌ๋ฆฝํธ, ๊ธฐ์กด ์ค์ , ํธ๋ํฝ ํํ ๋ฑ)์ ๋ณํ๋ ์ค์ ์ค๋ฅ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์
- ์๋ํ ์คํฌ๋ฆฝํธ์ ์ค๋ฅ๋ก ์ธํด pinned objects๋ฅผ ์ํ eBPF ํ์ผ ์์คํ
(
/sys/fs/bpf)์ด ์ด์ค ๋ง์ดํธ๋์ด, NetEdit์ ์ด๊ธฐํ ํ๋ก๊ทธ๋จ์ด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ๋ ค๊ณ ํ ๋ ์ด์ ๊ฐ์ฒด๊ฐ ์ฌ์ ํ ์ฐ๊ฒฐ๋์ด ์์ด ์ด์ ๊ฐ์ฒด์ ๊ณ ์ ์ ํด์ (unpin)ํ ์ ์๊ฒ ๋๋ ๋ฒ๊ทธ
- ์๋ํ ์คํฌ๋ฆฝํธ์ ์ค๋ฅ๋ก ์ธํด pinned objects๋ฅผ ์ํ eBPF ํ์ผ ์์คํ
(
Lessons & Future Work
- ํตํฉ ํ ์คํธ ๋์ : ๊ฐ๋ณ ๊ธฐ๋ฅ ๊ฒ์ฌ(์ ๋ ํ ์คํธ)์ ์ค์ ํ๊ฒฝ ํ ์คํธ(A/B ํ ์คํธ) ์ฌ์ด์, ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ๋์์ ๋์ํ ๋ ์๋ก ์ถฉ๋ํ์ง ์๋์ง ํ์ธํ๋ ๋จ๊ณ๋ฅผ ์ถ๊ฐ. ์ด๋ ์ค์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ ๊ฐ์ง ๋ฐ์ดํฐ(์๋ ํธ๋ํฝ)๋ฅผ ํ์ฉํฉ๋๋ค.
- ์ถ๊ฐ ์ฐ๊ตฌ
- ํผ์ง(Fuzzing) ๊ธฐ๋ฐ ํ ์คํธ: ์์คํ ์ ๋ฌด์์ ๋ฐ์ดํฐ๋ฅผ ๋๋์ผ๋ก ์ฃผ์ ํ์ฌ, ํ์์๋ ๋ฐ๊ฒฌํ๊ธฐ ํ๋ ๊น์ ๊ณณ์ ์ปค๋ ๋ฒ๊ทธ๋ฅผ ๊ฐ์ ๋ก ๋์ง์ด๋ด๋ ๊ฐ๋ ฅํ ํ ์คํธ ๋๊ตฌ๊ฐ ํ์.
- ๋์ ๊ณ์ธก(Dynamic Instrumentation): ํ๋ก๊ทธ๋จ๋ค์ด ์๋ก ์ด๋ป๊ฒ ์ํฅ์ ๋ฏธ์น๋์ง ์ค์๊ฐ์ผ๋ก ์ถ์ ํ๊ณ ์๋์ผ๋ก ๊ธฐ๋ก(๋ก๊ทธ)์ ๋จ๊ธธ ์ ์๋ ์ ๋ฐํ ๋ถ์ ๋๊ตฌ๊ฐ ํ์.
Opensource and Community Engagement
NetEdit์ ๋ฐ์ดํฐ ํ๋ฉด ๊ตฌ์ฑ ์์๋ฅผ ๋ฆฌ๋ ์ค ์ปค๋์ ๊ณต์ ํตํฉ(Upstream)ํ๊ณ ์คํ์์ค์ ๊ธฐ์ฌ
์ปค๋ ๊ธฐ๋ฅ ๋ ธ์ถ ํ๋ (Exposing more functionality)
- ์ปค๋ ํจ์ ํฌ์ธํฐ๋ฅผ ํตํด eBPF ๋ด์์ TCP ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ(CCA)์ ๊ตฌํํ ์ ์๋๋ก
struct_ops์ธํฐํ์ด์ค๋ฅผ ๋์ . kfunc(์ปค๋ ๋์ ์ฌ์ ์ ๋ฐ ์กฐ์ ) ์ธํฐํ์ด์ค์bpf_link(์์์ ์ ๊ทธ๋ ์ด๋ ์ง์)๋ฅผ ์ถ๊ฐํ์ฌ ์ปค๋ ๊ธฐ๋ฅ์ ํ์ฅ.
โ ์ปค๋ ์ฐํ(Kernel bypass) ๊ธฐ๋ฒ์ ์ฌ์ฉํ๊ฑฐ๋ ์ปค๋ ๊ณต์ ๋ฐฐํฌ ์ผ์ ์ ์ข ์๋์ง ์๊ณ ๋, CCA๋ฅผ ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ์ทจ๊ธํ์ฌ ์ ์ฐํ๊ณ ๋ฐ๋ณต์ ์ธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅ.
์ปค๋ ํ๋ฆฌ๋ฏธํฐ๋ธ ๊ตฌ์กฐ ๊ฐ์ (Improve kernel primitives)
- ์ปค๋ ๋ด ์ฝ๋ ์ค๋ณต์ ๋ฐฉ์งํ๋ฉด์ NetEdit์ eBPF ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉ์ ๊ณต๊ฐ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๋๋ฑํ ๋คํธ์ํฌ ์คํ ์ ์ด ๊ถํ์ ๊ฐ์ง ์ ์๋๋ก
bpf_setsockopt()ํฌํผ ํจ์๋ฅผ ๋ฆฌํฉํ ๋ง - ๋คํธ์ํฌ ์ ์ฑ
์ ์๊ธ ์ ์ฉ์ ์ง์ํ๊ธฐ ์ํด
bpf-tcp-iter์bpf_setsockopt๊ธฐ๋ฅ์ ์ถ๊ฐํ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋์ญ ์ธ(out-of-band) ๋ฐฉ์์ผ๋ก ๊ธฐ์กด TCP ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋ ์๋ก์ด ๋ฉ์ปค๋์ฆ์ ๊ตฌํ.
Leave a comment