Mit DPDK arbeiten
Auf dieser Seite wird beschrieben, wie Sie das Data Plane Development Kit (DPDK) auf U4C Compute Engine-Instanzen verwenden.
DPDK auf U4C-Instanzen
Das Data Plane Development Kit (DPDK) ist ein Framework für leistungsintensive Anwendungen, die eine schnelle Paketverarbeitung, eine geringe Latenz und eine gleichbleibende Leistung erfordern. DPDK umgeht den Linux-Kernel-Netzwerkstack und wird direkt im Userspace ausgeführt.
U4C-Instanzen unterstützen DPDK mit dem
Google Virtual NIC (gVNIC) Poll Mode Driver (PMD).
Nach der Installation von DPDK können Treiberfunktionen mit den Standard-APIs ethdev und rte_flow konfiguriert werden.
Die Verwendung von DPDK mit der ULL-Lösung umfasst die Unterstützung für die Flusssteuerung. Sie können das standardmäßige Receive Side Scaling (RSS)-Hashing umgehen, indem Sie bestimmte Traffic-Flüsse direkt an eine bestimmte Empfangswarteschlange (RX) weiterleiten. Die ULL-Lösung unterstützt die 3-Tupel-Flusssteuerung (Protokoll, Ziel-IP-Adresse und Zielport) für ULL-Unicast- und Multicast-Traffic.
Außerdem unterstützt der gVNIC PMD das Hardware-RX-Timestamping in mbufs und das Lesen der Uhrzeit über rte_eth_read_clock.
Beschränkungen
Die Verwendung von DPDK auf U4C-Instanzen unterliegt den folgenden Einschränkungen:
- Die Unterstützung für Bare-Metal-Instanzen ist in der Mainline-DPDK-Version oder im
dpdk-next-net-Repository nicht verfügbar. Sie müssen die erforderlichen Patches anwenden . Folgen Sie dazu der Anleitung unter DPDK auf Ihrer U4C-Instanz installieren. - Wenn Sie die genaue Zeit für eine U4C-
Instanz konfigurieren, die DPDK auf ihren ULL-Netzwerkschnittstellen (
nic1undnic2) verwendet, müssen Siechronyso konfigurieren, dassnic0als Quelle für die Zeitsynchronisierung verwendet wird.
Hinweis
Bevor Sie mit DPDK auf U4C Compute Engine-Instanzen arbeiten, müssen Sie die folgenden Anforderungen erfüllen.
U4C-Instanz erstellen
Erstellen Sie eine U4C-Bare-Metal-Instanz, falls noch nicht geschehen. Weitere Informationen finden Sie unter ULL Compute Engine-Instanzen erstellen.
Mit SSH eine Verbindung zur Instanz herstellen
Stellen Sie mit SSH eine Verbindung zur Instanz her, falls noch nicht geschehen.
DPDK auf Ihrer U4C-Instanz installieren
So installieren Sie DPDK auf Ihrer U4C-Instanz:
Konfigurieren Sie die Abhängigkeiten für die DPDK-Installation:
Wenn Sie Rocky Linux verwenden, aktivieren Sie das CodeReady Builder-Repository (CRB). Wenn Sie Red Hat Enterprise Linux (RHEL) verwenden, überspringen Sie diesen Schritt.
sudo dnf -y config-manager --enable crbInstallieren Sie die erforderlichen Pakete und Build-Tools:
sudo dnf install -y git gcc gcc-c++ make ninja-build python3-pip \ kernel-devel-$(uname -r) pkgconf-pkg-config numactl-devel sudo pip install pyelftools meson
Laden Sie die DPDK-Quelle herunter. Sie müssen entweder das
dpdk-next-net-Repository oder die DPDK-Version 26.07 oder höher verwenden.dpdk-next-netgit clone git://dpdk.org/next/dpdk-next-net dpdk-sourceDPDK 26.07 oder höher
git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
Wenden Sie die erforderlichen Patches an. Die Quelle für die Bare-Metal-Unterstützung wird in dem
dpdk-bmBranch des Googlecompute-virtual-ethernet-dpdkRepository gehostet. Die Patches sind ABI-kompatibel mit demdpdk-next-net-Repository.Sie können die Patches entweder mit einer wörtlichen Kopie oder mit der Methode „Cherry-Pick“ anwenden. Führen Sie je nach bevorzugtem Workflow einen der folgenden Schritte aus:
Wörtliche Kopie
git clone https://github.com/google/compute-virtual-ethernet-dpdk -b dpdk-bm dpdk-bm cp -r dpdk-bm/drivers/net/gve/* dpdk-source/drivers/net/gve/ cd dpdk-source
Cherry-Pick
cd dpdk-source git remote add gve-bm https://github.com/google/compute-virtual-ethernet-dpdk git fetch gve-bm git cherry-pick gve-bm/main..gve-bm/dpdk-bm
Erstellen und installieren Sie DPDK:
meson setup build sudo ninja -C build install; sudo ldconfig
DPDK an einen Treiber binden
Sie müssen die Netzwerkschnittstellen Ihrer Instanz an einen DPDK-kompatiblen Kernel Treiber binden, wie unter DPDK an einen Treiber binden und testen beschrieben.
Beachten Sie bei U4C-Bare-Metal-Instanzen Folgendes:
- Für Bare-Metal-Instanzen sind die UIO- oder IOMMU-losen VFIO-Treiber, die von VM-Instanzen verwendet werden, nicht erforderlich. Sie können direkt an den Standardtreiber
vfio-pcibinden. - Sie können die ULL-Netzwerkschnittstellen (
nic1undnic2) nur an den DPDK-Treiber binden.nic0muss an den Standard-Kerneltreiber gebunden bleiben, um die Netzwerkverbindung aufrechtzuerhalten und die Zeitsynchronisierung zu unterstützen.
Weitere Informationen finden Sie in der DPDK-Dokumentation unter Binding and Unbinding Network Ports to/from the Kernel Modules.
Nächste Schritte
- Informationen zum Synchronisieren der Instanzuhr mit der physischen NIC-Uhr des Host servers finden Sie unter Genaue Zeit konfigurieren.