eBPF lernen

Book description

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Was ist eBPF? Mit dieser revolutionären Technologie kannst du eigenen Code schreiben, der das Verhalten des Kernels dynamisch verändert. Es ist eine außergewöhnliche Plattform für die Entwicklung einer ganz neuen Generation von Sicherheits-, Beobachtungs- und Netzwerkwerkzeugen.

Dieses praktische Buch ist ideal für Entwickler/innen, Systemadministrator/innen, Betreiber/innen und Studierende, die neugierig auf eBPF sind und wissen wollen, wie es funktioniert. Die Autorin Liz Rice, Chief Open Source Officer beim Cloud Native Networking- und Sicherheitsspezialisten Isovalent, liefert auch eine Grundlage für diejenigen, die selbst eBPF-Programme schreiben wollen.

Mit diesem Buch wirst du:

  • Erfahren, warum eBPF in den letzten Jahren so wichtig geworden ist
  • Grundlegenden eBPF-Code schreiben, eBPF-Programme manipulieren und sie an Ereignisse anhängen
  • Erforsche, wie eBPF-Komponenten mit Linux interagieren, um das Verhalten des Betriebssystems dynamisch zu verändern
  • Lernen, wie eBPF-basierte Tools Anwendungen instrumentieren können, ohne die Anwendungen oder ihre Konfiguration zu verändern
  • Entdecke, wie diese Technologie neue Werkzeuge für Beobachtbarkeit, Sicherheit und Netzwerke ermöglicht

