EBPF

From HPCWIKI
Jump to navigation Jump to search

eBPF

Template:Status

Template:TOC

Overview

eBPF(extended Berkeley Packet Filter)는 Linux 커널에서 안전한 가상 머신 실행. 네트워킹, 모니터링, 보안에 사용.

Summary

  • * 무엇인가? Linux 커널 가상 머신. 네트워킹/모니터링/보안
  • * 왜 필요한가? 커널 수정 없이 프로그램 실행. 안전하고 유연
  • * 언제 사용하는가? 네트워크 모니터링, 보안, 성능 분석

---

Purpose

이 문서가 존재하는 이유

  • Goal: eBPF의 개념, 사용법, 설정 가이드 제공
  • Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
  • Non-goals: 고급 커스터마이징, 내부 소스 코드 분석

---

Key Concepts

Template:KeyConcepts

---

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

---

Related Pages