Iperf

Iperf

Существует множество статей, как работать Iperf’ом, но ни одна статья не ответила мне на вопрос как его запустить из под windows 7\8\10 (а вот понадобилось), очень мало статей упонинает какую скорость он измеряет, что подразумевается под пропускной способностью канала. Итак, все по порядку.

Что такое iperf?

Iperf это клиент-серверная утилита котороя позволять производить замеры пропускной способности канала. Клиент-серваная утилита подразумевает под собой, что для проверки скорости между двумя ПК необходимо будет запустить iperf на одном ПК в режиме «сервер», а на другом ПК в режиме «клиент». Скорость измеряется от клиента к серверу, т.е. если вы на своем компьютере запустили iperf в режиме «клиент», то результатом будет «исходящая» скорость. Чтобы измерить входящую, небоходимо запустить iperf в режиме сервер, либо воспользоваться ключиком -d для измерения скорость входящей+исходящей. Важно отметить, что гененирует трафик только клиентская часть.

Iperf и  unix

Iperf в unix-подобных система находится во всех репозиториях и, чтобы его установить, необходимо запусть стандартную инсталляционную команду для вашего дистрибутива, например для debian это:

#aptitude install iperf

Для работы с утилитой прото вызываем iperf, например запустить данную утилиту в режиме сервера на 3600 секунд(1 час)

# iperf -s -t 3600

Iperf и windows.

Iperf не входит в стандартный дистрибутив windows, поэтому его надо скачать, например тут

Далее, необходимо поместить этот файл для удобства на диск С:

Если вы 2 раза кликните на то, что скачали, утилита запуститься и сразу «вылетит». Пользоваться ей надо следующим образом

  1. Зайдите в командную строку Пуск->выполнить->cmd или если Windows 10 в поиске необходимо набрать Cmd, он сам автоматически найдет то, что нам нужно.cmd-v
  2. В открывшейся командной строке, надо перейти в папку, куда вы поместили скаченный iperf, в нашем случае она будет лежать на диске C:/, выполнив команду: cd c:/
  3. cmd-cdЧтобы запустить iperf, например, в режиме клиента, необходимо выполнить команду: iperf -c <ip-адрес серверной части> -t 30 -i 10,  где -t — время теста, -i — интервал обновления данных теста

Как видим, исходящая скорость исходящая скорость до сервера x.x.x.201 в среднем 15 мегабит\сек

Что умеет iperf?

Вообще, все написано в хелпе к данной утилите, но если кто-то любит читать на русском, то ключи ниже.

Общие:
-f, —format, [kmKM] формат отчёта: Kbits, Mbits, KBytes, MBytes

-i, —interval n, пауза секунд между периодическими отчётами

-l, —len n[KM], задёт длину на чтение/запись буфера (по умолчанию 8 KB)

-m, —print_mss, показать максимальный размер сегмента (MTU — TCP/IP в заголовке)

-o, —output <filename>, Запись отчёта в указанный файл

-p, —port n, задаёт порт к которому конектится или на котором вешать сервер (по умолчанию 5001)

-u, —udp, использовать UDP, а не TCP

-w, —window n[KM], TCP размер окна (размер буфера сокета)

-B, —bind <host>, привязки к хосту, интерфейсу или групповому адресу

-C, —compatibility, для использования с более старыми версиями не шлёт екстра сообщения

-M, —mss n, задать TCP максимальный размер сегмента (MTU — 40 байт)

-N, —nodelay, задать TCP без задержки, отключение алгоритма Нэгла

-v, —version, напечатать информацию о версии и выйти

-V, —IPv6Version, Использовать IPv6

-x, —reportexclude, [CDMSV] исключить C(соединение), D(данные), M(Multicast) S(настройки)
V(сервер) в отчетности

-y, —reportstyle C|c, если установлено в C или c Отчёт будет в результатах CSV (значения, разделенные запятыми)

Конкретные варианты SERVER
-s, —server, запустить в режиме сервера

-U, —single_udp, работать в однопоточном режиме UDP

-D, —daemon, запустить сервер как демон

Конкретные варианты CLIENT
-b, —bandwidth n[KM], установить пропускную способность в бит/сек (по умолчанию 1 Мбит/сек.). Эта установка требует UDP (-u).

-c, —client <host>, запустить в режиме клиента, при подключении к <host>

-d, —dualtest, двунаправленный тест одновременно

-n, —num n[KM], количество байт для передачи (вместо -t)

-r, —tradeoff, У двунаправленный тест индивидуально

-t, —time n, время передачи в секундах (по умолчанию 10 секунд)

-F, —fileinput <name>, читать отсылаемый контент серверу из файла

-I, —stdin, самому писать что отдавать серверу

-L, —listenport n, порт клиента двунаправленный

-P, —parallel n, число параллельных потоков клиента для запуска

-T, —ttl n, время жизни, для multicast (по умолчанию 1)

-Z, —linux-congestion <algo>, алгоритм управления перегрузками TCP (Linux только)