¿A dónde van mis datos de eBPF por matriz de CPU?

¿A dónde van mis datos de eBPF por matriz de CPU?

Tengo un caso de prueba similar al código enhttps://github.com/xdp-project/xdp-tutorial/que mantiene un mapa estadístico en una matriz por CPU y un código de espacio de usuario que muestra las estadísticas periódicamente.

Cuando ejecuto esto, el código del espacio de usuario siempre muestra ceros. He instrumentado el código de mi kernel eBPF con bpf_trace_printk y parece estar poniendo los valores correctos en el mapa. El código de usuario itera sobre todas las CPU posibles, pero siempre encuentra ceros en las ranuras de la matriz por CPU.

¿Alguien puede decirme qué está pasando?

Mi caso de prueba esaquí ; af_xdp_kern.c es el código eBPF, af_xdp_user.c es el código del espacio de usuario que impulsa el código eBPF y filter-xdp_stats.c es el código que debe mostrar las estadísticas. Todo se construye con 'make' en ese directorio, y hay un script de ejecución que uso con

tjcw@r28b29-n10:~/workspace/bpf-examples/AF_XDP-filter/netperf-namespace$ sudo FILTER=af_xdp_kern ./run.sh

para ejecutar el código de usuario y el código eBPF con datos transferidos entre 2 espacios de nombres de red en la máquina. Mientras está funcionando,

tjcw@r28b29-n10:~/workspace/bpf-examples/AF_XDP-filter$ sudo ./filter-xdp_stats

debería mostrar estadísticas, pero en realidad muestra ceros.

Mi caso de prueba está codificado en la interfaz BPF '1.0', donde el código en xdp-tutorial está codificado en la interfaz BPF preliminar.

Estoy ejecutando Ubuntu 22.04 con uname -a dando

tjcw@r28b29-n10:~/workspace/bpf-examples/AF_XDP-filter$ uname -a
Linux r28b29-n10 5.15.0-48-generic #54-Ubuntu SMP Fri Aug 26 13:26:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
tjcw@r28b29-n10:~/workspace/bpf-examples/AF_XDP-filter$

¡Gracias por toda la ayuda que puedas brindar!

Respuesta1

Es necesario ejecutar la aplicación de visualización de estadísticas en el mismo espacio de nombres de red que el usuario y la aplicación eBPF; incluso en el mismo caso de ip netns exec.

información relacionada