» Поддержка » Статьи » Телематические услуги
назад » Тестирование скорости локальной сети с помощью IPERF
Бывают ситуации, когда необходимо измерить фактическую скорость передачи данных между двумя узлами по каналу связи Ethernet (скорость передачи данных по локальной сети).
Протестировать скорость локальной сети можно несколькими способами: передать большой файл по FTP или HTTP и засечь время передачи файла, затем поделим размер файла в МБ (мегабайтах) на время передачи (в секундах) и получим скорость нашего канала в МБ/с (магабайт в секунду), если умножим это значение на 8, то получим значение скорости в Мб/с (мегабит в секунду). А можно для тестирования скорости локальной сети использовать специализированные программы. Одной из таких программ является IPERF (http://iperf.sourceforge.net/).
Iperf — кроссплатформенная консольная клиент-серверная программа — генератор TCP и UDP трафика для тестирования пропускной способности локальной или распределённой сети. Iperf не требует установки. Iperf для измерения ёмкости канала пользуются даже крупные провайдеры. Скачать программу Ipref для Windows можно на нашем сайте в разделе программы iperf. Iperf проста в использовании. Для тестирования скорости локальной сети вам понадобятся:
Сначала необходимо запустить серверную часть программы, затем клиентскую. Для "сервера" запуск iperf происходит следующим образом:
Перечень всех параметров iperf с переводом:
-f, --format [kmKM] format to report: Kbits, Mbits, KBytes, Mbytes В каком формате показывать скорость
-i, --interval # seconds between periodic bandwidth reports – с какими интервалами отображать промежуточные результаты
-l, --len #[KM] length of buffer to read or write (default 8 KB) - размер буфера (можно не менять)
-m, --print_mss print TCP maximum segment size (MTU - TCP/IP header) - показывать инфрмацию по пакетам
-p, --port # server port to listen on/connect to порт на котором сервер будет принимать соединения а клиент соединятся (по умолчанию 5001)
-u, --udp use UDP rather than TCP - использовать UDP вместо TCP
-w, --window #[KM] TCP window size (socket buffer size) - размер окна TCP
-B, --bind bind to , an interface or multicast address - для сервера, если несколько интерфейсов указывает на каком начинать принимать трафик
-C, --compatibility for use with older versions does not sent extra msgs - режим совместимости со старыми версиями( не интересен)
-M, --mss # set TCP maximum segment size (MTU - 40 bytes) - позволяет изменить MSS
-N, --nodelay set TCP no delay, disabling Nagle's Algorithm – меняет опции TCP (тоже трогаем)
-V, --IPv6Version Set the domain to IPv6 – использовать IP версии 6 (пока не актуально)
Server specific: Опции для сервера
-s, --server run in server mode - запустить как сервер и отображать всю информацию на экран
-D, --daemon run the server as a daemon - запустить как сервер и не отображать информацию
Client specific: Опции клиента
-b, --bandwidth #[KM] for UDP, bandwidth to send at in bits/sec (default 1 Mbit/sec, implies -u) - используемая полоса для UDP (По умолчанию 1Mbit/sec)
-c, --client run in client mode, connecting to - запустить как клиент и соединится с IP
-d, --dualtest Do a bidirectional test simultaneously - тестировать линию в обе стороны
-n, --num #[KM] number of bytes to transmit (instead of -t) - установить предел для передаваемого трафика
-r, --tradeoff Do a bidirectional test individually - не делать двунаправленное тестирование
-t, --time # time in seconds to transmit for (default 10 secs) - тестировать и усреднять по времени
-F, --fileinput input the data to be transmitted from a file - не генерирует трафик а передает готовый файл
-I, --stdin input the data to be transmitted from stdin
-L, --listenport # port to recieve bidirectional tests back on - порт на котором клиент будет принимать двунаправленный трафик
-P, --parallel # number of parallel client threads to run - запустит параллельно несколько потоков
-T, --ttl # time-to-live, for multicast (default 1) – время жизни пакета для мультикаста
Для тех кто не любит CLI (консоль) есть графический интерфейс для iperf, написанный на Java.
Протестировать скорость локальной сети можно несколькими способами: передать большой файл по FTP или HTTP и засечь время передачи файла, затем поделим размер файла в МБ (мегабайтах) на время передачи (в секундах) и получим скорость нашего канала в МБ/с (магабайт в секунду), если умножим это значение на 8, то получим значение скорости в Мб/с (мегабит в секунду). А можно для тестирования скорости локальной сети использовать специализированные программы. Одной из таких программ является IPERF (http://iperf.sourceforge.net/).
Iperf — кроссплатформенная консольная клиент-серверная программа — генератор TCP и UDP трафика для тестирования пропускной способности локальной или распределённой сети. Iperf не требует установки. Iperf для измерения ёмкости канала пользуются даже крупные провайдеры. Скачать программу Ipref для Windows можно на нашем сайте в разделе программы iperf. Iperf проста в использовании. Для тестирования скорости локальной сети вам понадобятся:
- два компьютера (один будет выступать в роли сервера, другой в роли клиента), подключенные к сети и с назначенными IP-адресами
- собственно, iperf (под Linux или Windows) на каждом компьютере
- компьютеры должны пинговаться
- если тестироваться будет определённый порт TCP или UDP, то доступ на этот порт должен быть открыт.
Общая методика измерений
Для повышения точности измерений скорости передачи данных по локальной сети рекомендуется придерживаться следующих правил:- Закрыть или остановить все программы, передающие данные по сети на обоих компьютерах.
- Закрыть или остановить максимум программ для обеспечения необходимых ресурсов процессора и памяти на обоих компьютерах.
- Обеспечить возможность прохождения тестовой информации по рабочим портам соответствующими разрешениями в настройках файрволов.
- Документировать полученные результаты.
Сначала необходимо запустить серверную часть программы, затем клиентскую. Для "сервера" запуск iperf происходит следующим образом:
iperf -s -p 80параметр -s указывает на то, что этот компьютер будет сервером, параметр -p 80 указывает что тестировать будем 80-й TCP порт. Если нужно протестировать UDP порт, то нужно добавить флаг -u (использовать UDP пакеты):
iperf -s -u -p 80На клиенте запуск iperf производится со следующими параметрами:
iperf -c 172.16.12.1 -p 80 -t 180здесь -с указывает что это клиентская часть, 172.16.12.1 – ip адрес сервера, -t 180 указывает, что тестировать скорость локальной сети в течение 180 секунд (3 минуты).
Так выглядит запущенная серверная часть, в процессе измерения скорости локальной сети, видно, что клиент с ip 1.1.1.2 подключился на 80 TCP порт.
Так выгладит клиентская часть Iperf во время измерения скорости канала:
После завершения тестирования, на "клиенте" и на "сервере" отображается измеренная скорость канала связи:
А вот скриншот из реальной жизни (тест в прямом и обратном направлении скорости локальной сети):
Перечень всех параметров iperf с переводом:
-f, --format [kmKM] format to report: Kbits, Mbits, KBytes, Mbytes В каком формате показывать скорость
-i, --interval # seconds between periodic bandwidth reports – с какими интервалами отображать промежуточные результаты
-l, --len #[KM] length of buffer to read or write (default 8 KB) - размер буфера (можно не менять)
-m, --print_mss print TCP maximum segment size (MTU - TCP/IP header) - показывать инфрмацию по пакетам
-p, --port # server port to listen on/connect to порт на котором сервер будет принимать соединения а клиент соединятся (по умолчанию 5001)
-u, --udp use UDP rather than TCP - использовать UDP вместо TCP
-w, --window #[KM] TCP window size (socket buffer size) - размер окна TCP
-B, --bind bind to , an interface or multicast address - для сервера, если несколько интерфейсов указывает на каком начинать принимать трафик
-C, --compatibility for use with older versions does not sent extra msgs - режим совместимости со старыми версиями( не интересен)
-M, --mss # set TCP maximum segment size (MTU - 40 bytes) - позволяет изменить MSS
-N, --nodelay set TCP no delay, disabling Nagle's Algorithm – меняет опции TCP (тоже трогаем)
-V, --IPv6Version Set the domain to IPv6 – использовать IP версии 6 (пока не актуально)
Server specific: Опции для сервера
-s, --server run in server mode - запустить как сервер и отображать всю информацию на экран
-D, --daemon run the server as a daemon - запустить как сервер и не отображать информацию
Client specific: Опции клиента
-b, --bandwidth #[KM] for UDP, bandwidth to send at in bits/sec (default 1 Mbit/sec, implies -u) - используемая полоса для UDP (По умолчанию 1Mbit/sec)
-c, --client run in client mode, connecting to - запустить как клиент и соединится с IP
-d, --dualtest Do a bidirectional test simultaneously - тестировать линию в обе стороны
-n, --num #[KM] number of bytes to transmit (instead of -t) - установить предел для передаваемого трафика
-r, --tradeoff Do a bidirectional test individually - не делать двунаправленное тестирование
-t, --time # time in seconds to transmit for (default 10 secs) - тестировать и усреднять по времени
-F, --fileinput input the data to be transmitted from a file - не генерирует трафик а передает готовый файл
-I, --stdin input the data to be transmitted from stdin
-L, --listenport # port to recieve bidirectional tests back on - порт на котором клиент будет принимать двунаправленный трафик
-P, --parallel # number of parallel client threads to run - запустит параллельно несколько потоков
-T, --ttl # time-to-live, for multicast (default 1) – время жизни пакета для мультикаста
Для тех кто не любит CLI (консоль) есть графический интерфейс для iperf, написанный на Java.