Трафик генератор Ostinato в UNetLAB.

17.04.2019

Программа 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.
  • Unicast (юникаст) – процесс отправки пакета от одного хоста к другому хосту.
  • Multicast (мультикаст) – процесс отправки пакета от одного хоста к некоторой ограниченной группе хостов.
  • Broadcast (бродкаст) – процесс отправки пакета от одного хоста ко всем хостам в сети.

В некотовых случаях switch может отправлять фреймы как hub , например, если фрейм бродкастовый ( broadcast - широковещание ) или unknown unicast (неизвестному единственному адресату).

Практическая работа 4-1. Моделирование сети с топологией звезда на базе коммутатора

Работу сети с топологией звезда на базе концентратора мы уже изучили. Теперь рассмотрим аналогичную сеть на базе коммутатора ( рис. 4.1).


Рис. 4.1.

Пример сети с топологией звезда на базе коммутатора ( файл task-4-1.pkt) прилагается.

На вкладке Physical вы можете посмотреть вид коммутатора, имеющего 24 порта Fast Ethernet и 2 порта Gigabit Ethernet ( рис. 4.2).


Рис. 4.2.

В режиме Simulation настроим фильтры и с помощью функции просмотрим прохождение пакета между двумя ПК через коммутатор . Как видим, маршруты пакетав концентраторе и коммутаторе будут разными: как в прямом, так и в обратном направлении хаб отправляет всем, а коммутатор – только одному.

Задание 4.1

Произведите проектирование локальной сети из хаба, коммутатора и 4х ПК

Сеть , которую необходимо спроектировать представлена на рис. 4.3 .


Рис. 4.3.

