eBPF (Extended Berkeley Packet Filter)
eBPF (Extended Berkeley Packet Filter)
Linux 커널 내부에서 안전하게 샌드박스화된 프로그램을 실행할 수 있는 가상 머신으로, 커널 재컴파일 없이 네트워크·보안·추적·성능 모니터링 기능을 동적으로 확장
목적: 커널 프로그래밍, 동적 확장, 안전한 커널 패치, 성능 분석
특징: 커널 내 실행, 샌드박스, JIT 컴파일, 이벤트 기반, 검증기(Verifier)
구성요소: BPF 프로그램(바이트코드), Verifier(안전성 검증), JIT(Just-In-Time) 컴파일러, Map(커널-유저공간 데이터 공유), Hook Points
Hook Points: 네트워크(XDP, TC), 시스템 콜(tracepoint), kprobe/uprobe, cgroup, 소켓
Verifier: 무한 루프 방지, 메모리 안전성 확인, 권한 검증, 종료 보장
JIT 컴파일: 바이트코드 → 네이티브 코드, 성능 향상
Map: BPF 프로그램 간, 커널-유저 간 데이터 공유, 해시맵, 배열, 링버퍼
시간 복잡도: 프로그램 크기 제한(1M 명령), 빠른 실행(JIT)
장점: 커널 재컴파일 불필요, 안전(Verifier), 고성능(JIT), 유연성
단점: 복잡한 프로그래밍, 제한된 기능(무한 루프 불가), 학습 곡선
적용사례: Cilium(네트워크), Falco(보안), BCC/bpftrace(추적), Katran(L4 로드밸런서), XDP(고속 패킷 처리)
비교: eBPF(안전/동적/성능) vs 커널모듈(위험/정적/고성능) vs SystemTap(추적 전용)
연관: XDP, BCC, bpftrace, 커널 프로그래밍, 네트워크 성능