Tcpdump захватывает кадры CAN-шины дважды.

Вопрос или проблема

Я пишу анализатор протоколов Wireshark для нашего протокола CAN-шины и заметил, что tcpdump захватывает фреймы CAN дважды, и его выходные данные отличаются от программы candump.

Например, когда я выполняю следующие команды

$ cansend vcan0 123#R
$ cansend vcan0 123#22

tcpdump показывает следующий вывод

$ tcpdump -i vcan0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vcan0, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
00:19:18.372611
    0x0000:  2301 0040 0000 0000 0000 0000 0000 0000  #..@............
00:19:18.374097
    0x0000:  2301 0040 0000 0000 0000 0000 0000 0000  #..@............
00:19:33.605064
    0x0000:  2301 0000 0100 0000 2200 0000 0000 0000  #.......".......
00:19:33.610799
    0x0000:  2301 0000 0100 0000 2200 0000 0000 0000  #.......".......

но candump отображает их корректно.

$ candump vcan0
  vcan0  123   [0]  remote request
  vcan0  123   [1]  22

Версия tcpdump

$ tcpdump --version
tcpdump version 4.9.2
libpcap version 1.9.0-PRE-GIT (with TPACKET_V3)

У меня есть два вопроса

  1. Существует ли какое-либо решение этой проблемы, или она решена в более новой версии?
  2. Если решения нет или требуется новая версия, могу ли я использовать candump в удаленном захвате Wireshark? Я знаю, что могу просматривать логи candump, но предпочел бы проводить живую инспекцию с использованием удаленного захвата.

Ответ или решение

Для решения вашей задачи с захватом фреймов шины CAN в double при использовании tcpdump, давайте рассмотрим несколько аспектов вашей проблемы и возможные решения.

Проблема удвоенного захвата фреймов в tcpdump

Вы указали, что при использовании tcpdump на виртуальной сети CAN (vcan0), каждая передача фрейма захватывается дважды. Обратите внимание, что такая проблема может быть связана с разбиением трафика на уровне ядра или с особенностями работы tcpdump с виртуальными интерфейсами.

Возможные причины:

  1. Особенности libpcap: Версия libpcap, которую использует tcpdump, может не полностью поддерживать специфические функции виртуальных CAN-интерфейсов, что приводит к дублированию пакетов.
  2. Фильтры захвата: У старых версий tcpdump иногда возникают ошибки, связанные с фильтрацией пакетов в виртуальных интерфейсах. Это может приводить к их дублированию.
  3. Проблемы с ядром Linux: Иногда ядро может дублировать пакеты на виртуальных интерфейсах при определённых настройках сетевых фильтров или драйверов.

Решения и рекомендации:

  1. Обновление tcpdump/libpcap: Проверьте, доступны ли обновления для tcpdump или libpcap. Новые версии могли исправить баги, связанные с дублированием пакетов.

    sudo apt update
    sudo apt install tcpdump
  2. Использование фильтров: Попробуйте настроить более специфичные фильтры в tcpdump, чтобы избежать дублирования, если возможно.

  3. Заменить инструмент на candump: Поскольку candump отображает результаты корректно, возможно, стоит рассмотреть его использование для специфичных тестов CAN-бус.

Использование candump в Wireshark

Вопрос об интеграции candump в Wireshark для удалённого захвата несколько сложнее, так как Wireshark ожидает работу с pcap-потоками. Однако есть несколько обходных путей:

  1. Интеграция через скрипты: Создайте скрипт, который будет перенаправлять вывод candump в формат pcap, и использовать его как источник для Wireshark.

  2. Использование других утилит: Рассмотрите использование таких программ, как can2pcap, которые позволяют преобразовать данные CAN в pcap-формат, совместимый с Wireshark.

  3. Удалённый захват: Реализуйте удалённый захват данных и передачу через сети, используя вспомогательные приложения, сохраняя данные в pcap-формате для их дальнейшего анализа.

Заключение

Таким образом, для решения вашей проблемы, в первую очередь, следует рассматривать обновление используемых инструментов и проверку сетевых настроек на уровне Linux. В случае необходимости работы с данными в реальном времени воспользуйтесь скриптами для конвертации данных CAN в формат, подходящий для Wireshark, что увеличит гибкость в вашей технической инфраструктуре.

Оцените материал
Добавить комментарий

Капча загружается...