Begriff
DPDK (Data Plane Development Kit)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Wenn du einen Router baust, der 1 Tbit/s schaffen muss (wie bei Telekommunikations-Providern), ist Linux zu langsam. Der Wechsel von User-Mode zu Kernel-Mode (Context Switch) kostet Zeit. DPDK ist die radikale Lösung: Kernel Bypass. Die Anwendung (Userspace) übernimmt die Kontrolle über die Netzwerkkarte. Der Linux-Kernel wird komplett ignoriert. Die App muss alles selbst machen (Treiber, Memory Management, TCP Stack). Dafür gibt es Zero Copy und keine Interrupts (Polling Mode). Die CPU fragt die Karte millionenfach pro Sekunde: "Hast du Daten? Hast du Daten?". Das verbraucht 100% CPU auf einem Core, aber die Latenz ist minimal.
Merksatz: Ein Satz von Bibliotheken und Treibern für die schnelle Paketverarbeitung, der es Anwendungen ermöglicht, direkt vom Userspace auf Netzwerkkarten zuzugreifen (Kernel Bypass), um extrem hohe Durchsatzraten und niedrige Latenzen zu erreichen.
In NFV (Network Function Virtualization). Früher brauchte man Spezial-Hardware (Cisco Router). Heute nimmt man einen Standard-Server, installiert DPDK und eine Software ("vRouter"). Der Server verhält sich wie ein Hardware-Router. Genutzt von Netflix (Open Connect), Facebook, Hochfrequenzhandel.
1. Polling Mode Drivers (PMD)
Normalerweise sendet die NIC einen Interrupt, wenn Daten kommen. Die CPU stoppt alles und kümmert sich. (Teuer).
DPDK nutzt PMD. Der Core läuft in einer while(1) Schleife (Busy Waiting).
Das ist nur effizient, wenn wirklich extrem viele Daten kommen. Sonst verbrennt man Strom für nichts.
2. Hugepages
DPDK nutzt riesige Speicherseiten (1 GB Hugepages statt 4 KB). Das reduziert TLB Misses (Translation Lookaside Buffer) der CPU massiv. Wichtig für Speicherzugriffe bei 100 Gbit/s.
1. EAL (Environment Abstraction Layer)
DPDK ist kein Betriebssystem, aber es übernimmt viele Aufgaben davon. Die Basis ist der EAL. Er kümmert sich um:
- CPU Affinity: Bindet einen DPDK-Thread fest an einen physischen Kern (Core Pinning), damit keine Cache-Kaltstarts passieren.
- Memory Management (IVSHMEM): Nutzt einen spezialisierten Allocator für Memory Pools, der sicherstellt, dass Datenpakete immer in "Contiguous Memory" liegen. Das erlaubt Hardware-DMA (Direct Memory Access), ohne dass die MMU (Memory Management Unit) der CPU eingreifen muss.
2. Lockless Ring Buffers (rte_ring)
In einem DPDK-System müssen Daten rasend schnell zwischen verschiedenen Kernen ausgetauscht werden.
Standard-Sperren (Mutex/Spinlock) würden bei 100 Gbit/s alles blockieren.
DPDK nutzt hochoptimierte Lockless Multi-Producer/Multi-Consumer Ring Buffers. Diese basieren auf atomaren CPU-Befehlen (Compare-and-Swap) und sind so konzipiert, dass Daten direkt von einem Kern zu einem anderen "fließen", ohne dass jemals ein Lock gehalten werden muss. Es ist die Gold-Standard-Implementierung für inter-process communication im High-Performance-Bereich.
3. SR-IOV & DPDK in VMs
Wenn man DPDK in einer Virtuellen Maschine (VM) nutzt, hat man ein Problem: Die Virtualisierungsschicht (Hypervisor) ist wieder langsam. Die Lösung ist SR-IOV (Single Root I/O Virtualization). Man teilt eine physische Netzwerkkarte in viele "Virtual Functions" (VFs) auf. Jede VF sieht für das OS wie eine echte Karte aus. Man kann diese VFs per PCI Passthrough direkt in die VM "durchreichen". Das DPDK-Programm in der VM redet dann direkt mit der Hardware des Hosts. Das ist der Grundstein für moderne Cloud-Networking-Architekturen wie bei AWS (Nitro) oder Azure.
Quick-Check
Nachteil?
Du verlierst alle Linux-Tools.tcpdump,iptables,netstatfunktionieren nicht für DPDK-Interface (weil der Kernel sie nicht sieht). Debugging ist hart.XDP vs DPDK?
DPDK = Maximale Performance, aber komplex und isoliert. XDP = Sehr gute Performance, aber integriert in Linux. Der Trend geht zu XDP für Cloud, DPDK für Telco.Sprache?
Meist C/C++. Es gibt Wrapper für Go/Rust, aber Performance liegt im Detail.