ТехноСаратов → Блог

iperf. Тестирование пропускной способности сетиБлогПрограммы

iperf — клиент-серверная программа позволяющая не просто проверять потерянные пакеты и задержки, но и генерировать TCP и UDP трафик, тонко конфигурируемый ключами командной строки. Это ее и отличает от… обычного ping.

С ее помощью можно легко эмулировать, например, VoIP трафик и посмотреть подходит ли выбранная сеть для передачи аудио. Именно этим мы сейчас и займемся.

iperf работает в двух режимах: клинтском и серверном. Программа запущенная в серверном режиме на одном конце сети будет ожидать запуска клиентского варианта на другом конце. Клиентская программа инициирует соединение и начинает передачу трафика. Будет ли запускаться программа в режиме сервера или клиента зависит от того используется ли ключ -s или -c соответственно.

Для выбора UDP протокола служит ключ -u иначе используется TCP протокол. Так как в этой статье мы эмулируем VoIP, то нам понадобится UDP протокол.

VoIP трафик обычно передается по RTP протоколу, который в качестве транспортного использует UDP. Размер пакетов по RTP в режиме Dinamyc Audio равняется 512 байт. Однако плотность их может быть разной в зависимости от разрядности и частоты дискретизации передаваемого аудио. Обычно аудио передается сжатым (каждый семпл сжимается с 16 до 8 бит), частота дискретизации также может быть различной, по тому конкретную плотность трафика имеет смысл рассчитывать только из параметров конкретного приложения. Программа, которую я тестировал пару месяцев назад, предназначена для передачи высококачественного аудио, по тому она использует частоту дискретизации 48000 и не сжимает 16-ти битный аудио поток (по крайней мере пока я не освоил хорошего кодека). И того получается 48к семплов в секунду * на 2 байта в семпле * 8 бит = 768Кбит/с — необходимая ширина канала. Однако это только сам аудио трафик, но параллельно с ним используется таже RTCP протокол, контролирующий потерю пакетов, добавление/удаление участников мультикастовых групп и т.п., требует расширения канала. Общая нагрузка на сеть будет кратна количеству участников обмена VoIP трафиком, по этому чтобы эмулировать группу, в нашем случае, потребуется ширина канала ~7Мбит/с.

Рассмотрим, наконец, как для эмуляции такого трафика использовать iperf. Для запуска в серверном режиме используем следующие параметры:

iperf -u -s -l512 -b7000k -t150

где: -u — UDP протокол; -s — серверный режим; -l512 — длинна каждого пакета; -b7000k — занимаемая ширина канала; -t150 — время теста в секундах.

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

iperf -u -c 192.168.1.4 -l512 -b1700k -t150

Клиентская версия должна явно указывать IP сервера. Остальные параметры совпадают.

Через 150 секунд клиентская программа закроется, а серверная отобразит результаты тестирования.

По слухам существует и GUI версия этой программы для windows (с наглядными графиками), однако найти и скачать ее мне так и не удалось. Как и многим, кто ее искал 🙂

Страница проекта на sourceforge