Приложение 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
Устройство 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.
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 и решить проблему следующим образом.
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
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 )