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
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)" .
2.2 Modificar la información de configuración de la tarjeta de red
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:
De lo contrario, debemos agregar nueva información de la tarjeta de red al archivo, use el comando vim /etc/network/interfaces
para abrir el archivo y agregar:
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/grub
abrir 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.
2.3 Modificar los parámetros de inicio del sistema ubuntu
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/interrupts
Puede verificar si el sistema admite tarjetas de red de varias colas ejecutando .
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/
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.
3) ./usertools/dpdk-setup.sh
Puede compilar
el sistema de 64 bits seleccionando 39.
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
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:
Se puede resolver con el siguiente comando:
# ifconfig eth0 down
# /usertools/dpdk-devbind.py --bind=igb_uio eth0
4) Seleccione 53 para ejecutar testpmd
> mostrar información del puerto 0
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
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
8. Errores comunes
Mensaje de error:
Motivo: No se ha establecido ninguna variable de entorno; consulte este artículo "Configuración de la variable de entorno de dpdk"
máscara de bits Seleccione 7, bit: 111