Utiliser DPDK

Cette page explique comment utiliser le kit de développement de plan de données (DPDK) sur les instances Compute Engine U4C.

À propos de DPDK sur les instances U4C

Le kit de développement de plan de données (DPDK) est un framework pour les applications exigeantes qui requièrent un traitement rapide des paquets, une faible latence et des performances constantes. DPDK contourne la pile réseau du noyau Linux et s'exécute directement dans l'espace utilisateur.

Les instances U4C sont compatibles avec DPDK à l'aide du pilote en mode interrogation (PMD) de la carte d'interface réseau virtuelle Google (gVNIC). Une fois DPDK installé, les fonctionnalités du pilote peuvent être configurées à l'aide des API ethdev et rte_flow standards.

L'utilisation de DPDK avec la solution ULL inclut la prise en charge du pilotage des flux. Vous pouvez contourner le hachage RSS (Receive Side Scaling) par défaut en dirigeant des flux de trafic spécifiques directement vers une file d'attente de réception (RX) désignée. La solution ULL est compatible avec le pilotage des flux à 3 tuples (protocole, adresse IP de destination et port de destination) pour le trafic ULL en monodiffusion et en multidiffusion.

De plus, le PMD gVNIC est compatible avec l'horodatage matériel RX dans les mbufs et les lectures d'horloge via rte_eth_read_clock.

Limites

L'utilisation de DPDK sur les instances U4C présente les limites suivantes :

  • La prise en charge des instances bare metal n'est pas disponible dans la version principale de DPDK ni dans le dépôt dpdk-next-net. Vous devez appliquer les correctifs requis en suivant les étapes décrites dans Installer DPDK sur votre instance U4C.
  • Lorsque vous configurez l'heure exacte pour une instance U4C qui utilise DPDK sur ses interfaces réseau ULL (nic1 et nic2), vous devez configurer chrony pour qu'il utilise nic0 comme source de synchronisation de l'heure.

Avant de commencer

Avant d'utiliser DPDK sur les instances Compute Engine U4C, vous devez répondre aux exigences suivantes.

Créer une instance U4C

Si ce n'est pas déjà fait, créez une instance bare metal U4C. Consultez Créer des instances Compute Engine ULL.

Se connecter à votre instance via SSH

Si ce n'est pas déjà fait, connectez-vous à votre instance via SSH.

Installer DPDK sur votre instance U4C

Pour installer DPDK sur votre instance U4C, procédez comme suit :

  1. Configurez les dépendances pour l'installation de DPDK :

    1. Si vous utilisez Rocky Linux, activez le dépôt CodeReady Builder (CRB). Si vous utilisez Red Hat Enterprise Linux (RHEL), ignorez cette étape.

      sudo dnf -y config-manager --enable crb
      
    2. Installez les packages et les outils de compilation requis :

      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. Téléchargez la source DPDK. Vous devez utiliser le dpdk-next-net dépôt ou la version 26.07 ou ultérieure de DPDK.

    • dpdk-next-net

      git clone git://dpdk.org/next/dpdk-next-net dpdk-source
      
    • DPDK 26.07 ou version ultérieure

      git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
      
  3. Appliquez les correctifs requis. La source de la prise en charge bare metal est hébergée dans la dpdk-bm branche du dépôt Google compute-virtual-ethernet-dpdk. Les correctifs sont compatibles avec l'ABI du dépôt dpdk-next-net.

    Vous pouvez appliquer les correctifs à l'aide d'une copie littérale ou d'une méthode de sélection. Effectuez l'une des opérations suivantes en fonction de votre workflow préféré :

    • Copie littérale

      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
    • Sélection

      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. Compilez et installez DPDK :

    meson setup build
    sudo ninja -C build install; sudo ldconfig
    

Lier DPDK à un pilote

Vous devez lier les interfaces réseau de votre instance à un pilote de noyau compatible avec DPDK, comme décrit dans Lier DPDK à un pilote et le tester.

Pour les instances bare metal U4C, tenez compte des points suivants :

  • Les instances bare metal ne nécessitent pas les pilotes UIO ou VFIO sans IOMMU utilisés par les instances de VM. Vous pouvez vous lier directement au pilote vfio-pci standard.
  • Vous ne pouvez lier les interfaces réseau ULL (nic1 et nic2) qu'au pilote DPDK. nic0 doit rester lié au pilote de noyau standard pour maintenir la connectivité réseau et prendre en charge la synchronisation de l'heure.

Pour en savoir plus, consultez Lier et dissocier des ports réseau aux/des modules de noyau dans la documentation DPDK.

Étape suivante

  • Pour synchroniser l'horloge de votre instance avec l'horloge de la carte d'interface réseau physique de son serveur hôte, consultez Configurer l'heure exacte.