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 (nic1 und nic2) verwendet, müssen Sie chrony so konfigurieren, dass nic0 als 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:

  1. Konfigurieren Sie die Abhängigkeiten für die DPDK-Installation:

    1. 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 crb
      
    2. Installieren 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
      
  2. 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-net

      git clone git://dpdk.org/next/dpdk-next-net dpdk-source
      
    • DPDK 26.07 oder höher

      git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
      
  3. Wenden Sie die erforderlichen Patches an. Die Quelle für die Bare-Metal-Unterstützung wird in dem dpdk-bm Branch des Google compute-virtual-ethernet-dpdk Repository gehostet. Die Patches sind ABI-kompatibel mit dem dpdk-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
  4. 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-pci binden.
  • Sie können die ULL-Netzwerkschnittstellen (nic1 und nic2) nur an den DPDK-Treiber binden. nic0 muss 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.