EBPF
Jump to navigation
Jump to search
eBPF
Overview
eBPF(extended Berkeley Packet Filter)는 Linux 커널에서 안전한 가상 머신 실행. 네트워킹, 모니터링, 보안에 사용.
Summary
- * 무엇인가? Linux 커널 가상 머신. 네트워킹/모니터링/보안
- * 왜 필요한가? 커널 수정 없이 프로그램 실행. 안전하고 유연
- * 언제 사용하는가? 네트워크 모니터링, 보안, 성능 분석
---
Purpose
이 문서가 존재하는 이유
- Goal: eBPF의 개념, 사용법, 설정 가이드 제공
- Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
- Non-goals: 고급 커스터마이징, 내부 소스 코드 분석
---
Key Concepts
---
Architecture
eBPF는 BPF 바이트코드를 커널에서 실행. verifier가 코드를 검증 (무한 루프 금지, 메모리 안전). BPF maps로 데이터 공유. bpf syscall로 사용자 공간과 통신.
---
Workflow
1. 1. eBPF 도구 설치 (bpfcc, cilium/ebpf)
2. 2. eBPF 프로그램 작성 (C)
3. 3. 컴파일 (clang + bpf header)
4. 4. 로드 (bpftool)
5. 5. 실행 + 모니터링
---
Configuration
# eBPF 도구 설치
sudo apt install -y bpfcc-tools linux-headers-$(uname -r)
# 네트워크 모니터링
sudo bpfcc/tcpstat
sudo bpfcc/biolatency
# 프로세스 추적
sudo bpfcc/prof -p $(pgrep myapp)
# Cilium eBPF 네트워킹
curl -s https://raw.githubusercontent.com/cilium/cilium/master/install/kubernetes/quick_install.yaml | kubectl apply -f -
---
Best Practices
- BPF CO-RE로 커널 버전 무관 컴파일
- eBPF 프로그램은 반드시 verifier 통과
- bpfcc 도구로 빠른 시작
- Cilium으로 eBPF 네트워킹
---
Limitations
- 커널 4.9+ 필요
- 디버깅 어려움
- 커널 메모리 접근 제한
---
References
---