{"id":21968,"date":"2026-11-03T11:10:00","date_gmt":"2026-11-03T10:10:00","guid":{"rendered":"https:\/\/webhosting.de\/?p=21968"},"modified":"2026-10-30T12:49:30","modified_gmt":"2026-10-30T11:49:30","slug":"dpdk-paketverarbeitung-userspace-planen","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/dpdk-paketverarbeitung-userspace-planen\/","title":{"rendered":"DPDK: Paketverarbeitung im Userspace richtig planen"},"content":{"rendered":"<div class=\"wh-article\" data-wh-layout=\"2.1.2\" style=\"width:100%;max-width:820px;margin:0 auto;color:#263b4b;font-family:inherit;font-size:18px;line-height:1.8;text-align:start;overflow-wrap:break-word;box-sizing:border-box\"><p class=\"wh-lead\" style=\"font-size:20px;line-height:1.7;color:#233746;margin:0 0 1.1em\">DPDK kann die <strong style=\"font-weight:700;color:inherit\">Paketverarbeitung im Userspace<\/strong> beschleunigen, wenn hohe Paketraten oder gleichm\u00e4\u00dfige Latenzen den gew\u00f6hnlichen Netzwerkpfad begrenzen. Daf\u00fcr pollt die Anwendung NIC-Queues direkt und \u00fcbernimmt Planung f\u00fcr Kerne, Speicher, Queues und Ger\u00e4tezugriff. Das umgeht jedoch keine Hardware- oder Sicherheitsgrenzen und erh\u00f6ht den Betriebsaufwand erheblich. Pr\u00fcfe deshalb das genaue NIC-Modell und den passenden PMD, Speicher- und NUMA-Planung, die erforderliche Ger\u00e4teanbindung sowie einen vom Datenpfad unabh\u00e4ngigen Management-Zugang vor einem Pilotbetrieb.   <\/p>\n<nav class=\"wh-toc\" aria-label=\"Tre\u015b\u0107 tego artyku\u0142u\" style=\"display:block;margin:28px 0 38px;padding:22px;border:1px solid #d9e4e8;border-radius:14px;background:#f4f8f8\"><p class=\"wh-toc-title\" style=\"font-size:13px;font-weight:700;letter-spacing:.08em;color:#49656b;margin:0 0 14px\">Przejd\u017a bezpo\u015brednio do sekcji<\/p><div class=\"wh-toc-grid\" style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px\"><div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#dpdk-grundprinzip\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">DPDK-Grundprinzip und korrekte Einordnung<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#userspace-paketpfad\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Wie der Userspace-Paketpfad arbeitet<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#architektur-und-grenzen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Architektur, Ressourcen und harte Grenzen<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#voraussetzungen-vor-dem-einsatz\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Voraussetzungen vor dem DPDK-Einsatz pr\u00fcfen<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#dpdk-afxdp-kernelstack\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">DPDK, AF_XDP und Kernelstack vergleichen<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#queue-cpu-numa-planung\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Queues, CPU-Pinning und NUMA sinnvoll planen<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#betrieb-und-beobachtbarkeit\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">DPDK im Betrieb sicher beobachten<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#fehlerbilder-systematisch-pruefen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Typische Fehlerbilder systematisch pr\u00fcfen<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#rollout-und-entscheidungsrahmen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Rollout, Versionspflege und Einsatzentscheidung<\/a><\/div>\n<\/div><\/nav><section class=\"wh-section\" aria-labelledby=\"dpdk-grundprinzip\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"dpdk-grundprinzip\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">DPDK-Grundprinzip und korrekte Einordnung<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">DPDK<\/strong> ist ein Framework f\u00fcr Anwendungen, die Netzwerkpakete mit m\u00f6glichst wenig Overhead im Userspace verarbeiten m\u00fcssen. Statt den \u00fcblichen Weg \u00fcber Kernel-Netzwerkstack, Sockets und dessen Paketstrukturen zu nutzen, kann eine Anwendung ausgew\u00e4hlte Netzwerkkarten unmittelbar f\u00fcr ihren eigenen Datenpfad verwenden. Das zielt vor allem auf hohe Paketraten, niedrige Latenzen und gut planbare Verarbeitung bei vielen kleinen Paketen. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Die Formulierung \u201eohne Kernel-Limits\u201c ist dabei verk\u00fcrzt. Der Linux-Kernel bleibt f\u00fcr Betriebssystem, Speicherverwaltung, Prozesse, Sicherheit und zahlreiche Verwaltungsaufgaben vorhanden. DPDK ersetzt auch weder Grenzen der Netzwerkkarte noch PCIe-, Speicherbandbreiten- oder CPU-Grenzen. Es umgeht f\u00fcr gebundene Schnittstellen vor allem den gew\u00f6hnlichen Kernel-Datenpfad und verlagert die Paketarbeit in eine spezialisierte Anwendung. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Im regul\u00e4ren Linux-Netzwerkpfad wirken Netzwerktreiber, NAPI, Paketverwaltung und Socket-Schicht zusammen. Dieser Pfad ist nicht pauschal rein interruptbasiert. Ein DPDK-<strong style=\"font-weight:700;color:inherit\">Poll Mode Driver<\/strong> fragt Empfangswarteschlangen direkt aus dem Userspace ab. Die Anwendung nimmt Pakete in Gruppen entgegen, pr\u00fcft oder ver\u00e4ndert sie und \u00fcbergibt sie anschlie\u00dfend an eine Sendewarteschlange oder weitere Verarbeitungsstufe. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Das ist kein allgemeines Kernel-Tuning und f\u00fcr eine gew\u00f6hnliche Webanwendung mit wenigen TCP-Verbindungen meist nicht die erste Ma\u00dfnahme. Erst wenn der Paketdatenpfad selbst nachweisbar limitiert, etwa bei L4-Lastverteilung, Filterung oder Tunnelendpunkten, rechtfertigt der m\u00f6gliche Gewinn den zus\u00e4tzlichen Betriebsaufwand. Versionsabh\u00e4ngige Eigenschaften m\u00fcssen gegen die Dokumentation des konkret eingesetzten Release-Tags gepr\u00fcft werden; ein Release Candidate ist dabei nicht mit einem produktiv eingesetzten Release gleichzusetzen.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"userspace-paketpfad\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"userspace-paketpfad\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Wie der Userspace-Paketpfad arbeitet<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Am Eingang konfiguriert die Anwendung eine oder mehrere Rx-Queues der Netzwerkkarte. Ein zugewiesener Ausf\u00fchrungskern fragt eine Queue in einer Schleife ab und erh\u00e4lt einen Burst verf\u00fcgbarer Pakete. Diese <strong style=\"font-weight:700;color:inherit\">Burst-Verarbeitung<\/strong> reduziert Funktionsaufrufe und Verwaltungsaufwand pro Paket. Nach Klassifikation, Weiterleitung oder \u00c4nderung legt die Anwendung die Pakete gesammelt in einer Tx-Queue ab. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Polling vermeidet viele Interrupt-Wechsel im stark ausgelasteten Datenpfad und macht die Arbeit eines Kerns besser vorhersehbar. Der Preis ist eine fortlaufend aktive CPU: Auch bei leerer Queue pr\u00fcft der lcore weiter auf neue Pakete. Deshalb passt dieses Modell zu konstant hoher Last eher als zu Schnittstellen mit seltenem oder stark schwankendem Verkehr. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Paketdaten und Metadaten liegen in <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">rte_mbuf<\/code>-Objekten. Diese stammen aus einem vorab angelegten Mempool und enthalten beispielsweise Paketl\u00e4nge, Eingangsport, Offload-Informationen und gegebenenfalls einen RSS-Hash. Vorab reservierte Pools, eine feste Queue-Kern-Zuordnung und kurze Verarbeitungspfade f\u00f6rdern <strong style=\"font-weight:700;color:inherit\">Lokalizacja pami\u0119ci podr\u0119cznej<\/strong> und vermeiden unn\u00f6tige gemeinsame Datenstrukturen. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Zero Copy ist jedoch keine automatische DPDK-Eigenschaft. Ob und wo Daten kopiert werden, h\u00e4ngt von NIC, Treiber, Offloads und Anwendungslogik ab. Gro\u00dfe oder segmentierte Frames k\u00f6nnen aus mehreren verkn\u00fcpften mbufs bestehen; das ist etwa bei Jumbo Frames relevant. Wer Paketdaten umformt, zusammenf\u00fchrt oder zwischen inkompatiblen Puffern \u00fcbertr\u00e4gt, muss m\u00f6gliche Speicherbewegungen im eigenen Datenpfad ber\u00fccksichtigen. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"architektur-und-grenzen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"architektur-und-grenzen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Architektur, Ressourcen und harte Grenzen<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Die Environment Abstraction Layer, kurz <strong style=\"font-weight:700;color:inherit\">EAL<\/strong>, initialisiert DPDK und stellt unter anderem Speicherreservierung, Ger\u00e4tezugriff, Timer sowie die Zuordnung logischer Kerne bereit. Auf dieser Grundlage richtet die Anwendung Ethernet-Queues, Mempools und ihre Verarbeitung ein. Ein lcore ist dabei ein f\u00fcr DPDK eingeplanter logischer Kern, nicht einfach ein beliebig wandernder Anwendungsthread. Diese grundlegenden EAL-Eigenschaften sind hier mit der Dokumentation von DPDK 25.07 belegt; versionsabh\u00e4ngige Details m\u00fcssen zus\u00e4tzlich f\u00fcr den eingesetzten Release-Tag gepr\u00fcft werden. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">F\u00fcr einen geradlinigen Datenpfad verarbeitet h\u00e4ufig ein Kern ein Paket vollst\u00e4ndig: vom Empfang \u00fcber die Entscheidung bis zum Senden. Dieses Run-to-completion-Modell vermeidet \u00dcbergaben zwischen Kernen. Eine Pipeline trennt dagegen beispielsweise Parser, Flow-Suche und Weiterleitung in Stufen. Sie kann Zust\u00e4ndigkeiten ordnen, f\u00fcgt aber Ringe, Synchronisation und potenziell schlechtere Speicherlokalit\u00e4t zwischen den Stufen hinzu. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Die Planung muss auch NUMA beachten. Queue, lcore und Paketpools sollten nach M\u00f6glichkeit am selben NUMA-Knoten liegen, damit der Datenpfad nicht regelm\u00e4\u00dfig auf Speicher eines anderen CPU-Sockels zugreift. Die erreichbare Leistung bleibt au\u00dferdem von NIC-Funktionen, PCIe-Anbindung, Speicherbandbreite, CPU-Takt, Paketgr\u00f6\u00dfe und der Komplexit\u00e4t jeder Paketentscheidung abh\u00e4ngig. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Ein L4-Load-Balancer kann mit DPDK IP- und Portinformationen schnell auswerten, Flows zuordnen und Pakete weiterleiten. TLS-Terminierung, aufwendige NAT-Zust\u00e4nde, Logging, Health Checks oder langsame Backends werden dadurch aber nicht automatisch schneller. Ebenso braucht die Control Plane verf\u00fcgbare CPU-Zeit f\u00fcr Konfiguration, Telemetrie und Fehlerbehandlung. DPDK beschleunigt folglich einen klar abgegrenzten Datenpfad, nicht zwangsl\u00e4ufig den gesamten Dienst. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Auch die Gr\u00f6\u00dfe und Lebensdauer der Paketpuffer sind Teil der Architektur. Mempools begrenzen, wie viele Puffer gleichzeitig bereitstehen, w\u00e4hrend die Anwendung Eigentumswechsel korrekt verwalten muss. Zu knapp dimensionierte Pools k\u00f6nnen unter Last ersch\u00f6pfen; \u00fcbergro\u00dfe Reservierungen binden Speicher. Die sinnvolle Gr\u00f6\u00dfe ergibt sich aus Warteschlangen, Burst-Gr\u00f6\u00dfen, Paketpfad und erwarteten Lastspitzen, nicht aus einer universellen Vorgabe. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"voraussetzungen-vor-dem-einsatz\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"voraussetzungen-vor-dem-einsatz\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Voraussetzungen vor dem DPDK-Einsatz pr\u00fcfen<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">DPDK wird erst dann planbar, wenn Hardware, Speicher und CPU-Zuordnung zusammenpassen. Eine Installation allein schafft keinen leistungsf\u00e4higen Datenpfad: Der PMD muss das konkrete NIC-Modell unterst\u00fctzen, und Ressourcen m\u00fcssen f\u00fcr die Anwendung reservierbar sein. Die folgende Pr\u00fcfung trennt technische Mindestvoraussetzungen von Annahmen, die erst f\u00fcr das tats\u00e4chlich eingesetzte Ger\u00e4t gelten. <\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail1\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-nic-speicherplanung-voraussetzungen-96cb18a6-detail1-1c84946f1c-1024x683.webp\" class=\"wp-image-21990\" alt=\"Nahaufnahme einer Netzwerkkarte in einem ge\u00f6ffneten Server als Sinnbild f\u00fcr Ressourcen- und Speicherplanung.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-nic-speicherplanung-voraussetzungen-96cb18a6-detail1-1c84946f1c-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-nic-speicherplanung-voraussetzungen-96cb18a6-detail1-1c84946f1c-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-nic-speicherplanung-voraussetzungen-96cb18a6-detail1-1c84946f1c-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-nic-speicherplanung-voraussetzungen-96cb18a6-detail1-1c84946f1c-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-nic-speicherplanung-voraussetzungen-96cb18a6-detail1-1c84946f1c.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail1\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">KI-generiertes Symbolbild: NIC, Serverressourcen und Speicherplanung m\u00fcssen vor einem DPDK-Pfad zusammenpassen.<\/figcaption><\/figure><div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Pr\u00fcfpunkte vor dem Einsatz eines DPDK-Datenpfads\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Pr\u00fcfpunkte vor dem Einsatz eines DPDK-Datenpfads<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Warunek wst\u0119pny<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Znaczenie<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Konkrete Pr\u00fcffrage<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">NIC und PMD<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Ein PMD stellt den DPDK-Zugriff auf die Netzwerkkarte bereit; Funktionen sind modell- und treiberabh\u00e4ngig.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Ist das genaue NIC-Modell in der unterst\u00fctzten Treiber\u00fcbersicht enthalten, und sind ben\u00f6tigte Funktionen dokumentiert?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Speicherplanung und Hugepages<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Hugepages sind der regul\u00e4re, f\u00fcr gro\u00dfe Paketpools leistungsf\u00e4hige Betriebsweg; DPDK kennt mit &#8211;no-huge auch einen Sondermodus mit eigenen Eignungs- und Treibergrenzen.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Sind f\u00fcr den vorgesehenen Datenpfad ausreichend Hugepages reserviert, oder ist der Einsatz ohne Hugepages bewusst gepr\u00fcft und begr\u00fcndet?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">IOMMU und VFIO<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">F\u00fcr viele PMDs werden Ger\u00e4te vom regul\u00e4ren Kernel-Treiber gel\u00f6st und \u00fcber VFIO bereitgestellt; bifurkierte PMDs folgen einem anderen Modell.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Welchen Bindungsweg verlangt der konkrete PMD, und ist bei VFIO die vorgesehene IOMMU-Konfiguration verf\u00fcgbar?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Przypinanie procesora<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Dedizierte Kerne vermeiden Scheduler-Konkurrenz im Polling-Datenpfad.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Welche logischen Kerne sind f\u00fcr lcores reserviert, ohne Systemdienste zu verdr\u00e4ngen?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">NUMA<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Lokaler Speicherzugriff reduziert unn\u00f6tige Zugriffe \u00fcber NUMA-Knoten hinweg.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Liegen NIC, lcores und Mempools auf demselben NUMA-Knoten?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Queue-Planung<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Rx- und Tx-Queues bestimmen, wie Arbeit auf Kerne verteilt wird.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Gibt es pro Datenpfad eine eindeutige Queue-Zuordnung ohne unn\u00f6tiges Sharing?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Monitoring<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Paketverluste und Ressourcenengp\u00e4sse m\u00fcssen im Betrieb sichtbar bleiben.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Welche Z\u00e4hler f\u00fcr NIC, Queues, Pools und Anwendung werden \u00fcberwacht?<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Hugepages sind f\u00fcr umfangreiche Paketpools der \u00fcbliche Weg, aber keine ausnahmslose Bedingung jeder DPDK-Anwendung. Die EAL unterst\u00fctzt auch &#8211;no-huge. Dieser Sondermodus ist keine gleichwertige Standardempfehlung: Eignung, Speicherverwaltung und Treibergrenzen sind vor dem Pilotbetrieb zu pr\u00fcfen. Die hier verwendeten System- und EAL-Grundlagen dokumentieren DPDK 25.07; gleiche die Optionen zus\u00e4tzlich mit dem tats\u00e4chlich installierten Release ab.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Besonders kritisch ist die <strong style=\"font-weight:700;color:inherit\">Ger\u00e4tebindung<\/strong>. Viele PMDs setzen voraus, dass die betreffende NIC vom regul\u00e4ren Kernel-Treiber gel\u00f6st und beispielsweise an <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">vfio-pci<\/code> gebunden wird. Das Interface steht dem normalen Linux-Netzwerkstack dann nicht mehr regul\u00e4r zur Verf\u00fcgung. Die konkrete Vorgehensweise muss jedoch zum PMD passen und darf nicht pauschal auf jede unterst\u00fctzte Netzwerkkarte \u00fcbertragen werden. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Eine wichtige Ausnahme bilden bifurkierte PMDs. Die Treiberdokumentation weist darauf hin, dass solche PMDs nicht vom zugeh\u00f6rigen Kernel-Treiber gel\u00f6st werden sollen. Dabei kann der Kernel-Treiber gebunden bleiben, w\u00e4hrend ein Userspace-Datenpfad bestimmte Ressourcen nutzt. Die verlinkte unversionierte Dokumentation zeigt den Entwicklungsstand 26.11.0-rc1 und ist keine versionsgebundene Anleitung f\u00fcr 26.07. Pr\u00fcfe Ger\u00e4teunterst\u00fctzung und verf\u00fcgbare Kernelwerkzeuge im Handbuch des konkret eingesetzten PMD. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Vor jeder \u00c4nderung liefert die folgende Statusabfrage eine Inventur der PCI-Ger\u00e4te und ihrer aktuellen Treiberbindung. Sie \u00e4ndert selbst keine Bindung. F\u00fchre sie auf dem Zielsystem mit dem Pfad aus, der zur installierten DPDK-Quell- oder Werkzeugstruktur passt. <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Kod<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Skopiuj kod<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Skopiowano<\/span><span data-wh-copy-fallback hidden>Zaznaczony kod \u2013 prosz\u0119 skopiowa\u0107<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-text\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">.\/usertools\/dpdk-devbind.py --status<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Plane Management-Zugang und Produktivdatenpfad getrennt, selbst wenn der gew\u00e4hlte PMD den Kernel-Treiber nicht abl\u00f6st. Die SSH- oder Konsolen-Erreichbarkeit darf nicht von einer Schnittstelle abh\u00e4ngen, deren Bindung oder Verkehrsaufteilung im Pilotbetrieb ver\u00e4ndert wird. Ein separates Management-Interface, Out-of-Band-Zugang oder ein vorab gepr\u00fcfter lokaler Rettungsweg begrenzt das Risiko einer Fehlkonfiguration.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"dpdk-afxdp-kernelstack\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"dpdk-afxdp-kernelstack\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">DPDK, AF_XDP und Kernelstack vergleichen<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Die Wahl des Datenpfads ist keine Rangliste, sondern eine Betriebsentscheidung. Linux-Kernelstack, AF_XDP und DPDK verschieben jeweils Aufwand, Ger\u00e4tezugriff und CPU-Verbrauch. Die passende Option richtet sich danach, ob tats\u00e4chlich die Paketrate oder Latenz im Netzwerkpfad begrenzt \u2013 oder ob Anwendung, Verschl\u00fcsselung und Backends den Engpass bilden.<\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Einordnung von Kernelstack, AF_XDP und DPDK\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Einordnung von Kernelstack, AF_XDP und DPDK<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Podej\u015bcie<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">\u015acie\u017cka danych<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Ger\u00e4tebesitz<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">CPU-Verhalten<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Typowe zastosowania<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Wichtigste Grenze<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Linux-Kernelstack<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Regul\u00e4rer Kernel-Netzwerkstack mit Sockets und Kernel-Funktionen.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">NIC bleibt regul\u00e4res Kernel-Interface.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Interrupts zur Ereignismeldung, unter Last NAPI-Polling; Verarbeitung und Anwendungen unterliegen der Kernel-\/Scheduler-Steuerung.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Allgemeine Serverdienste, Routing und Anwendungen mit vorhandenen Linux-Werkzeugen.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Paketverarbeitung kann bei sehr hoher Paketrate zum Engpass werden.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">AF_XDP<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">XDP mit Userspace-Sockets; je nach Treiber Copy- oder Zero-Copy-Modus.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Integration bleibt am XDP- und Socket-Modell orientiert.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Abh\u00e4ngig von Modus, Treiber und Queue-Zuordnung.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Gezielte Beschleunigung einzelner Queues bei weiterem Kernelbezug.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Zero Copy ist nicht auf jedem Treiber verf\u00fcgbar.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">DPDK<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">PMDs pollen Rx- und Tx-Deskriptoren direkt im Userspace.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Viele PMDs verlangen eine Bindung au\u00dferhalb des regul\u00e4ren Kernel-Netzwerkpfads; bifurkierte PMDs lassen den Kernel-Treiber dagegen gebunden.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Polling beansprucht reservierte Kerne auch bei geringer Last.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Hohe Paketraten, spezialisierte Filter, Load Balancer und NFV.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Mehr Ressourcenplanung; Kernelintegration und Verkehrsaufteilung h\u00e4ngen vom konkreten PMD-Modell ab.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">AF_XDP ist eine Zwischenoption f\u00fcr Teams, die Pakete fr\u00fch behandeln und dennoch nahe am Linux-Netzwerkmodell bleiben m\u00f6chten. Der Kernel beschreibt einen Copy-Modus sowie Zero Copy, das Treiberunterst\u00fctzung voraussetzt. Wird Zero Copy ausdr\u00fccklich verlangt, kann die Socket-Erstellung fehlschlagen, falls der Treiber diese F\u00e4higkeit nicht anbietet.  F\u00fcr die Einordnung der XDP-Ebene hilft der Beitrag <a href=\"https:\/\/webhosting.de\/pl\/xdp-wysokowydajne-przetwarzanie-pakietow-z-predkoscia-jadra-systemu\/\">XDP und eXpress Data Path<\/a>.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">DPDK nutzt dagegen Poll Mode Drivers und verarbeitet Warteschlangen direkt aus der Anwendung heraus. Das kann Socket- und Interrupt-Anteile f\u00fcr den DPDK-Datenpfad umgehen, verlangt aber Verantwortung f\u00fcr Speicher, Queues und Kernzuordnung. <strong style=\"font-weight:700;color:inherit\">Zero Copy<\/strong> ist dabei weder ein allgemeines Leistungsversprechen noch eine automatische Eigenschaft eines beliebigen DPDK-Pfads; Kopien h\u00e4ngen von Anwendung, Offloads und Speicher\u00fcbergaben ab. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">W\u00e4hle den Kernelstack, wenn Routing, Firewalling, Observability und einfacher Betrieb wichtiger sind als ein spezialisierter Paketpfad. Pr\u00fcfe AF_XDP bei gezielter Beschleunigung mit Kernelanbindung. DPDK lohnt sich erst bei belegtem Bedarf an hoher Paketrate oder gleichm\u00e4\u00dfiger Latenz, vorhandener NIC-Unterst\u00fctzung und einem Team, das die zus\u00e4tzliche Betriebsverantwortung dauerhaft tragen kann.<\/p>\n<aside class=\"wh-callout\" style=\"display:block;margin:28px 0;padding:20px 23px;border:1px solid #d1e4dd;border-left:4px solid #187065;border-radius:11px;background:#f0f7f4\"><p class=\"wh-callout-title\" style=\"margin:0 0 8px;color:#1c5c53;font-size:16px;font-weight:700;line-height:1.5\">Auswahl nicht am Durchsatz allein festmachen<\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Bewerte Paketgr\u00f6\u00dfe, Paketrate, Latenzziel, ben\u00f6tigte Protokollfunktionen, bestehende Betriebswerkzeuge und Personalaufwand gemeinsam. Ein schnellerer Paketpfad l\u00f6st keinen Engpass in TLS-Verarbeitung, Datenbank oder Backend-Service.<\/p>\n<\/aside><\/section><section class=\"wh-section\" aria-labelledby=\"queue-cpu-numa-planung\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"queue-cpu-numa-planung\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Queues, CPU-Pinning und NUMA sinnvoll planen<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Eine belastbare <strong style=\"font-weight:700;color:inherit\">Queue-Zuordnung<\/strong> beginnt mit der N\u00e4he zwischen NIC, CPU und Speicher. Die EAL unterst\u00fctzt die Auswahl logischer Kerne, Speicherreservierung und Ger\u00e4tezuschnitt. F\u00fcr einen einfachen Datenpfad ist es meist sinnvoll, eine Rx-Queue einem lcore fest zuzuordnen, den zugeh\u00f6rigen Mempool am lokalen NUMA-Knoten anzulegen und die Verarbeitung anschlie\u00dfend an eine passende Tx-Queue zu \u00fcbergeben. Diese grundlegenden EAL-Angaben sind mit der Dokumentation von DPDK 25.07 belegt und m\u00fcssen f\u00fcr versionsabh\u00e4ngige Optionen gegen den eingesetzten Release-Tag gepr\u00fcft werden. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Ein nicht produktspezifisches Beispiel f\u00fcr einen Host mit zwei NUMA-Knoten w\u00e4re: Die NIC an Knoten 0 erh\u00e4lt zwei Rx-Queues; je ein lcore an Knoten 0 bearbeitet eine Queue vollst\u00e4ndig. Die Paketpuffer liegen ebenfalls auf Knoten 0. Ein weiterer, nicht pollender Kern bleibt f\u00fcr Verwaltungsaufgaben frei, w\u00e4hrend Knoten 1 f\u00fcr andere Dienste oder klar getrennte Datenpfade vorgesehen wird.<\/p>\n<ul class=\"wh-list\" role=\"list\" style=\"list-style:none;margin:24px 0;padding:0\"><li style=\"margin:8px 0;padding:12px 17px;background:#f5f8fa;border:1px solid #e0e8ec;border-radius:9px\">Datenpfad: je Queue ein fest zugeordneter lcore, lokale Mempools und klar benannte Rx-\/Tx-Paare.<\/li><li style=\"margin:8px 0;padding:12px 17px;background:#f5f8fa;border:1px solid #e0e8ec;border-radius:9px\">Verwaltung: CPU-Kapazit\u00e4t f\u00fcr Telemetrie, Steuerlogik, Ereignisse und Betriebssystemdienste freihalten.<\/li><li style=\"margin:8px 0;padding:12px 17px;background:#f5f8fa;border:1px solid #e0e8ec;border-radius:9px\">Reserve: Kapazit\u00e4t f\u00fcr Lastspitzen, Fehlersuche und geplante Erweiterungen einplanen, statt alle Kerne dauerhaft zu verplanen.<\/li><\/ul><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Teile eine Rx-Queue nicht zwischen mehreren lcores. Der PMD-Leitfaden r\u00e4t vom Teilen von Rx- und Tx-Queues ab, weil daf\u00fcr n\u00f6tige globale Sperren die Leistung stark beeintr\u00e4chtigen k\u00f6nnen. Gleichzeitiger Zugriff mehrerer lcores auf eine Tx-Queue ist nur dann als dokumentierte Ausnahme vorgesehen, wenn der Treiber die F\u00e4higkeit <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">RTE_ETH_TX_OFFLOAD_MT_LOCKFREE<\/code> meldet. Pr\u00fcfe diese Capability f\u00fcr die konkrete NIC-\/PMD-Kombination; leite sie weder aus der Portgeschwindigkeit noch aus einem allgemeinen Offload-Schalter ab. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Eine Pipeline mit getrennten Parser-, Klassifizierungs- und Sendestufen kann Zust\u00e4ndigkeiten klarer machen. Der dokumentierte Pipeline-Ansatz \u00fcbergibt Pakete \u00fcber Ringe an weitere Kerne; dadurch entstehen zus\u00e4tzliche Speicherzugriffe und \u00dcbergaben. F\u00fcr einfache Filter oder L4-Weiterleitung ist Run-to-completion pro Queue h\u00e4ufig leichter zu planen. Mehrere Stufen sollten nur eingesetzt werden, wenn die Arbeitsteilung ihren Mehraufwand im konkreten Lastprofil rechtfertigt. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">R\u00f3wnie\u017c <strong style=\"font-weight:700;color:inherit\">Hardware-Offloads<\/strong> d\u00fcrfen nicht in die Planung hineingelesen werden. Welche Checksum-, Segmentierungs-, RSS- oder Flow-Funktionen verf\u00fcgbar sind, ergibt sich aus den F\u00e4higkeiten des konkreten Ethernet-Ger\u00e4ts und seines PMD. Pr\u00fcfe sie vor dem Entwurf und behandle einen fehlenden Offload als normalen Planungsfall, nicht als Ausnahme.  <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"betrieb-und-beobachtbarkeit\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"betrieb-und-beobachtbarkeit\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">DPDK im Betrieb sicher beobachten<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Der Betrieb eines DPDK-Datenpfads braucht Metriken, die Paketverarbeitung und Ressourcen zusammen betrachten. Erfasse mindestens verarbeitete, verworfene und fehlerhafte Pakete sowie anwendungseigene Werte f\u00fcr Verarbeitungsraten, Mempool-Reserven und <strong style=\"font-weight:700;color:inherit\">Latenzverteilung<\/strong> statt nur eines Mittelwerts. Welche zus\u00e4tzlichen Port-, Queue- oder Treiberz\u00e4hler verf\u00fcgbar sind, h\u00e4ngt vom konkreten PMD, der NIC und der Anwendung ab und muss f\u00fcr die eingesetzte Kombination gepr\u00fcft werden. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Polling ist ein bewusster Zielkonflikt. Ein lcore fragt seine Rx-Queue fortlaufend ab, damit Pakete ohne den regul\u00e4ren Interruptpfad verarbeitet werden k\u00f6nnen. Bei wenig oder keinem Traffic bleibt die Pollschleife dennoch aktiv. Plane deshalb neben Datenpfad-lcores CPU-Kapazit\u00e4t f\u00fcr Steuerlogik, Telemetrie und Betriebssystem ein. Die erg\u00e4nzend verwendete EAL-Dokumentation bezieht sich auf DPDK 25.07; releaseabh\u00e4ngige Funktionen sind im installierten Stand zu pr\u00fcfen.  <\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail2\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-monitoring-queue-cpu-96cb18a6-detail2-a9bc2ce1c3-1024x683.webp\" class=\"wp-image-21991\" alt=\"Administrator betrachtet an einem Arbeitsplatz Metriken f\u00fcr Queue-, CPU- und Paketverlustanalyse.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-monitoring-queue-cpu-96cb18a6-detail2-a9bc2ce1c3-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-monitoring-queue-cpu-96cb18a6-detail2-a9bc2ce1c3-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-monitoring-queue-cpu-96cb18a6-detail2-a9bc2ce1c3-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-monitoring-queue-cpu-96cb18a6-detail2-a9bc2ce1c3-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/10\/dpdk-monitoring-queue-cpu-96cb18a6-detail2-a9bc2ce1c3.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail2\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">KI-generiertes Symbolbild: F\u00fcr den Betrieb werden Queue-Z\u00e4hler, CPU-Last und Paketverluste gemeinsam bewertet.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">F\u00fcr die Ursachenanalyse ist eine zeitliche Korrelation wichtig. Tritt Paketverlust zugleich mit Fehlerz\u00e4hlern, sinkenden Mempool-Reserven oder einem ausgelasteten Datenpfad-lcore auf, sind dies zun\u00e4chst pr\u00fcfbare Hinweise und noch kein eindeutiger Ursachennachweis. Schwankende Antwortzeiten k\u00f6nnen unter anderem mit NUMA-fernem Speicher, konkurrierenden Aufgaben oder Pipeline-\u00dcbergaben zusammenh\u00e4ngen. Vergleiche solche Hypothesen jeweils mit Kernzuordnung, Queue-Verteilung und Messwerten desselben Zeitfensters.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Schnelle Erfassung am Interface ist nicht gleichbedeutend mit vollst\u00e4ndiger, dauerhaft verlustfreier Paketaufzeichnung. F\u00fcr Flow-Statistiken oder Header-Auswertung k\u00f6nnen wenige Metadaten gen\u00fcgen. Soll jedes Paket gespeichert werden, begrenzen zus\u00e4tzlich Speicherbandbreite, Puffervolumen, Schreibdurchsatz und das gew\u00e4hlte Speichermedium den Aufbau. Datenschutz und Aufbewahrungsregeln sind dabei unabh\u00e4ngige Anforderungen, die der Netzwerkdurchsatz nicht l\u00f6st.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Plane virtuelle Maschinen und Container als eigene Integrationsaufgabe. Kl\u00e4re f\u00fcr die konkrete Plattform, wie Ger\u00e4tezugriff, Speicher, CPU-Zuordnung und erforderliche Rechte bereitgestellt werden. Pr\u00fcfe diese Kombination mit dem eingesetzten PMD, statt Beispielparameter pauschal zu \u00fcbernehmen. Der verlinkte Linux-Leitfaden geh\u00f6rt aktuell zum Entwicklungsstand 26.11.0-rc1; f\u00fcr einen Produktivaufbau ist die Dokumentation des tats\u00e4chlich installierten Releases ma\u00dfgeblich. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"fehlerbilder-systematisch-pruefen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"fehlerbilder-systematisch-pruefen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Typische Fehlerbilder systematisch pr\u00fcfen<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Eine Fehlersuche sollte zuerst beobachtbare Symptome von m\u00f6glichen Ursachen trennen. \u00c4ndere nicht gleichzeitig Treiberbindung, Queue-Zahl und Speicherparameter, weil der Ausl\u00f6ser dann nicht mehr nachvollziehbar ist. Nicht-destruktive Z\u00e4hler, Konfigurationseinblicke und ein Vergleich zwischen betroffener und unbetroffener Queue liefern vor Eingriffen meist die belastbareren Hinweise.<\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Typische DPDK-Fehlerbilder und schonende erste Pr\u00fcfungen\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Typische DPDK-Fehlerbilder und schonende erste Pr\u00fcfungen<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Objaw<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Zu pr\u00fcfende Hypothesen<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Nicht-destruktive Pr\u00fcfung<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">utrata paczek<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Der verarbeitende lcore h\u00e4lt m\u00f6glicherweise nicht Schritt, Paketpuffer werden knapp oder der PMD meldet Empfangsfehler.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Anwendungs-, Port- und verf\u00fcgbare Treiberz\u00e4hler, Mempool-Reserven und CPU-Auslastung im selben Zeitfenster vergleichen.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Unregelm\u00e4\u00dfige Latenz<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">NUMA-ferner Speicher, konkurrierende Aufgaben oder zus\u00e4tzliche Pipeline-\u00dcbergaben k\u00f6nnen beteiligt sein.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">CPU- und Speicherzuordnung sowie Queue-Eigent\u00fcmer pr\u00fcfen; Latenzausrei\u00dfer getrennt nach Datenpfad erfassen.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Hohe CPU-Last bei wenig Traffic<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Die Pollschleife l\u00e4uft auch bei leerer Empfangsqueue weiter.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Auslastung des pollenden lcores gegen die tats\u00e4chliche Paketrate stellen und reservierte Kerne dokumentieren.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Host nicht erreichbar<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Eine Management-Schnittstelle k\u00f6nnte umgebunden oder ihre Verkehrsf\u00fchrung ver\u00e4ndert worden sein.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">PCI-Ger\u00e4te- und Bindungsstatus \u00fcber einen getrennten Management- oder Konsolenzugang pr\u00fcfen.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Offload fehlt<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">NIC-Modell, PMD oder Konfiguration stellt die gew\u00fcnschte F\u00e4higkeit m\u00f6glicherweise nicht bereit.<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Feature-Matrix und gemeldete Ger\u00e4tef\u00e4higkeiten f\u00fcr das konkrete NIC-Modell abgleichen.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Bei auff\u00e4lligem Queue-Verhalten pr\u00fcfst du Queue-Eigent\u00fcmer und den NUMA-Knoten des Mempools. Im Run-to-completion-Modell verarbeitet der zugeordnete lcore Empfang, Verarbeitung und Senden; eine Pipeline \u00fcbergibt Pakete an weitere Kerne. Teile die Rx-Queue trotzdem nicht zwischen lcores. Gleichzeitiger Zugriff auf eine Tx-Queue ist nur bei gemeldeter <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">RTE_ETH_TX_OFFLOAD_MT_LOCKFREE<\/code>-F\u00e4higkeit als Ausnahme vorgesehen. Eine selbst erg\u00e4nzte Sperre macht Queue-Sharing nicht zur empfohlenen Skalierungsstrategie. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Bei fehlenden Hardware-Offloads ist die richtige Frage nicht allein, welcher Schalter gesetzt wurde, sondern welche F\u00e4higkeit Ger\u00e4t und PMD tats\u00e4chlich bereitstellen. Eine Anwendung kann eine gew\u00fcnschte Funktion einplanen, ohne dass sie f\u00fcr dieses Modell verf\u00fcgbar ist. Vergleiche die Unterst\u00fctzung f\u00fcr die konkrete NIC mit den zur Laufzeit gemeldeten F\u00e4higkeiten, bevor du den Datenpfad von diesem Offload abh\u00e4ngig machst.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Ergebnisse von testpmd sind als Baseline oder Funktionspr\u00fcfung einzuordnen, nicht als Leistungsnachweis der sp\u00e4teren Anwendung. Im io-Forwarding-Modus werden Pakete unver\u00e4ndert weitergeleitet, ohne ihre Inhalte f\u00fcr fachliche Verarbeitung auszuwerten. Parser, Flow-Tabellen, NAT, Verschl\u00fcsselung und Protokollzustand bildet dieser Modus nicht ab. Die verlinkte unversionierte Dokumentation geh\u00f6rt zu 26.11.0-rc1; pr\u00fcfe das Verhalten im Handbuch des installierten Releases. Halte Forwarding-Modus, Paketgr\u00f6\u00dfe, Rx-\/Tx-Queue-Zahl und Forwarding-Kerne fest und wiederhole den Vergleich mit realer Verarbeitungslogik. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"rollout-und-entscheidungsrahmen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"rollout-und-entscheidungsrahmen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Rollout, Versionspflege und Einsatzentscheidung<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Beginne mit einem isolierten Test und einem dokumentierten <strong style=\"font-weight:700;color:inherit\">profil obci\u0105\u017cenia<\/strong>: Paketgr\u00f6\u00dfen, Spitzenlast, Flussanzahl und ben\u00f6tigte Verarbeitungsschritte. Pr\u00fcfe die konkrete NIC samt passendem Poll Mode Driver und ben\u00f6tigten Funktionen anhand der offiziellen Hardware\u00fcbersicht und Treibermatrix. Ein gelisteter Hersteller allein best\u00e4tigt weder jede Karte noch s\u00e4mtliche Offloads. Teste anschlie\u00dfend mit realer Anwendungslogik, nicht ausschlie\u00dflich mit einem Weiterleitungsbeispiel. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Halte DPDK-Version, Firmware, Treiber, Kernel und Konfiguration f\u00fcr jeden Versuch fest. Lies vor einem Update die Release Notes des exakt vorgesehenen Release-Tags und dokumentiere, welche \u00c4nderungen f\u00fcr den eigenen Datenpfad relevant sind. Release-Notes unterschiedlicher Versionen sind kein Ersatz f\u00fcr diese Zuordnung, weil sich Funktionen und Einschr\u00e4nkungen zwischen Releases \u00e4ndern k\u00f6nnen. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Ein konkreter Pr\u00fcfpunkt aus den Release Notes zu DPDK 26.07 ist der ge\u00e4nderte Flush-\/Refill-Algorithmus des Mempool-Caches: Seine effektive Gr\u00f6\u00dfe entspricht seitdem der konfigurierten Gr\u00f6\u00dfe; zuvor war sie 50 Prozent gr\u00f6\u00dfer. Nur wenn jeder lcore an einem Mempool ausschlie\u00dflich Objekte entnimmt oder ausschlie\u00dflich zur\u00fcckgibt, empfehlen die Release Notes eine Verdopplung der konfigurierten Cachegr\u00f6\u00dfe, um eine m\u00f6gliche Verdopplung der Cache-Miss-Rate zu vermeiden. Das betrifft etwa Pipelines mit getrennten Rx- und Tx-lcores, nicht pauschal Run-to-completion. Die \u00c4nderung betrifft Release 26.07; die verlinkte historische Release-Seite steht inzwischen innerhalb der Dokumentation zu 26.11.0-rc1. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Beginne mit einem begrenzten Pilot und festen Abbruchkriterien. Vergleiche Durchsatz, hohe Latenzperzentile, Paketverluste und CPU-Bedarf unter gleichen Bedingungen mit dem bisherigen Betrieb. Pr\u00fcfe \u00dcberwachung, Neustarts und R\u00fcckfall auf die vorherige Konfiguration. Ber\u00fccksichtige den Betriebsaufwand; eine allgemeine Durchsatzgarantie l\u00e4sst sich daraus nicht ableiten.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">DPDK lohnt sich als Einsatzentscheidung vor allem dann, wenn der gemessene Nutzen den zus\u00e4tzlichen Pflegeaufwand rechtfertigt. F\u00fcr die Einordnung der umgebenden Systemplattform erg\u00e4nzt der Beitrag <a href=\"https:\/\/webhosting.de\/pl\/nowosci-w-jadrze-systemu-linux-6-serwery-hostingowe\/\">Linux-Kernel im Hostingbetrieb<\/a> die Planung. Behalte f\u00fcr gew\u00f6hnliche Hostingdienste auch den bestehenden Netzwerkpfad als Vergleichsbasis im Test.<\/p>\n<\/section><section class=\"wh-sources\" style=\"margin:40px 0 0;padding:24px 0 0;border-top:1px solid #dce5e9;color:#596b7b;font-size:14px;line-height:1.65\"><h2 style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">\u0179r\u00f3d\u0142a i aktualny stan wiedzy<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Stan bada\u0144: <time datetime=\"2026-10-25\">2026-10-25<\/time><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Fachstand: 25. Oktober 2026. Konkret als stabiler Funktionsstand benannte Angaben beziehen sich auf DPDK 26.07.0. Die Quellen S4 und S5 dokumentieren grundlegende System- und EAL-Eigenschaften anhand von DPDK 25.07; versionsabh\u00e4ngige Optionen sind deshalb zus\u00e4tzlich im eingesetzten Release zu pr\u00fcfen. S6 und S12 verweisen im Quellenregister auf den unversionierten Dokumentationszweig und werden nicht als eigenst\u00e4ndiger Nachweis f\u00fcr DPDK 26.07 behandelt. S13 enth\u00e4lt die release-spezifischen Angaben zu 26.07, besitzt im Register jedoch ebenfalls eine unversionierte Dokumentations-URL.<\/p><div class=\"wh-source-urls\"><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/doc.dpdk.org\/guides-26.03\/prog_guide\/ethdev\/ethdev.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/core.dpdk.org\/supported\/nics\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/doc.dpdk.org\/guides-25.07\/prog_guide\/env_abstraction_layer.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/doc.dpdk.org\/guides-26.07\/prog_guide\/mbuf_lib.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/doc.dpdk.org\/guides-25.07\/linux_gsg\/sys_reqs.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/doc.dpdk.org\/guides\/linux_gsg\/linux_drivers.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/docs.kernel.org\/networking\/af_xdp.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/doc.dpdk.org\/guides\/linux_gsg\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/doc.dpdk.org\/guides\/testpmd_app_ug\/testpmd_funcs.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/doc.dpdk.org\/guides\/rel_notes\/release_26_07.html<\/span><\/p><\/div><\/section><\/div>","protected":false},"excerpt":{"rendered":"<p>DPDK verarbeitet Pakete f\u00fcr ausgew\u00e4hlte NICs direkt im Userspace. Der Artikel erkl\u00e4rt Polling, Queue- und NUMA-Planung, sichere Ger\u00e4tebindung sowie die Abgrenzung zu AF_XDP und dem Linux-Kernelstack.<\/p>","protected":false},"author":1,"featured_media":21989,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[922],"tags":[],"class_list":["post-21968","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"surfer_file_name":null,"surfer_file_original_url":null,"_wp_attachment_image_alt":null,"litespeed-optimize-set":null,"litespeed-optimize-size":null,"_oembed_b5e1eb923ad3b086e579b1befcd4075c":null,"_elementor_source_image_hash":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"_source_url":null,"_elementor_migrations_state_8b2d":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"_wh_make_key":"wh_96cb18a6a8e628a2afa31bcdd8f2a9b9","rank_math_internal_links_processed":"1","_wh_make_topic":"DPDK \u2013 Paketverarbeitung ohne Kernel-Limits","_wh_make_input_keywords":["dpdk","packet processing","network performance"],"_wh_make_config":{"research_model":"gpt-5.6-terra","writer_model":"gpt-5.6-terra","review_model":"gpt-5.6-sol","image_model":"gpt-image-2.5-flare","image_quality":"high","image_format":"webp","final_status":"draft","charts_enabled":true},"_wh_make_links":{"I1":{"id":"I1","post_id":20356,"url":"https:\/\/webhosting.de\/xdp-hochperformante-paketverarbeitung-kernel-speed\/","title":"XDP i eXpress Data Path: wysokowydajne przetwarzanie pakiet\u00f3w","excerpt":"XDP beschleunigt die Paketverarbeitung, weil es Entscheidungen direkt am Eingang des Linux-Netzwerk-Stacks trifft und so Latenz, Speicherzugriffe und CPU-Zyklen senkt. Der eXpress Data Path pr\u00fcft Pakete schon im Treiberpfad, verwirft, leitet um oder l\u00e4sst sie passieren \u2013 ideal f\u00fcr DDoS-Abwehr, Load Balancing, Traffic-Filterung und Telemetrie. Zentrale Punkte Fr\u00fche Entscheidungen direkt am NIC-Eingang eBPF als sicherer, verifizierter Ausf\u00fchrungsmechanismus Latenz und Overhead drastisch reduzieren Skalierung f\u00fcr Millionen Pakete pro Sekunde Integration mit Linux-Treibern, Routing und Monitoring Was XDP im Kernel leistet Ich platziere Logik an der NIC, bevor Pakete den kompletten Stack belasten, und spare dadurch Kopien, Interrupts und Kontextwechsel. XDP-Programme entscheiden fr\u00fch \u00fcber DROP, PASS, REDIRECT oder TX und entlasten so h\u00f6here Schichten. Dadurch steigt die Effizienz deutlich, besonders bei kleinen Paketen, die sonst die CPU dominieren. Ich minimiere Cache-Misses und reduziere Warteschlangen, was direkte Auswirkungen auf Tail-Latenzen hat. Genau hier liegt der Unterschied zu klassischen Pfaden, die Pakete erst sp\u00e4t klassifizieren und damit unn\u00f6tigen Overhead verursachen. eBPF als Motor des Express Data Path Ich schreibe eBPF-Code kompakt, lasse ihn im Kernel verifizieren und h\u00e4nge ihn an den XDP-Hook des Treibers. So reagiere ich auf jedes eingehende Paket in Nanosekunden und \u00e4ndere Verhalten ohne Kernel-Rebuild. F\u00fcr die Analyse nutze ich eBPF-Analysewerkzeuge, um Pfade, Maps und Latenzen sichtbar zu machen. Ich variiere Schl\u00fcssel in Maps f\u00fcr Ratenbegrenzung, Conntrack-light oder Telemetrie und halte den Code dabei schlank. Diese N\u00e4he zur Hardware senkt die Latenz sp\u00fcrbar, ohne die Linux-Integration aufzugeben. XDP-Aktionen: Abweisen, Weiterleiten, Umleiten Ich setze die XDP-Aktionen gezielt ein, um Verkehr fr\u00fch zu steuern: DROP f\u00fcr Bot-Scans, PASS f\u00fcr legitime Flows, REDIRECT zum Nachbar-Interface und TX f\u00fcr sofortiges R\u00fccksenden. So trenne ich unerw\u00fcnschte Last an der Kante und sch\u00fctze Hosts vor \u00dcberflutung tieferer Schichten. Die folgenden Zuordnungen helfen bei der Planung konkreter Policies. Ich priorisiere einfache, deterministische Pr\u00fcfungen zuers"},"I2":{"id":"I2","post_id":21751,"url":"https:\/\/webhosting.de\/kernelcare-live-patching-erfolgreich-testen\/","title":"Skuteczne testowanie funkcji KernelCare Live Patching: najlepsze praktyki dla administrator\u00f3w","excerpt":"Ein belastbarer Test f\u00fcr KernelCare Live Patching pr\u00fcft mehr als den erfolgreichen Patchdownload: Der laufende Kernel muss unterst\u00fctzt sein, der Patchstatus nachvollziehbar aktiv und die Anwendung unter einem realistischen Lastzyklus gesund. Starte auf einem produktionsnahen Staging-Host, rolle anschlie\u00dfend \u00fcber QA und Canary aus und dokumentiere Abbruchkriterien. Livepatches verschieben Reboots, ersetzen sie aber nicht. Plane deshalb regul\u00e4re Kernel Updates und Neustarts weiterhin als festen Teil des Betriebs ein. Direkt zum AbschnittKernelCare Livepatch richtig einordnen Komponenten, Plattformen und klare Abgrenzungen Was ein belastbarer Test beweisen muss Produktionsnahe Staging-Baseline aufbauen Patchstatus mit kcarectl korrekt bewerten QA, Canary und Produktion kontrolliert staffeln Secure Boot und kritische Sonderf\u00e4lle testen Monitoring, Fehleranalyse und sichere Eskalation Rebootstrategie und dokumentierte Freigabe planen KernelCare Livepatch richtig einordnenKernelCare ist der Agent von TuxCare f\u00fcr Kernel-Live-Patching auf unterst\u00fctzten Linux-Systemen. Er bringt bereitgestellte Sicherheitskorrekturen in den laufenden Kernel ein, ohne dass der Server unmittelbar neu starten muss. Ob ein Patch anwendbar ist, h\u00e4ngt von der konkreten Kombination aus Kernel-Build, Distribution und Architektur ab; ein verf\u00fcgbares Agentenpaket allein belegt diese Unterst\u00fctzung nicht. Zur technischen Einordnung beschreibt das Upstream-Linux-Livepatch-Framework einen Konsistenz\u00fcbergang, bei dem betroffene Tasks sicher auf ge\u00e4nderten Code wechseln. Diese Dokumentation erkl\u00e4rt das allgemeine Kernel-Framework, aber nicht zwangsl\u00e4ufig den Implementierungsweg jeder KernelCare-Variante. F\u00fcr produktspezifische Funktionen und Betriebsentscheidungen bleiben daher die Angaben von TuxCare ma\u00dfgeblich. Ein heruntergeladener oder als angewendet gemeldeter Patch weist zun\u00e4chst die Funktion der Patchkette nach. Er belegt nicht, dass Datenbankverbindungen, Storage-Zugriffe, Netzwerkpfade, Batch-Jobs und fachliche Transaktionen unter realer Last fehlerfrei bleiben. Ein belastbarer Test bewertet deshalb Patchstatus, Systemmetriken und Anwendungsergebnisse gemeinsam. Regul\u00e4re Kernel Updates bleiben"},"I3":{"id":"I3","post_id":21699,"url":"https:\/\/webhosting.de\/linux-kernel-6-neuerungen-hosting-server\/","title":"J\u0105dro systemu Linux 6.x: istotne zmiany dla serwer\u00f3w hostingowych","excerpt":"J\u0105dro systemu Linux w wersji 6.x zawiera funkcje i udoskonalone interfejsy, kt\u00f3re mog\u0105 wp\u0142ywa\u0107 na obci\u0105\u017cenie pami\u0119ci, op\u00f3\u017anienia procesora oraz ograniczenia proces\u00f3w na serwerach hostingowych. Nie wszystkie om\u00f3wione mechanizmy zosta\u0142y wprowadzone dopiero w wersji 6.x: na przyk\u0142ad Landlock pochodzi z j\u0105dra Linux 5.13 i zosta\u0142 rozszerzony w kolejnych wersjach ABI. Decyduj\u0105ce znaczenie ma ponadto nie tylko polecenie `uname -r`. Dystrybucja, konfiguracja j\u0105dra, struktura cgroup\u00f3w oraz rzeczywiste obci\u0105\u017cenie okre\u015blaj\u0105, co jest dost\u0119pne i sensowne. Dlatego te\u017c nale\u017cy traktowa\u0107 Multi-Gen LRU, EEVDF, Landlock i inne funkcje jako narz\u0119dzia w konkretnym \u015brodowisku operacyjnym, a nie jako og\u00f3lne dostrajanie j\u0105dra. Przejd\u017a bezpo\u015brednio do sekcji: Prawid\u0142owa ocena wersji j\u0105dra Cztery obszary dzia\u0142ania w hostingu Obci\u0105\u017cenie pami\u0119ci i odzyskiwanie stron (Page Reclaim) Celowe sprawdzanie Multi-Gen LRU Pewne zaw\u0119\u017canie problem\u00f3w z pami\u0119ci\u0105 Zrozumienie EEVDF i konkurencji procesor\u00f3w Landlock dla wyspecjalizowanych proces\u00f3w roboczych DAMON tylko w wyj\u0105tkowych przypadkach Aktualizacje, aktualizacje na \u017cywo i restarty Prawid\u0142owe klasyfikowanie wersji j\u0105dra Oznaczenie \u201eLinux 6.x\u201d obejmuje wiele g\u0142\u00f3wnych wyda\u0144, a nie jednolity stan funkcjonalno\u015bci. Za g\u0142\u00f3wn\u0105 ga\u0142\u0105\u017a (mainline) uwa\u017ca si\u0119 lini\u0119 g\u0142\u00f3wn\u0105 utrzymywan\u0105 przez Linusa Torvaldsa: po zako\u0144czeniu okna scalania (Merge Window) zazwyczaj pojawiaj\u0105 si\u0119 wersje kandydackie (Release Candidates), a\u017c do ostatecznego wydania g\u0142\u00f3wnego. Nale\u017cy je odr\u00f3\u017cni\u0107 od ga\u0142\u0119zi \u201eStable\u201d i \u201eLTS\u201d, kt\u00f3re zapewniaj\u0105 dalsz\u0105 obs\u0142ug\u0119 opublikowanych j\u0105der z wybranymi poprawkami. J\u0105dra dystrybucji z kolei podlegaj\u0105 w\u0142asnym wersjom pakiet\u00f3w, zobowi\u0105zaniom dotycz\u0105cym wsparcia oraz decyzjom integracyjnym. Szczeg\u00f3lnie w przypadku serwer\u00f3w hostingowych kluczowe znaczenie maj\u0105 backporty: dystrybucja mo\u017ce przenie\u015b\u0107 poszczeg\u00f3lne funkcje, ulepszenia sterownik\u00f3w lub poprawki bezpiecze\u0144stwa do starszego j\u0105dra, kt\u00f3re jest utrzymywane w d\u0142ugoterminowej perspektywie. I odwrotnie, mo\u017ce ona dezaktywowa\u0107 funkcje, modyfikowa\u0107 poprawki lub ogranicza\u0107 je poprzez konfiguracj\u0119. Na podstawie numeru wersji nie mo\u017cna zatem wywnioskowa\u0107 ani pe\u0142nego zakresu funkcji, ani konkretnego wp\u0142ywu na dzia\u0142anie systemu. Polecenie uname -r identyfikuje aktualny ci\u0105g znak\u00f3w wydania i stanowi sensowny punkt wyj\u015bcia do inwentaryzacji oraz por\u00f3wnania pakiet\u00f3w. Nie dowodzi ono jednak, \u017ce dana funkcja zosta\u0142a skompilowana, aktywowana w czasie dzia\u0142ania lub jest dost\u0119pna dla danej aplikacji. Nawet nowa wersja j\u0105dra nie zast\u0119puje sprawdzenia przez dystrybutora"}},"_wh_make_stage":"entwurf","_wh_make_research_date":"2026-10-25","_wh_make_sitemap_info":{"index":"https:\/\/webhosting.de\/sitemap_index.xml","sitemaps":["https:\/\/webhosting.de\/post-sitemap1.xml","https:\/\/webhosting.de\/post-sitemap2.xml","https:\/\/webhosting.de\/post-sitemap3.xml","https:\/\/webhosting.de\/post-sitemap4.xml"],"url_count":3121,"fetched_at":"2026-10-25T07:00:19+00:00","selected_ids":[20356,21751,21699]},"_wh_make_draft_hash":"317186978abd36a77cea842fa6c2b35ea29fed3fbd1590ee94810047f8275445","_wh_make_work":{"version":"2.1","identity":{"sheet_ref":"1VMjxV8Q73i0Q1HO6s-u4jNHVRF0snliGCeg97intLPs","sheet_name":"Tabellenblatt1","external_id":"1418","topic":"DPDK \u2013 Paketverarbeitung ohne Kernel-Limits","keywords":["dpdk","packet processing","network performance"],"category_input":"922"},"config":{"research_model":"gpt-5.6-terra","writer_model":"gpt-5.6-terra","review_model":"gpt-5.6-sol","image_model":"gpt-image-2.5-flare","image_quality":"high","image_format":"webp","final_status":"draft","charts_enabled":true},"phase":"done","pending":null,"receipts":{"0a948eeeb5922355195ac0b7262c775b":"9a67222c01760e7c5fa3e2179d539335c28f3e45104e17dd851b1e85a79c97b0","da84410193d7323ff72831dfffbf2e2f":"9dc1eee918883a1083d30e959388c4b3e536c52c9e2179dce4d9494e72226f88","cf0dbdefa15bfc2f5ee56515cd6b1c5f":"67f14b4061d936c91358052b23241ccf0032baf715dd2b72f863175150f2edc2","690dc0fec5b4b00e82f0c27789a75fab":"32cff1e96e523d50ab29a194a3780166fd13a2627330ffdf50abeb56519a7c6f","6afbd9ea799a1fdbc6f4fa7f1136225a":"178a0bb814aaca298a70c1d98d6ec2487b8e9791ec27599bbe670b34c21ae75b","b503724fb5c665f86f2a7f00d9dfada5":"cf02744c431be077f802a7742239724d27cc714987286de5654625504e7280ad","f63f8337576233a8788d22033d65f0de":"11ba97e38076ded4c90305104a12b36ca16dc59d4202f652b7a27b35b3fb10d9","bb4b7b40cae6195ee1c4cef54a226e27":"d32f2d47ca7c5c3cc716dbf390b02a4aadfea2d72fc989e43b17e51964cd7b45","762c4cb994a78705e3a413371aa4f28a":"a946e5135a6f7ef27acfa1471a4ce680f7f89a7933224f192685cfb0dda8f18f","081a255161c162e6f726d3c4b82b7503":"e3f8c9b5d351fe92d4c64a43a4a1d55fc1628f5913f05bb8c8193b7e6383a8bb","8263da9e8cb2cf2c3c30894836062112":"8db3eaad1e62e2ce376511a4d0245249b1e4d0962a51f4a2dd8a00444b71fbdc","dc45dbd7339027a87a0f602e4ac7a840":"73d52dca0954f527d3930ce9af3e5621a078229d4d4675e429d269cc1f690a2f","1d5abd64af5060e0daa71e9fea991d9c":"10c827005a695201fb5a45f99ae12f8b7eb40bcb5bec14c1ebb358cf97313972","85c695e36fe64105537ffc250de96b18":"84a882d13279c00aeec2a060bb53255c624da556aa75c2b2617ab8325b723ab5","a6338c5fb00ad20e29ccda0dbe1e00c2":"5224adb10469c4b61074ae99601a9c31c67326b982b39c39407d36e2d4dab79c","f90d8ac1b1922e74c777992c0c1250a9":"f25797ab5f78fd3e2eb431386df1f9f6c0eedfb43d91478baa4e129c223aacc1","5fdf8c492c44444563e1c6b61781ea8b":"7107b62c4b6d0822fdef63079d444f55c27f71c82645421f2a0d4e567aea253f","bbd26518f35e41d185e16c864e39eb86":"e50de4e15736fdd511fdc881ce99a7372292cb9f4823201e210b9224a8defef7","14ee3989a0f4750d475c91d71ad35d4e":"45a1fa4961e4e9d814e176e6f519508e9e26b187d9d03da051894d1bfc6e6784","5018fa3002d841c486fe6683c55e41af":"8045c5f74f3924c723e5d932cf39b29a010eba622e9e3b58aa90c9f7d4c29869","5bd543041051d7e41e53e389b0cfdea4":"fd0c5e86331ae1a5a9092d34a5501b6967ac8c5a839916959960026535a7af79"},"parts":{"1":[{"id":"dpdk-grundprinzip","heading":"DPDK-Grundprinzip und korrekte Einordnung","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"DPDK ist ein Framework f\u00fcr Anwendungen, die Netzwerkpakete mit m\u00f6glichst wenig Overhead im Userspace verarbeiten m\u00fcssen. Statt den \u00fcblichen Weg \u00fcber Kernel-Netzwerkstack, Sockets und dessen Paketstrukturen zu nutzen, kann eine Anwendung ausgew\u00e4hlte Netzwerkkarten unmittelbar f\u00fcr ihren eigenen Datenpfad verwenden. Das zielt vor allem auf hohe Paketraten, niedrige Latenzen und gut planbare Verarbeitung bei vielen kleinen Paketen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Formulierung \u201eohne Kernel-Limits\u201c ist dabei verk\u00fcrzt. Der Linux-Kernel bleibt f\u00fcr Betriebssystem, Speicherverwaltung, Prozesse, Sicherheit und zahlreiche Verwaltungsaufgaben vorhanden. DPDK ersetzt auch weder Grenzen der Netzwerkkarte noch PCIe-, Speicherbandbreiten- oder CPU-Grenzen. Es umgeht f\u00fcr gebundene Schnittstellen vor allem den gew\u00f6hnlichen Kernel-Datenpfad und verlagert die Paketarbeit in eine spezialisierte Anwendung.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Im klassischen Ablauf signalisiert die NIC eingehende Pakete typischerweise \u00fcber Interrupts; der Kernel verarbeitet sie und stellt sie sp\u00e4ter \u00fcber einen Socket bereit. Ein DPDK-","ref":""},{"kind":"strong","text":"Poll Mode Driver","ref":""},{"kind":"text","text":" fragt dagegen Empfangswarteschlangen aktiv ab. Die Anwendung nimmt Pakete paketweise in Gruppen entgegen, pr\u00fcft oder ver\u00e4ndert sie und \u00fcbergibt sie anschlie\u00dfend an eine Sendewarteschlange oder eine weitere Verarbeitungsstufe.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Das ist kein allgemeines Kernel-Tuning und f\u00fcr eine gew\u00f6hnliche Webanwendung mit wenigen TCP-Verbindungen meist nicht die erste Ma\u00dfnahme. Erst wenn der Paketdatenpfad selbst nachweisbar limitiert, etwa bei L4-Lastverteilung, Filterung oder Tunnelendpunkten, rechtfertigt der m\u00f6gliche Gewinn den zus\u00e4tzlichen Betriebsaufwand. Versionsabh\u00e4ngige Eigenschaften sollten stets gegen das konkret eingesetzte stabile DPDK-Release gepr\u00fcft werden; Release Candidates sind davon zu unterscheiden.","ref":""},{"kind":"citation","text":"","ref":"S2"}]}]},{"id":"userspace-paketpfad","heading":"Wie der Userspace-Paketpfad arbeitet","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Am Eingang konfiguriert die Anwendung eine oder mehrere Rx-Queues der Netzwerkkarte. Ein zugewiesener Ausf\u00fchrungskern fragt eine Queue in einer Schleife ab und erh\u00e4lt einen Burst verf\u00fcgbarer Pakete. Diese ","ref":""},{"kind":"strong","text":"Burst-Verarbeitung","ref":""},{"kind":"text","text":" reduziert Funktionsaufrufe und Verwaltungsaufwand pro Paket. Nach Klassifikation, Weiterleitung oder \u00c4nderung legt die Anwendung die Pakete gesammelt in einer Tx-Queue ab.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Polling vermeidet viele Interrupt-Wechsel im stark ausgelasteten Datenpfad und macht die Arbeit eines Kerns besser vorhersehbar. Der Preis ist eine fortlaufend aktive CPU: Auch bei leerer Queue pr\u00fcft der lcore weiter auf neue Pakete. Deshalb passt dieses Modell zu konstant hoher Last eher als zu Schnittstellen mit seltenem oder stark schwankendem Verkehr.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Paketdaten und Metadaten liegen in ","ref":""},{"kind":"code","text":"rte_mbuf","ref":""},{"kind":"text","text":"-Objekten. Diese stammen aus einem vorab angelegten Mempool und enthalten beispielsweise Paketl\u00e4nge, Eingangsport, Offload-Informationen und gegebenenfalls einen RSS-Hash. Vorab reservierte Pools, eine feste Queue-Kern-Zuordnung und kurze Verarbeitungspfade f\u00f6rdern ","ref":""},{"kind":"strong","text":"Cache-Lokalit\u00e4t","ref":""},{"kind":"text","text":" und vermeiden unn\u00f6tige gemeinsame Datenstrukturen.","ref":""},{"kind":"citation","text":"","ref":"S7"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Zero Copy ist jedoch keine automatische DPDK-Eigenschaft. Ob und wo Daten kopiert werden, h\u00e4ngt von NIC, Treiber, Offloads und Anwendungslogik ab. Gro\u00dfe oder segmentierte Frames k\u00f6nnen aus mehreren verkn\u00fcpften mbufs bestehen; das ist etwa bei Jumbo Frames relevant. Wer Paketdaten umformt, zusammenf\u00fchrt oder zwischen inkompatiblen Puffern \u00fcbertr\u00e4gt, muss m\u00f6gliche Speicherbewegungen im eigenen Datenpfad ber\u00fccksichtigen.","ref":""},{"kind":"citation","text":"","ref":"S7"}]}]},{"id":"architektur-und-grenzen","heading":"Architektur, Ressourcen und harte Grenzen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die Environment Abstraction Layer, kurz ","ref":""},{"kind":"strong","text":"EAL","ref":""},{"kind":"text","text":", initialisiert DPDK und stellt unter anderem Speicherreservierung, Ger\u00e4tezugriff, Timer sowie die Zuordnung logischer Kerne bereit. Auf dieser Grundlage richtet die Anwendung Ethernet-Queues, Mempools und ihre Verarbeitung ein. Ein lcore ist dabei ein f\u00fcr DPDK eingeplanter logischer Kern, nicht einfach ein beliebig wandernder Anwendungsthread.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr einen geradlinigen Datenpfad verarbeitet h\u00e4ufig ein Kern ein Paket vollst\u00e4ndig: vom Empfang \u00fcber die Entscheidung bis zum Senden. Dieses Run-to-completion-Modell vermeidet \u00dcbergaben zwischen Kernen. Eine Pipeline trennt dagegen beispielsweise Parser, Flow-Suche und Weiterleitung in Stufen. Sie kann Zust\u00e4ndigkeiten ordnen, f\u00fcgt aber Ringe, Synchronisation und potenziell schlechtere Speicherlokalit\u00e4t zwischen den Stufen hinzu.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Planung muss auch NUMA beachten. Queue, lcore und Paketpools sollten nach M\u00f6glichkeit am selben NUMA-Knoten liegen, damit der Datenpfad nicht regelm\u00e4\u00dfig auf Speicher eines anderen CPU-Sockels zugreift. Die erreichbare Leistung bleibt au\u00dferdem von NIC-Funktionen, PCIe-Anbindung, Speicherbandbreite, CPU-Takt, Paketgr\u00f6\u00dfe und der Komplexit\u00e4t jeder Paketentscheidung abh\u00e4ngig.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein L4-Load-Balancer kann mit DPDK IP- und Portinformationen schnell auswerten, Flows zuordnen und Pakete weiterleiten. TLS-Terminierung, aufwendige NAT-Zust\u00e4nde, Logging, Health Checks oder langsame Backends werden dadurch aber nicht automatisch schneller. Ebenso braucht die Control Plane verf\u00fcgbare CPU-Zeit f\u00fcr Konfiguration, Telemetrie und Fehlerbehandlung. DPDK beschleunigt folglich einen klar abgegrenzten Datenpfad, nicht zwangsl\u00e4ufig den gesamten Dienst.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch die Gr\u00f6\u00dfe und Lebensdauer der Paketpuffer sind Teil der Architektur. Mempools begrenzen, wie viele Puffer gleichzeitig bereitstehen, w\u00e4hrend die Anwendung Eigentumswechsel korrekt verwalten muss. Zu knapp dimensionierte Pools k\u00f6nnen unter Last ersch\u00f6pfen; \u00fcbergro\u00dfe Reservierungen binden Speicher. Die sinnvolle Gr\u00f6\u00dfe ergibt sich aus Warteschlangen, Burst-Gr\u00f6\u00dfen, Paketpfad und erwarteten Lastspitzen, nicht aus einer universellen Vorgabe.","ref":""},{"kind":"citation","text":"","ref":"S7"}]}]}],"2":[{"id":"voraussetzungen-vor-dem-einsatz","heading":"Voraussetzungen vor dem DPDK-Einsatz pr\u00fcfen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"DPDK wird erst dann planbar, wenn Hardware, Speicher und CPU-Zuordnung zusammenpassen. Eine Installation allein schafft keinen leistungsf\u00e4higen Datenpfad: Der PMD muss das konkrete NIC-Modell unterst\u00fctzen, und Ressourcen m\u00fcssen f\u00fcr die Anwendung reservierbar sein. Die folgende Pr\u00fcfung trennt technische Mindestvoraussetzungen von Annahmen, die erst f\u00fcr das tats\u00e4chlich eingesetzte Ger\u00e4t gelten.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"table","caption":"Pr\u00fcfpunkte vor dem Einsatz eines DPDK-Datenpfads","headers":["Voraussetzung","Bedeutung","Konkrete Pr\u00fcffrage"],"rows":[["NIC und PMD","Ein PMD stellt den DPDK-Zugriff auf die Netzwerkkarte bereit; Funktionen sind modell- und treiberabh\u00e4ngig.","Ist das genaue NIC-Modell in der unterst\u00fctzten Treiber\u00fcbersicht enthalten, und sind ben\u00f6tigte Funktionen dokumentiert?"],["Hugepages","Gro\u00dfe Seiten verringern den Bedarf an Seitentabellen\u00fcbersetzungen f\u00fcr umfangreiche Paketpools.","Sind ausreichend Hugepages f\u00fcr Mempools reserviert und f\u00fcr den vorgesehenen Prozess verf\u00fcgbar?"],["IOMMU und VFIO","VFIO nutzt IOMMU-Schutz f\u00fcr den Ger\u00e4tezugriff aus dem Userspace.","Ist IOMMU aktiviert und kann die NIC mit VFIO betrieben werden?"],["CPU-Pinning","Dedizierte Kerne vermeiden Scheduler-Konkurrenz im Polling-Datenpfad.","Welche logischen Kerne sind f\u00fcr lcores reserviert, ohne Systemdienste zu verdr\u00e4ngen?"],["NUMA","Lokaler Speicherzugriff reduziert unn\u00f6tige Zugriffe \u00fcber NUMA-Knoten hinweg.","Liegen NIC, lcores und Mempools auf demselben NUMA-Knoten?"],["Queue-Planung","Rx- und Tx-Queues bestimmen, wie Arbeit auf Kerne verteilt wird.","Gibt es pro Datenpfad eine eindeutige Queue-Zuordnung ohne unn\u00f6tiges Sharing?"],["Monitoring","Paketverluste und Ressourcenengp\u00e4sse m\u00fcssen im Betrieb sichtbar bleiben.","Welche Z\u00e4hler f\u00fcr NIC, Queues, Pools und Anwendung werden \u00fcberwacht?"]],"source_ids":["S3","S4","S6","S8"]},{"type":"paragraph","runs":[{"kind":"text","text":"Besonders kritisch ist die ","ref":""},{"kind":"strong","text":"Ger\u00e4tebindung","ref":""},{"kind":"text","text":". Bindet ein Administrator eine physische NIC an einen DPDK-Treiber, steht sie dem normalen Linux-Netzwerkstack \u00fcblicherweise nicht mehr als regul\u00e4res Interface zur Verf\u00fcgung. Die Dokumentation behandelt Binden und L\u00f6sen deshalb als eigene administrative Schritte; sie sind keine harmlose Laufzeitoptimierung.","ref":""},{"kind":"citation","text":"","ref":"S8"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Vor jeder \u00c4nderung liefert die folgende Statusabfrage eine Inventur der PCI-Ger\u00e4te und ihrer aktuellen Treiberbindung. Sie ist lesend und \u00e4ndert keine Bindung. F\u00fchre sie auf dem Zielsystem mit dem Pfad aus, der zur installierten DPDK-Quell- oder Werkzeugstruktur passt.","ref":""}]},{"type":"code","language":"text","code":".\/usertools\/dpdk-devbind.py --status","source_ids":["S8"]},{"type":"paragraph","runs":[{"kind":"text","text":"Plane Management-Zugang und Produktivdatenpfad getrennt. Die SSH- oder Konsolen-Erreichbarkeit darf nicht von der Schnittstelle abh\u00e4ngen, die sp\u00e4ter exklusiv DPDK nutzt. Ein separates Management-Interface, Out-of-Band-Zugang oder ein vorab gepr\u00fcfter lokaler Rettungsweg verhindert, dass eine fehlerhafte Bindung den Host aus der Ferne unzug\u00e4nglich macht.","ref":""},{"kind":"citation","text":"","ref":"S8"}]}]},{"id":"dpdk-afxdp-kernelstack","heading":"DPDK, AF_XDP und Kernelstack vergleichen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die Wahl des Datenpfads ist keine Rangliste, sondern eine Betriebsentscheidung. Linux-Kernelstack, AF_XDP und DPDK verschieben jeweils Aufwand, Ger\u00e4tezugriff und CPU-Verbrauch. Die passende Option richtet sich danach, ob tats\u00e4chlich die Paketrate oder Latenz im Netzwerkpfad begrenzt \u2013 oder ob Anwendung, Verschl\u00fcsselung und Backends den Engpass bilden.","ref":""}]},{"type":"table","caption":"Einordnung von Kernelstack, AF_XDP und DPDK","headers":["Ansatz","Datenpfad","Ger\u00e4tebesitz","CPU-Verhalten","Typische Eins\u00e4tze","Wichtigste Grenze"],"rows":[["Linux-Kernelstack","Regul\u00e4rer Kernel-Netzwerkstack mit Sockets und Kernel-Funktionen.","NIC bleibt regul\u00e4res Kernel-Interface.","Interrupt- und schedulerorientiert.","Allgemeine Serverdienste, Routing und Anwendungen mit vorhandenen Linux-Werkzeugen.","Paketverarbeitung kann bei sehr hoher Paketrate zum Engpass werden."],["AF_XDP","XDP mit Userspace-Sockets; je nach Treiber Copy- oder Zero-Copy-Modus.","Integration bleibt am XDP- und Socket-Modell orientiert.","Abh\u00e4ngig von Modus, Treiber und Queue-Zuordnung.","Gezielte Beschleunigung einzelner Queues bei weiterem Kernelbezug.","Zero Copy ist nicht auf jedem Treiber verf\u00fcgbar."],["DPDK","PMDs pollen Rx- und Tx-Deskriptoren direkt im Userspace.","Ausgew\u00e4hlte NIC wird typischerweise exklusiv f\u00fcr den DPDK-Pfad gebunden.","Polling beansprucht reservierte Kerne auch bei geringer Last.","Hohe Paketraten, spezialisierte Filter, Load Balancer und NFV.","Mehr Ressourcenplanung und geringere Integration in Standard-Netzwerkwerkzeuge."]],"source_ids":["S9","S1"]},{"type":"paragraph","runs":[{"kind":"text","text":"AF_XDP ist eine Zwischenoption f\u00fcr Teams, die Pakete fr\u00fch behandeln und dennoch nahe am Linux-Netzwerkmodell bleiben m\u00f6chten. Der Kernel beschreibt einen Copy-Modus sowie Zero Copy, das Treiberunterst\u00fctzung voraussetzt. Wird Zero Copy ausdr\u00fccklich verlangt, kann die Socket-Erstellung fehlschlagen, falls der Treiber diese F\u00e4higkeit nicht anbietet.","ref":""},{"kind":"citation","text":"","ref":"S9"},{"kind":"text","text":" F\u00fcr die Einordnung der XDP-Ebene hilft der Beitrag ","ref":""},{"kind":"internal_link","text":"XDP und eXpress Data Path","ref":"I1"},{"kind":"text","text":".","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"DPDK nutzt dagegen Poll Mode Drivers und verarbeitet Warteschlangen direkt aus der Anwendung heraus. Das kann Socket- und Interrupt-Anteile f\u00fcr die gebundene NIC umgehen, verlangt aber die Verantwortung f\u00fcr Speicher, Queues und Kernzuordnung. ","ref":""},{"kind":"strong","text":"Zero Copy","ref":""},{"kind":"text","text":" ist dabei weder ein allgemeines Leistungsversprechen noch eine automatische Eigenschaft eines beliebigen DPDK-Pfads; Kopien h\u00e4ngen von Anwendung, Offloads und Speicher\u00fcbergaben ab.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"W\u00e4hle den Kernelstack, wenn Routing, Firewalling, Observability und einfacher Betrieb wichtiger sind als ein spezialisierter Paketpfad. Pr\u00fcfe AF_XDP bei gezielter Beschleunigung mit Kernelanbindung. DPDK lohnt sich erst bei belegtem Bedarf an hoher Paketrate oder gleichm\u00e4\u00dfiger Latenz, vorhandener NIC-Unterst\u00fctzung und einem Team, das die zus\u00e4tzliche Betriebsverantwortung dauerhaft tragen kann.","ref":""}]},{"type":"callout","variant":"note","title":"Auswahl nicht am Durchsatz allein festmachen","runs":[{"kind":"text","text":"Bewerte Paketgr\u00f6\u00dfe, Paketrate, Latenzziel, ben\u00f6tigte Protokollfunktionen, bestehende Betriebswerkzeuge und Personalaufwand gemeinsam. Ein schnellerer Paketpfad l\u00f6st keinen Engpass in TLS-Verarbeitung, Datenbank oder Backend-Service.","ref":""}]}]},{"id":"queue-cpu-numa-planung","heading":"Queues, CPU-Pinning und NUMA sinnvoll planen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Eine belastbare ","ref":""},{"kind":"strong","text":"Queue-Zuordnung","ref":""},{"kind":"text","text":" beginnt mit der N\u00e4he zwischen NIC, CPU und Speicher. Die EAL unterst\u00fctzt die Auswahl logischer Kerne, Speicherreservierung und Ger\u00e4tezuschnitt. F\u00fcr einen einfachen Datenpfad ist es meist sinnvoll, eine Rx-Queue einem lcore fest zuzuordnen, den zugeh\u00f6rigen Mempool am lokalen NUMA-Knoten anzulegen und die Verarbeitung anschlie\u00dfend an eine passende Tx-Queue zu \u00fcbergeben.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein nicht produktspezifisches Beispiel f\u00fcr einen Host mit zwei NUMA-Knoten w\u00e4re: Die NIC an Knoten 0 erh\u00e4lt zwei Rx-Queues; je ein lcore an Knoten 0 bearbeitet eine Queue vollst\u00e4ndig. Die Paketpuffer liegen ebenfalls auf Knoten 0. Ein weiterer, nicht pollender Kern bleibt f\u00fcr Verwaltungsaufgaben frei, w\u00e4hrend Knoten 1 f\u00fcr andere Dienste oder klar getrennte Datenpfade vorgesehen wird.","ref":""}]},{"type":"list","ordered":false,"items":["Datenpfad: je Queue ein fest zugeordneter lcore, lokale Mempools und klar benannte Rx-\/Tx-Paare.","Verwaltung: mindestens CPU-Kapazit\u00e4t f\u00fcr Telemetrie, Steuerlogik, Ereignisse und Betriebssystemdienste freihalten.","Reserve: Kapazit\u00e4t f\u00fcr Lastspitzen, Fehlersuche und geplante Erweiterungen einplanen, statt alle Kerne dauerhaft zu verplanen."],"source_ids":["S5","S10"]},{"type":"paragraph","runs":[{"kind":"text","text":"Geteilte Queues sind kein neutraler Skalierungsmechanismus. Wenn mehrere lcores auf dieselbe Rx- oder Tx-Queue zugreifen, k\u00f6nnen globale Sperren erforderlich werden und die Leistung deutlich sinken. Auch Zugriffe auf entfernten NUMA-Speicher kosten zus\u00e4tzliche Latenz und Bandbreite. Erst messen und dann gezielt weitere Queues oder Kerne erg\u00e4nzen ist robuster als Threads pauschal zu vervielfachen.","ref":""},{"kind":"citation","text":"","ref":"S11"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Eine Pipeline mit getrennten Parser-, Klassifizierungs- und Sendestufen kann Zust\u00e4ndigkeiten klarer machen. Jede \u00dcbergabe \u00fcber Ringe erzeugt jedoch weitere Synchronisations- und Cache-Lokalit\u00e4tskosten. F\u00fcr einfache Filter oder L4-Weiterleitung ist Run-to-completion pro Queue daher oft leichter zu planen; mehrere Stufen sollten nur eingesetzt werden, wenn die Arbeitsteilung ihren Mehraufwand rechtfertigt.","ref":""},{"kind":"citation","text":"","ref":"S11"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch ","ref":""},{"kind":"strong","text":"Hardware-Offloads","ref":""},{"kind":"text","text":" d\u00fcrfen nicht in die Planung hineingelesen werden. Welche Checksum-, Segmentierungs-, RSS- oder Flow-Funktionen verf\u00fcgbar sind, ergibt sich aus den F\u00e4higkeiten des konkreten Ethernet-Ger\u00e4ts und seines PMD. Pr\u00fcfe sie vor dem Entwurf und behandle einen fehlenden Offload als normalen Fall, nicht als Ausnahme.","ref":""},{"kind":"citation","text":"","ref":"S11"}]}]}],"3":[{"id":"betrieb-und-beobachtbarkeit","heading":"DPDK im Betrieb sicher beobachten","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Der Betrieb eines DPDK-Datenpfads braucht Metriken, die Paketverarbeitung und Ressourcen zusammen betrachten. Erfasse je Port und Queue empfangene, gesendete und verworfene Pakete, Queue-F\u00fcllst\u00e4nde, Verarbeitungsraten sowie Fehlerz\u00e4hler der Netzwerkkarte. Erg\u00e4nze die Sicht um CPU-Auslastung pro lcore, Speicherreserven der Mempools und die ","ref":""},{"kind":"strong","text":"Latenzverteilung","ref":""},{"kind":"text","text":" statt nur um einen Mittelwert. Steigende Drops zeigen nicht allein eine zu langsame Anwendung an: Auch eine \u00fcberf\u00fcllte Queue, fehlende Puffer oder ein Hardwareproblem kommen infrage.","ref":""},{"kind":"citation","text":"","ref":"S10"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Polling ist ein bewusster Zielkonflikt. Ein lcore fragt seine Rx-Queue fortlaufend ab, damit Pakete ohne den regul\u00e4ren Interrupt-Pfad rasch verarbeitet werden k\u00f6nnen. Bei wenig oder keinem Traffic bleibt dieser Kern dennoch besch\u00e4ftigt. Plane daher nicht alle logischen Kerne f\u00fcr Pollschleifen ein: Control Threads ben\u00f6tigen Rechenzeit f\u00fcr Verwaltung, Telemetrie, Hotplug-Ereignisse oder Anfragen weiterer Prozesse.","ref":""},{"kind":"citation","text":"","ref":"S10"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Ursachenanalyse ist eine zeitliche Korrelation wichtig: Tritt Paketverlust zugleich mit voller Queue, ersch\u00f6pftem Mempool oder einem CPU-Kern am Limit auf, l\u00e4sst sich die Suche eingrenzen. Schwankende Antwortzeiten k\u00f6nnen dagegen durch Cross-NUMA-Zugriffe, konkurrierende Aufgaben oder \u00dcbergaben zwischen Verarbeitungsstufen entstehen. Beobachte deshalb Datenpfad und Control Plane getrennt, aber mit gemeinsamen Zeitstempeln.","ref":""},{"kind":"citation","text":"","ref":"S10"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Schnelle Erfassung am Interface ist nicht gleichbedeutend mit vollst\u00e4ndiger, dauerhaft verlustfreier Paketaufzeichnung. F\u00fcr Flow-Statistiken oder Header-Auswertung k\u00f6nnen wenige Metadaten gen\u00fcgen. Soll jedes Paket gespeichert werden, begrenzen zus\u00e4tzlich Speicherbandbreite, Puffervolumen, Schreibdurchsatz und das gew\u00e4hlte Speichermedium den Aufbau. Datenschutz und Aufbewahrungsregeln sind dabei unabh\u00e4ngige Anforderungen, die der Netzwerkdurchsatz nicht l\u00f6st.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"In virtuellen Maschinen und Containern ist DPDK ein eigener Betriebsweg, keine automatische Eigenschaft des Images. Das Gastsystem oder der Container braucht Zugriff auf das zugewiesene Ger\u00e4t, passende Rechte, Hugepages und eine verl\u00e4ssliche CPU-Zuordnung. Pr\u00fcfe au\u00dferdem, ob das gew\u00e4hlte Passthrough- oder Virtualisierungsmodell die ben\u00f6tigten NIC-Funktionen tats\u00e4chlich bereitstellt; die Linux-Getting-Started-Dokumentation behandelt Container deshalb mit zus\u00e4tzlichen Einrichtungsschritten.","ref":""},{"kind":"citation","text":"","ref":"S8"}]}]},{"id":"fehlerbilder-systematisch-pruefen","heading":"Typische Fehlerbilder systematisch pr\u00fcfen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Eine Fehlersuche sollte zuerst beobachtbare Symptome von m\u00f6glichen Ursachen trennen. \u00c4ndere nicht gleichzeitig Treiberbindung, Queue-Zahl und Speicherparameter, weil der Ausl\u00f6ser dann nicht mehr nachvollziehbar ist. Nicht-destruktive Z\u00e4hler, Konfigurationseinblicke und ein Vergleich zwischen betroffener und unbetroffener Queue liefern vor Eingriffen meist die belastbareren Hinweise.","ref":""}]},{"type":"table","caption":"Typische DPDK-Fehlerbilder und schonende erste Pr\u00fcfungen","headers":["Symptom","M\u00f6gliche Ursachen","Nicht-destruktive Pr\u00fcfung"],"rows":[["Paketverluste","Rx-Queue \u00fcberl\u00e4uft, lcore kommt nicht nach, Mempool ist zu klein oder ersch\u00f6pft","Port- und Queue-Z\u00e4hler, Drop-Z\u00e4hler, Mempool-Belegung und CPU-Auslastung zeitgleich vergleichen"],["Unregelm\u00e4\u00dfige Latenz","NUMA-ferner Speicher, Queue-Sharing, konkurrierende Threads oder Pipeline-\u00dcbergaben","CPU- und Speicherzuordnung sowie Queue-Eigent\u00fcmer pr\u00fcfen; Ausrei\u00dfer je Queue erfassen"],["Hohe CPU-Leerlast","Polling l\u00e4uft bei geringer Last weiter","Auslastung des pollenden lcores gegen tats\u00e4chliche Paketrate stellen und reservierte Kerne dokumentieren"],["Host nicht erreichbar","Management-Schnittstelle wurde an einen DPDK-Treiber gebunden oder Netzkonfiguration ge\u00e4ndert","PCI-Ger\u00e4te- und Bindungsstatus \u00fcber einen getrennten Management-Zugang pr\u00fcfen"],["Offload fehlt","NIC-Modell, PMD oder aktuelle Konfiguration bietet die Funktion nicht","Ger\u00e4tef\u00e4higkeiten und die Feature-Matrix f\u00fcr das konkrete NIC-Modell abgleichen"]],"source_ids":["S11","S8","S3"]},{"type":"paragraph","runs":[{"kind":"text","text":"Geteilte Rx- oder Tx-Queues verdienen besondere Aufmerksamkeit. Wenn mehrere lcores dieselbe Queue bedienen, sind Synchronisation und konkurrierende Speicherzugriffe m\u00f6glich; die DPDK-Dokumentation warnt vor den daf\u00fcr n\u00f6tigen globalen Sperren und dem m\u00f6glichen Leistungsnachteil. Ordne daher zun\u00e4chst pro Queue einen eindeutigen Arbeiter zu und pr\u00fcfe, ob dessen Speicherpool am lokalen NUMA-Knoten liegt.","ref":""},{"kind":"citation","text":"","ref":"S11"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei fehlenden Hardware-Offloads ist die richtige Frage nicht, welcher Schalter gesetzt wurde, sondern welche F\u00e4higkeit Ger\u00e4t und PMD melden. Eine Konfiguration kann eine gew\u00fcnschte Funktion anfordern, ohne dass sie f\u00fcr dieses Modell verf\u00fcgbar ist. Vergleiche die dokumentierte Unterst\u00fctzung f\u00fcr die konkrete NIC mit den zur Laufzeit ermittelten Ger\u00e4tef\u00e4higkeiten, bevor du den Datenpfad darauf aufbaust.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Der ","ref":""},{"kind":"code","text":"io","ref":""},{"kind":"text","text":"-Forwarding-Modus von ","ref":""},{"kind":"code","text":"testpmd","ref":""},{"kind":"text","text":" leitet Pakete ohne Zugriff auf ihre Daten weiter und ist deshalb dessen schnellster Forwarding-Modus. Er eignet sich als isolierter Funktions- oder Basistest f\u00fcr den Pfad, belegt aber keine Leistung einer Anwendung mit Parsern, Flow-Tabellen, NAT, Verschl\u00fcsselung oder Protokollzustand. Messe die echte Verarbeitungslogik stets separat.","ref":""},{"kind":"citation","text":"","ref":"S12"}]}]},{"id":"rollout-und-entscheidungsrahmen","heading":"Rollout, Versionspflege und Einsatzentscheidung","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Beginne mit einem isolierten Test und einem dokumentierten ","ref":""},{"kind":"strong","text":"Lastprofil","ref":""},{"kind":"text","text":": Paketgr\u00f6\u00dfen, Spitzenlast, Flussanzahl und ben\u00f6tigte Verarbeitungsschritte. Pr\u00fcfe die konkrete NIC samt passendem Poll Mode Driver und ben\u00f6tigten Funktionen anhand der offiziellen Hardware\u00fcbersicht und Treibermatrix. Ein gelisteter Hersteller allein best\u00e4tigt weder jede Karte noch s\u00e4mtliche Offloads. Teste anschlie\u00dfend mit realer Anwendungslogik, nicht ausschlie\u00dflich mit einem Weiterleitungsbeispiel.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Halte DPDK-Version, Firmware, Treiber, Kernel und Konfiguration f\u00fcr jeden Versuch fest. Lies vor einem Update die Release-Notes zu neuen, entfernten und ge\u00e4nderten Funktionen.","ref":""},{"kind":"citation","text":"","ref":"S2"},{"kind":"text","text":" Trenne bei der Versionswahl stabile Freigaben, LTS-Wartungszweige und Release Candidates. Kl\u00e4re Wartungsverantwortung, Aktualisierungsfenster und R\u00fcckweg; behandle einen RC als Testkandidaten und pr\u00fcfe den Pflegezustand eines LTS-Zweigs gesondert.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein konkreter Pr\u00fcfpunkt ist DPDK 26.07: Der Flush-\/Refill-Algorithmus des Mempool-Caches wurde ge\u00e4ndert; seine effektive Gr\u00f6\u00dfe entspricht nun der konfigurierten Gr\u00f6\u00dfe statt zuvor 150 Prozent. F\u00fcr Pipelines, in denen jeder lcore am jeweiligen Mempool nur Objekte entnimmt oder nur zur\u00fcckgibt, empfehlen die Release-Notes eine Verdopplung der konfigurierten Cachegr\u00f6\u00dfe, um eine Verdopplung der Cache-Miss-Rate zu vermeiden. \u00dcbertrage diese Empfehlung nicht pauschal auf andere Verarbeitungspfade.","ref":""},{"kind":"citation","text":"","ref":"S13"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Als Rollout-Empfehlung bietet sich ein begrenzter Pilot mit festgelegten Abbruchkriterien an. Lege die Messdauer vorab fest und wiederhole die Versuche unter vergleichbaren Bedingungen. Vergleiche Durchsatz, hohe Latenzperzentile, Paketverluste und CPU-Bedarf mit dem bisherigen Betrieb. Pr\u00fcfe au\u00dferdem \u00dcberwachung, Neustarts und R\u00fcckfall auf die vorherige Konfiguration. Bewerte die Ergebnisse einschlie\u00dflich Betriebsaufwand; eine bestimmte Durchsatzsteigerung l\u00e4sst sich daraus nicht allgemein garantieren.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"DPDK lohnt sich als Einsatzentscheidung vor allem dann, wenn der gemessene Nutzen den zus\u00e4tzlichen Pflegeaufwand rechtfertigt. F\u00fcr die Einordnung der umgebenden Systemplattform erg\u00e4nzt der Beitrag ","ref":""},{"kind":"internal_link","text":"Linux-Kernel im Hostingbetrieb","ref":"I3"},{"kind":"text","text":" die Planung. Behalte f\u00fcr gew\u00f6hnliche Hostingdienste auch den bestehenden Netzwerkpfad als Vergleichsbasis im Test.","ref":""}]}]}]},"plan":{"reader_question":"Wie steigert DPDK die Netzwerkleistung durch Paketverarbeitung im Userspace, welche Grenzen bleiben bestehen und wann ist der klassische Linux-Netzwerkstack oder AF_XDP die bessere Wahl?","sections":[{"id":"dpdk-grundprinzip","heading":"DPDK-Grundprinzip und korrekte Einordnung","part":1,"target_words":270,"purpose":"Begriff und Ziel von DPDK erkl\u00e4ren sowie die Zuspitzung \u201eohne Kernel-Limits\u201c fachlich korrigieren: Der Kernel bleibt vorhanden, doch ausgew\u00e4hlte NICs nutzen einen anderen Datenpfad. Abgrenzung zu allgemeinem Kernel-Tuning und normalen Webanwendungen; ein kurzer Ablaufvergleich bereitet die folgenden Abschnitte vor.","source_ids":["S1","S2"],"internal_link_ids":[]},{"id":"userspace-paketpfad","heading":"Wie der Userspace-Paketpfad arbeitet","part":1,"target_words":270,"purpose":"Den Weg von Rx-Queue \u00fcber Poll Mode Driver, Burst-Verarbeitung, rte_mbuf und Mempool bis zur Tx-Queue nachvollziehbar darstellen. In getrennten Abs\u00e4tzen Polling statt Interrupts, Cache-Lokalit\u00e4t und m\u00f6gliche Kopien erkl\u00e4ren; ausdr\u00fccklich klarstellen, dass Zero Copy nicht automatisch gilt und Jumbo Frames mehrere mbufs nutzen k\u00f6nnen.","source_ids":["S1","S7"],"internal_link_ids":[]},{"id":"architektur-und-grenzen","heading":"Architektur, Ressourcen und harte Grenzen","part":1,"target_words":270,"purpose":"EAL, lcores, Queues, NUMA und die Modelle Run-to-completion sowie Pipeline einordnen. Konkrete Grenzen durch NIC, PCIe, Speicherbandbreite, CPU, Paketgr\u00f6\u00dfe und Anwendungslogik benennen. Ein Beispiel mit L4-Load-Balancing oder Paketfilterung zeigt, warum TLS, Backends und Control Plane weiterhin Engp\u00e4sse sein k\u00f6nnen.","source_ids":["S1","S5","S7"],"internal_link_ids":[]},{"id":"voraussetzungen-vor-dem-einsatz","heading":"Voraussetzungen vor dem DPDK-Einsatz pr\u00fcfen","part":2,"target_words":270,"purpose":"Eine informative Tabelle mit den Zeilen NIC und PMD, Hugepages, IOMMU\/VFIO, CPU-Pinning, NUMA, Queue-Planung und Monitoring erstellen; Spalten: Voraussetzung, Bedeutung, konkrete Pr\u00fcffrage. Danach Ger\u00e4tebindung als kritischen Betriebsschritt erkl\u00e4ren und den ausschlie\u00dflich lesenden Statusbefehl dpdk-devbind.py --status kontextualisieren. Management-NIC und Datenpfad m\u00fcssen getrennt geplant werden.","source_ids":["S3","S4","S6","S8"],"internal_link_ids":[]},{"id":"dpdk-afxdp-kernelstack","heading":"DPDK, AF_XDP und Kernelstack vergleichen","part":2,"target_words":270,"purpose":"Eine Vergleichstabelle f\u00fcr Linux-Kernelstack, AF_XDP und DPDK anlegen: Datenpfad, Ger\u00e4tebesitz, CPU-Verhalten, Betriebsaufwand, typische Eins\u00e4tze und wichtigste Grenze. Anschlie\u00dfend Auswahlkriterien anhand von Pakettrate, Latenzziel, Protokollbedarf, vorhandenen Betriebswerkzeugen und Teamkompetenz erl\u00e4utern. AF_XDPs Zero-Copy- und Copy-Modus pr\u00e4zise von DPDK abgrenzen.","source_ids":["S9","S1"],"internal_link_ids":["I1"]},{"id":"queue-cpu-numa-planung","heading":"Queues, CPU-Pinning und NUMA sinnvoll planen","part":2,"target_words":270,"purpose":"Ein praxisnahes, nicht produktspezifisches Planungsbeispiel entwickeln: Queue m\u00f6glichst einem lcore zuordnen, Speicher am lokalen NUMA-Knoten reservieren und Control-Plane-Kapazit\u00e4t freihalten. Strukturwechsel \u00fcber eine kurze Zuordnungsliste f\u00fcr Datenpfad, Verwaltung und Reserve. Grenzen von geteilten Queues, zus\u00e4tzlichen Pipeline-\u00dcbergaben und unkritisch \u00fcbernommenen Offload-Annahmen erkl\u00e4ren.","source_ids":["S5","S10","S11"],"internal_link_ids":[]},{"id":"betrieb-und-beobachtbarkeit","heading":"DPDK im Betrieb sicher beobachten","part":3,"target_words":270,"purpose":"Betriebsmodell f\u00fcr Auslastung, Paketverluste, Queue-F\u00fcllst\u00e4nde, Latenzverteilung, Speicherpools und Control Threads erl\u00e4utern. Den Zielkonflikt von Polling und CPU-Leerlast erkl\u00e4ren sowie Monitoring bei hoher Rate von vollst\u00e4ndiger, dauerhaft verlustfreier Paketaufzeichnung abgrenzen. Virtualisierung und Container als Sonderfall mit Device-Passthrough, Rechten, Hugepages und CPU-Zuordnung behandeln.","source_ids":["S8","S10"],"internal_link_ids":[]},{"id":"fehlerbilder-systematisch-pruefen","heading":"Typische Fehlerbilder systematisch pr\u00fcfen","part":3,"target_words":270,"purpose":"Eine Fehlersuchtabelle mit Symptomen, wahrscheinlichen Ursachen und nicht-destruktiven Pr\u00fcfungen planen: Paketverluste, ungleichm\u00e4\u00dfige Latenz, hohe CPU-Leerlast, nicht erreichbarer Host und fehlende Offloads. Ursachen wie NUMA-Ferne, Queue-Sharing, unpassende Pool-Gr\u00f6\u00dfen oder falsche Ger\u00e4tebindung differenzieren. testpmd io-Forwarding als isolierten Funktions- und Basistest einordnen, nicht als Nachweis realer Anwendungsleistung.","source_ids":["S11","S12","S8"],"internal_link_ids":[]},{"id":"rollout-und-entscheidungsrahmen","heading":"Rollout, Versionspflege und Einsatzentscheidung","part":3,"target_words":270,"purpose":"Mit einem gestuften Entscheidungsrahmen abschlie\u00dfen: Lastprofil erfassen, NIC-F\u00e4higkeiten pr\u00fcfen, isoliert validieren, mit echter Verarbeitungslogik messen und nur dann ausrollen. Stabile DPDK-Releases, LTS-Kennzeichnung und Release Candidates sauber unterscheiden; die in 26.07 relevante Mempool-Cache-\u00c4nderung als Beispiel f\u00fcr versionsbezogene Pr\u00fcfung nennen. Abschlie\u00dfend Kriterien formulieren, wann Kernelstack, XDP oder DPDK angemessen ist.","source_ids":["S2","S13","S3"],"internal_link_ids":["I3"]}]},"repairs":4,"reviews":7,"issues":[],"guard":{"content_md5":"39e696bf62d29e07a1ab4181563cdd58","title":"DPDK: Paketverarbeitung im Userspace richtig planen","slug":"dpdk-paketverarbeitung-userspace-planen","excerpt":"DPDK verarbeitet Pakete f\u00fcr ausgew\u00e4hlte NICs direkt im Userspace. Der Artikel erkl\u00e4rt Polling, Queue- und NUMA-Planung, sichere Ger\u00e4tebindung sowie die Abgrenzung zu AF_XDP und dem Linux-Kernelstack.","status":"draft","featured_media":21989},"verify":{"content_md5":"39e696bf62d29e07a1ab4181563cdd58","title":"DPDK: Paketverarbeitung im Userspace richtig planen","slug":"dpdk-paketverarbeitung-userspace-planen","excerpt":"DPDK verarbeitet Pakete f\u00fcr ausgew\u00e4hlte NICs direkt im Userspace. Der Artikel erkl\u00e4rt Polling, Queue- und NUMA-Planung, sichere Ger\u00e4tebindung sowie die Abgrenzung zu AF_XDP und dem Linux-Kernelstack.","status":"draft","featured_media":21989},"row_number":1913,"created_at":"2026-10-25T07:00:19+00:00","editorial_policy":{"version":"2.1.6","max_repairs":4,"review_model_from_attempt":2},"updated_at":"2026-10-25T08:44:41+00:00","manual_correction_receipt_214":{"correction_id":"dpdk-1418-20261025-quellenstand-laenge","request_hash":"8bf43f8cc7d4fca12a9a0a507e0730f5542f8b45c0b80cc1cef67056d85bbe21","before_fingerprint":"95e7ce1f6a848fddea01b61f250cfd41a5b8d8e7f2f079c9fb135c9838c93e32","after_doc_hash":"9e5c6251327b057ceeebc083fc6099ff6e4bec7e19a280ce5bdc8f27909e1a40"},"editorial_revision_receipts_215":[{"revision":1,"revision_id":"dpdk-1418-20261025-napi-queue-sharing","request_hash":"6b7d4b283d48c6b99eb09860fea678f8a1e03055ec31e0e7a06df3a2f441f52a","before_fingerprint":"19d3c630785e7466b5608d5762010031022dfbe5c53353b339d3584c8de19916","before_doc_hash":"9e5c6251327b057ceeebc083fc6099ff6e4bec7e19a280ce5bdc8f27909e1a40","after_doc_hash":"2b99ae97246b4267eb4da746db76017acd5f28d79f67179bcf7b8ca402af22b3","parent_receipt_hash":"394f77e8436f8f3ae4d4ddff8a6869abbcd2c8f4848d0831eb3a962ff5105b54","backup_hash":"7c11e3d57cdef93d592263c8187961e471df354cda4a32a69cb18aa1924d0781","commit_hash":"8182b12aa4d2adc7cea8be7fefa96686f1e37e3e85dfe4bfbe84514d321d72f6"},{"revision":2,"revision_id":"dpdk-1418-20261025-napi-tabellenkonsistenz","request_hash":"613c2c4211c55660f1e53d596ba5011d4fe14c157c0ab4cf895daf0432046942","before_fingerprint":"3ad4d1b8fd4660867455f05c2eff3fdd8e9983e9c98f65e87e4cb756b7b43986","before_doc_hash":"2b99ae97246b4267eb4da746db76017acd5f28d79f67179bcf7b8ca402af22b3","after_doc_hash":"d30c544eceae545872ad0dbb16225ca0a12dd40164d2b4768f9b3e240e0c7056","parent_receipt_hash":"8ca0b05b31987e82a0104826a26772781854dd0aab1dcad2ada49f6adf0ebdf0","backup_hash":"0049d96fa9011164dab22dfb378d1c16e587146e253c2051752e6a17f62d748b","commit_hash":"77aeb66b18a7748e1d0cb4d8496e06e0e8783b5db4d6b3f7f5939d109ae9f3cd"}],"verified_at":"2026-10-25T08:44:19+00:00"},"_wh_make_research":"## Recherche-Briefing: DPDK \u2013 Paketverarbeitung ohne Kernel-Limits\n\n### Einordnung und Versionsstand\n\nDie Leserfrage hinter dem Thema lautet: Wie kann DPDK die Netzwerkleistung steigern, indem Anwendungen Pakete direkt im Userspace verarbeiten, und welche betrieblichen Konsequenzen hat das gegen\u00fcber dem klassischen Linux-Netzwerkstack?\n\nDie Formulierung \u201eohne Kernel-Limits\u201c sollte im sp\u00e4teren Artikel bewusst pr\u00e4zisiert werden. DPDK entfernt den Kernel nicht aus dem System und hebt weder physische NIC-, PCIe-, Speicher-, CPU- noch Sicherheitsgrenzen auf. Es umgeht vor allem den gew\u00f6hnlichen Kernel-Datenpfad f\u00fcr ausgew\u00e4hlte Netzwerkschnittstellen: Eine Anwendung verarbeitet Paket-Rx- und Tx-Deskriptoren mittels Polling direkt im Userspace. Dadurch entfallen f\u00fcr diesen Datenpfad typischerweise Teile des Socket-\/skb- und Interrupt-Verarbeitungswegs. DPDK Poll Mode Drivers (PMDs) greifen auf Rx- und Tx-Deskriptoren zu und pollen diese statt den Empfang regul\u00e4r \u00fcber Interrupts abzuarbeiten. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides-26.03\/prog_guide\/ethdev\/ethdev.html?utm_source=openai))\n\nF\u00fcr den Artikel sollte DPDK 26.07.0 als konkret belegter, ver\u00f6ffentlichter Versionsstand dienen. Am Recherchetag, dem 25. Oktober 2026, ist au\u00dferdem bereits 26.11.0-rc1 dokumentiert; ein Release Candidate ist jedoch kein allgemeiner Nachweis f\u00fcr stabile Produktivfunktionen. DPDK pflegt Fehlerkorrekturen \u00fcber Stable-Releases; LTS ist eine zus\u00e4tzliche Kennzeichnung f\u00fcr l\u00e4nger unterst\u00fctzte stabile Zweige. Deshalb sollten versionsabh\u00e4ngige Aussagen stets mit \u201ein DPDK 26.07\u201c oder dem tats\u00e4chlich eingesetzten Release-Tag versehen werden. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/rel_notes\/index.html?utm_source=openai))\n\n### Zielgruppe und Voraussetzungen\n\nDer Beitrag richtet sich an Administratoren, Plattformteams und Entwickler, die hohe Paket\u00adraten, niedrige und m\u00f6glichst gleichm\u00e4\u00dfige Latenzen oder besonders effiziente Datenpfade ben\u00f6tigen. DPDK ist kein blo\u00dfes Kernel-Tuning und in der Regel keine Ma\u00dfnahme f\u00fcr eine normale Webanwendung mit wenigen TCP-Verbindungen.\n\nErforderlich sind:\n\n- Ein Linux-System mit ausreichend planbaren CPU-Kernen und RAM f\u00fcr Paketpuffer.\n- Eine Netzwerkkarte, f\u00fcr die ein passender DPDK-PMD verf\u00fcgbar ist. DPDK dokumentiert eine breite, aber nicht pauschale Auswahl von Treibern; die tats\u00e4chlichen Funktionen m\u00fcssen in der Treiber-Feature-Matrix f\u00fcr genau das NIC-Modell gepr\u00fcft werden. ([core.dpdk.org](https:\/\/core.dpdk.org\/supported\/nics\/?utm_source=openai))\n- Geeignete Speicherverwaltung mit Hugepages f\u00fcr gro\u00dfe Paketpools. Hugepages reduzieren die Zahl ben\u00f6tigter Seitentabellen\u00fcbersetzungen und k\u00f6nnen hohe TLB-Miss-Raten gegen\u00fcber 4-KiB-Seiten vermeiden. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides-25.07\/linux_gsg\/sys_reqs.html?utm_source=openai))\n- Eine klare CPU-, NUMA- und Queue-Planung. DPDK ordnet Arbeit oft einem logischen Kern pro Datenpfad zu, statt beliebig viele Threads \u00fcber die Kerne zu verteilen. Die EAL stellt daf\u00fcr Kernzuordnung, Speicherreservierung und Ger\u00e4tezuschnitt bereit. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides-25.07\/prog_guide\/env_abstraction_layer.html?utm_source=openai))\n- In vielen Hardware-Szenarien IOMMU und VFIO. VFIO setzt auf IOMMU-Schutz; der dokumentierte No-IOMMU-Modus ist ausdr\u00fccklich inh\u00e4rent unsicher und sollte nicht als Standardweg dargestellt werden. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/linux_gsg\/linux_drivers.html?utm_source=openai))\n\nWichtig f\u00fcr Hosting- und Serverumgebungen: Eine exklusiv an DPDK gebundene physische NIC steht dem normalen Kernel-Netzwerkstack \u00fcblicherweise nicht mehr als regul\u00e4res Interface zur Verf\u00fcgung. Management-Zugang und Produktivdatenverkehr d\u00fcrfen daher nicht versehentlich dieselbe Schnittstelle verwenden. Ein sp\u00e4terer Praxisabschnitt sollte dies fr\u00fch und deutlich erkl\u00e4ren.\n\n### Gesicherte Funktionsweise\n\nDPDK besteht nicht nur aus NIC-Treibern. Die Environment Abstraction Layer, kurz EAL, \u00fcbernimmt die Initialisierung und abstrahiert Low-Level-Ressourcen wie Speicher, CPU-Affinit\u00e4t, Ger\u00e4te und Timer. Darauf bauen unter anderem Ethernet Device API, Memory Pools, Paketpuffer (`rte_mbuf`), Rings und weitere Bibliotheken auf. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides-25.07\/prog_guide\/env_abstraction_layer.html?utm_source=openai))\n\nIm typischen Ablauf richtet eine Anwendung Empfangs- und Sendewarteschlangen auf einer NIC ein. Ein dedizierter lcore fragt eine Rx-Queue wiederholt ab, erh\u00e4lt einen Paket-Burst, wertet Header oder Metadaten aus und \u00fcbergibt Pakete an eine Tx-Queue oder an die n\u00e4chste Verarbeitungsstufe. DPDK unterst\u00fctzt dabei sowohl das Run-to-completion-Modell, bei dem ein Kern den gesamten Paketweg bearbeitet, als auch Pipeline-Modelle mit getrennten Stufen. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides-26.03\/prog_guide\/ethdev\/ethdev.html?utm_source=openai))\n\nPaketdaten liegen dabei in `rte_mbuf`-Objekten, die aus einem Mempool stammen. Ein mbuf enth\u00e4lt Metadaten wie L\u00e4ngen, Offload-Informationen, Eingangsport und gegebenenfalls RSS-Hash. Gro\u00dfe oder segmentierte Pakete k\u00f6nnen \u00fcber mehrere verkn\u00fcpfte mbufs dargestellt werden. Das ist f\u00fcr Jumbo Frames relevant und macht zugleich deutlich: \u201eZero Copy\u201c ist keine automatische Eigenschaft jeder Anwendung; Kopien und Speicherbewegungen h\u00e4ngen vom konkreten Pfad, den Offloads und der Anwendung ab. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides-26.07\/prog_guide\/mbuf_lib.html?utm_source=openai))\n\nDie hohe Leistung beruht damit auf mehreren zusammenwirkenden Entscheidungen: Polling statt h\u00e4ufiger Interrupt-Wechsel, Stapelverarbeitung, vorausgeplante Speicherpools, Cache-Lokalit\u00e4t, wenig gemeinsame Datenstrukturen sowie m\u00f6glichst direkte Zuordnung von Queue und Kern. Sie ist nicht allein durch die Installation eines DPDK-Pakets erreichbar.\n\n### Relevante Praxisf\u00e4lle\n\n1. L4-Load-Balancer und Reverse-Proxy-Datenpfade  \nWenn sehr viele kurze Verbindungen oder kleine Pakete verarbeitet werden m\u00fcssen, kann ein DPDK-basierter Datenpfad f\u00fcr Verteilung, NAT, Tunnel-Endpunkte oder Paketklassifikation sinnvoll sein. Der Artikel sollte erkl\u00e4ren, dass der Vorteil besonders dort entsteht, wo die Paketverarbeitung selbst zum Engpass wird. Die Control Plane, TLS-Terminierung, Anwendungslogik und Backends bleiben dennoch eigene m\u00f6gliche Flaschenh\u00e4lse.\n\n2. Firewall, DDoS-Filter und Paketklassifikation  \nDPDK eignet sich f\u00fcr schnelle Entscheidungen anhand von L2\/L3\/L4-Informationen, ACL-Regeln, Flow-Tabellen oder Rate Limits. Hardware-Offloads k\u00f6nnen Arbeit an die NIC verlagern, sind aber strikt modell- und treiberabh\u00e4ngig. Kein Offload darf ohne Capability-Pr\u00fcfung als verf\u00fcgbar angenommen werden. DPDK dokumentiert Offloads \u00fcber F\u00e4higkeiten der jeweiligen Ethernet-Ger\u00e4te und Treiber. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides-26.03\/prog_guide\/ethdev\/ethdev.html?utm_source=openai))\n\n3. NFV, virtuelle Router und Service Chaining  \nVirtuelle Netzfunktionen k\u00f6nnen mehrere Verarbeitungsschritte verbinden, etwa Routing, NAT, QoS und Tunnelverarbeitung. Hier muss die Architektur entscheiden, ob ein Paket auf einem Kern vollst\u00e4ndig verarbeitet wird oder ob es \u00fcber Ringe zwischen Pipeline-Stufen wandert. Mehr Stufen k\u00f6nnen die Struktur verbessern, verursachen aber zus\u00e4tzliche \u00dcbergaben und erschweren die Speicherlokalit\u00e4t.\n\n4. Monitoring und Packet Capture bei hoher Rate  \nF\u00fcr Metadatenextraktion, Flow-Statistiken oder Paketspiegelung kann DPDK sinnvoll sein. Vollst\u00e4ndige Paketaufzeichnung bleibt jedoch durch Speicherbandbreite, Massenspeicher und Datenschutz begrenzt. Der Artikel sollte klar zwischen schneller Erfassung am Interface und dauerhaftem verlustfreiem Speichern unterscheiden.\n\n5. Container- und Cloud-Umgebungen  \nDPDK kann auch in virtualisierten oder containerisierten Szenarien eingesetzt werden, verlangt aber ein sorgf\u00e4ltiges Device-Passthrough, passende Rechte, Hugepages und CPU-Zuordnung. Pauschalaussagen wie \u201eDPDK funktioniert problemlos in jedem Container\u201c w\u00e4ren falsch. Die DPDK-Dokumentation behandelt Container als eigenen Betriebsweg und beschreibt zus\u00e4tzliche Anforderungen. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/linux_gsg\/?utm_source=openai))\n\n### Entscheidungsalternativen\n\nF\u00fcr viele Anwendungen bleibt der Linux-Kernelstack die passendere Wahl: Er bietet ausgereifte Netzwerkwerkzeuge, Routing, Firewalling, Observability, Treiberintegration und einfache Betriebsabl\u00e4ufe. Wenn die messbare Last nicht im Netzwerkdatenpfad liegt, schafft DPDK eher Komplexit\u00e4t als Nutzen.\n\nXDP beziehungsweise AF_XDP ist eine wichtige Zwischenoption. AF_XDP arbeitet mit XDP und Userspace-Sockets; je nach Treiber kann es Zero-Copy nutzen, andernfalls ist ein Copy-Modus m\u00f6glich. Ein Programm kann Zero-Copy erzwingen, muss dann aber mit einem Fehler rechnen, wenn der Treiber diese F\u00e4higkeit nicht bietet. ([docs.kernel.org](https:\/\/docs.kernel.org\/networking\/af_xdp.html?utm_source=openai)) Das ist relevant f\u00fcr Teams, die nahe am Kernel bleiben oder gezielt einzelne Queues beschleunigen m\u00f6chten.\n\nWeitere Alternativen sind NIC-Hardware-Offloads, SmartNICs oder reine Optimierung des Kernelstacks, beispielsweise RSS, IRQ-Affinit\u00e4t und passende Socket- beziehungsweise Anwendungseinstellungen. Die Auswahl sollte nicht nach einem abstrakten \u201eh\u00f6chsten Durchsatz\u201c, sondern nach Paketgr\u00f6\u00dfe, Paket\u00adrate, Latenzziel, Protokollbedarf, Betriebsmodell und Personalaufwand erfolgen.\n\n### Grenzen und typische Fehler\n\nDer entscheidende Nachteil von Polling ist CPU-Verbrauch im Leerlauf: Ein lcore pr\u00fcft seine Queue fortlaufend. Das kann f\u00fcr konstant hohe Last sinnvoll sein, ist bei seltenem Traffic aber ineffizient. DPDK weist zudem darauf hin, dass f\u00fcr Control Threads CPU-Zeit verf\u00fcgbar bleiben muss; sind alle Kerne mit Datenpfad-Pollschleifen belegt, k\u00f6nnen beispielsweise Telemetrie, Hotplug-Ereignisse oder Multiprocess-Anfragen beeintr\u00e4chtigt werden. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/prog_guide\/env_abstraction_layer.html?utm_source=openai))\n\nZu den h\u00e4ufigsten Fehlern geh\u00f6ren:\n\n- Management-Interface an DPDK binden und dadurch den Remote-Zugang verlieren.\n- NIC, Treiber und ben\u00f6tigte Offloads nicht vorab gegen die offizielle Matrix pr\u00fcfen.\n- Rx-\/Tx-Queues zwischen mehreren lcores teilen. DPDK warnt, dass dies globale Sperren erfordert und die Leistung stark beeintr\u00e4chtigen kann; Queue- und Speicherlokalit\u00e4t pro NUMA-Knoten ist zentral. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/prog_guide\/ethdev\/ethdev.html?utm_source=openai))\n- Hugepages oder VFIO-\/IOMMU-Voraussetzungen nur teilweise einrichten.\n- No-IOMMU als bequeme Standardl\u00f6sung einsetzen, obwohl der Modus den DMA-Schutz aufgibt. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/linux_gsg\/linux_drivers.html?utm_source=openai))\n- `testpmd`-Ergebnisse als Anwendungsergebnis missverstehen. Der `io`-Forwarding-Modus leitet Pakete ohne Datenzugriff weiter und ist gerade deshalb der schnellste testpmd-Modus; reale Parser-, Routing-, NAT- oder Kryptologik ver\u00e4ndert das Ergebnis. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/testpmd_app_ug\/testpmd_funcs.html?utm_source=openai))\n- Versions\u00e4nderungen ignorieren. In DPDK 26.07 \u00e4nderte sich beispielsweise das Verhalten des Mempool-Caches; Pipeline-Anwendungen mit getrennten Rx- und Tx-lcores k\u00f6nnen Anpassungen der Cache-Gr\u00f6\u00dfe ben\u00f6tigen. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/rel_notes\/release_26_07.html?utm_source=openai))\n\n### Geeignete Tabellen und sichere Beispiele\n\nSinnvoll sind drei Tabellen:\n\n1. Architekturvergleich: Kernelstack, AF_XDP, DPDK; Spalten f\u00fcr Datenpfad, Ger\u00e4tebesitz, CPU-Verhalten, Komplexit\u00e4t, typische Eins\u00e4tze und wichtigste Grenze.  \n2. DPDK-Voraussetzungen: NIC\/PMD, IOMMU\/VFIO, Hugepages, CPU-Pinning, NUMA, Queue-Planung, Monitoring; jeweils mit \u201eWarum erforderlich?\u201c und \u201ePr\u00fcffrage\u201c.  \n3. Fehlersymptome: Paketverluste, ungleichm\u00e4\u00dfige Latenz, hohe CPU-Leerlast, nicht erreichbarer Host, fehlende Offloads; dazu wahrscheinliche Ursachen und nicht-destruktive Pr\u00fcfungen.\n\nAls sicherer Befehl eignet sich ausschlie\u00dflich eine Statusabfrage, deutlich markiert als Terminalbefehl:\n\nTerminalbefehl:\n```text\n.\/usertools\/dpdk-devbind.py --status\n```\n\nDer Befehl zeigt den Bindungsstatus von PCI-Ger\u00e4ten. Er ver\u00e4ndert keine Treiberbindung. Befehle zum Binden oder Entbinden sollten im Briefing nur konzeptionell erw\u00e4hnt werden, nicht als direkt ausf\u00fchrbare Produktionsanleitung, da sie die Erreichbarkeit eines Servers unterbrechen k\u00f6nnen. Die offizielle Dokumentation f\u00fchrt Binding und Unbinding explizit als separaten administrativen Schritt. ([doc.dpdk.org](https:\/\/doc.dpdk.org\/guides\/linux_gsg\/?utm_source=openai))","_wh_make_sources":{"S1":{"id":"S1","url":"https:\/\/doc.dpdk.org\/guides-26.03\/prog_guide\/ethdev\/ethdev.html?utm_source=openai","title":"3.1. Poll Mode Driver \u2014 Data Plane Development Kit 26.03.0 documentation"},"S2":{"id":"S2","url":"https:\/\/doc.dpdk.org\/guides\/rel_notes\/index.html?utm_source=openai","title":"Release Notes \u2014 Data Plane Development Kit 26.11.0-rc1 documentation"},"S3":{"id":"S3","url":"https:\/\/core.dpdk.org\/supported\/nics\/?utm_source=openai","title":"DPDK"},"S4":{"id":"S4","url":"https:\/\/doc.dpdk.org\/guides-25.07\/linux_gsg\/sys_reqs.html?utm_source=openai","title":"2. System Requirements \u2014 Data Plane Development Kit 25.07.0 documentation"},"S5":{"id":"S5","url":"https:\/\/doc.dpdk.org\/guides-25.07\/prog_guide\/env_abstraction_layer.html?utm_source=openai","title":"1. Environment Abstraction Layer (EAL) Library \u2014 Data Plane Development Kit 25.07.0 documentation"},"S6":{"id":"S6","url":"https:\/\/doc.dpdk.org\/guides\/linux_gsg\/linux_drivers.html?utm_source=openai","title":"7. Linux Drivers \u2014 Data Plane Development Kit 26.11.0-rc1 documentation"},"S7":{"id":"S7","url":"https:\/\/doc.dpdk.org\/guides-26.07\/prog_guide\/mbuf_lib.html?utm_source=openai","title":"3. Packet (Mbuf) Library \u2014 Data Plane Development Kit 26.07.0 documentation"},"S8":{"id":"S8","url":"https:\/\/doc.dpdk.org\/guides\/linux_gsg\/?utm_source=openai","title":"Getting Started Guide for Linux \u2014 Data Plane Development Kit 26.11.0-rc1 documentation"},"S9":{"id":"S9","url":"https:\/\/docs.kernel.org\/networking\/af_xdp.html?utm_source=openai","title":"AF_XDP \u2014 The Linux Kernel documentation"},"S10":{"id":"S10","url":"https:\/\/doc.dpdk.org\/guides\/prog_guide\/env_abstraction_layer.html?utm_source=openai","title":"1. Environment Abstraction Layer (EAL) Library \u2014 Data Plane Development Kit 26.11.0-rc1 documentation"},"S11":{"id":"S11","url":"https:\/\/doc.dpdk.org\/guides\/prog_guide\/ethdev\/ethdev.html?utm_source=openai","title":"3.1. Poll Mode Driver \u2014 Data Plane Development Kit 26.11.0-rc1 documentation"},"S12":{"id":"S12","url":"https:\/\/doc.dpdk.org\/guides\/testpmd_app_ug\/testpmd_funcs.html?utm_source=openai","title":"4. Testpmd Runtime Functions \u2014 Data Plane Development Kit 26.11.0-rc1 documentation"},"S13":{"id":"S13","url":"https:\/\/doc.dpdk.org\/guides\/rel_notes\/release_26_07.html?utm_source=openai","title":"2. DPDK Release 26.07 \u2014 Data Plane Development Kit 26.11.0-rc1 documentation"}},"_wh_make_usage":{"research":{"input_tokens":29873,"output_tokens":3473,"response_id":"resp_0aeb0ed364f819c3016adda90603c087d19722449127d35bd5","model":"gpt-5.6-terra","search_calls":3},"plan_da84410193d7323ff72831dfffbf2e2f":{"input_tokens":6306,"output_tokens":1387,"response_id":"resp_0d093dd11b0ee13f016adda92fde7087d1a86bd1cc5222c66b","model":"gpt-5.6-terra","search_calls":0},"part1_cf0dbdefa15bfc2f5ee56515cd6b1c5f":{"input_tokens":8838,"output_tokens":1848,"response_id":"resp_000f1769efb3fc45016adda93f222087d18686c4c8f88cc6b1","model":"gpt-5.6-terra","search_calls":0},"part2_690dc0fec5b4b00e82f0c27789a75fab":{"input_tokens":8930,"output_tokens":2779,"response_id":"resp_0394960df666b012016adda952412887d19a644f232948b478","model":"gpt-5.6-terra","search_calls":0},"part3_6afbd9ea799a1fdbc6f4fa7f1136225a":{"input_tokens":0,"output_tokens":0,"response_id":"","model":"caller-supplied-editorial-patch","search_calls":0},"package_b503724fb5c665f86f2a7f00d9dfada5":{"input_tokens":15260,"output_tokens":1613,"response_id":"resp_02d33c1bbab8985c016addbc3f8bcc87d1a4a73bda6da31a5f","model":"gpt-5.6-terra","search_calls":0},"review_f63f8337576233a8788d22033d65f0de":{"input_tokens":45058,"output_tokens":2396,"response_id":"resp_0cde6c9320541583016addbc513a7487d1b0c46e74daab2f4c","model":"gpt-5.6-sol","search_calls":3},"repair_bb4b7b40cae6195ee1c4cef54a226e27":{"input_tokens":31694,"output_tokens":4882,"response_id":"resp_0cb6f95b81fba778016addbc7fbf7487d187aea39c30e1edee","model":"gpt-5.6-terra","search_calls":1},"review_762c4cb994a78705e3a413371aa4f28a":{"input_tokens":42674,"output_tokens":1773,"response_id":"resp_0a595dcbc93abdaf016addbca415f887d1b07f6b5097e7e19f","model":"gpt-5.6-sol","search_calls":3},"repair_081a255161c162e6f726d3c4b82b7503":{"input_tokens":32020,"output_tokens":5854,"response_id":"resp_08f2870bb8d33e21016addbcc6dc8887d19f2c239ff676e447","model":"gpt-5.6-sol","search_calls":1},"review_8263da9e8cb2cf2c3c30894836062112":{"input_tokens":36769,"output_tokens":1898,"response_id":"resp_0a9d49051a03f0d9016addbd02448087d1b569f69190822c05","model":"gpt-5.6-sol","search_calls":2},"repair_dc45dbd7339027a87a0f602e4ac7a840":{"input_tokens":40834,"output_tokens":3529,"response_id":"resp_0fca6711cb988ed3016addbd1f6a2487d19d688887965e4e87","model":"gpt-5.6-sol","search_calls":2},"review_1d5abd64af5060e0daa71e9fea991d9c":{"input_tokens":36962,"output_tokens":2300,"response_id":"resp_0262acbbb4c47061016addbd453f1487d195f22a943035ef59","model":"gpt-5.6-sol","search_calls":2},"repair_85c695e36fe64105537ffc250de96b18":{"input_tokens":32720,"output_tokens":6795,"response_id":"resp_07daf7a4682d585d016addbd69ee7887d1804fde06969a5182","model":"gpt-5.6-sol","search_calls":1},"review_a6338c5fb00ad20e29ccda0dbe1e00c2":{"input_tokens":34859,"output_tokens":1352,"response_id":"resp_09e49ae939474c3a016addbf0e50bc87d1891c027de8b4da61","model":"gpt-5.6-sol","search_calls":2},"review_f90d8ac1b1922e74c777992c0c1250a9":{"input_tokens":37604,"output_tokens":1302,"response_id":"resp_008396a13c54be14016addc090b85c87d187f58169179e9bda","model":"gpt-5.6-sol","search_calls":3},"review_5fdf8c492c44444563e1c6b61781ea8b":{"input_tokens":43341,"output_tokens":1124,"response_id":"resp_0a74924c59731358016addc0ff2d5087d18a4e79b60d16ad81","model":"gpt-5.6-sol","search_calls":3},"image_hero":{"input_tokens":186,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail1":{"input_tokens":193,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail2":{"input_tokens":187,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0}},"_wh_make_last_error":"","_wh_make_write_intent":{"before":{"content_md5":"ceb7bf08c65f0141e373304079f8c79a","title":"DPDK: Paketverarbeitung im Userspace richtig planen","slug":"dpdk-paketverarbeitung-userspace-planen","excerpt":"DPDK verarbeitet Pakete f\u00fcr ausgew\u00e4hlte NICs direkt im Userspace. Der Artikel erkl\u00e4rt Polling, Queue- und NUMA-Planung, sichere Ger\u00e4tebindung sowie die Abgrenzung zu AF_XDP und dem Linux-Kernelstack.","status":"draft","featured_media":0},"expected":{"content_md5":"39e696bf62d29e07a1ab4181563cdd58","title":"DPDK: Paketverarbeitung im Userspace richtig planen","slug":"dpdk-paketverarbeitung-userspace-planen","excerpt":"DPDK verarbeitet Pakete f\u00fcr ausgew\u00e4hlte NICs direkt im Userspace. Der Artikel erkl\u00e4rt Polling, Queue- und NUMA-Planung, sichere Ger\u00e4tebindung sowie die Abgrenzung zu AF_XDP und dem Linux-Kernelstack.","status":"draft","featured_media":21989},"at":"2026-10-25T08:44:08+00:00"},"_wh_make_design_version":"2.1.18","rank_math_title":"DPDK: Paketverarbeitung im Userspace planen","_wh_make_doc":{"title":"DPDK: Paketverarbeitung im Userspace richtig planen","slug":"dpdk-paketverarbeitung-userspace-planen","excerpt":"DPDK verarbeitet Pakete f\u00fcr ausgew\u00e4hlte NICs direkt im Userspace. Der Artikel erkl\u00e4rt Polling, Queue- und NUMA-Planung, sichere Ger\u00e4tebindung sowie die Abgrenzung zu AF_XDP und dem Linux-Kernelstack.","seo":{"title":"DPDK: Paketverarbeitung im Userspace planen","description":"DPDK verst\u00e4ndlich einordnen: Userspace-Paketpfad, Polling, Hugepages, NUMA, sichere Ger\u00e4tebindung und Abgrenzung zu AF_XDP.","focus_keyword":"DPDK Paketverarbeitung"},"lead":[{"kind":"text","text":"DPDK kann die ","ref":""},{"kind":"strong","text":"Paketverarbeitung im Userspace","ref":""},{"kind":"text","text":" beschleunigen, wenn hohe Paketraten oder gleichm\u00e4\u00dfige Latenzen den gew\u00f6hnlichen Netzwerkpfad begrenzen. Daf\u00fcr pollt die Anwendung NIC-Queues direkt und \u00fcbernimmt Planung f\u00fcr Kerne, Speicher, Queues und Ger\u00e4tezugriff. Das umgeht jedoch keine Hardware- oder Sicherheitsgrenzen und erh\u00f6ht den Betriebsaufwand erheblich. Pr\u00fcfe deshalb das genaue NIC-Modell und den passenden PMD, Speicher- und NUMA-Planung, die erforderliche Ger\u00e4teanbindung sowie einen vom Datenpfad unabh\u00e4ngigen Management-Zugang vor einem Pilotbetrieb.","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S5"}],"images":{"hero":{"prompt":"Fotorealistisches redaktionelles Smartphonefoto in einer leicht genutzten Serverwerkstatt bei neutralem vorhandenem Raumlicht: Eine erwachsene Person mit breiter Statur, mittlerem Hautton, grau meliertem kurzem Haar, ovalem Gesicht und dunklem Arbeitspullover steckt konzentriert ein beschriftungsfreies SFP-Modul in eine Netzwerkkarte eines ge\u00f6ffneten Rack-Servers. Seitliche Halbtotalen-Perspektive, sichtbare L\u00fcftungsgitter, Kabelwege und kleine Gebrauchsspuren, anatomisch plausible H\u00e4nde, nat\u00fcrliche Hautstruktur. Kein lesbarer Bildschirm, keine Logos, kein Text, kein Hochglanz- oder Studio-Look.","alt":"Person pr\u00fcft eine Netzwerkkarte an einem ge\u00f6ffneten Server f\u00fcr einen spezialisierten Paketdatenpfad.","caption":"KI-generiertes Symbolbild: Die exklusive Nutzung einer Netzwerkkarte verlangt vorab eine sorgf\u00e4ltige Betriebsplanung.","filename_base":"dpdk-nic-server-vorbereitung","section_id":"","after_block":0},"detail1":{"prompt":"Fotorealistisches Nahfoto mit normaler Smartphonekamera, menschenfreie Szene auf einer gebrauchten Werkbank im Technikraum bei Tageslicht: Eine PCIe-Netzwerkkarte liegt neben einem ge\u00f6ffneten Servergeh\u00e4use mit sichtbaren, eingebauten Speicherb\u00e4nken und einem kleinen unbeschrifteten Notizblock. Im Vordergrund sind metallische Netzwerkports, K\u00fchlrippen und die Serverinnenseite klar erkennbar. Leicht unperfekter Bildausschnitt, nat\u00fcrliche Farben, feine Staubspuren und Kratzer auf der Werkbank, normale Sch\u00e4rfentiefe. Keine Displays, keine lesbaren Texte, keine Logos, kein CGI-, Werbe- oder Studio-Look.","alt":"Nahaufnahme einer Netzwerkkarte in einem ge\u00f6ffneten Server als Sinnbild f\u00fcr Ressourcen- und Speicherplanung.","caption":"KI-generiertes Symbolbild: NIC, Serverressourcen und Speicherplanung m\u00fcssen vor einem DPDK-Pfad zusammenpassen.","filename_base":"dpdk-nic-speicherplanung-voraussetzungen","section_id":"voraussetzungen-vor-dem-einsatz","after_block":1},"detail2":{"prompt":"Fotorealistisches ungestelltes Smartphonefoto in einem kleinen, gebrauchten B\u00fcroraum bei nat\u00fcrlichem Fensterlicht: Eine erwachsene Person mit kr\u00e4ftiger Statur, mittlerem Hautton, grau meliertem lockigem Haar, eckiger Brille und olivgr\u00fcnem Hemd betrachtet konzentriert ein einzelnes Diagramm ohne lesbare Inhalte auf einem seitlich stehenden Monitor. Im Vordergrund liegen ein Notizblock mit unleserlichen Kritzeleien und ein einfacher Taschenrechner; perspektivisch von hinten \u00fcber die Schulter, normale Sch\u00e4rfentiefe, nat\u00fcrliche Hautstruktur und Alltagsspuren. Keine Logos, keine lesbaren Texte, keine gestellte Szene.","alt":"Administrator betrachtet an einem Arbeitsplatz Metriken f\u00fcr Queue-, CPU- und Paketverlustanalyse.","caption":"KI-generiertes Symbolbild: F\u00fcr den Betrieb werden Queue-Z\u00e4hler, CPU-Last und Paketverluste gemeinsam bewertet.","filename_base":"dpdk-monitoring-queue-cpu","section_id":"betrieb-und-beobachtbarkeit","after_block":2}},"chart":null,"social":{"facebook":"DPDK verlagert den Paketdatenpfad f\u00fcr ausgew\u00e4hlte NICs in den Userspace. Entscheidend sind nicht nur Durchsatzwerte, sondern auch Queue-Planung, NUMA-N\u00e4he, Hugepages und ein sicherer Management-Zugang.","instagram":"DPDK ist kein pauschaler Turbo f\u00fcr Server: Polling, exklusive NIC-Bindung, Hugepages und CPU-Pinning ver\u00e4ndern den Betrieb grundlegend. Der \u00dcberblick zeigt, wann der Aufwand sinnvoll sein kann.","tiktok":"DPDK kurz erkl\u00e4rt: Pakete direkt im Userspace bearbeiten, statt den \u00fcblichen Kernelpfad zu nutzen. Warum Queue-Zuordnung, NUMA und getrenntes Management dabei entscheidend sind.","youtube":"DPDK verst\u00e4ndlich erkl\u00e4rt: So funktioniert Paketverarbeitung im Userspace \u2013 mit Polling, Mempools, Queue-Planung, NUMA und der Abgrenzung zu AF_XDP.","threads":"DPDK umgeht f\u00fcr ausgew\u00e4hlte Netzwerkkarten Teile des \u00fcblichen Kernel-Datenpfads, nicht aber physische oder sicherheitstechnische Grenzen. Der entscheidende Faktor ist eine belastbare Ressourcen- und Betriebsplanung.","x":"DPDK kann bei hoher Paketrate helfen, ist aber kein pauschales Kernel-Tuning. Polling, exklusive NIC-Bindung, Hugepages, IOMMU\/VFIO, Queue-Pinning und NUMA-Planung geh\u00f6ren zusammen. AF_XDP bleibt oft eine passende Zwischenoption."},"avatar_script":"DPDK ist kein Schalter f\u00fcr unbegrenzte Netzwerkleistung. Es verlagert den Datenpfad ausgew\u00e4hlter Netzwerkkarten in eine Userspace-Anwendung, die Empfangs- und Sendewarteschlangen aktiv abfragt. Das spart Anteile des \u00fcblichen Socket-, skb- und Interrupt-Pfads, bindet aber dedizierte CPU-Kerne und verlangt eine saubere Planung. Pr\u00fcfe zuerst das exakte NIC-Modell, den passenden PMD sowie IOMMU und VFIO. F\u00fcr gro\u00dfe, leistungsorientierte Paketpools sind Hugepages der \u00fcbliche Weg; DPDK kennt mit --no-huge aber einen Sondermodus, dessen Eignung f\u00fcr Treiber und Datenpfad gesondert gepr\u00fcft werden muss. Lege Queue, lcore und Mempool m\u00f6glichst auf denselben NUMA-Knoten. Besonders wichtig: Die an DPDK gebundene NIC ist \u00fcblicherweise kein normales Kernel-Interface mehr. Halte deshalb Management und Produktivdatenpfad strikt getrennt. Vergleiche DPDK immer mit dem realen Engpass, nicht nur mit einem synthetischen Weiterleitungstest.","version_note":"Fachstand: 25. Oktober 2026. Konkret als stabiler Funktionsstand benannte Angaben beziehen sich auf DPDK 26.07.0. Die Quellen S4 und S5 dokumentieren grundlegende System- und EAL-Eigenschaften anhand von DPDK 25.07; versionsabh\u00e4ngige Optionen sind deshalb zus\u00e4tzlich im eingesetzten Release zu pr\u00fcfen. S6 und S12 verweisen im Quellenregister auf den unversionierten Dokumentationszweig und werden nicht als eigenst\u00e4ndiger Nachweis f\u00fcr DPDK 26.07 behandelt. S13 enth\u00e4lt die release-spezifischen Angaben zu 26.07, besitzt im Register jedoch ebenfalls eine unversionierte Dokumentations-URL.","sections":[{"id":"dpdk-grundprinzip","heading":"DPDK-Grundprinzip und korrekte Einordnung","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"DPDK ist ein Framework f\u00fcr Anwendungen, die Netzwerkpakete mit m\u00f6glichst wenig Overhead im Userspace verarbeiten m\u00fcssen. Statt den \u00fcblichen Weg \u00fcber Kernel-Netzwerkstack, Sockets und dessen Paketstrukturen zu nutzen, kann eine Anwendung ausgew\u00e4hlte Netzwerkkarten unmittelbar f\u00fcr ihren eigenen Datenpfad verwenden. Das zielt vor allem auf hohe Paketraten, niedrige Latenzen und gut planbare Verarbeitung bei vielen kleinen Paketen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Formulierung \u201eohne Kernel-Limits\u201c ist dabei verk\u00fcrzt. Der Linux-Kernel bleibt f\u00fcr Betriebssystem, Speicherverwaltung, Prozesse, Sicherheit und zahlreiche Verwaltungsaufgaben vorhanden. DPDK ersetzt auch weder Grenzen der Netzwerkkarte noch PCIe-, Speicherbandbreiten- oder CPU-Grenzen. Es umgeht f\u00fcr gebundene Schnittstellen vor allem den gew\u00f6hnlichen Kernel-Datenpfad und verlagert die Paketarbeit in eine spezialisierte Anwendung.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Im regul\u00e4ren Linux-Netzwerkpfad wirken Netzwerktreiber, NAPI, Paketverwaltung und Socket-Schicht zusammen. Dieser Pfad ist nicht pauschal rein interruptbasiert. Ein DPDK-","ref":""},{"kind":"strong","text":"Poll Mode Driver","ref":""},{"kind":"text","text":" fragt Empfangswarteschlangen direkt aus dem Userspace ab. Die Anwendung nimmt Pakete in Gruppen entgegen, pr\u00fcft oder ver\u00e4ndert sie und \u00fcbergibt sie anschlie\u00dfend an eine Sendewarteschlange oder weitere Verarbeitungsstufe.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Das ist kein allgemeines Kernel-Tuning und f\u00fcr eine gew\u00f6hnliche Webanwendung mit wenigen TCP-Verbindungen meist nicht die erste Ma\u00dfnahme. Erst wenn der Paketdatenpfad selbst nachweisbar limitiert, etwa bei L4-Lastverteilung, Filterung oder Tunnelendpunkten, rechtfertigt der m\u00f6gliche Gewinn den zus\u00e4tzlichen Betriebsaufwand. Versionsabh\u00e4ngige Eigenschaften m\u00fcssen gegen die Dokumentation des konkret eingesetzten Release-Tags gepr\u00fcft werden; ein Release Candidate ist dabei nicht mit einem produktiv eingesetzten Release gleichzusetzen.","ref":""}]}]},{"id":"userspace-paketpfad","heading":"Wie der Userspace-Paketpfad arbeitet","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Am Eingang konfiguriert die Anwendung eine oder mehrere Rx-Queues der Netzwerkkarte. Ein zugewiesener Ausf\u00fchrungskern fragt eine Queue in einer Schleife ab und erh\u00e4lt einen Burst verf\u00fcgbarer Pakete. Diese ","ref":""},{"kind":"strong","text":"Burst-Verarbeitung","ref":""},{"kind":"text","text":" reduziert Funktionsaufrufe und Verwaltungsaufwand pro Paket. Nach Klassifikation, Weiterleitung oder \u00c4nderung legt die Anwendung die Pakete gesammelt in einer Tx-Queue ab.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Polling vermeidet viele Interrupt-Wechsel im stark ausgelasteten Datenpfad und macht die Arbeit eines Kerns besser vorhersehbar. Der Preis ist eine fortlaufend aktive CPU: Auch bei leerer Queue pr\u00fcft der lcore weiter auf neue Pakete. Deshalb passt dieses Modell zu konstant hoher Last eher als zu Schnittstellen mit seltenem oder stark schwankendem Verkehr.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Paketdaten und Metadaten liegen in ","ref":""},{"kind":"code","text":"rte_mbuf","ref":""},{"kind":"text","text":"-Objekten. Diese stammen aus einem vorab angelegten Mempool und enthalten beispielsweise Paketl\u00e4nge, Eingangsport, Offload-Informationen und gegebenenfalls einen RSS-Hash. Vorab reservierte Pools, eine feste Queue-Kern-Zuordnung und kurze Verarbeitungspfade f\u00f6rdern ","ref":""},{"kind":"strong","text":"Cache-Lokalit\u00e4t","ref":""},{"kind":"text","text":" und vermeiden unn\u00f6tige gemeinsame Datenstrukturen.","ref":""},{"kind":"citation","text":"","ref":"S7"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Zero Copy ist jedoch keine automatische DPDK-Eigenschaft. Ob und wo Daten kopiert werden, h\u00e4ngt von NIC, Treiber, Offloads und Anwendungslogik ab. Gro\u00dfe oder segmentierte Frames k\u00f6nnen aus mehreren verkn\u00fcpften mbufs bestehen; das ist etwa bei Jumbo Frames relevant. Wer Paketdaten umformt, zusammenf\u00fchrt oder zwischen inkompatiblen Puffern \u00fcbertr\u00e4gt, muss m\u00f6gliche Speicherbewegungen im eigenen Datenpfad ber\u00fccksichtigen.","ref":""},{"kind":"citation","text":"","ref":"S7"}]}]},{"id":"architektur-und-grenzen","heading":"Architektur, Ressourcen und harte Grenzen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die Environment Abstraction Layer, kurz ","ref":""},{"kind":"strong","text":"EAL","ref":""},{"kind":"text","text":", initialisiert DPDK und stellt unter anderem Speicherreservierung, Ger\u00e4tezugriff, Timer sowie die Zuordnung logischer Kerne bereit. Auf dieser Grundlage richtet die Anwendung Ethernet-Queues, Mempools und ihre Verarbeitung ein. Ein lcore ist dabei ein f\u00fcr DPDK eingeplanter logischer Kern, nicht einfach ein beliebig wandernder Anwendungsthread. Diese grundlegenden EAL-Eigenschaften sind hier mit der Dokumentation von DPDK 25.07 belegt; versionsabh\u00e4ngige Details m\u00fcssen zus\u00e4tzlich f\u00fcr den eingesetzten Release-Tag gepr\u00fcft werden.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr einen geradlinigen Datenpfad verarbeitet h\u00e4ufig ein Kern ein Paket vollst\u00e4ndig: vom Empfang \u00fcber die Entscheidung bis zum Senden. Dieses Run-to-completion-Modell vermeidet \u00dcbergaben zwischen Kernen. Eine Pipeline trennt dagegen beispielsweise Parser, Flow-Suche und Weiterleitung in Stufen. Sie kann Zust\u00e4ndigkeiten ordnen, f\u00fcgt aber Ringe, Synchronisation und potenziell schlechtere Speicherlokalit\u00e4t zwischen den Stufen hinzu.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Planung muss auch NUMA beachten. Queue, lcore und Paketpools sollten nach M\u00f6glichkeit am selben NUMA-Knoten liegen, damit der Datenpfad nicht regelm\u00e4\u00dfig auf Speicher eines anderen CPU-Sockels zugreift. Die erreichbare Leistung bleibt au\u00dferdem von NIC-Funktionen, PCIe-Anbindung, Speicherbandbreite, CPU-Takt, Paketgr\u00f6\u00dfe und der Komplexit\u00e4t jeder Paketentscheidung abh\u00e4ngig.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein L4-Load-Balancer kann mit DPDK IP- und Portinformationen schnell auswerten, Flows zuordnen und Pakete weiterleiten. TLS-Terminierung, aufwendige NAT-Zust\u00e4nde, Logging, Health Checks oder langsame Backends werden dadurch aber nicht automatisch schneller. Ebenso braucht die Control Plane verf\u00fcgbare CPU-Zeit f\u00fcr Konfiguration, Telemetrie und Fehlerbehandlung. DPDK beschleunigt folglich einen klar abgegrenzten Datenpfad, nicht zwangsl\u00e4ufig den gesamten Dienst.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch die Gr\u00f6\u00dfe und Lebensdauer der Paketpuffer sind Teil der Architektur. Mempools begrenzen, wie viele Puffer gleichzeitig bereitstehen, w\u00e4hrend die Anwendung Eigentumswechsel korrekt verwalten muss. Zu knapp dimensionierte Pools k\u00f6nnen unter Last ersch\u00f6pfen; \u00fcbergro\u00dfe Reservierungen binden Speicher. Die sinnvolle Gr\u00f6\u00dfe ergibt sich aus Warteschlangen, Burst-Gr\u00f6\u00dfen, Paketpfad und erwarteten Lastspitzen, nicht aus einer universellen Vorgabe.","ref":""},{"kind":"citation","text":"","ref":"S7"}]}]},{"id":"voraussetzungen-vor-dem-einsatz","heading":"Voraussetzungen vor dem DPDK-Einsatz pr\u00fcfen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"DPDK wird erst dann planbar, wenn Hardware, Speicher und CPU-Zuordnung zusammenpassen. Eine Installation allein schafft keinen leistungsf\u00e4higen Datenpfad: Der PMD muss das konkrete NIC-Modell unterst\u00fctzen, und Ressourcen m\u00fcssen f\u00fcr die Anwendung reservierbar sein. Die folgende Pr\u00fcfung trennt technische Mindestvoraussetzungen von Annahmen, die erst f\u00fcr das tats\u00e4chlich eingesetzte Ger\u00e4t gelten.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"table","caption":"Pr\u00fcfpunkte vor dem Einsatz eines DPDK-Datenpfads","headers":["Voraussetzung","Bedeutung","Konkrete Pr\u00fcffrage"],"rows":[["NIC und PMD","Ein PMD stellt den DPDK-Zugriff auf die Netzwerkkarte bereit; Funktionen sind modell- und treiberabh\u00e4ngig.","Ist das genaue NIC-Modell in der unterst\u00fctzten Treiber\u00fcbersicht enthalten, und sind ben\u00f6tigte Funktionen dokumentiert?"],["Speicherplanung und Hugepages","Hugepages sind der regul\u00e4re, f\u00fcr gro\u00dfe Paketpools leistungsf\u00e4hige Betriebsweg; DPDK kennt mit --no-huge auch einen Sondermodus mit eigenen Eignungs- und Treibergrenzen.","Sind f\u00fcr den vorgesehenen Datenpfad ausreichend Hugepages reserviert, oder ist der Einsatz ohne Hugepages bewusst gepr\u00fcft und begr\u00fcndet?"],["IOMMU und VFIO","F\u00fcr viele PMDs werden Ger\u00e4te vom regul\u00e4ren Kernel-Treiber gel\u00f6st und \u00fcber VFIO bereitgestellt; bifurkierte PMDs folgen einem anderen Modell.","Welchen Bindungsweg verlangt der konkrete PMD, und ist bei VFIO die vorgesehene IOMMU-Konfiguration verf\u00fcgbar?"],["CPU-Pinning","Dedizierte Kerne vermeiden Scheduler-Konkurrenz im Polling-Datenpfad.","Welche logischen Kerne sind f\u00fcr lcores reserviert, ohne Systemdienste zu verdr\u00e4ngen?"],["NUMA","Lokaler Speicherzugriff reduziert unn\u00f6tige Zugriffe \u00fcber NUMA-Knoten hinweg.","Liegen NIC, lcores und Mempools auf demselben NUMA-Knoten?"],["Queue-Planung","Rx- und Tx-Queues bestimmen, wie Arbeit auf Kerne verteilt wird.","Gibt es pro Datenpfad eine eindeutige Queue-Zuordnung ohne unn\u00f6tiges Sharing?"],["Monitoring","Paketverluste und Ressourcenengp\u00e4sse m\u00fcssen im Betrieb sichtbar bleiben.","Welche Z\u00e4hler f\u00fcr NIC, Queues, Pools und Anwendung werden \u00fcberwacht?"]],"source_ids":["S3","S4","S5","S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"Hugepages sind f\u00fcr umfangreiche Paketpools der \u00fcbliche Weg, aber keine ausnahmslose Bedingung jeder DPDK-Anwendung. Die EAL unterst\u00fctzt auch --no-huge. Dieser Sondermodus ist keine gleichwertige Standardempfehlung: Eignung, Speicherverwaltung und Treibergrenzen sind vor dem Pilotbetrieb zu pr\u00fcfen. Die hier verwendeten System- und EAL-Grundlagen dokumentieren DPDK 25.07; gleiche die Optionen zus\u00e4tzlich mit dem tats\u00e4chlich installierten Release ab.","ref":""},{"kind":"citation","text":"","ref":"S4"},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Besonders kritisch ist die ","ref":""},{"kind":"strong","text":"Ger\u00e4tebindung","ref":""},{"kind":"text","text":". Viele PMDs setzen voraus, dass die betreffende NIC vom regul\u00e4ren Kernel-Treiber gel\u00f6st und beispielsweise an ","ref":""},{"kind":"code","text":"vfio-pci","ref":""},{"kind":"text","text":" gebunden wird. Das Interface steht dem normalen Linux-Netzwerkstack dann nicht mehr regul\u00e4r zur Verf\u00fcgung. Die konkrete Vorgehensweise muss jedoch zum PMD passen und darf nicht pauschal auf jede unterst\u00fctzte Netzwerkkarte \u00fcbertragen werden.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Eine wichtige Ausnahme bilden bifurkierte PMDs. Die Treiberdokumentation weist darauf hin, dass solche PMDs nicht vom zugeh\u00f6rigen Kernel-Treiber gel\u00f6st werden sollen. Dabei kann der Kernel-Treiber gebunden bleiben, w\u00e4hrend ein Userspace-Datenpfad bestimmte Ressourcen nutzt. Die verlinkte unversionierte Dokumentation zeigt den Entwicklungsstand 26.11.0-rc1 und ist keine versionsgebundene Anleitung f\u00fcr 26.07. Pr\u00fcfe Ger\u00e4teunterst\u00fctzung und verf\u00fcgbare Kernelwerkzeuge im Handbuch des konkret eingesetzten PMD.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Vor jeder \u00c4nderung liefert die folgende Statusabfrage eine Inventur der PCI-Ger\u00e4te und ihrer aktuellen Treiberbindung. Sie \u00e4ndert selbst keine Bindung. F\u00fchre sie auf dem Zielsystem mit dem Pfad aus, der zur installierten DPDK-Quell- oder Werkzeugstruktur passt.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"code","language":"text","code":".\/usertools\/dpdk-devbind.py --status","source_ids":["S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"Plane Management-Zugang und Produktivdatenpfad getrennt, selbst wenn der gew\u00e4hlte PMD den Kernel-Treiber nicht abl\u00f6st. Die SSH- oder Konsolen-Erreichbarkeit darf nicht von einer Schnittstelle abh\u00e4ngen, deren Bindung oder Verkehrsaufteilung im Pilotbetrieb ver\u00e4ndert wird. Ein separates Management-Interface, Out-of-Band-Zugang oder ein vorab gepr\u00fcfter lokaler Rettungsweg begrenzt das Risiko einer Fehlkonfiguration.","ref":""}]}]},{"id":"dpdk-afxdp-kernelstack","heading":"DPDK, AF_XDP und Kernelstack vergleichen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die Wahl des Datenpfads ist keine Rangliste, sondern eine Betriebsentscheidung. Linux-Kernelstack, AF_XDP und DPDK verschieben jeweils Aufwand, Ger\u00e4tezugriff und CPU-Verbrauch. Die passende Option richtet sich danach, ob tats\u00e4chlich die Paketrate oder Latenz im Netzwerkpfad begrenzt \u2013 oder ob Anwendung, Verschl\u00fcsselung und Backends den Engpass bilden.","ref":""}]},{"type":"table","caption":"Einordnung von Kernelstack, AF_XDP und DPDK","headers":["Ansatz","Datenpfad","Ger\u00e4tebesitz","CPU-Verhalten","Typische Eins\u00e4tze","Wichtigste Grenze"],"rows":[["Linux-Kernelstack","Regul\u00e4rer Kernel-Netzwerkstack mit Sockets und Kernel-Funktionen.","NIC bleibt regul\u00e4res Kernel-Interface.","Interrupts zur Ereignismeldung, unter Last NAPI-Polling; Verarbeitung und Anwendungen unterliegen der Kernel-\/Scheduler-Steuerung.","Allgemeine Serverdienste, Routing und Anwendungen mit vorhandenen Linux-Werkzeugen.","Paketverarbeitung kann bei sehr hoher Paketrate zum Engpass werden."],["AF_XDP","XDP mit Userspace-Sockets; je nach Treiber Copy- oder Zero-Copy-Modus.","Integration bleibt am XDP- und Socket-Modell orientiert.","Abh\u00e4ngig von Modus, Treiber und Queue-Zuordnung.","Gezielte Beschleunigung einzelner Queues bei weiterem Kernelbezug.","Zero Copy ist nicht auf jedem Treiber verf\u00fcgbar."],["DPDK","PMDs pollen Rx- und Tx-Deskriptoren direkt im Userspace.","Viele PMDs verlangen eine Bindung au\u00dferhalb des regul\u00e4ren Kernel-Netzwerkpfads; bifurkierte PMDs lassen den Kernel-Treiber dagegen gebunden.","Polling beansprucht reservierte Kerne auch bei geringer Last.","Hohe Paketraten, spezialisierte Filter, Load Balancer und NFV.","Mehr Ressourcenplanung; Kernelintegration und Verkehrsaufteilung h\u00e4ngen vom konkreten PMD-Modell ab."]],"source_ids":["S9","S1","S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"AF_XDP ist eine Zwischenoption f\u00fcr Teams, die Pakete fr\u00fch behandeln und dennoch nahe am Linux-Netzwerkmodell bleiben m\u00f6chten. Der Kernel beschreibt einen Copy-Modus sowie Zero Copy, das Treiberunterst\u00fctzung voraussetzt. Wird Zero Copy ausdr\u00fccklich verlangt, kann die Socket-Erstellung fehlschlagen, falls der Treiber diese F\u00e4higkeit nicht anbietet.","ref":""},{"kind":"citation","text":"","ref":"S9"},{"kind":"text","text":" F\u00fcr die Einordnung der XDP-Ebene hilft der Beitrag ","ref":""},{"kind":"internal_link","text":"XDP und eXpress Data Path","ref":"I1"},{"kind":"text","text":".","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"DPDK nutzt dagegen Poll Mode Drivers und verarbeitet Warteschlangen direkt aus der Anwendung heraus. Das kann Socket- und Interrupt-Anteile f\u00fcr den DPDK-Datenpfad umgehen, verlangt aber Verantwortung f\u00fcr Speicher, Queues und Kernzuordnung. ","ref":""},{"kind":"strong","text":"Zero Copy","ref":""},{"kind":"text","text":" ist dabei weder ein allgemeines Leistungsversprechen noch eine automatische Eigenschaft eines beliebigen DPDK-Pfads; Kopien h\u00e4ngen von Anwendung, Offloads und Speicher\u00fcbergaben ab.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"W\u00e4hle den Kernelstack, wenn Routing, Firewalling, Observability und einfacher Betrieb wichtiger sind als ein spezialisierter Paketpfad. Pr\u00fcfe AF_XDP bei gezielter Beschleunigung mit Kernelanbindung. DPDK lohnt sich erst bei belegtem Bedarf an hoher Paketrate oder gleichm\u00e4\u00dfiger Latenz, vorhandener NIC-Unterst\u00fctzung und einem Team, das die zus\u00e4tzliche Betriebsverantwortung dauerhaft tragen kann.","ref":""}]},{"type":"callout","variant":"note","title":"Auswahl nicht am Durchsatz allein festmachen","runs":[{"kind":"text","text":"Bewerte Paketgr\u00f6\u00dfe, Paketrate, Latenzziel, ben\u00f6tigte Protokollfunktionen, bestehende Betriebswerkzeuge und Personalaufwand gemeinsam. Ein schnellerer Paketpfad l\u00f6st keinen Engpass in TLS-Verarbeitung, Datenbank oder Backend-Service.","ref":""}]}]},{"id":"queue-cpu-numa-planung","heading":"Queues, CPU-Pinning und NUMA sinnvoll planen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Eine belastbare ","ref":""},{"kind":"strong","text":"Queue-Zuordnung","ref":""},{"kind":"text","text":" beginnt mit der N\u00e4he zwischen NIC, CPU und Speicher. Die EAL unterst\u00fctzt die Auswahl logischer Kerne, Speicherreservierung und Ger\u00e4tezuschnitt. F\u00fcr einen einfachen Datenpfad ist es meist sinnvoll, eine Rx-Queue einem lcore fest zuzuordnen, den zugeh\u00f6rigen Mempool am lokalen NUMA-Knoten anzulegen und die Verarbeitung anschlie\u00dfend an eine passende Tx-Queue zu \u00fcbergeben. Diese grundlegenden EAL-Angaben sind mit der Dokumentation von DPDK 25.07 belegt und m\u00fcssen f\u00fcr versionsabh\u00e4ngige Optionen gegen den eingesetzten Release-Tag gepr\u00fcft werden.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein nicht produktspezifisches Beispiel f\u00fcr einen Host mit zwei NUMA-Knoten w\u00e4re: Die NIC an Knoten 0 erh\u00e4lt zwei Rx-Queues; je ein lcore an Knoten 0 bearbeitet eine Queue vollst\u00e4ndig. Die Paketpuffer liegen ebenfalls auf Knoten 0. Ein weiterer, nicht pollender Kern bleibt f\u00fcr Verwaltungsaufgaben frei, w\u00e4hrend Knoten 1 f\u00fcr andere Dienste oder klar getrennte Datenpfade vorgesehen wird.","ref":""}]},{"type":"list","ordered":false,"items":["Datenpfad: je Queue ein fest zugeordneter lcore, lokale Mempools und klar benannte Rx-\/Tx-Paare.","Verwaltung: CPU-Kapazit\u00e4t f\u00fcr Telemetrie, Steuerlogik, Ereignisse und Betriebssystemdienste freihalten.","Reserve: Kapazit\u00e4t f\u00fcr Lastspitzen, Fehlersuche und geplante Erweiterungen einplanen, statt alle Kerne dauerhaft zu verplanen."],"source_ids":["S5"]},{"type":"paragraph","runs":[{"kind":"text","text":"Teile eine Rx-Queue nicht zwischen mehreren lcores. Der PMD-Leitfaden r\u00e4t vom Teilen von Rx- und Tx-Queues ab, weil daf\u00fcr n\u00f6tige globale Sperren die Leistung stark beeintr\u00e4chtigen k\u00f6nnen. Gleichzeitiger Zugriff mehrerer lcores auf eine Tx-Queue ist nur dann als dokumentierte Ausnahme vorgesehen, wenn der Treiber die F\u00e4higkeit ","ref":""},{"kind":"code","text":"RTE_ETH_TX_OFFLOAD_MT_LOCKFREE","ref":""},{"kind":"text","text":" meldet. Pr\u00fcfe diese Capability f\u00fcr die konkrete NIC-\/PMD-Kombination; leite sie weder aus der Portgeschwindigkeit noch aus einem allgemeinen Offload-Schalter ab.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Eine Pipeline mit getrennten Parser-, Klassifizierungs- und Sendestufen kann Zust\u00e4ndigkeiten klarer machen. Der dokumentierte Pipeline-Ansatz \u00fcbergibt Pakete \u00fcber Ringe an weitere Kerne; dadurch entstehen zus\u00e4tzliche Speicherzugriffe und \u00dcbergaben. F\u00fcr einfache Filter oder L4-Weiterleitung ist Run-to-completion pro Queue h\u00e4ufig leichter zu planen. Mehrere Stufen sollten nur eingesetzt werden, wenn die Arbeitsteilung ihren Mehraufwand im konkreten Lastprofil rechtfertigt.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch ","ref":""},{"kind":"strong","text":"Hardware-Offloads","ref":""},{"kind":"text","text":" d\u00fcrfen nicht in die Planung hineingelesen werden. Welche Checksum-, Segmentierungs-, RSS- oder Flow-Funktionen verf\u00fcgbar sind, ergibt sich aus den F\u00e4higkeiten des konkreten Ethernet-Ger\u00e4ts und seines PMD. Pr\u00fcfe sie vor dem Entwurf und behandle einen fehlenden Offload als normalen Planungsfall, nicht als Ausnahme.","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S3"}]}]},{"id":"betrieb-und-beobachtbarkeit","heading":"DPDK im Betrieb sicher beobachten","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Der Betrieb eines DPDK-Datenpfads braucht Metriken, die Paketverarbeitung und Ressourcen zusammen betrachten. Erfasse mindestens verarbeitete, verworfene und fehlerhafte Pakete sowie anwendungseigene Werte f\u00fcr Verarbeitungsraten, Mempool-Reserven und ","ref":""},{"kind":"strong","text":"Latenzverteilung","ref":""},{"kind":"text","text":" statt nur eines Mittelwerts. Welche zus\u00e4tzlichen Port-, Queue- oder Treiberz\u00e4hler verf\u00fcgbar sind, h\u00e4ngt vom konkreten PMD, der NIC und der Anwendung ab und muss f\u00fcr die eingesetzte Kombination gepr\u00fcft werden.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Polling ist ein bewusster Zielkonflikt. Ein lcore fragt seine Rx-Queue fortlaufend ab, damit Pakete ohne den regul\u00e4ren Interruptpfad verarbeitet werden k\u00f6nnen. Bei wenig oder keinem Traffic bleibt die Pollschleife dennoch aktiv. Plane deshalb neben Datenpfad-lcores CPU-Kapazit\u00e4t f\u00fcr Steuerlogik, Telemetrie und Betriebssystem ein. Die erg\u00e4nzend verwendete EAL-Dokumentation bezieht sich auf DPDK 25.07; releaseabh\u00e4ngige Funktionen sind im installierten Stand zu pr\u00fcfen.","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Ursachenanalyse ist eine zeitliche Korrelation wichtig. Tritt Paketverlust zugleich mit Fehlerz\u00e4hlern, sinkenden Mempool-Reserven oder einem ausgelasteten Datenpfad-lcore auf, sind dies zun\u00e4chst pr\u00fcfbare Hinweise und noch kein eindeutiger Ursachennachweis. Schwankende Antwortzeiten k\u00f6nnen unter anderem mit NUMA-fernem Speicher, konkurrierenden Aufgaben oder Pipeline-\u00dcbergaben zusammenh\u00e4ngen. Vergleiche solche Hypothesen jeweils mit Kernzuordnung, Queue-Verteilung und Messwerten desselben Zeitfensters.","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Schnelle Erfassung am Interface ist nicht gleichbedeutend mit vollst\u00e4ndiger, dauerhaft verlustfreier Paketaufzeichnung. F\u00fcr Flow-Statistiken oder Header-Auswertung k\u00f6nnen wenige Metadaten gen\u00fcgen. Soll jedes Paket gespeichert werden, begrenzen zus\u00e4tzlich Speicherbandbreite, Puffervolumen, Schreibdurchsatz und das gew\u00e4hlte Speichermedium den Aufbau. Datenschutz und Aufbewahrungsregeln sind dabei unabh\u00e4ngige Anforderungen, die der Netzwerkdurchsatz nicht l\u00f6st.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Plane virtuelle Maschinen und Container als eigene Integrationsaufgabe. Kl\u00e4re f\u00fcr die konkrete Plattform, wie Ger\u00e4tezugriff, Speicher, CPU-Zuordnung und erforderliche Rechte bereitgestellt werden. Pr\u00fcfe diese Kombination mit dem eingesetzten PMD, statt Beispielparameter pauschal zu \u00fcbernehmen. Der verlinkte Linux-Leitfaden geh\u00f6rt aktuell zum Entwicklungsstand 26.11.0-rc1; f\u00fcr einen Produktivaufbau ist die Dokumentation des tats\u00e4chlich installierten Releases ma\u00dfgeblich.","ref":""},{"kind":"citation","text":"","ref":"S8"}]}]},{"id":"fehlerbilder-systematisch-pruefen","heading":"Typische Fehlerbilder systematisch pr\u00fcfen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Eine Fehlersuche sollte zuerst beobachtbare Symptome von m\u00f6glichen Ursachen trennen. \u00c4ndere nicht gleichzeitig Treiberbindung, Queue-Zahl und Speicherparameter, weil der Ausl\u00f6ser dann nicht mehr nachvollziehbar ist. Nicht-destruktive Z\u00e4hler, Konfigurationseinblicke und ein Vergleich zwischen betroffener und unbetroffener Queue liefern vor Eingriffen meist die belastbareren Hinweise.","ref":""}]},{"type":"table","caption":"Typische DPDK-Fehlerbilder und schonende erste Pr\u00fcfungen","headers":["Symptom","Zu pr\u00fcfende Hypothesen","Nicht-destruktive Pr\u00fcfung"],"rows":[["Paketverluste","Der verarbeitende lcore h\u00e4lt m\u00f6glicherweise nicht Schritt, Paketpuffer werden knapp oder der PMD meldet Empfangsfehler.","Anwendungs-, Port- und verf\u00fcgbare Treiberz\u00e4hler, Mempool-Reserven und CPU-Auslastung im selben Zeitfenster vergleichen."],["Unregelm\u00e4\u00dfige Latenz","NUMA-ferner Speicher, konkurrierende Aufgaben oder zus\u00e4tzliche Pipeline-\u00dcbergaben k\u00f6nnen beteiligt sein.","CPU- und Speicherzuordnung sowie Queue-Eigent\u00fcmer pr\u00fcfen; Latenzausrei\u00dfer getrennt nach Datenpfad erfassen."],["Hohe CPU-Last bei wenig Traffic","Die Pollschleife l\u00e4uft auch bei leerer Empfangsqueue weiter.","Auslastung des pollenden lcores gegen die tats\u00e4chliche Paketrate stellen und reservierte Kerne dokumentieren."],["Host nicht erreichbar","Eine Management-Schnittstelle k\u00f6nnte umgebunden oder ihre Verkehrsf\u00fchrung ver\u00e4ndert worden sein.","PCI-Ger\u00e4te- und Bindungsstatus \u00fcber einen getrennten Management- oder Konsolenzugang pr\u00fcfen."],["Offload fehlt","NIC-Modell, PMD oder Konfiguration stellt die gew\u00fcnschte F\u00e4higkeit m\u00f6glicherweise nicht bereit.","Feature-Matrix und gemeldete Ger\u00e4tef\u00e4higkeiten f\u00fcr das konkrete NIC-Modell abgleichen."]],"source_ids":["S1","S3","S5"]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei auff\u00e4lligem Queue-Verhalten pr\u00fcfst du Queue-Eigent\u00fcmer und den NUMA-Knoten des Mempools. Im Run-to-completion-Modell verarbeitet der zugeordnete lcore Empfang, Verarbeitung und Senden; eine Pipeline \u00fcbergibt Pakete an weitere Kerne. Teile die Rx-Queue trotzdem nicht zwischen lcores. Gleichzeitiger Zugriff auf eine Tx-Queue ist nur bei gemeldeter ","ref":""},{"kind":"code","text":"RTE_ETH_TX_OFFLOAD_MT_LOCKFREE","ref":""},{"kind":"text","text":"-F\u00e4higkeit als Ausnahme vorgesehen. Eine selbst erg\u00e4nzte Sperre macht Queue-Sharing nicht zur empfohlenen Skalierungsstrategie.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei fehlenden Hardware-Offloads ist die richtige Frage nicht allein, welcher Schalter gesetzt wurde, sondern welche F\u00e4higkeit Ger\u00e4t und PMD tats\u00e4chlich bereitstellen. Eine Anwendung kann eine gew\u00fcnschte Funktion einplanen, ohne dass sie f\u00fcr dieses Modell verf\u00fcgbar ist. Vergleiche die Unterst\u00fctzung f\u00fcr die konkrete NIC mit den zur Laufzeit gemeldeten F\u00e4higkeiten, bevor du den Datenpfad von diesem Offload abh\u00e4ngig machst.","ref":""},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ergebnisse von testpmd sind als Baseline oder Funktionspr\u00fcfung einzuordnen, nicht als Leistungsnachweis der sp\u00e4teren Anwendung. Im io-Forwarding-Modus werden Pakete unver\u00e4ndert weitergeleitet, ohne ihre Inhalte f\u00fcr fachliche Verarbeitung auszuwerten. Parser, Flow-Tabellen, NAT, Verschl\u00fcsselung und Protokollzustand bildet dieser Modus nicht ab. Die verlinkte unversionierte Dokumentation geh\u00f6rt zu 26.11.0-rc1; pr\u00fcfe das Verhalten im Handbuch des installierten Releases. Halte Forwarding-Modus, Paketgr\u00f6\u00dfe, Rx-\/Tx-Queue-Zahl und Forwarding-Kerne fest und wiederhole den Vergleich mit realer Verarbeitungslogik.","ref":""},{"kind":"citation","text":"","ref":"S12"}]}]},{"id":"rollout-und-entscheidungsrahmen","heading":"Rollout, Versionspflege und Einsatzentscheidung","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Beginne mit einem isolierten Test und einem dokumentierten ","ref":""},{"kind":"strong","text":"Lastprofil","ref":""},{"kind":"text","text":": Paketgr\u00f6\u00dfen, Spitzenlast, Flussanzahl und ben\u00f6tigte Verarbeitungsschritte. Pr\u00fcfe die konkrete NIC samt passendem Poll Mode Driver und ben\u00f6tigten Funktionen anhand der offiziellen Hardware\u00fcbersicht und Treibermatrix. Ein gelisteter Hersteller allein best\u00e4tigt weder jede Karte noch s\u00e4mtliche Offloads. Teste anschlie\u00dfend mit realer Anwendungslogik, nicht ausschlie\u00dflich mit einem Weiterleitungsbeispiel.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Halte DPDK-Version, Firmware, Treiber, Kernel und Konfiguration f\u00fcr jeden Versuch fest. Lies vor einem Update die Release Notes des exakt vorgesehenen Release-Tags und dokumentiere, welche \u00c4nderungen f\u00fcr den eigenen Datenpfad relevant sind. Release-Notes unterschiedlicher Versionen sind kein Ersatz f\u00fcr diese Zuordnung, weil sich Funktionen und Einschr\u00e4nkungen zwischen Releases \u00e4ndern k\u00f6nnen.","ref":""},{"kind":"citation","text":"","ref":"S13"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein konkreter Pr\u00fcfpunkt aus den Release Notes zu DPDK 26.07 ist der ge\u00e4nderte Flush-\/Refill-Algorithmus des Mempool-Caches: Seine effektive Gr\u00f6\u00dfe entspricht seitdem der konfigurierten Gr\u00f6\u00dfe; zuvor war sie 50 Prozent gr\u00f6\u00dfer. Nur wenn jeder lcore an einem Mempool ausschlie\u00dflich Objekte entnimmt oder ausschlie\u00dflich zur\u00fcckgibt, empfehlen die Release Notes eine Verdopplung der konfigurierten Cachegr\u00f6\u00dfe, um eine m\u00f6gliche Verdopplung der Cache-Miss-Rate zu vermeiden. Das betrifft etwa Pipelines mit getrennten Rx- und Tx-lcores, nicht pauschal Run-to-completion. Die \u00c4nderung betrifft Release 26.07; die verlinkte historische Release-Seite steht inzwischen innerhalb der Dokumentation zu 26.11.0-rc1.","ref":""},{"kind":"citation","text":"","ref":"S13"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Beginne mit einem begrenzten Pilot und festen Abbruchkriterien. Vergleiche Durchsatz, hohe Latenzperzentile, Paketverluste und CPU-Bedarf unter gleichen Bedingungen mit dem bisherigen Betrieb. Pr\u00fcfe \u00dcberwachung, Neustarts und R\u00fcckfall auf die vorherige Konfiguration. Ber\u00fccksichtige den Betriebsaufwand; eine allgemeine Durchsatzgarantie l\u00e4sst sich daraus nicht ableiten.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"DPDK lohnt sich als Einsatzentscheidung vor allem dann, wenn der gemessene Nutzen den zus\u00e4tzlichen Pflegeaufwand rechtfertigt. F\u00fcr die Einordnung der umgebenden Systemplattform erg\u00e4nzt der Beitrag ","ref":""},{"kind":"internal_link","text":"Linux-Kernel im Hostingbetrieb","ref":"I3"},{"kind":"text","text":" die Planung. Behalte f\u00fcr gew\u00f6hnliche Hostingdienste auch den bestehenden Netzwerkpfad als Vergleichsbasis im Test.","ref":""}]}]}]},"_wh_make_word_report":{"words":2907,"min":2000,"max":3000,"target":2500,"ok":true,"missing":0,"excess":0,"lead_words":68,"section_words":{"dpdk-grundprinzip":220,"userspace-paketpfad":199,"architektur-und-grenzen":281,"voraussetzungen-vor-dem-einsatz":497,"dpdk-afxdp-kernelstack":379,"queue-cpu-numa-planung":342,"betrieb-und-beobachtbarkeit":276,"fehlerbilder-systematisch-pruefen":365,"rollout-und-entscheidungsrahmen":280}},"_wh_make_review":{"verdict":"pass","issues":[],"checked_source_ids":["S1","S2","S4","S5","S6","S7","S9","S12","S13"],"summary":"Der Artikel ist fachlich plausibel und ausreichend quellengetragen. Gepr\u00fcft wurden insbesondere PMD-Polling, Run-to-completion und Pipeline, Queue-Sharing und MT_LOCKFREE, NUMA-Lokalit\u00e4t, mbuf-Verkettung, Hugepages und --no-huge, VFIO und der unsichere No-IOMMU-Modus, bifurkierte PMDs, AF_XDP Copy\/Zero-Copy, der testpmd-io-Modus sowie die Mempool-Cache-\u00c4nderung in DPDK 26.07. Entwicklungszweig und stabiler Versionsstand werden sauber getrennt. Der Artikel behauptet keine eigenen Messungen; Tabellen, Statusbefehl, Versionshinweise und KI-Symbolbilder sind angemessen eingeordnet."},"_wh_make_review_doc_hash":"d30c544eceae545872ad0dbb16225ca0a12dd40164d2b4768f9b3e240e0c7056","_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"inline_featured_image":null,"_yoast_wpseo_linkdex":null,"_eael_widget_elements":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_trp_translated_slug_en_us":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_wh_make_writer_raw":null,"_wh_make_design_backup_204":null,"_wp_desired_post_slug":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"42","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"DPDK Paketverarbeitung","rank_math_og_content_image":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21989","_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":"DPDK verst\u00e4ndlich einordnen: Userspace-Paketpfad, Polling, Hugepages, NUMA, sichere Ger\u00e4tebindung und Abgrenzung zu AF_XDP.","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21968","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=21968"}],"version-history":[{"count":9,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21968\/revisions"}],"predecessor-version":[{"id":21992,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21968\/revisions\/21992"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21989"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}