I. 개요
eBPF(extended Berkeley Packet Filter)란 리눅스 커널 내에서 사전 검증된 바이트코드 프로그램을 안전하게 실행할 수 있는 인커널 가상 머신(in-kernel VM)이다. 커널 소스 수정·모듈 재컴파일 없이 커널 훅(kprobe, tracepoint, socket 등)에 사용자 정의 로직을 동적으로 삽입하여 네트워킹·보안·성능 관찰을 수행한다. 커널 4.x 이상부터 지원되며, eBPF 검증기(Verifier)가 무한 루프·메모리 범위 초과를 컴파일 시 차단해 커널 안전성을 보장한다.
II. 기존 커널 모듈과 eBPF 비교
| 구분 | 커널 모듈(LKM) | eBPF |
|---|---|---|
| 안전성 | 버그 시 커널 패닉 가능 | Verifier가 사전 안전성 검증 |
| 배포 | 커널 버전 종속 재컴파일 | CO-RE(Compile Once, Run Everywhere) |
| 동적 적용 | 리부팅·insmod 필요 | 런타임 동적 로드·언로드 |
III. 주요 활용 분야
| 분야 | 기술/도구 | 설명 |
|---|---|---|
| 네트워킹 | XDP, Cilium, Katran | NIC 드라이버 수준에서 패킷 처리(DDoS 방어, L4 LB). iptables 대비 10~100배 성능 |
| 보안 | Falco, Tetragon | 시스템콜 실시간 감시·이상 행위 탐지(Runtime Security), 컨테이너 탈출 탐지 |
| 관찰가능성 | BCC, bpftrace, Pixie | 커널·애플리케이션 레이턴시·CPU 프로파일링. 코드 수정 없는 무에이전트 트레이싱 |
| 서비스 메시 | Cilium Service Mesh | 사이드카 프록시 없이 커널 레벨 서비스 메시 구현. Istio 대비 오버헤드 대폭 감소 |
IV. eBPF 프로그램 실행 흐름
① C 코드 작성 → ② LLVM/Clang으로 BPF 바이트코드 컴파일 → ③ bpf() 시스템콜로 커널에 로드 → ④ Verifier 안전성 검증(타입·경계 검사) → ⑤ JIT 컴파일러로 네이티브 기계어 변환 → ⑥ 이벤트 훅(kprobe·tracepoint·XDP 등)에 attach → ⑦ 이벤트 발생 시 커널에서 직접 실행 → ⑧ BPF Map으로 커널↔사용자 공간 데이터 공유
V. 결론 및 기술사 관점
eBPF는 커널 수정 없이 OS 기능을 프로그래밍 방식으로 확장하는 혁신적 기술로, 클라우드 네이티브 환경의 관찰가능성·보안·네트워킹 분야에서 빠르게 표준화되고 있다. CO-RE 지원으로 배포 복잡도가 해소되면서 엔터프라이즈 도입이 가속화되고 있으며, eBPF Foundation(Linux Foundation 산하)을 통한 생태계 표준화가 진행 중이다.
핵심 키워드: eBPF, BPF Verifier, XDP, Cilium, kprobe, tracepoint, CO-RE, BPF Map, Runtime Security, 무에이전트 관찰가능성