Как анализировать пакеты OpenFlow с помощью файла захвата tcpdump программно

Я работаю с пакетами OpenFlow и анализирую сеть через tcpdump.

В настоящее время я использую графический интерфейс WireShark для анализа сгенерированного файла захвата, и он удовлетворяет мои потребности.

Однако мне было интересно, есть ли у WireShark API, чтобы то же самое можно было сделать с помощью сценария, а не с помощью графического интерфейса пользователя (я по сути стремлюсь извлечь определенные параметры OpenFlow и автоматизировать процесс проверки моей системы)

2 ответа

Решение

Альтернативой командной строке WireShark является tshark (аналогично функции tcpdump).

Этого блога было достаточно, чтобы начать меня.

Пример команды захвата tshark выглядит следующим образом (скажем, вы хотите контролировать интерфейс eth0):

sudo tshark -i eth0

Мы можем добавить фильтры захвата вместе с командой:

sudo tshark -i eth0 "port 6633"

Эта команда перехватит весь трафик к порту 6633 или обратно (порт по умолчанию для контроллеров OpenFlow)

Простого захвата трафика недостаточно. Чтобы проанализировать захват с помощью программы, нам нужно сначала преобразовать захват в легко понятный формат. Введите XML.

sudo tshark -i eth0 -T pdml > dump.xml  

Это выводит файл захвата в виде XML-файла со всеми пакетами вместе с их различными атрибутами в качестве тегов.

Это может быть впоследствии проанализировано с использованием любого стандартного синтаксического анализатора XML.

Несколько дополнительных вещей, которые я подправил: я выбрал "порт 6633". И добавил опцию -n (адреса не разрешены). Дополнительные пакеты, полученные в результате, всегда могут отфильтровываться анализатором xml. Поскольку мое приложение придавало небольшую важность временным меткам различных пакетов, я не хотел вызывать дополнительные задержки из-за фильтрации / разрешения. Обратите внимание, что я могу быть совершенно неправ в своих рассуждениях здесь (это была просто догадка). Каждый пакет имеет временную метку, добавляемую к нему сетевым адаптером, когда устройство получает его. Поэтому более чем вероятно, что использование таких уловок не повлияет на отметку времени вообще.

Моя последняя команда была поэтому:

sudo tshark -n -i eth0 -T pdml > dump.xml

ДОПОЛНИТЕЛЬНОЕ ПРИМЕЧАНИЕ. Если вы привыкли использовать WireShark для отладки пакетов OpenFlow, вы, вероятно, используете фильтр отображения: "of". Это, однако, не является действительным фильтром захвата, который требуется для tshark (фильтры захвата аналогичны тем, которые используются в tcpdump)

PS: напишите мне, если вам нужен парсер xml (я использовал python)

Попробуйте просмотреть вывод:

sudo tshark -O openflow_v4 -i eth0 port <openflow port>

Вы можете просмотреть протоколы, доступные с этой командой:

~] tshark -G protocols | grep openflow
OpenFlow        openflow        openflow
OpenFlow 1.0    openflow_v1     openflow_v1
OpenFlow 1.3    openflow_v4     openflow_v4
OpenFlow 1.4    openflow_v5     openflow_v5
Другие вопросы по тегам