eBPF Araclar ve Kavramlar
Development Environment ve bpftool
eBPF development environment kurulumu ve temel araçlar.
eBPFHub Platformu
Tarayıcı tabanlı, kurulum gerektirmez.
Neler yapabilirsiniz:
- Tüm Bölüm 2-3 eBPFHub egzersizleri
- Gerçek bir kernel üzerinde gerçek BPF programları derleyip çalıştırma
- Macro ile debug yapma
- Otomatik cevap doğrulama
Development Environment
Kaynak: Cilium BPF Toolchain
Bu döküman development environment kurulumunu kapsar:
- LLVM/Clang BPF backend
- iproute2 derleme
- bpftool derleme
- Kernel config (
CONFIG_BPF,CONFIG_BPF_SYSCALL, vb.) - BPF selftest çalıştırma
Ne zaman okunmalı: Lab’larda takılırsanız veya kendi environment’ınızı kurmak isterseniz bu dökümana başvurun. eBPFHub ve iximiuz lab’ları tarayıcıda çalıştığı için başlangıçta buna ihtiyacınız yok.
Linux VM Kurulumu
# Ubuntu 22.04+ önerilir
sudo apt install clang llvm libbpf-dev linux-tools-common linux-headers-$(uname -r)
# bpftool
sudo apt install linux-tools-$(uname -r)
# Go (cilium/ebpf için)
go install github.com/cilium/ebpf/cmd/bpf2go@latest
# xdp-tutorial bağımlılıkları
sudo apt install libxdp-dev xdp-tools
Linux VM Seçenekleri
- AWS EC2 - t3.medium yeterlidir
- Multipass - macOS üzerinde hafif Ubuntu VM
- UTM/Parallels - ARM Mac için
macOS (Sadece C Öğrenimi ve Derleme)
macOS’ta yapabilecekleriniz:
- C öğrenip küçük programlar yazma
- iximiuz lab’ları (tarayıcı tabanlı)
- eBPFHub egzersizleri (tarayıcı tabanlı)
- BPF kodu derleme (Docker ile)
macOS’ta yapamayacaklarınız:
- xdp-tutorial çalıştırma
- BPF program attach etme
- bpftool ile debug yapma
İlk eBPF Programı
Bu lab’da öğrenecekleriniz:
- Bir eBPF programının iki parçası: kernel (C) + userspace (Go)
- Program type belirtmek için SEC() macro’su
- Lisans tanımı (GPL)
- bpf2go ile derleme
- bpf_printk ile debugging
eBPF Map’ler
Lab: eBPF Maps Tutorial
Bu lab’da öğrenecekleriniz:
- BPF_MAP_TYPE_HASH tanımı
- bpf_map_lookup_elem, bpf_map_update_elem
- Key/value yapısı
- Userspace’ten map’lere erişim
bpftool Kullanımı
Lab: Inspecting eBPF using bpftool
Bu lab’da öğrenecekleriniz:
bpftool prog list/show- yüklü programları listelemebpftool map list/dump- map incelemebpftool prog trace-bpf_printklog okumabpftool btf dump-vmlinux.holuşturma- bpftop ile monitoring
Okuma: How to find supported eBPF helper
Okuma: libbpf Concepts
Not - xdp-tutorial common klasörü: common/README.org ve paylaşılan kodu (parsing_helpers.h, common_libbpf.c, xdp_stats_*) inceleyin. basic03 ve packet01 bu paylaşılan kodu kullanır, önce common’ı gözden geçirin.