Este documento explica como habilitar o Data Plane Development Kit (DPDK) em uma instância de máquina virtual (VM) para um processamento mais rápido de pacotes de rede.
DPDK é uma estrutura para aplicativos de alto desempenho que exigem processamento rápido de pacotes, baixa latência e desempenho consistente. O DPDK fornece um conjunto de bibliotecas de plano de dados e um controlador de interface de rede (NIC) que ignora a rede do kernel e é executado diretamente no espaço do usuário. Por exemplo, ativar o DPDK na sua VM é útil ao executar o seguinte:
Implantações de virtualização de funções de rede (NFV)
Aplicativos de rede definida por software (SDN)
Aplicativos de streaming de vídeo ou voz sobre IP
Você pode executar o DPDK em uma VM usando um dos seguintes tipos de NIC virtual (vNIC):
Recomendado: gVNIC
Uma interface de rede virtual de alto desempenho, segura e escalonável projetada especificamente para o Compute Engine que sucede ao virtIO como o vNIC de próxima geração.
Um driver Ethernet de código aberto que permite que as VMs acessem com eficiência hardwares físicos, como armazenamento em bloco e adaptadores de rede.
Um problema com a execução do DPDK em um ambiente virtual, em vez de em hardware físico, é que os ambientes virtuais não têm suporte para SR-IOV e I/O Memory Management Unit (IOMMU) para aplicativos de alto desempenho. Para superar essa limitação, você deve executar o DPDK em endereços físicos convidados em vez de hospedar endereços virtuais usando um dos seguintes drivers:
Antes de começar
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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 Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
Para evitar a falta de conectividade de rede ao executar suas aplicações, use duas redes Virtual Private Cloud:
Uma rede VPC para o plano de controle
Uma rede VPC para o plano de dados
As duas redes VPC devem especificar o seguinte:
Uma sub-rede com um intervalo de endereços IP exclusivo
A mesma região para suas sub-redes
O mesmo tipo de VNIC — gVNIC ou VirtIO-Net
Ao criar a VM:
Você deve especificar a mesma região das sub-redes das duas redes VPC.
Você deve especificar o tipo de vNIC que planeja usar com o DPDK.
Você deve especificar uma série de máquinas suportada para gVNIC ou VirtIO-Net.
Você só pode usar sub-redes de pilha única para as duas redes VPC usadas na VM.
Se você estiver usando gVNIC como tipo de vNIC para as duas redes VPC, certifique-se do seguinte:
Você deve usar o DPDK versão 22.11 ou posterior.
Você só pode usar imagens de disco suportadas .
Se quiser ativar o desempenho de rede por VM Tier_1 para obter um desempenho de rede mais alto ao criar a VM, você deverá especificar o seguinte:
gVNIC como o tipo vNIC
Um tipo de máquina compatível com 30 vCPUs ou mais
Crie uma rede VPC para o plano de dados:
No console do Google Cloud, acesse Redes VPC .
A página de redes VPC é aberta.
Clique em
Criar rede VPC .A página Criar uma rede VPC é aberta.
No campo Nome , insira um nome para sua rede.
Na seção Nova sub-rede , faça o seguinte:
No campo Nome , insira um nome para sua sub-rede.
No menu Região , selecione uma região para sua sub-rede.
Selecione IPv4 (pilha única) (padrão).
No intervalo IPv4 , insira um endereço de intervalo IPv4 válido em notação CIDR.
Clique em Concluído .
Clique em Criar .
A página de redes VPC é aberta. Pode levar até um minuto para que a criação da rede VPC seja concluída.
Crie uma rede VPC para o plano de controle com uma regra de firewall para permitir conexões SSH na VM:
Clique em
Criar rede VPC novamente.A página Criar uma rede VPC é aberta.
No campo Nome , insira um nome para sua rede.
Na seção Nova sub-rede , faça o seguinte:
No campo Nome , insira um nome para a sub-rede.
No menu Região , selecione a mesma região especificada para a sub-rede da rede do plano de dados.
Selecione IPv4 (pilha única) (padrão).
No intervalo IPv4 , insira um endereço de intervalo IPv4 válido em notação CIDR.
Clique em Concluído .
Na guia regras de firewall IPv4 , marque a caixa de seleção NETWORK_NAME -allow-ssh .
Onde NETWORK_NAME é o nome da rede que você especificou nas etapas anteriores.
Clique em Criar .
A página de redes VPC é aberta. Pode levar até um minuto para que a criação da rede VPC seja concluída.
Para criar uma rede VPC para o plano de dados, siga estas etapas:
Crie uma rede VPC com uma sub-rede criada manualmente usando o comando
gcloud compute networks create
com a sinalização--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 do plano de dados.MTU
: a unidade máxima de transmissão (MTU), que é o maior tamanho de pacote da rede. O valor deve estar entre1300
e8896
. O valor padrão é1460
. Antes de definir o MTU para um valor superior a1460
, consulte Unidade máxima de transmissão .
Crie uma sub-rede para a rede de plano de dados VPC que você acabou de criar usando 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 da rede do plano de dados.DATA_PLANE_NETWORK_NAME
: o nome da rede do plano de dados que você especificou nas etapas anteriores.DATA_PRIMARY_RANGE
: um intervalo IPv4 válido para a sub-rede em notação CIDR.REGION
: a região onde criar a sub-rede.
Para criar uma rede VPC para o plano de controle com uma regra de firewall para permitir conexões SSH na VM, siga estas etapas:
Crie uma rede VPC com uma sub-rede criada manualmente usando o comando
gcloud compute networks create
com a sinalização--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 do plano de controle.MTU
: o MTU, que é o maior tamanho de pacote da rede. O valor deve estar entre1300
e8896
. O valor padrão é1460
. Antes de definir o MTU para um valor superior a1460
, consulte Unidade máxima de transmissão .
Crie uma sub-rede para a rede do plano de controle da VPC que você acabou de criar usando 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 da rede do plano de controle.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controle que você especificou nas etapas anteriores.CONTROL_PRIMARY_RANGE
: um intervalo IPv4 válido para a sub-rede em notação CIDR.REGION
: a região onde criar a sub-rede, que deve corresponder à região que você especificou na sub-rede da rede do plano de dados.
Crie uma regra de firewall VPC que permita SSH na rede do plano de controle usando o
gcloud compute firewall-rules create
com o sinalizador--allow
definido 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 de firewall.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controle que você criou nas etapas anteriores.
Para criar uma rede VPC para o plano de dados, siga estas etapas:
Crie uma rede VPC com uma sub-rede criada manualmente fazendo uma solicitação
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 do plano de dados.MTU
: a unidade máxima de transmissão (MTU), que é o maior tamanho de pacote da rede. O valor deve estar entre1300
e8896
. O valor padrão é1460
. Antes de definir o MTU para um valor superior a1460
, consulte Unidade máxima de transmissão .
Crie uma sub-rede para a rede do plano de dados VPC fazendo uma solicitação
POST
para o 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 você deseja criar a sub-rede.DATA_PRIMARY_RANGE
: o intervalo IPv4 primário para a nova sub-rede em notação CIDR.DATA_PLANE_SUBNET_NAME
: o nome da sub-rede da rede do plano de dados que você criou na etapa anterior.DATA_PLANE_NETWORK_NAME
: o nome da rede do plano de dados que você criou na etapa anterior.
Para criar uma rede VPC para o plano de controle com uma regra de firewall para permitir SSH na VM, siga estas etapas:
Crie uma rede VPC com uma sub-rede criada manualmente fazendo uma solicitação
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 do plano de controle.MTU
: o MTU, que é o maior tamanho de pacote da rede. O valor deve estar entre1300
e8896
. O valor padrão é1460
. Antes de definir o MTU para um valor superior a1460
, consulte Unidade máxima de transmissão .
Crie uma sub-rede para a rede de controle de dados VPC fazendo uma solicitação
POST
para o 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 a rede do plano de controle está localizada.REGION
: a região onde você deseja criar a sub-rede.CONTROL_PRIMARY_RANGE
: o intervalo IPv4 primário para a nova sub-rede em notação CIDR.CONTROL_PLANE_SUBNET_NAME
: o nome da sub-rede da rede do plano de controle que você criou na etapa anterior.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controle que você criou na etapa anterior.
Crie uma regra de firewall VPC que permita SSH na rede do plano de controle fazendo uma solicitação
POST
para o 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 a rede do plano de controle está localizada.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controle que você criou nas etapas anteriores.
No console do Google Cloud, acesse Instâncias de VM .
A página de instâncias de VM é aberta.
Clique em
Criar instância .A página Criar uma instância é aberta.
No campo Nome , insira um nome para sua VM.
No menu Região , selecione a mesma região onde você criou suas redes nas etapas anteriores.
No menu Zona , selecione uma zona para sua VM.
Na seção Configuração da máquina , faça o seguinte:
Selecione uma das seguintes opções:
Para cargas de trabalho comuns, selecione a guia Finalidade geral (padrão).
Para cargas de trabalho com alto desempenho, selecione a guia Computação otimizada .
Para cargas de trabalho com altas taxas de memória para vCPUs, selecione a guia Memória otimizada .
Para cargas de trabalho que usam unidades de processamento gráfico (GPUs), selecione a guia GPUs .
Opcional. Se você especificou GPUs na etapa anterior e deseja alterar a GPU para anexar à VM, siga um ou mais dos seguintes procedimentos:
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áquina.
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 seção Disco de inicialização , clique em Alterar e siga as instruções para alterar a imagem do disco.
Expanda a seção Opções avançadas .
Expanda a seção Rede .
Na seção Configuração de desempenho da rede , faça o seguinte:
No menu Placa de interface de rede , selecione uma das seguintes opções:
Para usar gVNIC, selecione gVNIC .
Para usar VirtIO-Net, selecione VirtIO .
Opcional: para maior desempenho de rede e latência reduzida, marque a caixa de seleção Habilitar rede Tier_1 .
Na seção Interfaces de rede , faça o seguinte:
Na linha padrão , clique em
Excluir item "default" .Clique em Adicionar interface de rede .
A seção Nova interface de rede é exibida.
No menu Rede , selecione a rede do plano de controle que você criou nas etapas anteriores.
Clique em Concluído .
Clique em Adicionar interface de rede novamente.
A seção Nova interface de rede é exibida.
No menu Rede , selecione a rede do plano de dados que você criou nas etapas anteriores.
Clique em Concluído .
Clique em Criar .
A página de instâncias de VM é aberta. Pode levar até um minuto para que a criação da VM seja concluída.
VM_NAME
: o nome da VM.IMAGE_FAMILY
: a família de imagens do sistema operacional com o qual o disco de inicialização será inicializado. Alternativamente, você pode especificar o sinalizador--image= IMAGE
e substituirIMAGE
por uma versão específica de uma imagem. Saiba como visualizar 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 ser usado para as redes do plano de controle e do plano de dados. O valor deve ser um dos seguintes:Para usar gVNIC, especifique
GVNIC
.Para usar VirtIO-Net, especifique
VIRTIO_NET
.
CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controle que você criou nas etapas anteriores.CONTROL_PLANE_SUBNET_NAME
: o nome da sub-rede da rede do plano de controle que você criou nas etapas anteriores.DATA_PLANE_NETWORK_NAME
: o nome da rede do plano de dados que você criou nas etapas anteriores.DATA_PLANE_SUBNET_NAME
: o nome da sub-rede da rede do plano de controle que você criou automaticamente nas etapas anteriores.ZONE
: a zona onde criar a VM. Especifique uma zona dentro da mesma região da sub-rede que você criou nas etapas anteriores.PROJECT_ID
: o ID do projeto onde a rede VPC do plano de controle e a rede VPC do plano de dados estão localizadas.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 operacional com o qual o disco de inicialização será inicializado. Alternativamente, você pode especificar uma versão específica de uma imagem. Saiba como visualizar uma lista de imagens no projeto de imagens do Compute Engine.CONTROL_PLANE_NETWORK_NAME
: o nome da rede do plano de controle que você criou nas etapas anteriores.REGION
: a região onde existem as sub-redes do plano de controle e das redes do plano de dados.CONTROL_PLANE_SUBNET_NAME
: o nome da sub-rede da rede do plano de controle que você criou nas etapas anteriores.VNIC_TYPE
: o tipo de vNIC a ser usado para as redes do plano de controle e do plano de dados. O valor deve ser um dos seguintes:Para usar gVNIC, especifique
GVNIC
.Para usar VirtIO-Net, especifique
VIRTIO_NET
.
DATA_PLANE_NETWORK_NAME
: o nome da rede do plano de dados que você criou nas etapas anteriores.DATA_PLANE_SUBNET_NAME
: o nome da sub-rede da rede do plano de controle que você criou nas etapas anteriores.Conecte-se à VM que você criou na seção anterior usando SSH .
Configure as dependências para 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 construir o DPDK com os exemplos:
meson setup -Dexamples=all build sudo ninja -C build install; sudo ldconfig
Verifique se o VFIO está habilitado:
cat /boot/config-$(uname -r) | grep NOIOMMU
Se o VFIO não estiver ativado, siga as etapas em Instalar UIO .
Habilite o modo No-IOMMU no VFIO:
sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'
Clone o repositório git
igb_uio
em um disco na sua VM:git clone https://dpdk.org/git/dpdk-kmods
No diretório pai do repositório git clonado, construa o módulo e instale o driver UIO no DPDK:
pushd dpdk-kmods/linux/igb_uio sudo make sudo depmod && sudo insmod igb_uio.ko popd
Instale o pacote
dpdk-igb-uio-dkms
:sudo apt-get install -y dpdk-igb-uio-dkms
Instale o driver UIO no DPDK:
sudo modprobe igb_uio
Obtenha o número do slot PCI (Peripheral Component Interconnect) da interface de rede atual:
sudo lspci | grep -e "gVNIC" -e "Virtio network device"
Por exemplo, se a VM estiver usando
ens4
como interface de rede, o número do slot PCI será00:04.0
.Pare a interface de rede conectada 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 qual interface de rede a VM está usando, visualize a configuração da interface de rede:sudo ifconfig
Vincule o DPDK ao driver:
sudo dpdk-devbind.py --bind=DRIVER PCI_SLOT_NUMBER
Substitua o seguinte:
DRIVER
: o driver para vincular o DPDK. Especifique um dos seguintes valores:Driver UIO:
igb_uio
Driver VFIO sem IOMMU:
vfio-pci
PCI_SLOT_NUMBER
: o número do slot PCI da interface de rede atual formatado como00:0 NUMBER .0
.
Crie o diretório
/mnt/huge
e, em seguida, crie algumas páginas enormes para o DPDK usar como 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 pode usar a interface de rede criada nas etapas anteriores executando o aplicativo de exemplo
testpmd
incluído nas bibliotecas DPDK:sudo ./build/app/dpdk-testpmd
Para obter mais informações sobre como testar o DPDK, consulte Opções de linha de comando do Testpmd .
Desvincule o DPDK do driver:
sudo dpdk-devbind.py -u PCI_SLOT_NUMBER
Substitua
PCI_SLOT_NUMBER
pelo número do slot PCI especificado nas etapas anteriores. Se quiser verificar o número do slot PCI da interface de rede atual:sudo lspci | grep -e "gVNIC" -e "Virtio network device"
Por exemplo, se a VM estiver usando
ens4
como interface de rede, o número do slot PCI será00:04.0
.Recarregue o driver 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 que você especificou nas etapas anteriores.VNIC_DIRECTORY
: o diretório do vNIC. Dependendo do tipo de vNIC que você está usando, especifique um dos seguintes valores:gVNIC:
gvnic
VirtIO-Net:
virtio-pci
NETWORK_INTERFACE_NAME
: o nome da interface de rede que você especificou na seção anterior.
Revise as taxas de largura de banda da rede para o seu tipo de máquina.
Saiba mais sobre como criar e gerenciar redes VPC .
Saiba mais sobre configurações de MTU mais altas com jumbo frames .
Saiba mais sobre otimização de TCP para desempenho de rede .
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Requisitos
Ao criar uma VM para executar o DPDK, certifique-se do seguinte:
Restrições
A execução do DPDK em uma VM tem as seguintes restrições:
Configure uma VM para executar o DPDK
Esta seçã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 controle, usando o console do Google Cloud, a CLI do Google Cloud ou a API Compute Engine. Posteriormente, você poderá especificar essas redes ao criar a VM.
Console
gcloud
API
Para obter mais opções de configuração ao criar uma rede VPC, consulte Criar e gerenciar redes VPC .
Crie uma VM que use as redes VPC para DPDK
Crie uma VM que habilite gVNIC ou virtIO-Net nas duas redes VPC que você criou anteriormente usando o console do Google Cloud, a CLI gcloud e a API Compute Engine.
Recomendado: Especifique Ubuntu LTS ou Ubuntu Pro como imagem do sistema operacional devido ao suporte do gerenciador de pacotes para os drivers UIO e VFIO sem IOMMU. Se você não quiser especificar nenhum desses sistemas operacionais, é recomendado especificar o Debian 11 ou posterior para um processamento de pacotes mais rápido.
Console
Crie uma VM que use as duas sub-redes de rede VPC criadas nas etapas anteriores fazendo o seguinte:
gcloud
Crie uma VM que use as duas sub-redes de rede VPC que você criou nas etapas anteriores usando o
gcloud compute instances create
com as seguintes sinalizações: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:
Por exemplo, para criar uma VM chamada
dpdk-vm
na zonaus-central1-a
que especifica um disco permanente SSD de 512 GB, um tipo de máquina C2 predefinido com 60 vCPUs, rede Tier_1 e um plano de dados e uma rede de plano de controle 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 de rede VPC criadas nas etapas anteriores fazendo uma solicitação
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:
Por exemplo, para criar uma VM chamada
dpdk-vm
na zonaus-central1-a
que especifica um disco permanente SSD de 512 GB, um tipo de máquina C2 predefinido com 60 vCPUs, rede Tier_1 e um plano de dados e uma rede de plano de controle que usam gVNIC, faça a seguinte solicitaçãoPOST
: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 obter mais opções de configuração ao criar uma VM, consulte Criar e iniciar uma instância de VM .
Instale o DPDK na sua VM
Para instalar o DPDK na sua VM, siga estas etapas:
Instalar driver
Para preparar o DPDK para execução em um driver, instale o driver selecionando um dos seguintes métodos:
Instale um VFIO sem IOMMU
Para instalar o driver VFIO sem IOMMU, siga estas etapas:
Instalar UIO
Para instalar o driver UIO no DPDK, selecione um dos seguintes métodos:
Instale o UIO usando git
Para instalar o driver UIO no DPDK usando
git
, siga estas etapas:Instale o UIO usando pacotes Linux
Para instalar o driver UIO no DPDK usando pacotes Linux, siga estas etapas:
Vincule o DPDK a um driver e teste-o
Para vincular o DPDK ao driver instalado na seção anterior, siga estas etapas:
Desvincular DPDK
Depois de usar o DPDK, você pode desvinculá-lo do driver instalado na seção anterior. Para desvincular o DPDK, siga estas etapas:
O que vem a seguir
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-04-21 UTC.
-