¿Cómo configurar DPDK sin perder la conexión SSH?

¿Cómo configurar DPDK sin perder la conexión SSH?

Ya se hizo una pregunta similar anteriormente en este sitio [1] pero no parece responder nada que sea práctico para mi problema. Por lo tanto, decidí hacer la misma pregunta para mi entorno.

Estoy usando un servidor Linode Ubuntu con una sola NIC e intenté inicializar DPDK ayer, instaló el controlador Kernel, combinó la NIC y luego me desconectó de SSH. No pude volver a conectarme desde entonces y seguí y reinicié el servidor, pude acceder al servidor nuevamente.

Mi dispositivo de red como se muestra en la salida de estado de DPDK,

 dpdk-devbind -s

Network devices using kernel driver
===================================
0000:00:04.0 'Virtio network device 1000' if=eth0 drv=virtio-pci unused=vfio-pci *Active*

[1]Vincular DPDK a una NIC sin perder la conexión

Respuesta1

Dado que eth0es la única y predeterminada interfaz, el ssh actual se ejecuta en la misma a través del Kernel. por lo tanto, eliminar la interfaz del kernel y vincularla a DPDk provocará la pérdida de conexión.

Como se señaló en la respuesta, https://superuser.com/questions/1204835/binding-dpdk-to-a-nic-without-loosing-connection/1546752#1546752hay una opción disponible.

  1. Cree una interfaz TAP virtual dentro de VM
  2. Cree un código eBPF-XDP que redirija los paquetes deseados a la interfaz TAP a través de XDP-REDIRECT, mientras que el resto del núcleo del paquete XDP-PASS
  3. Usando PCAP-PMD y eal-arg--vdev=net_pcap0,iface=[virtual tap interface]

otra opción es

  1. iniciar la aplicación DPDK con--vdev=net_tap0,iface=[DPDK tap interface name]
  2. luego cargue eBPF-XDP que redirige el paquete deseado a la interfaz DPDK-TAP.

por lo tanto, sin perder ninguna conexión, se puede utilizar el tráfico procedente de virtio.

nota: el kernel debe estar compilado y ser compatible con eBPF-XDP para virtio.

[EDITAR-1]

  1. código de referencia: modificar https://github.com/vipinpv85/DPDK-DDoS/blob/master/test/ebpf/l2_port_fwd.cpara adaptarlo a las necesidades.
  2. Cómo construir: `https://github.com/vipinpv85/DPDK-DDoS/blob/master/README.md``

información relacionada