Learning
토픽 82 / 85·리눅스 커널 기술

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, 커널 프로그래밍, 네트워크 성능