Утилиты тестирования полосы пропускания в Linux

Хорошо написано про “скоростные” параметры TCP здесь. Но вернёмся всё же к утилитам.

1. Iperf – самая широкоизвестная в последнее время. Расписывать не буду, руководств в сети достатчно. Кратко:
Запускаем сервер: iperf -s
Запускаем клиент: iperf -c ip_сервера. Тест покажет скорость ОТ клиента к серверу.
двунаправленный тест: iperf -d -c ip_сервера.
Если надо посмотреть отдельно скорость от сервера до клиента – меняем местами.

2. Netperf – самая заслуженная и точная

Состоит из 2 частей: netserver, который должен быть предварительно запущен на удалённом хосте, и netperf, который запускается в момент измерения. При запуске теста между netperf и netserver устанавливается управляющее соединение (по умолчанию – 12865/tcp), тестовые данные пересылаются по другому каналу (первый попавшийся “пользовательский” порт).

Утилита netperf имеет 2 типа параметров: глобальные и специфические для типа теста.
Глобальные параметры указываются первыми и отделяются от специфических параметров двумя знаками “минус” (“–“).
Некоторые параметры (например, размер) задаются парами. Чтобы установить одинаковое значение элементам пары необходимо указать одно значение, чтобы установить разные – значения через запятую, только первому элементу – “значение,”, только второму – “,значение”.

Глобальные параметры (основные):
-h (выдаёт перечень параметров)
-c [число] (вычисление использования ЦП, указание “числа” из предыдущего прогона может съэкономить 40 секунд на калибровку)
-C [число] (вычисление использования ЦП на удалённом хосте)
-f G|M|K|g|m|k (единицы измерения: 2^30 байт/сек, 2^20 байт/сек, 2^10 байт/сек, 10^9 бит/сек, 10^6 бит/сек, 10^3 бит/сек)
-F имя-файла (буфер передачи предварительно заполняется из этого файла, полезно для изучения эффекта сжатия данных)
-H имя-удалённого-хоста
-L имя-этого-хоста
-I вероятность,интервал-доверительности (в процентах)
-i макс-число-итераций,мин-число-итераций (10,3; для вычисления интервала доверительности)
-l число (положительное число задаёт продолжительность одной итерации теста в секундах; отрицательное число задаёт количество байт для тестов типа _STREAM и транзакций для тестов типа _RR)
-p управляющий-порт-на-удалённом-хосте[,исходящий-порт-управляющего-соединения]
-t тип-теста

Некторые типы тестов:
TCP_STREAM (тест пропускной способности в режиме TCP), специфические параметры (см. также общие специфические параметры):
-C (TCP_CORK)
-D (TCP_NODELAY)
TCP_MAERTS (тест пропускной способности TCP в обратную сторону, глобальный ключ -F не действует)
TCP_SENDFILE (тест пропускной способности TCP с использованием sendfile(), требуется глобальный ключ -F)
UDP_STREAM (тест пропускной способности в режиме UDP; передатчик “лупит”, не ожидая ответа, и достигает фантастических величин пропускной способности; реальную скорость надо смотреть во второй строке, относящейся к приёмнику)
TCP_RR (тестирование времени ответа TCP; выдаёт количество транзакций в секунду)
TCP_CC (тестирование скорости создания и удаления TCP соединений; специфический ключ -p позволяет задавать допустимый интервал исходящих портов)
TCP_CRR (тестирование скорости создания TCP соединения, обмена одной парой сообщений и удаления соединения)
UDP_RR (тестирование времени ответа UDP; выдаёт количество транзакций в секунду)
-v уровень-болтливости (0 – минимум, 1 – по умолчанию, 2 – максимум)
-W число-буферов-send,число-буферов-recv
-4 (использовать IPv4)
-6 (использовать IPv6)

Специфические параметры, общие для всех тестов TCP, UDP и SCTP (через сокеты и XTI):
-h (выдаёт перечень параметров)
-H имя-удалённого-хоста-для-данных
-L имя-этого-хоста-для-данных
-m количество-байт (размер буфера send, можно использовать суффиксы “GMKgmk”; для потоковых тестов)
-M количество-байт (размер буфера recv, можно использовать суффиксы “GMKgmk”; для потоковых тестов)
-P номер-локального-порта,номер-удалённого-порта (для данных)
-r размер-запроса,размер-ответа (для тестов на время ответа)
-s размер-выходного-буфера-здесь,размер-входного-буфера-здесь
-S размер-выходного-буфера-там,размер-входного-буфера-там
-4 (использовать IPv4 для данных)
-6 (использовать IPv6 для данных)

Параметры netserver:
-h (выдаёт перечень параметров)
-d (увеличить уровень отладки)
-L адрес-прослушивания,семейство
-p номер-порта
-4 (использовать IPv4)
-6 (использовать IPv6)
-v

Можно запускать с правами обычного пользователя.

Методика измерения пропускной способности:
– на приёмном хосте запустить netserver
– запустить на передающем хосте тест TCP с достаточной точностью
netperf -H адрес-приёмного-хоста -t TCP_STREAM -v 2 -c -C -l 50 -I 99,5

3. BWping – новая утилита, не требующая наличия сервера на другой стороне, но не дающая гарантии правильного измерения. Работает по протоколу ICMP. Хорошо подходит для быстрой оценки канала.
Запуск:
bwping [-t timeout] [-u bufsize] [-r reporting_period] [-T tos] -b kbps -s pktsize -v volume target
Опции:
-t – устанавливает время ожидания ответа. Значение по умолчанию 1 секунда.
-u – устанавливает размер буфера на передачу/прием в байтах. Значение по умолчанию рассчитывается автоматически на основе скорости передачи, размера пакета и точности таймера хоста.
-r – устанавливает интервал в секундах между периодическими сообщениями о текущих параметрах измерений. По умолчанию, периодических сообщений нет.
-T – устанавливает значение TOS для исходящих ICMP пакетов. По умолчанию, ноль.
-b – устанавливает скорость передачи данных в килобитах в секунду.
-s – устанавливает размер пакета в байтах.
-v –устанавливает объем трафика для передачи в байтах.

Например:

[root@aaa ~]# bwping -r 30 -b 6000 -s 1500 -v 10000000 1.1.1.1
Target: 1.1.1.1 (1.1.1.1), transfer speed: 6000 kbps, packet size: 1500 bytes, traffic volume: 10000000 bytes
Total: pkts sent/rcvd: 6667/5567, volume rcvd: 8350500 bytes, time: 13 sec, speed: 5138 kbps, rtt min/max/average: 20/270/20 ms

Пакет для Centos лежит в моём репозитории:
Centos 6 – bwping.i386 bwping.x64

Утилита для генерации UDP трафика из WindowsTfgen

Обсуждение закрыто.