Как измерить полосу пропускания канала сети (iperf) |
![]() |
Добавил(а) microsin | |||||||||||||||
Открыл для себя очень удобную утилиту iperf [1]. Работает под всеми системами, бесплатная, с открытыми исходниками. Под Windows не требует установки. Пример установки на FreeBSD и других операционных системах см. [2]. Меряет довольно точно - по крайней мере, результаты правдоподобные, и совпадают друг с другом при нескольких измерениях. Программу нужно запускать на двух компьютерах, по обе стороны тестируемого канала (с одной стороны - в режиме сервера, с другой - в режиме клиента). Скорость (полоса канала) тестируется при этом только в одном направлении - от клиента к серверу, то есть клиент передает данные, а сервер принимает. Чтобы протестировать полосу канала в обратном направлении, сервер и клиент меняются местами на концах канала. iperf может генерить трафик "в никуда", например на несуществующий адрес. С помощью этого можно загрузить канал или сетевой интерфейс на необходимую величину - см. Пример 4. Хорошую инструкцию по использованию программы см. [4]. Для получения подсказки об использовании утилиты достаточно набрать iperf --help. При тестировании UDP лучше задавать полосу канала, величиной немного более ожидаемой, с помощью ключа -b. Если ключ -b не указать, то предполагается по умолчанию полоса 1 мбит/сек, и скорость при тестировании не будет превышать этой величины. В примере ожидается, что полоса канала должна быть 2 мегабита: Пример 3. При желании можно добавить к скрипту другие вкусности - обработку командной строки, где указывается remote IP, порт для тестирования, протокол UDP или TCP и проч. Пример 5. На скорость может иногда влиять размер окна TCP (TCP window size). Этот параметр можно задать опцией -w. Если не задавать, то по умолчанию размер окна принимается величиной 8 кБайт. Пример 6. Запуск в режиме демона (как служба, она в списке служб будет называться IPerf Service), протокол UDP, порт по умолчанию 5001: Следующая информация по TCP window size взята из хорошей статьи [5]. В системе Windows NT размер приемного окна может увеличиваться на величину, кратную максимальному размеру сегмента (Maximum Segment Size, MSS). Значение MSS определяется во время установления соединения. По умолчанию приемное окно задает размер данных 8 Кбайт для Windows NT 4.0 и 16 Кбайт для Windows NT 5.0. Такой размер окна выставляется в реестре операционной системы (параметр ТсрWindowSize — столбец 2 табл. 1). Размер окна, устанавливаемый в сетях Ethernet, позволяет передать 8760 байт информации (8 Кбайт, размещенные в шести сегментах по 1460 байт) для операционной системы Windows NT 4.0 и 17520 байт (16 Кбайт, размещенные в 12 сегментах по 1460 байт) для Windows NT 5.0. Таблица 1. Параметры реестра Windows NT, регулирующие работу протокола TCP
Для ОС Microsoft Windows NT 5.0 размер окна рассчитывается следующим образом. Первый запрос на установление соединения, посылаемый удаленному абоненту, предлагает установить размер окна, определяющий 16 Кбайт (16 384 байт) данных. После формирования соединения размер приемного окна округляется до объема данных, кратных максимальному размеру сегмента MSS, который был оговорен в процессе установления соединения. Если размер приемного окна определяет объем данных, близкий к четырехкратному значению MSS, то окно выравнивается до значения 4MSS, которое сохранится до тех пор, пока не будет активизирован алгоритм масштабирования окна. В операционной системе Windows NT 5.0 окно масштабируется автоматически, если параметр ТсрWindowSize реестра установлен в значение, превосходящее 64 Кбайт. Масштабирование окна можно запретить вручную параметром Tcp1323Opts (столбец 3 табл. 1). Работать с окном, размер которого превышает 64 Кбайт, можно только в том случае, если абонент поддерживает эту опцию. Значение по умолчанию устанавливается как наименьшее из следующих величин: 0xFFFF; значение дополнительного параметра GlobalMaxTcpWindowSize в реестре ОС Windows NT; наибольшее из четырехкратного значения максимального размера данных TCP в сети и значения 16 384, выравненного до кратного размера данных протокола TCP. Значение по умолчанию для сети Ethernet составляет 17 520 байт (в реализации TCP для Windows NT 5.0). Оно может быть немного уменьшено, если соединение установлено с абонентом, который поддерживает алгоритмы SACK и временные метки (time stamp), так как они увеличивают размер заголовка протокола TCP сверх обычного 20-байтного размера, оставляя меньше места для данных. Размер окна является одновременно и глобальным параметром, и параметром, устанавливаемым отдельно на каждом интерфейсе в зависимости от того, где расположен ключ реестра. Значение для определенного интерфейса перекрывает значение для всей системы. Параметр Tcp1323Opts может принимать следующие значения: 0 - применение опций RFC 1323 запрещено, 1 — разрешено использовать только масштабирование окна; 2 — разрешено применять только временные метки; 3 — разрешено использовать обе опции. На рисунке иллюстрируется пример тестирования канала связи между IP 10.81.23.103 (на нем запущена сессия RDP и в ней командная строка для запуска ipef) и IP 10.50.0.246 UDP-трафиком на порте 4100 (-u -p4100) в течение 2 минут (-t 120): На заднем плане видно окно RDP компьютера 10.81.23.103, в котором запущен taskmgr в режиме отрображения утилизации сети (слева вверху) и iperf в режиме сервера (справа вверху). Внизу запущены два такие же окна на локальной машине 10.50.0.246 (iperf работает в режиме клиента). Ожидаемая полоса пропускания канала должна быть 40 мегабит, поэтому в командной строке клиента (он посылает трафик на сервер) указана несколько бОльшая полоса - 41 мегабит (-b 41000000). На диаграмме taskmgr хорошо видно, что пакеты до сервера дошли не все - у taskmgr сервера загрузка сетевого интерфейса во время теста была несколько меньше, чем у клиента (в среднем 37% против 41%). Это хорошо согласуется с результатами выдачи iperf - скорость отправки 39.4 мегабита, скорость приема 35.1 мегабит, потеряно 11% пакетов. Итак, по результатам теста полоса пропускания в направлении от хоста 10.50.0.246 к хосту 10.81.23.103 примерно соответствует заявленной полосе 40 мегабит. [Ссылки] 1. What is iPerf / iPerf3 site:iperf.fr. |