Repolode
eunomia-bpf

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. 1

    저장소를 클론합니다

    git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git
  2. 2

    프로젝트 디렉터리로 이동해 서브모듈을 동기화합니다

    cd bpf-developer-tutorial && git submodule update --init --recursive
  3. 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 통계는 매일 갱신됩니다.

관련 프로젝트