Материал просмотрен 11,239 раз(а)

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

Попалась мне на глаза отличная утилитка, с помощью которой это очень легко можно сделать. Утилитка называется Iperf.

Где скачать:

FreeBSD: Утилита есть в портах.

#cd /usr/ports/benchmarks/iperf
#make install clean

Windows: http://iperf.ru/wp-content/uploads/2009/07/jperf-2.0.0.zip

Как пользоваться:

Утилиту запускаем на двух разных узлах. На первом (назовем его сервер) с ключом -s, на втором (клиент) с ключом -c <IP>, где в качестве IP будет IP-адрес сервера.

Пример использования:

На узле 1 (192.168.1.10) запускаем:

iperf -s

На узле 2 запускаем:

iperf -c 192.168.1.10

Программа выдает отчёт, передавая TCP данные в течении 10 секунд на порт 5001.

Или вот, нестандартный пример:

iperf.exe -s -u -i1 -p 65012

Запустили серверную часть (ключ -s), готовимся принимать UDP датаграммы (ключ -u), на порт 65012 (ключ -p), с выводом отчета раз в секунду (ключ -i).

iperf -u -c 192.168.1.10 -n 100m -p 65012

Запускаем клиентскую часть (ключ -c), по протоколу UDP (ключ -u), данные на узел 192.168.1.10, объем данных 100 Мб (ключ -n) на порт 65012 (ключ -p)

Как видим, пропускная способность моего канала около мегабита (слава ipfw!)

Дополнительные ключи:

  • -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 (значения, разделенные запятыми)
  • -s, –server запустить в режиме сервера
  • -U, –single_udp работать в однопоточном режиме UDP (для сервера)
  • -D, –daemon запустить сервер как демон (для сервера)
  • -b, –bandwidth n[KM] установить пропускную способность в бит/сек (по умолчанию 1 Мбит/сек.) Это установка требует UDP (-u) (клиент).
  • -c, –client <host> запустить в режиме клиента, при подключении к <host&