Куда направляются данные моего массива eBPF для каждого процессора?

Куда направляются данные моего массива eBPF для каждого процессора?

У меня есть тестовый пример, похожий на код вhttps://github.com/xdp-project/xdp-tutorial/который поддерживает статистическую карту в массиве каждого процессора, и код пользовательского пространства, который периодически отображает статистику.

Когда я запускаю это, код пользовательского пространства всегда отображает нули. Я оснастил свой код ядра eBPF с помощью bpf_trace_printk, и он, похоже, помещает правильные значения в карту. Пользовательский код перебирает все возможные ЦП, но всегда находит нули в слотах массива per-cpu.

Кто-нибудь может мне сказать, что происходит?

Мой тестовый пример:здесь ; af_xdp_kern.c — это код eBPF, af_xdp_user.c — это код пользовательского пространства, который управляет кодом eBPF, а filter-xdp_stats.c — это код, который должен отображать статистику. Все это собирается с помощью 'make' в этом каталоге, и есть скрипт запуска, который я использую с

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

для запуска пользовательского кода и кода eBPF с передачей данных между двумя сетевыми пространствами имен на машине. Во время работы,

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

должен отображать статистику, но на самом деле отображает нули.

Мой тестовый пример написан на основе интерфейса BPF «1.0», тогда как код в xdp-tutorial написан на основе интерфейса BPF предварительной версии.

Я использую Ubuntu 22.04 с uname -a, дающим

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$

Спасибо за всю помощь, которую вы можете оказать!

решение1

Необходимо запустить приложение отображения статистики в том же сетевом пространстве имен, что и пользователь и приложение eBPF; даже в том же экземпляре ip netns exec.

Связанный контент