Программа Ostinato неплоха, но есть и аналоги, один из которых я и хотел бы рассмотреть сейчас. Речь пойдёт о программе Cat KARAT .
Внешний вид программы весьма понятен. Панель инструментов, список интерфейсов (1). Выбирать “шумящую” карточку можно двойным кликом. Справа – редактор потока. Выбираем уровни OSI, через какие модификаторы пройдёт пакет, прежде чем выйдет наружу. Я выставил (2) -> IPv4 (3) -> UDP (4)->.
Внизу (5), во вкладках, начинаем редактировать параметры пакетов.
На вкладке Control мы можем изменить количество генерируемых пакетов (1) и паузу между ними (2)
Следующая вкладка – 2-ой уровень OSI. Выставляем аппаратные адреса источника и получателя. Для удобства есть быстрые кнопки, записать свой MAC-адрес и в назначение поставить бродкаст, то есть широковещательный пакет, который получат все устройства сегмента.
Следующая вкладка – редактирование параметров IP протокола (3 уровень). Здесь мы можем изменить IP источника и IP получателя. Опять же, есть кнопки быстрого заполнения полей адресов – свой и широковещательный. Помимо этого здесь можно редактировать некоторые параметры пакета, фрагментацию, протокол инкапсулированного уровня, QoS-флаги…
При выборе других путей следования потока (например протокол ARP или DHCP) будут появляться другие вкладки, где можно редактировать параметры:
Но вернемся к UDP. Послать пакет в сеть можно нажав кнопку “Play”. Я настроил виртуальную машину с Linux Microcore на втором конце и посадил туда tcpdump:
Нетрудно заметить, что источник и получатель, а так же номера портов и протокол в точности соответствуют заявленным в программе. Значит отправка произвольного пакета сработала.
Broadcast , Multicast.В некотовых случаях switch может отправлять фреймы как hub , например, если фрейм бродкастовый ( broadcast - широковещание ) или unknown unicast (неизвестному единственному адресату).
Работу сети с топологией звезда на базе концентратора мы уже изучили. Теперь рассмотрим аналогичную сеть на базе коммутатора ( рис. 4.1).
Рис.
4.1.
Пример сети с топологией звезда на базе коммутатора ( файл task-4-1.pkt) прилагается.
На вкладке Physical вы можете посмотреть вид коммутатора, имеющего 24 порта Fast Ethernet и 2 порта Gigabit Ethernet ( рис. 4.2).
В режиме Simulation настроим фильтры и с помощью функции просмотрим прохождение пакета между двумя ПК через коммутатор . Как видим, маршруты пакетав концентраторе и коммутаторе будут разными: как в прямом, так и в обратном направлении хаб отправляет всем, а коммутатор – только одному.
Произведите проектирование локальной сети из хаба, коммутатора и 4х ПК
Сеть , которую необходимо спроектировать представлена на рис. 4.3 .
Произведите настройку и диагностику этой сети двумя способами (утилитой ping и в окне списка PDU . Убедитесь в успешности работы сети в режиме симуляции.
Примечание
Перед выполнением симуляции необходимо задать фильтрацию пакетов. Для этого нужно нажать на кнопку "Изменить фильтры", откроется окно, в котором нужно оставить только протоколы "ICMP" и "ARP". Кнопка "Авто захват/Воспроизведение" подразумевает моделирование всего ping-процесса в едином процессе, тогда как "Захват/Вперед" позволяет отображать его пошагово.
При исследовании пропускной способности ЛВС (качества передачи трафика по сети) желательно увеличить размер пакета и отправлять запросы с коротким интервалом времени, не ожидая ответа от удаленного узла, для того, чтобы создать серьезную нагрузку на сеть . Однако, утилита ping не позволяет отправлять эхо- запрос без получения эхо-ответа на предыдущий запрос и до истечения времени ожидания. Поэтому для организации существенного трафика воспользуемся программой Traffic Generator . Для работы создайте и настройте следующую сеть ( рис. 4.4).
В окне управления PC1 во вкладке Desktop выберите приложение Traffic Generator и задайте настройки, как на рис. 4.5 для передачи трафика от PC1 на PC8. Для ясности я рядом с английской версией окна разместил тот же текст в русской версии программы CPT.
Итак, при помощи протокола ICMP мы сформировали трафик между компьютерами PC1 с адресом 192.168.0.1 и PC8 с адресом 192.168.0.8. При этом в разделе Source Settings (Настройки источника) необходимо установить флажок Auto Select Port (Автовыбор порта), а в разделе PDU Settings (настройки IP -пакета) задать следующие значения параметров этого поля:
Select application : PING
Destination: IPAddress : 192.168.0.8 (адресполучателя);
Source IP Address : 192.168.0.1 ( адрес отправителя);
TTL :32 (время жизни пакета);
TOS: 0 (тип обслуживания, "0" - обычный, без приоритета);
Sequence Number : 1 (начальное значение счетчика пакетов);
Size : 1400 (размер поля данных пакета в байтах);
Simulations Settings - здесь необходимо активировать переключатель ;
Periodic Interval : 0.3 Seconds (период повторения пакетов)
Внимание
Не обязательно использовать те настройки, которые задал автор. Можете указать свои, например, Size: 1500, PeriodicInterval: 0.5 Seconds. Однако, если неверно укажете IP источника, то генератор работать не будет.
После нажатия на кнопку Send (Послать) между PC1 и PC8 начнется активный обмен данными . Не закрывайте окно генератора трафика настройки, чтобы не прервать поток трафика - лампочки должны постоянно мигать!
Новый термин
TTL - время жизни пакета. Наличие этого параметра не позволяет пакету бесконечно ходить по сети. TTL уменьшается на единицу на каждом узле (хопе), через который проходит пакет.
Пример сети для исследования качества передачи трафика по сети ( файл task-4-2.pkt) прилагается.
Для оценки качества работы сети передадим поток пакетов между РС1 и РС8 при помощи команды ping –n 200 192.168.0.8и будем оценивать качество работы сети по числу потерянных пакетов. Параметр "–n" позволяет задать количество передаваемых эхо-запросов (у нас их 200) – рис. 4.6 .
Одновременно с пингом, нагрузите сеть , включив генератор трафика на компьютере РС2 (узел назначения – РС8, размер поля данных–2500 байт , период повторения передачи - 0,1 сек. –
Эта утилита позволяет создавать и передавать пакеты через сетевой адаптер. Выберите в меню Инструменты => Генератор пакетов . Или, выбрав пакет в закладке Пакеты , щёлкните на нем правой кнопкой мыши, а затем выберите команду Отправить пакет .
Обратите внимание на то, что Генератор Пакетов не может и не должен быть использован для посылки пакетов с уровня приложений, то есть он не следит за инкрементом значений SEQ, ACK, значениями контрольных сумм, размерами пакетов и т. д. Если требуется переслать поток TCP, следует воспользоваться Winsock-приложением. Генератор Пакетов предназначен для воспроизведения уже захваченного трафика, тестирования брандмауэров и систем обнаружения вторжения, а так же для других целей, где требуется ручная обработка пакетов.
Генератор пакетов позволяет изменять содержимое пакета и одновременно показывать его в декодированном виде в левом окне. Можно создавать любые виды пактов, получая полный контроль над их содержимым. Для пакетов IP, TCP, UDP и ICMP контрольная сумма автоматически корректируется при нажатии на кнопку "сигма". Для помощи в редактировании пакета предусмотрен специальный модуль - Визуальный конструктор пакетов ; его можно вызвать, нажав на соответствующую кнопку.
Воспользуйтесь кнопкой (с изображенной на ней стрелкой) для получения списка доступных шаблонов пакетов. В программе есть шаблоны TCP , UDP и ICMP пакетов; их использование зачастую оказывается удобнее, чем ввод 16-ричных значений в окне редактора. Возможно, в шаблонах TCP-, UDP- и ICMP-пакетов вам потребуется изменить поля MAC- и IP- адреса, номера портов, SEQ- и ACK-номера и т. д. Вместо встроенных шаблонов можно использовать собственные, переместив пакет из закладки Пакеты в окно шаблона в Генераторе Пакетов . В случае переноса нескольких пакетов, только первый из них будет использован в качестве шаблона. В списке файлов шаблонов появится новый файл – New Template, который можно переименовать по правому щелчку мыши, выбрав Rename или удалить, выбрав Delete . После выбора шаблона, он будет загружен в окно редактора, где можно изменить содержимое пакета перед его отправкой.
Кроме того, можно скопировать произвольные файлы NCF в поддиректорию TEMPLATES. CommView будет отображать в списке шаблонов файл(ы) NCF, обнаруженные в поддиректории TEMPLATES. Если в файле NCF будет больше одного пакета – в качестве шаблона будет использован только первый пакет.
Ниже приведены параметры передачи:
Размер пакета – задать размер пакета.
Пакетов в секунду – установить частоту передачи пакетов. Будьте осторожны и не превышайте пропускную способность соединения! Попытка переслать 5000 раз в секунду пакеты длиной в 1000 байт превысит возможности 10Mbit-ного сетевого адаптера.
Непрерывно – включить режим непрерывной передачи, пока не нажмёте Остановить .
Количество раз – задать число отправок пакета в сеть.
Отправить/Остановить – возобновить/остановить передачу пакета.
Работа с несколькими пакетами одновременно
Генератор пакетов может передавать несколько пакетов одновременно. Выберите нужные вам пакеты из списка и правым щелчком мыши вызовите Генератор Пакетов . Кроме того, можно просто перетащить файл с пакетами (в любом поддерживаемом формате) в окно Генератора Пакетов . При работе в этом режиме декодер и редактор пакетов отключаются.
Сохранение отредактированных пакетов
Если вы отредактировали пакет и хотите его сохранить, просто перетащите мышью дерево декодера на рабочий стол или в любую папку. Будет создан новый файл в формате NCF с именем PACKET.NCF. Если требуется редактировать и посылать несколько пакетов – делайте это по очереди, вынося каждый пакет на рабочий стол и задавая ему новое имя. Затем откройте окно Просмотра Log-файлов , внесите в него отредактированные пакеты, выберите их и, удерживая клавишу Shift, активизируйте из контекстного меню Генератор Пакетов .
ВНИМАНИЕ:
Песочница
pull 2 февраля 2012 в 16:49Для запуска генератора нам понадобится модуль ядра pktgen, загрузить его можно командой:
#modprobe pktgen
Проверяем загрузился модуль или нет, вывод должен быть похож на такой:
# lsmod | grep pktgen
pktgen 66645 1
После загрузки модуля появится директория /proc/net/pktgen/ , она служит для мониторинга и управления генератором, в ней можно увидеть:
/proc/net/pktgen/pgctrl - управление потоком
/proc/net/pktgen/kpktgend_X - статус генератора
/proc/net/pktgen/ethX(vlanX) - просмотр статистики по устройству
Для запуска генератора, ему необходимо передать параметры, для этого воспользуемся одним из скриптов приведенных в примерах
Возьмем самый простой из них скрипт , который использует 1 процессор и 1 сетевой интерфейс.
Отредактируем строки: pgset "dst 10.10.11.2" и pgset "dst_mac 00:04:23:08:91:dc" , заменим их на pgset "dst 192.168.0.1" и pgset "dst_mac мак адрес вашего маршрутизатора"
Теперь можно запустить генератор:
chmod 744 pktgen.conf-1-1
./pktgen.conf-1-1
В консоле появится:
Removing all devices
Adding eth1
Setting max_before_softirq 10000
Configuring /proc/net/pktgen/eth1
Running... ctrl^C to stop
Остановить генератор можно послав ctr+c в консоль, либо убив процесс echo, через kill.
Посмотреть результаты можно так:
#cat /proc/net/pktgen/eth1
После запуска генератора лампочки на интерфейсах начнут весело моргать, если запустить tcpdump на том же хосте, что и генератор, пакетов от сетевого адаптеры вы не увидите, так как они генерируются на уровне ядра и tcpdump не может их перехватить.
<Подвал>
Генератор пакетов, встроенный в ядро Linux. - Хорошее описание параметров, нюансов. Скрипты не рабочие в примере.
pktgen the linux packet generator.Autor:Robert Olsson,Uppsala Universitet & SLU - Вопросы мультипоточности + pktgen
Подвал>
Теги: linux, pktgen, генератор трафика
Сегодня мы расскажем как использовать трафик генератор Ostinato в стендах UNetLab. Ostinato это многопоточный генератор трафика, предназначенный для тестирования служб, обеспечивающих работу сети на различных уровнях стека сетевых протоколов.
К поддерживаемым протоколам относятся: Ethernet/802.3/LLC SNAP; VLAN (с поддержкой QinQ); ARP, IPv4, IPv6, IP-in-IP a.k.a IP Tunnelling (6over4, 4over6, 4over4, 6over6); TCP, UDP, ICMPv4, ICMPv6, IGMP, MLD; HTTP, SIP, RTSP, NNTP и многие другие.
Пользователю предоставляется возможность создавать пакеты данных произвольного содержания, определяя как заголовок пакета, так и содержимое всех его полей. Кроме содержимого пакетов можно выбрать интерфейс и частоту генерации трафика.
Ostinato обладает хорошо структурированным интерфейсом с наглядностью представления процесса работы.
Проект Ostinato предоставляет виртуальную машину Dron - собственно генератор, которую можно импортировать в GNS3 или UnetLab. Управление осуществляется через отдельный графический интерфейс, устанавливаемый под Windows
А GUI для Windows можно взять с официального сайта проекта
На текущий момент это версия 0.7.1. Версия GUI должна совпадать с версией дрона.
На клиентской Windows машине выполняете обычную инсталляцию. В процесс будет также инсталлирован и дрон под Windows, но мы не будем его использовать. Нам нужен только GUI интерфейс
Развёртывание Ostinato в стенде
Из меню Actions –Nodes добавьте с стенд объект Ostinato и обязательно выберите как минимум два интерфейса при создании.
Запускаем Ostinato
Но в случае, если это не произойдет, или ваша UNL VM работает под ESXi , то IP адрес на управляющий интерфейс дрона нужно назначить вручную. IP адрес должен быть из той же подсети, что и управляющий интерфейс UNL VM.
Sudo ifconfig cntl 172.16.1.90 netmask 255.255.255.0
Выполним еще раз команду ifconfig cntl
Второй интерфейса eth0 внутри VM Ostinato виден как e1 в UNL – это порт который будет генерировать пакеты в соответствие требованиям поступающим через интерфейс управления.
Настройка графического интерфейса управления Ostinato.
На клиентском Windows PC запускаем файл ostinato.exe - это графического интерфейса управления GUI Ostinato.
Создание потока
В качестве примера создадим простой TCP SYN пакет. Наш поток будет состоять из 100 пакетов со скоростью 1 пакет в секунду.
Чтобы создать поток (Stream) сначала выберите соответствующий порт в портовой группе и затем выберите File – New Stream. В окне справа появиться новый поток. Изменим его имя на TCP.
Во вкладке Protocol Data настраиваем соответствующие заголовки. В Media Access Protocol настраиваем MAC адреса. В качестве SRC MAC поставим 5000.0002.00FF, а в качестве MAC DST - 5000.0002.0001.
В разделе IPv4 указываем IP адреса источника и приемника. Также можно указать фиксированный адрес и переменный. В случае переменного – IP адрес будет меняться в каждом посланном пакете.
Теперь можно посмотреть как трафик попадает на коммутатор. UNetLab имеет возможность снимать дамп трафика в любой точке стенда и отправлять его в WireShark запущенный на локальном PC.