Trabalhar com o DPDK
Esta página descreve como usar o Kit de desenvolvimento do plano de dados (DPDK, na sigla em inglês) em instâncias do Compute Engine U4C.
Sobre o DPDK em instâncias U4C
O Kit de desenvolvimento do plano de dados (DPDK) é um framework para aplicativos com alto desempenho que exigem processamento de pacotes rápido, baixa latência e desempenho consistente. O DPDK ignora a pilha de rede do kernel do Linux e é executado diretamente no espaço do usuário.
As instâncias U4C oferecem suporte ao DPDK usando o
driver de modo de pesquisa (PMD) da NIC virtual do Google (gVNIC).
Depois de instalar o DPDK, os recursos do driver podem ser configurados usando as APIs ethdev e rte_flow padrão.
O uso do DPDK com a solução ULL inclui suporte para o direcionamento de fluxo. É possível ignorar o hash de escalonamento do lado de recebimento (RSS, na sigla em inglês) padrão direcionando fluxos de tráfego específicos diretamente para uma fila de recebimento (RX) designada. A solução ULL oferece suporte ao direcionamento de fluxo de tupla tripla (protocolo, endereço IP de destino e porta de destino) para tráfego de transmissão única e multicast ULL.
Além disso, o PMD gVNIC oferece suporte à marcação de data/hora de RX de hardware em mbufs e leituras de relógio por meio de rte_eth_read_clock.
Limitações
O uso do DPDK em instâncias U4C tem as seguintes limitações:
- O suporte para instâncias bare metal não está disponível na versão principal do DPDK ou no repositório
dpdk-next-net. É necessário aplicar os patches necessários seguindo as etapas em Instalar o DPDK na instância U4C. - Ao configurar a hora exata para uma instância U4C
que usa o DPDK nas interfaces de rede ULL (
nic1enic2), é necessário configurar ochronypara usarnic0como origem para a sincronização de horário.
Antes de começar
Antes de trabalhar com o DPDK em instâncias do Compute Engine U4C, é necessário atender aos seguintes requisitos.
Criar uma instância U4C
Se ainda não tiver feito isso, crie uma instância bare metal U4C. Consulte Criar ULL instâncias do Compute Engine.
Conectar-se à instância usando SSH
Se ainda não tiver feito isso, conecte-se à instância usando SSH.
Instalar o DPDK na instância U4C
Para instalar o DPDK na sua instância U4C, siga estas etapas:
Configure as dependências para a instalação do DPDK:
Se você estiver usando o Rocky Linux, ative o repositório do CodeReady Builder (CRB). Se você estiver usando o Red Hat Enterprise Linux (RHEL), pule esta etapa.
sudo dnf -y config-manager --enable crbInstale os pacotes necessários e as ferramentas de build:
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
Faça o download da origem do DPDK. É necessário usar o
dpdk-next-netrepositório ou a versão 26.07 ou mais recente do DPDK.dpdk-next-netgit clone git://dpdk.org/next/dpdk-next-net dpdk-sourceDPDK 26.07 ou mais recente
git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
Aplique os patches necessários. A origem do suporte bare metal está hospedada em na ramificação
dpdk-bmdo repositóriocompute-virtual-ethernet-dpdkdo Google. Os patches são compatíveis com ABI com o repositóriodpdk-next-net.É possível aplicar os patches usando uma cópia literal ou um método de cherry-pick. Faça uma das seguintes ações, dependendo do fluxo de trabalho preferido:
Cópia literal
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
Crie e instale o DPDK:
meson setup build sudo ninja -C build install; sudo ldconfig
Vincular o DPDK a um driver
É necessário vincular as interfaces de rede da instância a um driver de kernel compatível com DPDK , conforme descrito em Vincular o DPDK a um driver e testá-lo.
Para instâncias bare metal U4C, considere o seguinte:
- As instâncias bare metal não exigem os drivers UIO ou VFIO sem IOMMU usados por instâncias de VM. É possível vincular diretamente ao driver
vfio-pcipadrão. - Só é possível vincular as interfaces de rede ULL (
nic1enic2) ao driver DPDK.nic0precisa permanecer vinculado ao driver de kernel padrão para manter a conectividade de rede e oferecer suporte à sincronização de horário.
Para mais informações, consulte Binding and Unbinding Network Ports to/from the módulos do kernel na documentação do DPDK.
A seguir
- Para sincronizar o relógio da instância com o relógio da NIC física do servidor host, consulte Configurar a hora exata.