Linux / Cloud Native

    eBPF

    JavaScript dał programistom dostęp do przeglądarki. eBPF daje programistom dostęp do jądra Linux — bezpiecznie, bez modyfikowania kernel source i bez rebootu.

    Linux Kernel
    Twórca trendu
    Cilium (CNCF)
    Popularny tool
    6 obszarów
    Use cases
    10-25 Mpps (XDP)
    Performance

    6 obszarów zastosowań eBPF

    eBPF rewolucjonizuje każdy obszar gdzie tradycyjne podejście wymagało kernel modules lub user-space workarounds.

    Networking

    Cilium CNI, XDP load balancing, DDoS mitigation, packet filtering

    Narzędzia: Cilium, Katran (FB)

    Observability

    Auto-instrumentation HTTP/gRPC, tracing syscalls, profiling

    Narzędzia: Pixie, Parca, bpftrace, BCC

    Security

    Runtime security monitoring, syscall filtering, intrusion detection

    Narzędzia: Falco, Tetragon, Sysdig

    Performance

    CPU flame graphs, latency analysis, TCP optimization

    Narzędzia: Pyroscope, perf + eBPF, bpftrace

    Load Balancing

    L4 LB bez iptables, XDP-based forwarding, Maglev hashing

    Narzędzia: Cilium LB, Cloudflare

    Service Mesh

    Sidecar-less service mesh, mTLS bez proxy

    Narzędzia: Cilium Mesh, Ambient Mesh (Istio)

    Kluczowe narzędzia eBPF

    Ekosystem eBPF obejmuje zarówno production-grade narzędzia jak i narzędzia do ad-hoc analizy systemów.

    Cilium

    Kubernetes networking + security

    Production-grade

    Pixie

    Auto-instrumentation observability

    Production-grade

    Falco

    Runtime security monitoring

    Production-grade

    bpftrace

    Ad-hoc kernel tracing (one-liners)

    Debugging/Analysis

    BCC Tools

    Pre-built analysis tools (execsnoop, etc.)

    Debugging/Analysis

    Pyroscope

    Continuous CPU profiling

    Production-grade

    Często zadawane pytania

    Co to jest eBPF i dlaczego jest przełomowy?

    eBPF (extended Berkeley Packet Filter) to technologia w jądrze Linux która pozwala uruchamiać niestandardowy, sandboxed kod bezpośrednio w kernel space — bez modyfikowania kodu jądra i bez ładowania modułów kernel. Jest bezpieczny: BPF verifier sprawdza kod przed uruchomieniem — nie może crashnąć jądra. Jest programowalny: możesz dynamicznie instrumentować dowolny punkt w jądrze (system calls, network events, function calls). Dlaczego przełomowy: tradycyjnie dostęp do kernel space wymagał pisania kernel modules (niebezpieczne, trudne, wymagają rebootu). eBPF pozwala na kernel programmability bez tych ograniczeń. Analogia: Brendan Gregg (Netflix) porównał eBPF do JavaScript dla przeglądarki — dał programistom dostęp do kernel tak jak JS dał programistom dostęp do DOM. Kluczowe zastosowania: Networking — wysokowydajny packet processing, load balancing (Cilium). Observability — zbieranie metrics, profiling bez overheadu (Pixie, Tetragon). Security — runtime security, syscall filtering (Falco, Tetragon). Performance analysis — low-overhead profiling w produkcji (Pixie, Parca). Historia: BPF stworzony w 1992 do filtrowania pakietów. eBPF (extended) w Linuksie od 2014. Eksplozja adopcji po 2019.

    Jak działa eBPF — architektura i BPF maps?

    Architektura eBPF: Program eBPF piszesz w C (restricted subset) lub Rust. Kompiluje do BPF bytecode (LLVM/Clang). BPF Verifier sprawdza: brak nieskończonych pętli, poprawne dostępy do pamięci, bounded execution time. JIT Compiler kompiluje BPF bytecode do natywnych instrukcji CPU (x86, ARM). Program jest wstrzykiwany jako hook do punktu w jądrze (kprobe, tracepoint, XDP hook, socket filter). Punkty attach: kprobes/kretprobes — dynamic tracing dowolnej funkcji kernel. Tracepoints — statyczne punkty trace w jądrze. XDP (eXpress Data Path) — packet processing przed alokacją skb, ultra-niskie latency. TC (Traffic Control) — network packet processing. Uprobe/uretprobe — user-space function tracing. LSM (Linux Security Module) — security hooks. BPF Maps — mechanizm komunikacji: BPF Maps to struktury danych współdzielone między programem eBPF a user-space. Typy map: hash map, array, ring buffer, LRU map, per-CPU map. Użycie: eBPF program zbiera dane (np. latency per syscall) → zapisuje do map → user-space aplikacja czyta z map i prezentuje. BPF CO-RE (Compile Once, Run Everywhere): modern eBPF dzięki BTF (BPF Type Format) może działać na różnych wersjach kernela bez rekompilacji.

    eBPF w networking — Cilium i XDP?

    eBPF w networking: Cilium (CNCF Graduated): CNI plugin dla Kubernetes oparty na eBPF. Zastępuje iptables dla service networking (dramatycznie szybszy). Network policy enforcement przez eBPF (Layer 3/4/7). Mutual authentication (mTLS) bez sidecar proxy. Tetragon — runtime security i observability. Hubble — distributed observability dla Kubernetes. Używany przez Google GKE, Azure AKS, AWS EKS. XDP (eXpress Data Path): pakiety są przetwarzane przez eBPF zanim zostaną alokowane do socket buffer. Pozwala na line-rate packet processing. Use cases: DDoS mitigation (Facebook używa XDP do ochrony przed DDoS), high-performance load balancing (Cloudflare), network monitoring. Benchmark: XDP może przetwarzać 10-25 Mpps na zwykłym serwerze vs. 1-3 Mpps przez iptables. iptables replacement: Linux networking historycznie opierało się na iptables. eBPF/Cilium zastępuje iptables: szybsze (O(1) vs. O(n)), lepszy observability, L7-aware. TC (Traffic Control) eBPF: packet shaping, QoS, bandwidth management przez eBPF programy attach'owane do network interfaces. Socket programs: BPF_PROG_TYPE_SOCK_OPS do optymalizacji TCP stack (Cloudflare używa do redukcji latency).

    eBPF w observability — Pixie, Tetragon, Parca?

    eBPF w Observability: Pixie (New Relic, CNCF Sandbox): auto-instrumentation bez kodu — zbiera HTTP/gRPC/MySQL/Redis requests przez eBPF upprobes. Nie wymaga zmian w aplikacji, nie wymaga sidecar. Low overhead (1-5% CPU). Live debugging w produkcji przez Pixie Live UI. Parca / Pyroscope: continuous profiling przez eBPF. Zbiera CPU flame graphs bez overhead profilerów opartych na sampling (np. perf, async-profiler). Zawsze włączony w produkcji. Grafana Pyroscope — hosted continuous profiling. Bpftrace: high-level tracing language dla eBPF. Jednolinijkowe programy do analizy systemu: bpftrace -e 'kprobe:do_sys_open { printf("%s\n", str(arg1)); }' (pokaż wszystkie otwierane pliki). BCC (BPF Compiler Collection): Python/C biblioteka do pisania eBPF programów. Setki gotowych narzędzi (execsnoop, opensnoop, tcpconnect). Autorzy: Brendan Gregg (Netflix, teraz Intel). libbpf: nowoczesna C library do eBPF (preferowana nad BCC dla produkcji). Falco (CNCF): security monitoring przez eBPF (i inne mechanizmy). Definiujesz rules dla syscall patterns. Alerty gdy container wykonuje podejrzane syscalls. Tetragon (Cilium): eBPF-based security enforcement + observability. Policy enforcement na poziomie kernel (kill process bez wyjścia do user-space).

    Jak zacząć z eBPF — learning path i zasoby?

    Learning Path eBPF: Podstawy Linux: zrozumienie jak działa kernel (system calls, VFS, network stack). Niezbędne ale nie musisz być ekspertem. Krok 1 — Zrozum koncepty: przeczytaj 'What is eBPF?' na ebpf.io. Obejrzyj prezentację Brendan Gregg 'eBPF Superpowers'. Krok 2 — Zacznij od bpftrace (najłatwiejszy): bpftrace jest jak awk dla kernel events. Eksperymentuj z gotowymi one-linery. Krok 3 — BCC tools: zainstaluj bcc-tools, eksploruj opensnoop, execsnoop, tcpretrans. Zrozum jak są zbudowane. Krok 4 — libbpf + C: napisz swój pierwszy eBPF program w C z libbpf. Skeleton based development (bpftool gen skeleton). Krok 5 — Rust eBPF (aya): nowoczesna alternatywa — pisz eBPF w Rust z type-safety. Krok 6 — Production tools: wdróż Cilium w Kubernetes. Użyj Pixie do obserwacji aplikacji. Zasoby: ebpf.io — oficjalna strona. 'Learning eBPF' by Liz Rice (O'Reilly, 2023). isovalent.com/labs — bezpłatne labs eBPF. cilium.io/learn — tutoriale. Brendan Gregg blog i BPF Performance Tools (książka). Wymagania: Linux kernel 4.4+ (podstawowe eBPF), kernel 5.x+ dla zaawansowanych features. Nie Windows (eBPF for Windows istnieje ale jest limitowane).

    Czytaj dalej

    Powiązane artykuły

    Kontakt

    Skontaktuj się z nami

    Porozmawiajmy o Twoim projekcie. Bezpłatna wycena w ciągu 24 godzin.

    Wyślij zapytanie

    Bezpłatna wycena w 24h
    Bez zobowiązań
    Indywidualne podejście
    Ekspresowa realizacja

    Telefon

    +48 790 814 814

    Pon-Pt: 9:00 - 18:00

    Email

    adam@fotz.pl

    Odpowiadamy w ciągu 24h

    Adres

    Plac Wolności 16

    61-739 Poznań

    Godziny pracy

    Pon - Pt9:00 - 18:00
    Sob - NdzZamknięte

    Wolisz porozmawiać?

    Zadzwoń teraz i porozmawiaj z naszym specjalistą o Twoim projekcie.

    Zadzwoń teraz