Kubernetes 클러스터를 위한 eBPF 기반 CNI이자 네트워킹·보안·관측성 계층으로, ID 기반 L3~L7 정책과 kube-proxy 대체 기능을 제공합니다.
eunomia-bpf/bpf-developer-tutorial
libbpf와 CO-RE를 중심으로 C, Go, Rust의 짧고 실행 가능한 예제를 제공하는 단계별 eBPF 튜토리얼입니다.
- 스타
- 4,333
- 포크
- 607
- 열린 이슈
- 25
- 마지막 커밋
- 3일 전
어떤 프로젝트인가요?
이 프로젝트는 기초 개념부터 고급 주제까지 다루는 실습형 eBPF 개발 튜토리얼입니다. 각 디렉터리는 독립적인 eBPF 도구 예제로, 코드가 약 20줄에 불과한 경우도 많아 특정 프로그램을 어떻게 작성하고 로드하는지 살펴볼 수 있습니다.
예제는 CO-RE(Compile Once, Run Everywhere)를 사용하며 주로 libbpf를 기반으로 합니다. 일부 강의에서는 eunomia-bpf, Cilium의 eBPF 라이브러리, libbpf-rs 등의 프레임워크를 활용하며, C, Go, Rust로 작성되어 있습니다. 관측성(kprobes, uprobes, tracepoints, 스케줄링 지연, 메모리 누수), 네트워킹(XDP, tc, TCX, sockops, 로드 밸런싱), 보안(LSM 훅, 시스템 호출 인자 변경), GPU 및 스케줄러 작업을 다룹니다.
또한 Makefile, Dockerfile, GitHub Actions 설정이 포함된 C/libbpf, Go, Rust, eunomia-bpf 프로젝트용 시작 템플릿도 제공합니다.
핵심 기능
- 01간단한 kprobe 및 tracepoint 프로그램부터 XDP, LSM, GPU 추적까지 단계적으로 학습할 수 있습니다.
- 02예제는 libbpf와 CO-RE를 사용하는 C로 작성되어 있으며, 일부 강의에는 Go 및 Rust 버전도 있습니다.
- 03각 강의는 자체 빌드 안내를 포함한 독립 디렉터리로 구성되어 있습니다.
- 04시작 템플릿을 통해 새 eBPF 프로젝트에 필요한 Makefile, Dockerfile, CI 설정을 마련할 수 있습니다.
- 05커널 및 툴체인 지원 여부를 확인할 수 있는 호환성 매트릭스를 제공합니다.
활용 사례
- 첫 hello-world 프로그램부터 eBPF 개발을 단계별로 학습할 때.
- uprobe, XDP, LSM 등 특정 훅을 활용할 수 있는 동작 예제를 찾아 응용할 때.
- 템플릿을 바탕으로 새 libbpf, Go 또는 Rust eBPF 프로젝트를 시작할 때.
- eBPF로 Nginx, MySQL, Go 루틴 같은 사용자 공간 프로그램을 추적하는 방법을 살펴볼 때.
빠른 시작
- 1
저장소를 클론합니다
git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git - 2
프로젝트 디렉터리로 이동해 서브모듈을 동기화합니다
cd bpf-developer-tutorial && git submodule update --init --recursive - 3
src/11-bootstrap 또는 src/1-helloworld와 같은 레슨 디렉터리의 빌드 안내를 따릅니다
사용 전 알아둘 점
- 각 레슨은 자체 빌드 절차가 있는 별도의 예제이므로, 모든 항목을 빌드하는 단일 명령은 없습니다.
- eBPF 프로그램을 실행하려면 BPF를 지원하는 Linux 커널과 일반적으로 root 권한 또는 특권 액세스가 필요합니다.
포함된 컬렉션
토픽
자주 묻는 질문
- bpf-developer-tutorial은(는) 무엇인가요?
- libbpf와 CO-RE를 중심으로 C, Go, Rust의 짧고 실행 가능한 예제를 제공하는 단계별 eBPF 튜토리얼입니다. 이 프로젝트는 기초 개념부터 고급 주제까지 다루는 실습형 eBPF 개발 튜토리얼입니다. 각 디렉터리는 독립적인 eBPF 도구 예제로, 코드가 약 20줄에 불과한 경우도 많아 특정 프로그램을 어떻게 작성하고 로드하는지 살펴볼 수 있습니다.
- bpf-developer-tutorial은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- bpf-developer-tutorial은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- bpf-developer-tutorial은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. bpf-developer-tutorial의 마지막 커밋은 2026년 11월 4일입니다.
- bpf-developer-tutorial은(는) 어디에 사용할 수 있나요?
- 첫 hello-world 프로그램부터 eBPF 개발을 단계별로 학습할 때. uprobe, XDP, LSM 등 특정 훅을 활용할 수 있는 동작 예제를 찾아 응용할 때. 템플릿을 바탕으로 새 libbpf, Go 또는 Rust eBPF 프로젝트를 시작할 때. eBPF로 Nginx, MySQL, Go 루틴 같은 사용자 공간 프로그램을 추적하는 방법을 살펴볼 때.
- bpf-developer-tutorial는 어떻게 설치하나요?
- 저장소를 클론합니다: git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git 프로젝트 디렉터리로 이동해 서브모듈을 동기화합니다: cd bpf-developer-tutorial && git submodule update --init --recursive src/11-bootstrap 또는 src/1-helloworld와 같은 레슨 디렉터리의 빌드 안내를 따릅니다
- bpf-developer-tutorial은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/eunomia-bpf/bpf-developer-tutorial
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
libbpf를 감싸 eBPF 프로그램을 컴파일하고 로드하는 C 라이브러리 및 플랫폼으로, 원격 컴파일과 커널 버전별 백포트를 지원합니다.
eBPF로 커널 및 사용자 공간 이벤트를 최소한의 오버헤드로 추적하는 Linux용 고수준 추적 언어 및 도구입니다.
HTTP, Redis, MySQL, Kafka, DNS 트래픽을 캡처하고 커널에서 지연이 발생하는 위치를 보여주는 eBPF 기반 네트워크 분석 CLI입니다.
Kubernetes 클러스터와 Linux 호스트의 시스템 데이터를 수집하고 살펴보는 eBPF 도구 키트
실행 중인 eBPF 프로그램의 런타임, 초당 이벤트 수, 예상 CPU 사용량을 보여주는 터미널 기반 top 스타일 모니터입니다.