Моделирование сети с топологией звезда на базе коммутатора. Ещё одна программа для генерации трафика

Эта утилита позволяет создавать и передавать пакеты через сетевой адаптер. Выберите в меню Инструменты => Генератор пакетов . Или, выбрав пакет в закладке Пакеты , щёлкните на нем правой кнопкой мыши, а затем выберите команду Отправить пакет .

Обратите внимание на то, что Генератор Пакетов не может и не должен быть использован для посылки пакетов с уровня приложений, то есть он не следит за инкрементом значений 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, активизируйте из контекстного меню Генератор Пакетов .

ВНИМАНИЕ:

Программа 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:


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

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

Программа называется Colasoft Packet Builder. Работа с ним не отличается особой сложностью, если вы смотрели предыдущие статьи на эту тему, наверняка разберетесь. Итак, вот внешний вид программы:

Нажимаем кнопку Add, выбираем тип пакета ARP, IP, TCP, UDP… не так много протоколов, но для начала этого хватит.

Вот например создаем TCP-пакет. К сожалению номера портов почему-то не редактируются напрямую. Но можно поменять значение в шестнадцатиричном редакторе пакета внизу (придётся вспоминать HEX или пользоваться калькулятором).


Так же не забываем выбрать адаптер, с которого будет уходить пакет. Для того, чтобы кнопки “Send” стали активными, нужно выбрать пакет в правой части экрана.

При нажатии на кнопку Send мы увидим окно передачи, в котором можно настроить режим отправки – всплеск – все пакеты разом, либо циклическая отправка. Количество циклов и пауза между ними. Например, нам нужно сделать отправку ежесекундного пакета, тогда ставим 0 (бесконечный цикл), а Delay выставляем в 1000. Если же нужно сделать шум примерно в минуту, за которую передать 6000 пакетов, то ставим 6000, и паузу в 10 миллисекунд.


Я немного поменял пакет, выставил IP-адреса источника и назначения, а так же порты. И вот что перехвачено в WireShark. Как видим, все на первый взгляд нормально!


Вы можете выбрать свои любимые генераторы трафика, всё зависит от личных предпочтений. Из всех перечисленных мне больше нравится Ostinato (который, к сожалению, почему-то не всегда работает нормально). Это всё дело привычки. С поставленными задачами (тривиальными конфигурациями для тестов) каждый из них справляется отлично.

Песочница

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, генератор трафика

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 сек. –