1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-gazelle

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
pdump.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 17:01 5c2f3c0

Использование pdump для отладки пакетов

Приложение pdump является вспомогательным процессом системы gazelle и использует общую сетевую карту для получения пакетов и записи их в файл в формате pcap, который можно просматривать с помощью программы Wireshark.

Сборка DPDK для openEuler предоставляет команду gazelle-pdump для отладки пакетов Gazelle.

Описание часто используемых параметров:

Опция Пример значения параметра Описание
device_id 0000:01:00.0 PCI адрес сетевой карты для отладки пакетов.
Должен совпадать с результатом команды dpdk-devbind -s.
Для виртуальных устройств значение должно быть указано в параметре --vdev, например net_af_xdp для af_xdp.
rx-dev /root/capture-rx.pcap Файл для хранения получаемых пакетов.
tx-dev /root/capture-tx.pcap Файл для хранения отправленных пакетов. Если пути rx-dev и tx-dev одинаковы, то файл будет содержать как отправленные, так и полученные пакеты.
-d /usr/lib64/librte_net_af_xdp.so Необходимый динамический модуль для устройств af_xdp, mlx и других.

Дополнительные параметры можно получить с помощью команды:

gazelle-pdump --help

Пример использования:

# hinic
gazelle-pdump -- --pdump 'device_id=0000:01:00.0,queue=*,rx-dev=/root/capture-rx.pcap,tx-dev=/root/capture-tx.pcap'
# af_xdp
gazelle-pdump -d /usr/lib64/librte_net_af_xdp.so -- --pdump 'device_id=net_af_xdp,queue=*,rx-dev=/root/capture-rx.pcap,tx-dev=/root/capture-tx.pcap'
# mlx
gazelle-pdump -d /usr/lib64/librte_net_mlx5.so -- --pdump 'device_id=0000:07:00.0,queue=*,rx-dev=/root/capture-rx.pcap,tx-dev=/root/capture-tx.pcap'

СценаОтладку пакетов можно прекратить с помощью Ctrl+C. После завершения отладки данные будут записаны в файл в формате pcap, который может быть использован для дальнейшей обработки с помощью команды tcpdump.

Сцена

Ниже приведён пример команды для фильтрации пакетов с источником IP 192.168.1.10:

tcpdump -r /root/capture.pcap src host 192.168.1.10 -w /root/filter-capture.pcap

Часто встречающиеся проблемы и решения:

Ошибка 1

Устройство 0000:02:08.0 не используется основным процессом
EAL: Указанное устройство 0000:02:08.0 недоступно
MAC порта 1: 02 70 63 61 70 00
PDUMP: запрос клиента для включения/отключения pdump не удался
PDUMP: запрос клиента для включения/отключения pdump не удался
PDUMP: запрос клиента для включения/отключения pdump не удался

Причина: используемые lstack/ltran сетевые карты отличаются от указанных в параметре device_id для gazelle-pdump. Необходимо проверить правильность указанного значения device_id.

Сообщение об ошибке 2

vdev_probe(): не удалось инициализировать устройство net_af_xdp
EAL: Ошибка подключения устройства (vdev)
EAL: Ошибка - завершение работы с кодом: 1
Причина: Отсутствие сетевых портов - до свидания

Причина: gazelle-pdump не связан с соответствующей динамической библиотекой для сетевой карты. После gazelle-pdump следует указывать параметр -d, чтобы связать его с нужной динамической библиотекой, например, для af_xdp это будет -d librte_net_af_xdp.so.### Сообщение об ошибке 3

EAL: Не удалось добавить устройство в режиме горячей замены
EAL: Ошибка - завершение работы с кодом: 1
  Причина: создание vdev не удалось: create_mp_ring_vdev:700

Причина: lstack/ltran не связаны с динамическими библиотеками librte_pmd_pcap.so(dpdk-19.11)/librte_net_pcap.so(dpdk-21.11). Необходимо проверить Makefile и решить проблему следующим образом.

  • Измените dpdk.spec, добавив опции компиляции PDUMP, затем перекомпилируйте dpdk. %build
sed -ri 's,(LIBRTE_PMD_PCAP=).*,\1y,'      %{target}/.config
  • Используйте те же параметры компиляции, что и для gazelle, чтобы скомпилировать dpdk-pdump. Исходные файлы pdump расположены в директории dpdk: app/pdump/main.c

  • Пример команды компиляции (на основе dpdk-19.11):

cc -O0 -g -fno-strict-aliasing -mssse3 -I/usr/include/dpdk -fstack-protector-strong -Werror -Wall -fPIC   -c -o main.o main.c
  • Пример команды линковки (на основе dpdk-19.11):
cc -lm -lpthread -lrt -lnuma -lconfig -lboundscheck -Wl,--whole-archive /usr/lib64/librte_pci.so /usr/lib64/librte_bus_pci.so /usr/lib64/librte_cmdline.so /usr/lib64/librte_hash.so /usr/lib64/librte_mempool.so /usr/lib64/librte_mempool_ring.so /usr/lib64/librte_timer.so /usr/lib64/librte_eal.so /usr/lib64/librte_ring.so /usr/lib64/librte_mbuf.so /usr/lib64/librte_kni.so /usr/lib64/librte_gro.so /usr/lib64/librte_pmd_ixgbe.so /usr/lib64/librte_kvargs.so /usr/lib64/librte_pmd_hinic.so /usr/lib64/librte_pmd_i40e.so /usr/lib64/librte_pmd_virtio.so /usr/lib64/librte_bus_vdev.so /usr/lib64/librte_net.so /usr/lib64/librte_ethdev.so /usr/lib64/librte_pdump.so /usr/lib64/librte_pmd_pcap.so main.o -Wl,--no-whole-archive -Wl,--whole-archive -Wl,--no-whole-archive -o gazelle-pdump

Убедитесь, что динамические библиотеки в команде линковки совпадают с используемыми при компиляции liblstack.so, то есть должны совпадать с LIBRTE_LIB в Makefile.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/openeuler-gazelle.git
git@api.gitlife.ru:oschina-mirror/openeuler-gazelle.git
oschina-mirror
openeuler-gazelle
openeuler-gazelle
master