» Iperf - утилита для тестирования пропускной способности сети. : Берлога инженера - бесплатные программы - стереофото - справочные материалы - обои для рабочего стола


Iperf - утилита для тестирования пропускной способности сети.

В своей статье “Сравнение производительности маршрутизаторов доступа” мы вскользь останавливались на методике тестирования пропускной способности. Там для генерации тестового трафика использовался Smart Bits - штука, выполненная в железе, мощная и безумно дорогая.

А как поступить, если необходимо произвести нагрузочное тестирование канала связи, маршрутизатора и при этом остаться при своих деньгах? Не знаете? Спросите меня :). Выход есть.

Заходим на сайт http://dast.nlanr.net/projects/Iperf/ (для линуксоидов http://www.netperf.org/) и скачиваем утилиту iperf (для Linux качаем netperf). Сразу замечу, что обе утилиты используют один и тот же протокол связи, и поэтому вполне возможно запустив сервер под Linux, генерировать трафик клиентом под Windows.

Внимание! Утилита работает под Windows 2000 и выше. Возможно, она запустится и под NT, но достоверных сведений об этом не обнаружено, а сам я не проверял ввиду отсутствия доступа к последней.

В комплект утилиты входит документация, в которой расписаны ключики для запуска исполняемого файла. Всё довольно подробно, поэтому я здесь расскажу о примерах использования iperf и особенностях работы с ним.

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

Теперь примеры.

Проверка на 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).

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

 Рекомендуйте на news2.ru     Занесите в del.icio.us

Читайте также:
8. Сети
Анализ безопасности сети
Бесплатные программы, которые мы выбираем
Бесплатные программы для Windows





7 комментария to “Iperf - утилита для тестирования пропускной способности сети.”

  1. Берлога инженера » Архив блога » Бесплатные программы для Windows :

    […] Iperf - главный инструмент сетевых дел мастера. На днях версия перевалила за 2.0! Функциональность растёт, исправляются ошибки. Подробности - на сайте. […]

  2. Sergey :

    Для включения установки ToS в windows надо выполнить следующее:
    ————–
    Follow these steps to enable the IP_TOS option for the Winsock setsockopt
    function and the -v option for the ping utility on Windows 2000:
    1. Start Registry Editor (Regedt32.exe).
    2. Go to the following key:

    HKEY_LOCAL_ MACHINE on Local
    Machine\System\CurrentControlSet\Services\Tcpip\Parameters\

    NOTE: The registry key is one path.
    3. On the Edit menu, click Add Value, and then type DisableUserTOSSetting.
    Click
    REG_DWORD in the Data Type box, and then click OK.
    4. Enter 0 in the prompt box.
    5. Quit Registry Editor, and then restart the computer.
    ==========
    Удачи…

  3. Алексей :

    Спасибо! Будем пробовать.

  4. pavlinux :

    > 5. Quit Registry Editor, and then restart the computer.

    Ага, щаззз, 30 раз тебе ребутом по интерфейсу…. In RealTime ПЛИЗ !!!

  5. Rosigma :

    Реестр винды редко позволяет изменять параметры реестра в реалтайм ибо работает с зеркалом реестра и большинство изменений в значимых параметрах принимает к сведению после ребута.

  6. Maxim :

    iperf -c 192.168.17.195 -d

    [1864] local 192.168.17.198 port 3991 connected with 192.168.17.195 port 5001
    [1840] local 192.168.17.198 port 5001 connected with 192.168.17.195 port 3157
    [ ID] Interval Transfer Bandwidth
    [1840] 0.0-10.0 sec 69.5 MBytes 58.3 Mbits/sec
    [1864] 0.0-10.0 sec 97.4 MBytes 81.6 Mbits/sec

    Как понять, какая строчка отвечает за исходящий тарфик, а какая за вход. по отношению к клиенту?

  7. Алексей :

    Если мне память не изменяет, то по-умолчанию сервер слушает 5001 порт. То есть в данном случае строчка 1864 будет про исходящий трафик, а 1840 - про входящий (для хоста 192.168.17.198)

Оставить комментарий

 
Оман, Англия; рибай, мясной ресторан, винная карта; кондиционера; ОптКреп шпилька, крепеж, метизы со склада в Москве; трубы картинка