Журнал
Скрипт Net2axis
15 декабря 2019 г.· 3 мин на чтение
При разработке устройств на FPGA часто возникает необходимость симуляции сетевого трафика. Избавиться от столь рутинной процедуры вам поможет скрипт Net2axis.
Оглавление
Скачать статью в формате PDF
В появившемся окне терминала, выполняем серию команд для установки scapy:
Клонируем репозиторий Net2axis:
Рассмотрим параметры скрипта:
Теперь дело за малым - реализовать python-скрипт, который будет конвертировать полученный текстовый файл в формат *.pcap:
Сохраняем скрипт в файл axis2net.py, размещаем его в одной директории с файлом outp.txt и запускаем командой:
Скачать статью в формате PDF
Скачать статью в формате PDF
Вам доступна статья в формате PDF
Аннотация
При разработке устройств на FPGA часто возникает необходимость симуляции сетевого трафика. Избавиться от столь рутинной процедуры вам поможет скрипт Net2axis.Описание работы
Данный скрипт позволяет генерировать AXI-Stream пакеты из файлов *.pcap (packet capture). Файлы pcap можно получить захватив сетевой трафик например с помощью Wireshark/tcpdump либо воспользовавшись конструктором пакетов PackEth.
Для запуска Net2axis необходим Python 2.7.X и Scapy 2.X. Работа скрипта сводится к двум этапам:
Для запуска Net2axis необходим Python 2.7.X и Scapy 2.X. Работа скрипта сводится к двум этапам:
- Файл *.pcap при помощи net2axis.py конвертируется в *.dat;
- Полученный файл подключается к AXI-Stream генератору net2axis_master.v.
Демонстрация работы
Чтобы продемонстрировать работу скрипта захватим несколько пакетов ping(протокол ICMP). Запускаем Wireshark и выбираем активный сетевой интерфейс в меню Capture -> Options, затем жмем Start.
Во время процедуры захвата пакетов я отправил несколько ping-запросов к моему роутеру, после чего остановил Wireshark выполнив команду Capture -> Stop.
Чтобы из всех захваченных пакетов отобразить только интересующие нас ICMP я задал фильтр следующего содержания:
Во время процедуры захвата пакетов я отправил несколько ping-запросов к моему роутеру, после чего остановил Wireshark выполнив команду Capture -> Stop.
Чтобы из всех захваченных пакетов отобразить только интересующие нас ICMP я задал фильтр следующего содержания:
icmp && ip.dst==192.168.0.1
Экспортируем отфильтрованные пакеты в файл ping.pcap, для этого в меню File выбираем Export Specified Packets.
Теперь можно запустить скрипт Net2axis. Сейчас в моем распоряжении ноутбук с Windows 10 и установка scapy предвещает танцы с бубном, поэтому я воспользовался эмулятором Ubuntu 18.04 из Microsoft Store. Сразу после установки эмулятора открываем проводник, переходим в директорию, в которую ранее сохранили файл ping.pcap и с зажатым shift вызываем контекстное меню.

В появившемся окне терминала, выполняем серию команд для установки scapy:
sudo apt-get update
sudo apt-get install python-scapy
Клонируем репозиторий Net2axis:
Конвертируем ping.pcap в ping.dat:git clone https://github.com/lucasbrasilino/net2axis
mv ping.pcap ./net2axis/tool
cd ./net2axis/tool
python net2axis.py -w 64 -i 100 -d 100 ping.pcap
Рассмотрим параметры скрипта:
- -w ширина axi-stream;
- -i задержка в тактах с момента снятия сигнала сброса до передачи первого пакета;
- -d задержка в тактах между последующими пакетами;
В директории /tool появился файл ping.dat, который можно использовать при симуляции. Обзорный тестбенч находится в директории sim, сам генератор пакетов расположен в директории hdl. После запуска симуляции я получил такую временную диаграмму:
Расширяем функционал
Пока писал этот текст возникла идея реализовать скрипт с обратным функционалом(axi-stream -> *.pcap). Первым делом добавим в симуляцию блок, который будет сохранять каждый принятый пакет в виде новой hex-строки. У меня получился такой код:
Теперь дело за малым - реализовать python-скрипт, который будет конвертировать полученный текстовый файл в формат *.pcap:
Сохраняем скрипт в файл axis2net.py, размещаем его в одной директории с файлом outp.txt и запускаем командой:
python axis2net.py
После запуска должен появиться файл outp.pcap, который отлично открывается при помощи wireshark. Я использовал всё ту же scapy, на удивление эта библиотека оказалась простой и функциональной. На хабре есть хорошая статья про данную библиотеку - рекомендую ознакомиться.
На этой ноте завершаю свой обзор, благодарю за внимание!
P.S. Хочу обратиться к сообществу FPGA-Systems. На просторах сети много достойных проектов, о которых знают не все. Если вы нашли что-то полезное - напишите небольшой обзор, думаю многие будут благодарны.
P.S. Хочу обратиться к сообществу FPGA-Systems. На просторах сети много достойных проектов, о которых знают не все. Если вы нашли что-то полезное - напишите небольшой обзор, думаю многие будут благодарны.
Скачать статью в формате PDF
Вам доступна статья в формате PDF


