Utilizzare DPDK

Questa pagina descrive come utilizzare il Data Plane Development Kit (DPDK) sulle istanze Compute Engine U4C.

Informazioni su DPDK sulle istanze U4C

Il Data Plane Development Kit (DPDK) è un framework per applicazioni con esigenze di prestazioni elevate che richiedono un'elaborazione rapida dei pacchetti, bassa latenza e prestazioni costanti. DPDK ignora lo stack di rete del kernel Linux e viene eseguito direttamente nello spazio utente.

Le istanze U4C supportano DPDK utilizzando il driver PMD (Poll Mode Driver) di Google Virtual NIC (gVNIC). Una volta installato DPDK, le funzionalità del driver possono essere configurate utilizzando le API standard ethdev e rte_flow.

L'utilizzo di DPDK con la soluzione ULL include il supporto per lo steering del flusso. Puoi ignorare l'hashing RSS (Receive Side Scaling) predefinito indirizzando flussi di traffico specifici direttamente a una coda di ricezione (RX) designata. La soluzione ULL supporta lo steering del flusso a 3 tuple (protocollo, indirizzo IP di destinazione e porta di destinazione) per il traffico unicast e multicast ULL.

Inoltre, il driver PMD gVNIC supporta l'aggiunta di timestamp RX hardware in mbuf e le letture dell'orologio tramite rte_eth_read_clock.

Limitazioni

L'utilizzo di DPDK sulle istanze U4C presenta le seguenti limitazioni:

  • Il supporto per le istanze bare metal non è disponibile nella release principale di DPDK o nel repository dpdk-next-net. Devi applicare le patch richieste seguendo i passaggi descritti in Installare DPDK sull'istanza U4C.
  • Quando configuri l'ora precisa per un'istanza U4C che utilizza DPDK sulle interfacce di rete ULL (nic1 e nic2), devi configurare chrony in modo che utilizzi nic0 come origine per la sincronizzazione dell'ora.

Prima di iniziare

Prima di utilizzare DPDK sulle istanze Compute Engine U4C, devi soddisfare i seguenti requisiti.

Creare un'istanza U4C

Se non l'hai già fatto, crea un'istanza bare metal U4C. Consulta Creare ULL istanze Compute Engine.

Connettersi all'istanza utilizzando SSH

Se non l'hai già fatto, connettiti all' istanza utilizzando SSH.

Installare DPDK sull'istanza U4C

Per installare DPDK sull'istanza U4C, segui questi passaggi:

  1. Configura le dipendenze per l'installazione di DPDK:

    1. Se utilizzi Rocky Linux, attiva il repository CodeReady Builder (CRB). Se utilizzi Red Hat Enterprise Linux (RHEL), salta questo passaggio.

      sudo dnf -y config-manager --enable crb
      
    2. Installa i pacchetti e gli strumenti di creazione richiesti:

      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. Scarica l'origine DPDK. Devi utilizzare il dpdk-next-net repository o la versione di release DPDK 26.07 o successive.

    • dpdk-next-net

      git clone git://dpdk.org/next/dpdk-next-net dpdk-source
      
    • DPDK 26.07 o versioni successive

      git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
      
  3. Applica le patch richieste. L'origine per il supporto bare metal è ospitata in the dpdk-bm branch of the Google compute-virtual-ethernet-dpdk repository. Le patch sono compatibili con l'ABI del repository dpdk-next-net.

    Puoi applicare le patch utilizzando una copia letterale o un metodo di cherry-pick. Esegui una delle seguenti operazioni a seconda del flusso di lavoro che preferisci:

    • Copia letterale

      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. Crea e installa DPDK:

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

Associare DPDK a un driver

Devi associare le interfacce di rete dell'istanza a un driver del kernel compatibile con DPDK , come descritto in Associare DPDK a un driver e testarlo.

Per le istanze bare metal U4C, tieni presente quanto segue:

  • Le istanze bare metal non richiedono i driver UIO o VFIO senza IOMMU utilizzati dalle istanze VM. Puoi eseguire l'associazione direttamente al driver vfio-pci standard.
  • Puoi associare solo le interfacce di rete ULL (nic1 e nic2) al driver DPDK. nic0 deve rimanere associato al driver del kernel standard per mantenere la connettività di rete e supportare la sincronizzazione dell'ora.

Per saperne di più, consulta la sezione Binding and Unbinding Network Ports to/from the Kernel Modules nella documentazione di DPDK.

Passaggi successivi

  • Per sincronizzare l'orologio dell'istanza con l'orologio della NIC fisica del server host, consulta Configurare l'ora precisa.