¿Cómo ejecutar DPDK en una máquina virtual VMWare?


1. Preparación ambiental

Versión del servidor VMware + Ubuntu 16.04


2. Construcción del entorno DPDK

2.1 vmware agregar dos tarjetas de red

inserte la descripción de la imagen aquí
Para ejecutar DPDK, se necesitan dos tarjetas de red, por lo que debemos verificar si nuestra máquina virtual ya tiene dos tarjetas de red y agregarlas si no es así; al agregar una tarjeta de red, se recomienda configurar la conexión de red de la tarjeta de red en "modo puente (B)" .

La NIC del puente actúa como la NIC en la que se ejecuta DPDK. La tarjeta de red NAT se utiliza como tarjeta de red para la conexión ssh.


2.2 Modificar la información de configuración de la tarjeta de red

inserte la descripción de la imagen aquí
1) Busque el archivo .vmx en nuestra máquina virtual y ábralo,
2) Cambie ethernet0.virtualDev de e1000 a vmxnet3, porque vmxnet3 de VMware admite tarjetas de red de varias colas,
3) Cambie ethernet0.vwakeOnPcktRcv a TRUE.


Una vez completada la modificación, usamos ifconfig para verificar si la tarjeta de red agregada ya está en la lista:
inserte la descripción de la imagen aquí

De lo contrario, debemos agregar nueva información de la tarjeta de red al archivo, use el comando vim /etc/network/interfacespara abrir el archivo y agregar:
inserte la descripción de la imagen aquí

interfaces, cuando solo hay una tarjeta de red, solo hay eth0 por defecto. Si agrega una nueva, debe agregar una nueva configuración. Por ejemplo, si agrega 3 tarjetas de red en la figura anterior, debe configurar eth1, eth2 y eth3.

Explicación: si usa el comando ifconfig para ver la información de la tarjeta de red, en lugar de eth0, muestra es33 (u otros nombres), entonces podemos cambiar es33 a eth0 modificando el archivo de configuración.

La operación específica es:
1) Use para vim /etc/default/grubabrir el archivo grub;
2) En el parámetro GRUB_CMDLINE_LINUX, agregue net.ifnames=0 biosdevname=0, para que el nombre de la tarjeta de red comience desde 0.

inserte la descripción de la imagen aquí


2.3 Modificar los parámetros de inicio del sistema ubuntu

inserte la descripción de la imagen aquí
1) Máquina física

default_hugepages=1G hugepagesz=1G hugepages=20 isolcpus=0-7


2) Máquina virtual

default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2


2.4 Comprobar si el sistema admite tarjetas de red multicola

cat /proc/interruptsPuede verificar si el sistema admite tarjetas de red de varias colas ejecutando .
inserte la descripción de la imagen aquí
Si ve una lista eth1 similar al cuadro rojo en la figura anterior, significa que la tarjeta de red de varias colas es compatible.


3. Compilar DPDK

1) Sitio web de descarga de DPDK: https://core.dpdk.org/download/
inserte la descripción de la imagen aquí

2) Elija la versión que desee, la interfaz directa del subsistema de diferentes versiones será diferente, aquí recomendamos elegir dpdk 19.08.2. Sin embargo, cabe señalar que las diferencias de interfaz entre las distintas versiones de DPDK siguen siendo relativamente grandes.
inserte la descripción de la imagen aquí


3) ./usertools/dpdk-setup.shPuede compilar
inserte la descripción de la imagen aquí
el sistema de 64 bits seleccionando 39.
inserte la descripción de la imagen aquí
Después de compilar, habrá una carpeta adicional x86_64-native-linux-gcc.


4. Establecer las variables de entorno de DPDK

#export RTE_SDK=/home/dpdk
#export RTE_TARGET=x86_64-native-linux-gcc


5. Ejecute la prueba testpmd

Ejecute: # /usertools/dpdk-setup.sh
inserte la descripción de la imagen aquí
Luego:
1) Seleccione 43 para insertar el módulo IGB_UIO, seleccione la tarjeta de red como vmxnet3 para cargar este módulo;
2) Seleccione 44 para insertar el módulo VFIO, seleccione la tarjeta de red como e1000 para cargar este módulo;
3) Seleccione 49 para enlazar el módulo igb_uio, o salir;

Si se ejecuta 49, se solicitará la siguiente información:
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Se puede resolver con el siguiente comando:

# ifconfig eth0 down
# /usertools/dpdk-devbind.py --bind=igb_uio eth0

4) Seleccione 53 para ejecutar testpmd
inserte la descripción de la imagen aquí
> mostrar información del puerto 0
**Estilo audaz**


6. Compilar el programa DPDK

1) Ingrese ejemplo/holamundo ;
2) Puede ejecutar directamente make para compilar, o puede compilar con el siguiente comando gcc:

# gcc -o helloword main.c -I /usr/local/include/dpdk/ -ldpdk -lpthread -lnuma -ldl

inserte la descripción de la imagen aquí
Después de compilar, ejecute ./helloworld directamente para ejecutar el programa.

Siete, caso DPDK en ejecución

correr kni:

./build/kni -l 4-7 -n 4 -- -P -p 0x3 -m --config="(0, 4, 6),(1, 5, 7)"

L3fwd funcionando

# ./build/l3fwd -l 4-7 -n 4 -- -p 0x3 --config="(0, 0, 4),(1, 0, 5)" --parse-ptype

inserte la descripción de la imagen aquí

8. Errores comunes

Mensaje de error:
inserte la descripción de la imagen aquí
Motivo: No se ha establecido ninguna variable de entorno; consulte este artículo "Configuración de la variable de entorno de dpdk"
inserte la descripción de la imagen aquí
máscara de bits Seleccione 7, bit: 111
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/locahuang/article/details/120356849
Recomendado
Clasificación