Произведите настройку и диагностику этой сети двумя способами (утилитой ping и в окне списка PDU . Убедитесь в успешности работы сети в режиме симуляции.

Примечание

Перед выполнением симуляции необходимо задать фильтрацию пакетов. Для этого нужно нажать на кнопку "Изменить фильтры", откроется окно, в котором нужно оставить только протоколы "ICMP" и "ARP". Кнопка "Авто захват/Воспроизведение" подразумевает моделирование всего ping-процесса в едином процессе, тогда как "Захват/Вперед" позволяет отображать его пошагово.

Практическая работа 4-2. Исследование качества передачи трафика по сети

При исследовании пропускной способности ЛВС (качества передачи трафика по сети) желательно увеличить размер пакета и отправлять запросы с коротким интервалом времени, не ожидая ответа от удаленного узла, для того, чтобы создать серьезную нагрузку на сеть . Однако, утилита ping не позволяет отправлять эхо- запрос без получения эхо-ответа на предыдущий запрос и до истечения времени ожидания. Поэтому для организации существенного трафика воспользуемся программой Traffic Generator . Для работы создайте и настройте следующую сеть ( рис. 4.4).


Рис. 4.4.

Первое знакомство с Traffic Generator

В окне управления PC1 во вкладке Desktop выберите приложение Traffic Generator и задайте настройки, как на рис. 4.5 для передачи трафика от PC1 на PC8. Для ясности я рядом с английской версией окна разместил тот же текст в русской версии программы CPT.


Рис. 4.5.

Итак, при помощи протокола 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 .


Рис. 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

Генерация трафика в linux на уровне ядра

  • Чулан *

Привет All!

Хочу рассказать вам о генерации трафика в linux на уровне ядра. Для чего это нужно - спросите вы? Ну, например для тестирования маршрутизаторов, свитчей, сетевых карт, устранения конкурентов - отвечу я, в этом ключе мы и используем в данное время генератор.
Генератор трафика работающий на уровне ядра системы имеет огромную производительность и способен генерировать трафик на скорости сетевого интерфейса. Производительность генерации трафика зависит от железа.На производительность влияют такие параметры как: производительность CPU, скорость шины PCI, задержки памяти, задержки DMA, количество чтения/запись в MMIO и другие.Оптимизация производительности, это тема отдельной статьи и здесь её затрагивать не будем.
Для генерации трафика в linux используется модуль pktgen. После запуска модуль pktgen, создает поток ядра и привязывает его к CPU, к потоку привязываются устройства через которые будет проходит сгенерированный, такие как /dev/eth, /dev/vlan. Соответственно 1 CPU - 1 поток, 2 CPU - 2 потока и так далее. К каждому CPU можно привязать несколько устройств, с разными настройками, что дает необходимую гибкость в управлении генератором. Так же у генератора есть ограничение, а точнее - TTL=3, то есть трафик пройдет через 3 хоста и дальше не уйдет.
Быстрый старт или практическая часть
Собираем примитивную схему:

Для запуска генератора нам понадобится модуль ядра 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 и обязательно выберите как минимум два интерфейса при создании.


Один интерфейс e0 подключите через облако к pnet0. Это управляющий интерфейс, через который будет управляться трафик генератор с вашего клиентского PC.
Второй интерфейс e1 – подключите к стенду, например к коммутатору. Это интерфейс, который будет посылать генерированные пакеты. Если предполагается, что пакеты будут dot1Q, то интерфейс коммутатора, к которому подключен e1, переведите в транк, в противном случае – оставьте access.

Запускаем Ostinato


В приглашении ввести логин и пароль вводим tc без пароля и попадаем в linux-shell


Выполним команду ifconfig -a


Нас интересует интерфейс с именем cntl . Это интерфейс управления дроном. Дрон после запуска посылает DHCP запросы на данном интерфейсе на получения IP адреса. Если вы запускаете VM UNL под VmWare Workstation, с большой долей вероятности, дрон получит IP адрес автоматически, так как его интерфейс находится в той же сети, что и управляющий интерфейс UNL VM.

Но в случае, если это не произойдет, или ваша UNL VM работает под ESXi , то IP адрес на управляющий интерфейс дрона нужно назначить вручную. IP адрес должен быть из той же подсети, что и управляющий интерфейс UNL VM.

Sudo ifconfig cntl 172.16.1.90 netmask 255.255.255.0

Выполним еще раз команду ifconfig cntl


Мы назначили IP адрес на интерфейс cntl и проверили связность управляющим интерфейсом VM UNL. Теперь дрон готов к управлению.

Второй интерфейса eth0 внутри VM Ostinato виден как e1 в UNL – это порт который будет генерировать пакеты в соответствие требованиям поступающим через интерфейс управления.

Настройка графического интерфейса управления Ostinato.

На клиентском Windows PC запускаем файл ostinato.exe - это графического интерфейса управления GUI Ostinato.


После запуска, в верхнем левом окне мы видим портовую группу 0 от локального дрона. Нам она не нужна, так как мы будем использовать дрона в UNL. Поэтом просто удаляем ее.


Далее выбираем меню File – New Port Group. В появившимся окне вводим IP адрес управляющего интерфейса дрона и порт 7878 .


Нажимаем OK. Если все прошло хорошо в левом верхнем окне появиться Port Group 1, которая содержит один интерфейс дрона eth0.


Зеленый индикатор состояния рядом с портовой группой показывает, что подключение к дрону прошло успешно и можно конфигурировать пакеты.

Создание потока

В качестве примера создадим простой TCP SYN пакет. Наш поток будет состоять из 100 пакетов со скоростью 1 пакет в секунду.

Чтобы создать поток (Stream) сначала выберите соответствующий порт в портовой группе и затем выберите File – New Stream. В окне справа появиться новый поток. Изменим его имя на TCP.


Далее необходимо настроить все параметры нашего потока. Правкой кнопкой мыши нажимаем на имя потока и выбираем Edit Stream из контекстного меню


На этой странице (Protocol Selection) вы можете настроить длину фрэйма. Можно установить как фиксированное значение, так и переменное. Мы будем использовать фиксированное по умолчанию.


Далее настраиваем структуру пакета, составляя его из нужным нам протоколов. В качестве L3 выбираем IPv4, а в качестве L4 – TCP. Так как пакет TCP SYN, то для протокола L5 – выбираем None, и Payload – None.

Во вкладке Protocol Data настраиваем соответствующие заголовки. В Media Access Protocol настраиваем MAC адреса. В качестве SRC MAC поставим 5000.0002.00FF, а в качестве MAC DST - 5000.0002.0001.

В разделе IPv4 указываем IP адреса источника и приемника. Также можно указать фиксированный адрес и переменный. В случае переменного – IP адрес будет меняться в каждом посланном пакете.


В разделе Transmission Control Protocol указываем порты и флаги. Так как у нас TCP SYN пакет, выбираем соответствующий флажок.


Во вкладке Variable Fields можно указать дополнительные поля в пакете, который будут принимать переменные значения.


Во вкладке Stream Control указываем скорость генерации пакетов и их количество. Выберем генерировать 100 пакетов и скорость в 1 PPS.


Во вкладке Packet View – можно посмотреть результирующий пакет.

Теперь можно посмотреть как трафик попадает на коммутатор. UNetLab имеет возможность снимать дамп трафика в любой точке стенда и отправлять его в WireShark запущенный на локальном PC.


Выберем правой кнопкой мыши свитч SW1 и из контекстного меню выберем пункт Capture – e0/0 . При этом на локальном PC запуститься WireShark


Здесь мы можем увидеть наши сконструированные TCP SYN пакеты, которые поступают на порт E0/0 коммутатора SW1. Запустив на коммутаторе команду show mac address-table , видим, что SRC MAC адрес из нашего пакета изучен на порту коммутатора.