Iperf — утилита для тестирования пропускной способности сети, за счет генерирования трафика на сервере и приеме его на клиентской машине.

Скачать утилиту

Так же стоит обратить внимание на утилиту netperf.

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

Примеры.

Проверка на TCP трафике.

Сервер

iperf -s

Клиент

iperf -c server_host

Здесь server_host — адрес машины, на которой запущен iperf в режиме сервера. Вот, собственно и всё. Сначала запускаем сервер, затем клиент, и в течение 10 секунд между ними будет идти трафик, после чего соединение будет разорвано и выведена статистика.

Чтобы увеличить продолжительность соединения, необходимо добавить в строку запуска клиента параметр -t nsec, где nsec — продолжительность соединения в секундах.

Не менее полезным будет ключик -i nsec. Здесь nsec соответствует периоду (в секундах, естественно), через который будет выводиться статистика.

Проверка на UDP трафике.

Для запуска iperf в режиме UDP необходимо добавить и клиенту и серверу ключи -u.

Протокол UDP более “тупой”, что даёт нам как некоторые преимущества, так и недостатки. Впрочем, для целей тестирования, недостатки опять-таки превращаются в преимущества.

Итак, что мы можем:

* менять длину передаваемых пакетов
* менять полосу передаваемого трафика
* работать на односторонних каналах
* использовать iperf без запуска сервера, если канал не сквозной, а необходимо просто генерировать заданный трафик для нагрузки

Для изменения длины пакета используется ключ -l length. Следует только помнить, что при length=0 реальная длина Ethernet-фрейма будет составлять 54 байта и делать в своих расчётах соответствующую поправку.

Для изменения полосы трафика используется ключ -b bandwidth. Параметр bandwidth выражается в битах в секунду и может содержать десятичную точку и суффиксы k и M, соответствующие приставкам кило- и мега-.

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

Мы можем запустить несколько экземпляров клиентов и серверов на одной и той же машине. Для развязки трафика используется назначение разных портов при помощи параметра -p port его значение на клиенте и соответствую щем сервере должно быть одинаковым (по умолчанию, он имеет значение 5001).

Практика показала, что при запуске нескольких клиентов на одной машине, iperf захватывает практически все ресурсы ЦП, из-за чего в некоторых потоках возможно пропадание пакетов. Здесь, видимо, имеется некая ошибка в коде, вызывающая некорректную работу при context switching. Всё вышеуказанное справедливо для iperf. Netperf работает под Linux вполне корректно.

В файлах помощи вы найдёте ещё параметр -S, позволяющий устанавливать значение Type Of Servise (TOS) в IP заголовке. Вынужден вас разочаровать, под Windows это не работает. (Что характерно, я не смог установить это поле и в стандартном ping для Windows).

Взято и немного доработано с берлоги инженера

Tagged with:  

4 Responses to Тестирование пропускной способности сети

  1. Alex:

    Есть нужно просто посмотреть текущую загрузку интерфейса (без генерирования трафика), то я использую в linux iptraf.

  2. admin:

    Это действительно очень удобная утилита, приятный интерфейс, есть только 1 недостаток — она не портирована на FreeBSD :(

  3. Ivlex:

    У меня в результате тестирования с параметрами iperf -s на сервере и iperf -c server_host -t 30 на клиенте через vpn-туннель намерялась скорость 8,3 мегабит, а провайдер дает мне 5, а на другом конце туннеля 8 мегабит. В чем дело?

  4. Passenger:

    Для того что бы гарантировать 5 Мбит провайдер иногда дает клиенту большую ширину канала. При более длительном тесте скорее всего скорость выровняется до 5 Мбит.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>