Иногда, при тестировании различных правил и настроек бывает необходимо замерить пропускную способность канала, иначе говоря скорость соединения. Пригодится для тестировании шейпинга трафика средствами 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&
> с ключем
таки с ключом