Table of contents

  1. Vorwort
    1. Für wen dieses Buch ist
    2. Was dieses Buch behandelt
    3. Vorausgesetzte Kenntnisse
    4. Beispielcode und Übungen
    5. Ist eBPF nur für Linux?
    6. In diesem Buch verwendete Konventionen
    7. Code-Beispiele verwenden
    8. O'Reilly Online Learning
    9. Wie du uns kontaktierst
    10. Danksagungen
  2. 1. Was ist eBPF, und warum ist es wichtig?
    1. Die Wurzeln des eBPF: Der Berkeley Packet Filter
    2. Vom BPF zum eBPF
    3. Die Entwicklung von eBPF zu Produktionssystemen
    4. Benennen ist schwer
    5. Der Linux-Kernel
    6. Hinzufügen neuer Funktionen zum Kernel
    7. Kernel Module
    8. Dynamisches Laden von eBPF-Programmen
    9. Hohe Leistung der eBPF-Programme
    10. eBPF in Cloud Native Umgebungen
    11. Zusammenfassung
  3. 2. eBPFs "Hello World"
    1. BCCs "Hallo Welt"
    2. Ausführen von "Hello World"
    3. BPF-Karten
      1. Hash Table Karte
      2. Perf- und Ringpufferkarten
      3. Funktionsaufrufe
      4. Schweifrufe
    4. Zusammenfassung
    5. Übungen
  4. 3. Anatomie eines eBPF-Programms
    1. Die virtuelle Maschine eBPF
      1. eBPF-Register
      2. eBPF-Anweisungen
    2. eBPF "Hello World" für eine Netzwerkschnittstelle
    3. Kompilieren einer eBPF-Objektdatei
    4. Einsichtnahme in eine eBPF-Objektdatei
    5. Laden des Programms in den Kernel
    6. Prüfen des geladenen Programms
      1. Das BPF-Programm-Tag
      2. Der übersetzte Bytecode
      3. Der JIT-kompilierte Maschinencode
    7. An ein Ereignis anhängen
    8. Globale Variablen
    9. Das Programm abkoppeln
    10. Entladen des Programms
    11. BPF zu BPF Anrufe
    12. Zusammenfassung
    13. Übungen
  5. 4. Der Systemaufruf bpf()
    1. BTF-Daten laden
    2. Karten erstellen
    3. Ein Programm laden
    4. Ändern einer Karte aus dem Userspace
    5. BPF-Programm und Kartenreferenzen
      1. Pinning
      2. BPF Links
    6. Zusätzliche Syscalls, die an eBPF beteiligt sind
      1. Initialisierung des Leistungspuffers
      2. Anhängen an Kprobe Events
      3. Einrichten und Ablesen von Perf Events
    7. Ringpuffer
    8. Informationen von einer Karte ablesen
      1. Eine Karte finden
      2. Kartenelemente lesen
    9. Zusammenfassung
    10. Übungen
  6. 5. CO-RE, BTF und Libbpf
    1. BCCs Ansatz zur Übertragbarkeit
    2. CO-RE Überblick
    3. BPF Typ Format
      1. BTF Anwendungsfälle
      2. Auflisten von BTF-Informationen mit bpftool
      3. BTF-Typen
      4. Karten mit BTF-Informationen
      5. BTF-Daten für Funktionen und Funktionsprototypen
      6. Einsicht in die BTF-Daten für Karten und Programme
    4. Erzeugen einer Kernel-Header-Datei
    5. CO-RE eBPF-Programme
      1. Header-Dateien
      2. Karten definieren
      3. eBPF-Programmabschnitte
      4. Speicherzugriff mit CO-RE
      5. Lizenz Definition
    6. Kompilieren von eBPF-Programmen für CO-RE
      1. Debug-Informationen
      2. Optimierung
      3. Zielarchitektur
      4. Makefile
      5. BTF-Informationen in der Objektdatei
    7. BPF Umzüge
    8. CO-RE User Space Code
    9. Die Libbpf-Bibliothek für den Benutzerraum
      1. BPF-Skelette
      2. Libbpf Code Beispiele
    10. Zusammenfassung
    11. Übungen
  7. 6. Der eBPF-Prüfer
    1. Der Überprüfungsprozess
    2. Das Prüferprotokoll
    3. Kontrollfluss visualisieren
    4. Validierung von Hilfsfunktionen
    5. Argumente der Hilfsfunktion
    6. Überprüfen der Lizenz
    7. Überprüfung des Speicherzugriffs
    8. Prüfen von Zeigern vor dem Dereferenzieren
    9. Zugang zum Kontext
    10. Laufen bis zur Vollendung
    11. Schleifen
    12. Prüfen des Rückgabecodes
    13. Ungültige Anweisungen
    14. Unerreichbare Anweisungen
    15. Zusammenfassung
    16. Übungen
  8. 7. eBPF-Programm und Anlagentypen
    1. Programm-Kontext-Argumente
    2. Hilfsfunktionen und Rückgabewerte
    3. Kfuncs
    4. Nachverfolgung
      1. K-Sonden und Kret-Sonden
      2. Eintritt/Austritt
      3. Tracepoints
      4. BTF-aktivierte Tracepoints
      5. Benutzerbereich Anhänge
      6. LSM
    5. Networking
      1. Steckdosen
      2. Verkehrskontrolle
      3. XDP
      4. Flow Dissector
      5. Leichte Tunnel
      6. C-Gruppen
      7. Infrarot-Controller
    6. BPF-Befestigungsarten
    7. Zusammenfassung
    8. Übungen
  9. 8. eBPF für die Netzwerkarbeit
    1. Packet Drops
      1. XDP Programm Return Codes
      2. XDP-Paket-Parsing
    2. Lastverteilung und Weiterleitung
    3. XDP Offloading
    4. Verkehrskontrolle (TC)
    5. Verschlüsselung und Entschlüsselung von Paketen
      1. Benutzerraum SSL-Bibliotheken
    6. eBPF und Kubernetes-Vernetzung
      1. Vermeiden von iptables
      2. Koordinierte Netzwerk-Programme
      3. Durchsetzung von Netzwerkrichtlinien
      4. Verschlüsselte Verbindungen
    7. Zusammenfassung
    8. Übungen und weiterführende Literatur
  10. 9. eBPF für Sicherheit
    1. Beobachtbarkeit der Sicherheit erfordert Politik und Kontext
    2. Systemaufrufe für Sicherheitsereignisse verwenden
      1. Seccomp
      2. Erzeugen von Seccomp-Profilen
      3. Syscall-Tracking Sicherheitstools
    3. BPF LSM
    4. Cilium Tetragon
      1. Anhängen an interne Kernel-Funktionen
      2. Präventive Sicherheit
    5. Netzwerksicherheit
    6. Zusammenfassung
  11. 10. eBPF-Programmierung
    1. Bpftrace
    2. Sprachauswahl für eBPF im Kernel
    3. BCC Python/Lua/C++
    4. C und Libbpf
      1. Geh
      2. Gobpf
      3. Ebpf-go
      4. Libbpfgo
    5. Rost
      1. Libbpf-rs
      2. Redbpf
      3. Aya
      4. Rust-bcc
    6. Prüfung von BPF-Programmen
    7. Mehrere eBPF-Programme
    8. Zusammenfassung
    9. Übungen
  12. 11. Die zukünftige Entwicklung von eBPF
    1. Die eBPF-Stiftung
    2. eBPF für Windows
    3. Linux eBPF Entwicklung
    4. eBPF ist eine Plattform, keine Funktion
    5. Fazit
  13. Index
  14. Über den Autor

Product information

  • Title: eBPF lernen
  • Author(s): Liz Rice
  • Release date: September 2024
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098189723