Este documento explica como ativar o Data Plane Development Kit (DPDK) numa instância de máquina virtual (VM) para um processamento de pacotes de rede mais rápido.
O DPDK é uma framework para aplicações com utilização intensiva de desempenho que requerem um processamento rápido de pacotes, baixa latência e um desempenho consistente. O DPDK fornece um conjunto de bibliotecas do plano de dados e um controlador de interface de rede (NIC) que ignoram a rede do kernel e são executados diretamente no espaço do utilizador. Por exemplo, a ativação do DPDK na sua VM é útil quando executa o seguinte:
Implementações de virtualização de funções de rede (NFV)
Aplicações de rede definida por software (SDN)
Streaming de vídeo ou aplicações de voz sobre IP
Pode executar o DPDK numa VM que use um dos seguintes tipos de NIC virtual (vNIC):
Recomendado: gVNIC
Uma interface de rede virtual de elevado desempenho, segura e escalável concebida especificamente para o Compute Engine que sucede ao virtIO como a vNIC de próxima geração.
-
Um controlador Ethernet de código aberto que permite às VMs acederem de forma eficiente a hardware físico, como armazenamento de blocos e adaptadores de rede.
Um problema com a execução do DPDK num ambiente virtual, em vez de num hardware físico, é que os ambientes virtuais não suportam SR-IOV e a unidade de gestão de memória de E/S (IOMMU) para aplicações de alto desempenho. Para ultrapassar esta limitação, tem de executar o DPDK em endereços físicos de convidados em vez de endereços virtuais do anfitrião através de um dos seguintes controladores:
Antes de começar
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
- Set a default region and zone.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Para mais informações, consulte o artigo Autenticar para usar REST na Trusted Cloud documentação de autenticação.
Requisitos
Ao criar uma VM para executar o DPDK, certifique-se do seguinte:
Para evitar a falta de conetividade de rede quando executar as suas aplicações, use duas redes de nuvem privada virtual:
Uma rede da VPC para o plano de controlo
Uma rede de VPC para o plano de dados
As duas redes de VPC têm de especificar o seguinte:
Uma sub-rede com um intervalo de endereços IP exclusivo
A mesma região para as respetivas sub-redes
O mesmo tipo de VNIC, ou seja, gVNIC ou VirtIO-Net
Ao criar a VM:
Tem de especificar a mesma região que as sub-redes das duas redes de VPC.
Tem de especificar o tipo de vNIC que planeia usar com o DPDK.
Tem de especificar uma série de máquinas suportada para gVNIC ou VirtIO-Net.
Restrições
A execução do DPDK numa VM tem as seguintes restrições:
Só pode usar sub-redes de pilha única para as duas redes VPC usadas na VM.
Se estiver a usar o gVNIC como o tipo de vNIC para as duas redes VPC, certifique-se do seguinte:
Tem de usar a versão 22.11 ou posterior do DPDK.
Só pode usar imagens de disco suportadas.
Se quiser ativar o desempenho de rede de nível 1 por VM para um desempenho de rede mais elevado quando criar a VM, tem de especificar o seguinte:
gVNIC como o tipo de vNIC
Um tipo de máquina suportado com 30 vCPUs ou mais
Vista geral das funcionalidades e versões do DPDK
A Google recomenda a utilização da versão mais recente do controlador DPDK para beneficiar das funcionalidades mais recentes e das correções de erros. A lista seguinte oferece uma vista geral do que está disponível com cada versão do controlador DPDK:
- 24,07
- Modifique o suporte do tamanho do anel (para todos os tipos de máquinas suportados).
- Apoio técnico de processos secundários.
- 24.03
- Suporte de RSS (para todos os tipos de máquinas suportados).
- 23.11
- Suporte do tamanho da memória intermédia de RX (para todos os tipos de máquinas suportados).
- Suporte de frames jumbo (9K) para tipos de máquinas de terceira geração e posteriores.
- 23.07
- Foi adicionado suporte para tipos de máquinas de terceira geração e posteriores.
- Suporte de frames jumbo (9K) para tipos de máquinas de primeira e segunda geração.
- 23.03
Suporte para estatísticas de relatórios:
- Estatísticas de software para todos os tipos de máquinas suportados.
- Estatísticas de hardware para tipos de máquinas de primeira e segunda geração.
- 22.11
- Lançamento inicial do controlador com suporte para tipos de máquinas de primeira e segunda geração.
Configure uma VM para executar o DPDK
Esta secção explica como criar uma VM para executar o DPDK.
Crie as redes VPC
Crie duas redes VPC para o plano de dados e o plano de controlo, usando a Trusted Cloud consola, a CLI do Google Cloud ou a API Compute Engine. Pode especificar estas redes mais tarde quando criar a VM.
Consola
Crie uma rede de VPC para o plano de dados:
Na Trusted Cloud consola, aceda a Redes de VPC.
É apresentada a página Redes VPC.
Clique em
Criar rede de VPC.É apresentada a página Criar uma rede de VPC.
No campo Nome, introduza um nome para a sua rede.
Na secção Nova sub-rede, faça o seguinte:
No campo Nome, introduza um nome para a sub-rede.
No menu Região, selecione uma região para a sua sub-rede.
Selecione IPv4 (single-stack) (predefinição).
No intervalo IPv4, introduza um endereço de intervalo IPv4 válido na notação CIDR.
Clique em Concluído.
Clique em Criar.
É apresentada a página Redes VPC. A criação da rede VPC pode demorar até um minuto.
Crie uma rede VPC para o plano de controlo com uma regra de firewall para permitir ligações SSH à VM:
Clique novamente em
Criar rede de VPC.É apresentada a página Criar uma rede de VPC.
No campo Nome, introduza um nome para a sua rede.
Na secção Nova sub-rede, faça o seguinte:
No campo Nome, introduza um nome para a sub-rede.
No menu Região, selecione a mesma região que especificou para a sub-rede da rede do plano de dados.
Selecione IPv4 (single-stack) (predefinição).
No intervalo IPv4, introduza um endereço de intervalo IPv4 válido na notação CIDR.
Clique em Concluído.
No separador Regras de firewall IPv4, selecione a caixa de verificação NETWORK_NAME-allow-ssh.
Onde NETWORK_NAME é o nome da rede que especificou nos passos anteriores.
Clique em Criar.
É apresentada a página Redes VPC. A criação da rede VPC pode demorar até um minuto.
gcloud
Para criar uma rede VPC para o plano de dados, siga estes passos:
Crie uma rede VPC com uma sub-rede criada manualmente usando o comando
gcloud compute networks create
com a flag--subnet-mode
definida comocustom
.gcloud compute networks create DATA_PLANE_NETWORK_NAME \ --bgp-routing-mode=regional \ --mtu=MTU \ --subnet-mode=custom
Substitua o seguinte:
DATA_PLANE_NETWORK_NAME
: o nome da rede VPC para o plano de dados.MTU
: a unidade de transmissão máxima (MTU), que é o tamanho máximo do pacote da rede. O valor tem de estar entre1300
e8896
. O valor predefinido é1460
. Antes de definir a MTU para um valor superior a1460
, consulte o artigo Unidade de transmissão máxima.
Crie uma sub-rede para a rede do plano de dados da VPC que acabou de criar com o comando
gcloud compute networks subnets create
.gcloud compute networks subnets create DATA_PLANE_SUBNET_NAME \ --network=DATA_PLANE_NETWORK_NAME \ --range=DATA_PRIMARY_RANGE \ --region=REGION
Substitua o seguinte:
DATA_PLANE_SUBNET_NAME
: o nome da sub-rede para a rede do plano de dados.DATA_PLANE_NETWORK_NAME
: o nome da rede do plano de dados que especificou nos passos anteriores.DATA_PRIMARY_RANGE
: um intervalo IPv4 válido para a sub-rede na notação CIDR.REGION
: a região onde criar a sub-rede.
Para criar uma rede VPC para o plano de controlo com uma regra de firewall para permitir ligações SSH à VM, siga estes passos:
Crie uma rede VPC com uma sub-rede criada manualmente usando o comando
gcloud compute networks create
com a flag--subnet-mode
definida comocustom
.gcloud compute networks create CONTROL_PLANE_NETWORK_NAME \ --bgp-routing-mode=regional \ --mtu=MTU \ --subnet-mode=custom
Substitua o seguinte:
CONTROL_PLANE_NETWORK_NAME
: o nome da rede VPC para o plano de controlo.MTU
: o MTU, que é o tamanho do pacote mais grande da rede. O valor tem de estar entre1300
e8896
. O valor predefinido é1460
. Antes de definir a MTU para um valor superior a1460
, consulte o artigo Unidade de transmissão máxima.
Crie uma sub-rede para a rede do plano de controlo da VPC que acabou de criar com o comando
gcloud compute networks subnets create
.gcloud compute networks subnets create CONTROL_PLANE_SUBNET_NAME \ --network=CONTROL_PLANE_NETWORK_NAME \ --range=CONTROL_PRIMARY_RANGE \ --region=REGION
Substitua o seguinte:
CONTROL_PLANE_SUBNET_NAME
: o nome da sub-rede para a rede do plano de controlo.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controlo que especificou nos passos anteriores.CONTROL_PRIMARY_RANGE
: um intervalo IPv4 válido para a sub-rede na notação CIDR.REGION
: a região onde criar a sub-rede, que tem de corresponder à região especificada na sub-rede da rede do plano de dados.
Crie uma regra de firewall da VPC que permita ligações SSH à rede do plano de controlo através do comando
gcloud compute firewall-rules create
com a flag--allow
definida comotcp:22
.gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --action=allow \ --network=CONTROL_PLANE_NETWORK_NAME \ --rules=tcp:22
Substitua o seguinte:
FIREWALL_RULE_NAME
: o nome da regra da firewall.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controlo que criou nos passos anteriores.
API
Para criar uma rede VPC para o plano de dados, siga estes passos:
Crie uma rede VPC com uma sub-rede criada manualmente enviando um pedido
POST
para o métodonetworks.insert
com o campoautoCreateSubnetworks
definido comofalse
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "DATA_PLANE_NETWORK_NAME", "mtu": MTU }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto atual.DATA_PLANE_NETWORK_NAME
: o nome da rede para o plano de dados.MTU
: a unidade de transmissão máxima (MTU), que é o tamanho máximo do pacote da rede. O valor tem de estar entre1300
e8896
. O valor predefinido é1460
. Antes de definir a MTU para um valor superior a1460
, consulte o artigo Unidade de transmissão máxima.
Crie uma sub-rede para a rede do plano de dados da VPC fazendo um pedido
POST
ao métodosubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "DATA_PRIMARY_RANGE", "name": "DATA_PLANE_SUBNET_NAME", "network": "projects/PROJECT_ID/global/networks/DATA_PLANE_NETWORK_NAME" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto onde a rede do plano de dados está localizada.REGION
: a região onde quer criar a sub-rede.DATA_PRIMARY_RANGE
: o intervalo IPv4 principal para a nova sub-rede na notação CIDR.DATA_PLANE_SUBNET_NAME
: o nome da sub-rede para a rede do plano de dados que criou no passo anterior.DATA_PLANE_NETWORK_NAME
: o nome da rede do plano de dados que criou no passo anterior.
Para criar uma rede VPC para o plano de controlo com uma regra de firewall para permitir ligações SSH à VM, siga estes passos:
Crie uma rede VPC com uma sub-rede criada manualmente enviando um pedido
POST
para o métodonetworks.insert
com o campoautoCreateSubnetworks
definido comofalse
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "CONTROL_PLANE_NETWORK_NAME", "mtu": MTU }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto atual.CONTROL_PLANE_NETWORK_NAME
: o nome da rede para o plano de controlo.MTU
: o MTU, que é o tamanho do pacote mais grande da rede. O valor tem de estar entre1300
e8896
. O valor predefinido é1460
. Antes de definir a MTU para um valor superior a1460
, consulte o artigo Unidade de transmissão máxima.
Crie uma sub-rede para a rede de controlo de dados da VPC fazendo um pedido
POST
ao métodosubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "CONTROL_PRIMARY_RANGE", "name": "CONTROL_PLANE_SUBNET_NAME", "network": "projects/PROJECT_ID/global/networks/CONTROL_PLANE_NETWORK_NAME" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto onde se encontra a rede do plano de controlo.REGION
: a região onde quer criar a sub-rede.CONTROL_PRIMARY_RANGE
: o intervalo IPv4 principal para a nova sub-rede na notação CIDR.CONTROL_PLANE_SUBNET_NAME
: o nome da sub-rede para a rede do plano de controlo que criou no passo anterior.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controlo que criou no passo anterior.
Crie uma regra de firewall da VPC que permita ligações SSH à rede do plano de controlo fazendo um pedido
POST
ao métodofirewalls.insert
. Na solicitação, defina o campoIPProtocol
comotcp
e o campoports
como22
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "network": "projects/PROJECT_ID/global/networks/CONTROL_PLANE_NETWORK_NAME" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto onde se encontra a rede do plano de controlo.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controlo que criou nos passos anteriores.
Para mais opções de configuração ao criar uma rede VPC, consulte o artigo Crie e faça a gestão de redes VPC.
Crie uma VM que use as redes VPC para DPDK
Crie uma VM que ative a gVNIC ou a virtIO-Net nas duas redes VPC que criou anteriormente através da Trusted Cloud consola, da CLI gcloud e da API Compute Engine.
Recomendado: especifique o Ubuntu LTS ou o Ubuntu Pro como a imagem do sistema operativo devido ao respetivo suporte do gestor de pacotes para os controladores UIO e VFIO sem IOMMU. Se não quiser especificar nenhum destes sistemas operativos, recomendamos que especifique Debian 11 ou posterior para um processamento de pacotes mais rápido.
Consola
Crie uma VM que use as duas sub-redes da rede de VPC que criou nos passos anteriores fazendo o seguinte:
Na Trusted Cloud consola, aceda a Instâncias de VM.
É aberta a página Instâncias de VM.
Clique em
Criar instância.É apresentada a página Criar uma instância.
No campo Nome, introduza um nome para a MV.
No menu Região, selecione a mesma região onde criou as suas redes nos passos anteriores.
No menu Zona, selecione uma zona para a sua VM.
Na secção Configuração da máquina, faça o seguinte:
Selecione uma das seguintes opções:
Para cargas de trabalho comuns, selecione o separador Utilização geral (predefinição).
Para cargas de trabalho com utilização intensiva do desempenho, selecione o separador Otimizado para computação.
Para cargas de trabalho com rácios de memória para vCPUs elevados, selecione o separador Otimizado para memória.
Para cargas de trabalho que usam unidades de processamento de gráficos (GPUs), selecione o separador GPUs.
Opcional. Se especificou GPUs no passo anterior e quiser alterar a GPU a associar à VM, faça uma ou mais das seguintes ações:
No menu Tipo de GPU, selecione um tipo de GPU.
No menu Número de GPUs, selecione o número de GPUs.
No menu Série, selecione uma série de máquinas.
No menu Tipo de máquina, selecione um tipo de máquina.
Opcional: expanda Configurações avançadas e siga as instruções para personalizar ainda mais a máquina para esta VM.
Opcional: na secção Disco de arranque, clique em Alterar e, de seguida, siga as instruções para alterar a imagem do disco.
Expanda a secção Opções avançadas.
Expanda a secção Rede.
Na secção Configuração do desempenho da rede, faça o seguinte:
No menu Placa de interface de rede, selecione uma das seguintes opções:
Para usar o gVNIC, selecione gVNIC.
Para usar o VirtIO-Net, selecione VirtIO.
Opcional: para um desempenho de rede mais elevado e uma latência reduzida, selecione a caixa de verificação Ativar redes de nível 1.
Na secção Interfaces de rede, faça o seguinte:
Na linha predefinição, clique em
Eliminar item "predefinição".Clique em Adicionar interface de rede.
É apresentada a secção Nova interface de rede.
No menu Rede, selecione a rede do plano de controlo que criou nos passos anteriores.
Clique em Concluído.
Clique novamente em Adicionar interface de rede.
É apresentada a secção Nova interface de rede.
No menu Rede, selecione a rede do plano de dados que criou nos passos anteriores.
Clique em Concluído.
Clique em Criar.
É aberta a página Instâncias de VM. A criação da VM pode demorar até um minuto.
gcloud
Crie uma VM que use as duas sub-redes da rede VPC que criou nos passos anteriores usando o comando
gcloud compute instances create
com as seguintes flags:gcloud compute instances create VM_NAME \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --machine-type=MACHINE_TYPE \ --network-interface=network=CONTROL_PLANE_NETWORK_NAME,subnet=CONTROL_PLANE_SUBNET_NAME,nic-type=VNIC_TYPE \ --network-interface=network=DATA_PLANE_NETWORK_NAME,subnet=DATA_PLANE_SUBNET_NAME,nic-type=VNIC_TYPE \ --zone=ZONE
Substitua o seguinte:
VM_NAME
: o nome da VM.IMAGE_FAMILY
: a família de imagens do sistema operativo com que o disco de arranque vai ser inicializado. Em alternativa, pode especificar a flag--image=IMAGE
e substituirIMAGE
por uma versão específica de uma imagem. Saiba como ver uma lista de imagens disponíveis no projeto de imagens do Compute Engine.IMAGE_PROJECT
: o nome do projeto de imagem que contém a imagem do disco.MACHINE_TYPE
: um tipo de máquina, predefinido ou personalizado, para a VM.VNIC_TYPE
: o tipo de vNIC a usar para as redes do plano de controlo e do plano de dados. O valor tem de ser um dos seguintes:Para usar o gVNIC, especifique
GVNIC
.Para usar o VirtIO-Net, especifique
VIRTIO_NET
.
CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controlo que criou nos passos anteriores.CONTROL_PLANE_SUBNET_NAME
: o nome da sub-rede para a rede do plano de controlo que criou nos passos anteriores.DATA_PLANE_NETWORK_NAME
: o nome da rede do plano de dados que criou nos passos anteriores.DATA_PLANE_SUBNET_NAME
: o nome da sub-rede para a rede do plano de controlo que criou automaticamente nos passos anteriores.ZONE
: a zona onde criar a VM. Especifique uma zona na mesma região da sub-rede que criou nos passos anteriores.
Por exemplo, para criar uma VM denominada
dpdk-vm
na zonaus-central1-a
que especifica um disco persistente SSD de 512 GB, um tipo de máquina C2 predefinido com 60 vCPUs, redes de nível 1 e uma rede de plano de dados e uma rede de plano de controlo que usam gVNIC, execute o seguinte comando:gcloud compute instances create dpdk-vm \ --boot-disk-size=512GB \ --boot-disk-type=pd-ssd \ --image-project=ubuntu-os-cloud \ --image-family=ubuntu-2004-lts \ --machine-type=c2-standard-60 \ --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \ --network-interface=network=control,subnet=control,nic-type=GVNIC \ --network-interface=network=data,subnet=data,nic-type=GVNIC \ --zone=us-central1-a
API
Crie uma VM que use as duas sub-redes da rede VPC que criou nos passos anteriores fazendo um pedido
POST
ao métodoinstances.insert
com os seguintes campos:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "MACHINE_TYPE", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE_FAMILY" } } ], "networkInterfaces": [ { "network": "global/networks/CONTROL_PLANE_NETWORK_NAME", "subnetwork": "regions/REGION/subnetworks/CONTROL_PLANE_SUBNET_NAME", "nicType": "VNIC_TYPE" }, { "network": "global/networks/DATAPLANE_NETWORK_NAME", "subnetwork": "regions/REGION/subnetworks/DATA_PLANE_SUBNET_NAME", "nicType": "VNIC_TYPE" } ] }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto onde se encontram a rede VPC do plano de controlo e a rede VPC do plano de dados.ZONE
: a zona onde criar a VM.VM_NAME
: o nome da VM.MACHINE_TYPE
: um tipo de máquina, predefinido ou personalizado, para a VM.IMAGE_PROJECT
: o nome do projeto de imagem que contém a imagem do disco.IMAGE_FAMILY
: a família de imagens do sistema operativo com que o disco de arranque vai ser inicializado. Em alternativa, pode especificar uma versão específica de uma imagem. Saiba como ver uma lista de imagens no projeto de imagens do Compute Engine.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controlo que criou nos passos anteriores.REGION
: a região onde existem as sub-redes das redes do plano de controlo e do plano de dados.CONTROL_PLANE_SUBNET_NAME
: o nome da sub-rede para a rede do plano de controlo que criou nos passos anteriores.VNIC_TYPE
: o tipo de vNIC a usar para as redes do plano de controlo e do plano de dados. O valor tem de ser um dos seguintes:Para usar o gVNIC, especifique
GVNIC
.Para usar o VirtIO-Net, especifique
VIRTIO_NET
.
DATA_PLANE_NETWORK_NAME
: o nome da rede do plano de dados que criou nos passos anteriores.DATA_PLANE_SUBNET_NAME
: o nome da sub-rede para a rede do plano de controlo que criou nos passos anteriores.
Por exemplo, para criar uma VM denominada
dpdk-vm
na zonaus-central1-a
que especifica um disco persistente SSD de 512 GB, um tipo de máquina C2 predefinido com 60 vCPUs, rede de nível 1 e uma rede de plano de dados e de plano de controlo que usam gVNIC, faça o seguinte pedidoPOST
:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances { "name": "dpdk-vm", "machineType": "c2-standard-60", "disks": [ { "initializeParams": { "diskSizeGb": "512GB", "diskType": "pd-ssd", "sourceImage": "projects/ubuntu-os-cloud/global/images/ubuntu-2004-lts" }, "boot": true } ], "networkInterfaces": [ { "network": "global/networks/control", "subnetwork": "regions/us-central1/subnetworks/control", "nicType": "GVNIC" }, { "network": "global/networks/data", "subnetwork": "regions/us-central1/subnetworks/data", "nicType": "GVNIC" } ], "networkPerformanceConfig": { "totalEgressBandwidthTier": "TIER_1" } }
Para mais opções de configuração ao criar uma VM, consulte o artigo Crie e inicie uma instância de VM.
Instale o DPDK na sua VM
Para instalar o DPDK na sua VM, siga estes passos:
Estabeleça ligação à VM que criou na secção anterior através do SSH.
Configure as dependências para a instalação do DPDK:
sudo apt-get update && sudo apt-get upgrade -yq sudo apt-get install -yq build-essential ninja-build python3-pip \ linux-headers-$(uname -r) pkg-config libnuma-dev sudo pip install pyelftools meson
Instale o DPDK:
wget https://fast.dpdk.org/rel/dpdk-23.07.tar.xz tar xvf dpdk-23.07.tar.xz cd dpdk-23.07
Para criar o DPDK com os exemplos:
meson setup -Dexamples=all build sudo ninja -C build install; sudo ldconfig
Instale o controlador
Para preparar o DPDK para ser executado num controlador, instale o controlador selecionando um dos seguintes métodos:
Instale um VFIO sem IOMMU
Para instalar o controlador VFIO sem IOMMU, siga estes passos:
Verifique se o VFIO está ativado:
cat /boot/config-$(uname -r) | grep NOIOMMU
Se o VFIO não estiver ativado, siga os passos em Instale o UIO.
Ative o No-IOMMU mode no VFIO:
sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'
Instale o UIO
Para instalar o controlador UIO no DPDK, selecione um dos seguintes métodos:
Instale o UIO através do git
Para instalar o controlador UIO no DPDK através do
git
, siga estes passos:Clone o
igb_uio
repositório Git para um disco na sua VM:git clone https://dpdk.org/git/dpdk-kmods
A partir do diretório principal do repositório git clonado, crie o módulo e instale o controlador UIO no DPDK:
pushd dpdk-kmods/linux/igb_uio sudo make sudo depmod && sudo insmod igb_uio.ko popd
Instale o UIO através de pacotes Linux
Para instalar o controlador UIO no DPDK através de pacotes Linux, siga estes passos:
Instale o pacote
dpdk-igb-uio-dkms
:sudo apt-get install -y dpdk-igb-uio-dkms
Instale o controlador UIO no DPDK:
sudo modprobe igb_uio
Associe o DPDK a um controlador e teste-o
Para associar o DPDK ao controlador que instalou na secção anterior, siga estes passos:
Obtenha o número do espaço Peripheral Component Interconnect (PCI) para a interface de rede atual:
sudo lspci | grep -e "gVNIC" -e "Virtio network device"
Por exemplo, se a VM estiver a usar
ens4
como interface de rede, o número do slot PCI é00:04.0
.Pare a interface de rede ligada ao adaptador de rede:
sudo ip link set NETWORK_INTERFACE_NAME down
Substitua
NETWORK_INTERFACE_NAME
pelo nome da interface de rede especificada nas redes VPC. Para ver que interface de rede a VM está a usar, veja a configuração da interface de rede:sudo ifconfig
Vincule o DPDK ao controlador:
sudo dpdk-devbind.py --bind=DRIVER PCI_SLOT_NUMBER
Substitua o seguinte:
DRIVER
: o controlador no qual o DPDK deve ser associado. Especifique um dos seguintes valores:UIO driver:
igb_uio
Controlador VFIO sem IOMMU:
vfio-pci
PCI_SLOT_NUMBER
: o número do slot PCI da interface de rede atual formatado como00:0NUMBER.0
.
Crie o diretório
/mnt/huge
e, em seguida, crie algumas páginas grandes para o DPDK usar para buffers:sudo mkdir /mnt/huge sudo mount -t hugetlbfs -o pagesize=1G none /mnt/huge sudo bash -c 'echo 4 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages' sudo bash -c 'echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages'
Teste se o DPDK consegue usar a interface de rede que criou nos passos anteriores executando a aplicação de exemplo
testpmd
incluída nas bibliotecas do DPDK:sudo ./build/app/dpdk-testpmd
Para mais informações sobre os testes do DPDK, consulte as opções da linha de comandos do Testpmd.
Desvincule o DPDK
Depois de usar o DPDK, pode desassociá-lo do controlador que instalou na secção anterior. Para desassociar o DPDK, siga estes passos:
Desvincule o DPDK do controlador:
sudo dpdk-devbind.py -u PCI_SLOT_NUMBER
Substitua
PCI_SLOT_NUMBER
pelo número da ranhura PCI que especificou nos passos anteriores. Se quiser validar o número da ranhura PCI para a interface de rede atual:sudo lspci | grep -e "gVNIC" -e "Virtio network device"
Por exemplo, se a VM estiver a usar
ens4
como interface de rede, o número do slot PCI é00:04.0
.Atualize o controlador de rede do Compute Engine:
sudo bash -c 'echo PCI_SLOT_NUMBER > /sys/bus/pci/drivers/VNIC_DIRECTORY/bind' sudo ip link set NETWORK_INTERFACE_NAME up
Substitua o seguinte:
PCI_SLOT_NUMBER
: o número do slot PCI especificado nos passos anteriores.VNIC_DIRECTORY
: o diretório da vNIC. Consoante o tipo de vNIC que estiver a usar, especifique um dos seguintes valores:gVNIC:
gvnic
VirtIO-Net:
virtio-pci
NETWORK_INTERFACE_NAME
: o nome da interface de rede que especificou na secção anterior.
O que se segue?
Reveja as taxas de largura de banda da rede para o seu tipo de máquina.
Saiba mais sobre como criar e gerir redes VPC.
Saiba mais sobre as definições de MTU mais elevadas com frames jumbo.
Saiba mais acerca da otimização de TCP para o desempenho da rede.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-30 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-30 UTC."],[],[],null,[]] -