
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*
Respuesta1
Dado que eth0
es 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#1546752
hay una opción disponible.
- Cree una interfaz TAP virtual dentro de VM
- 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
- Usando PCAP-PMD y eal-arg
--vdev=net_pcap0,iface=[virtual tap interface]
otra opción es
- iniciar la aplicación DPDK con
--vdev=net_tap0,iface=[DPDK tap interface name]
- 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]
- código de referencia: modificar
https://github.com/vipinpv85/DPDK-DDoS/blob/master/test/ebpf/l2_port_fwd.c
para adaptarlo a las necesidades. - Cómo construir: `https://github.com/vipinpv85/DPDK-DDoS/blob/master/README.md``