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ı

Lab: My First 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ı listeleme
  • bpftool map list/dump - map inceleme
  • bpftool prog trace - bpf_printk log okuma
  • bpftool btf dump - vmlinux.h oluş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.