IPERF: как проверить скорость сети, производительность, пропускную способность
Тестирование производительности сети с точки зрения скорости и пропускной способности является нормой как в производственной, так и в непроизводственной среде.
Подробный отчет о скорости и анализе пропускной способности очень необходим для развертывания серверов приложений, зависящих от сети. Также иногда вам необходимо дважды проверить скорость пропускной способности вашей сети при устранении неполадок. Все это требует надежного инструмента тестирования производительности сети. Этот пост будет посвящен одному такому инструменту, который называется iperf .
IPERF - это инструмент с открытым исходным кодом, который можно использовать для проверки производительности сети. Iperf намного более надежен в своих результатах тестирования по сравнению со многими другими провайдерами тестирования скорости сети онлайн.
Дополнительным преимуществом использования IPERF для тестирования производительности сети является тот факт, что очень надежно, если у вас есть два сервера, оба в географически разных местах, и вы хотите измерить производительность сети между ними.
Как установить iperf?
Установить iperf очень просто, если у вас включен репозиторий epel yum (в redhat system).
[root @ slashroot1 ~] # yum install iperf ======================================= ============================================== Размер архива версии пакета архива ===== ================================================== ========================= Установка: iperf i386 2.0.5-1.el5 epel 52 k
Установка iperf из исходного кода также очень проста. Просто скачайте исходный пакет iperf с Iperf Source Package
И выполните обычные шаги по установке источника следующим образом.
#tar -xvf iperf-2.0.5.tar.gz
Приведенная выше команда извлечет пакет tar, который вы скачали по указанной выше ссылке.
Теперь войдите в извлеченный каталог и выполните приведенную ниже команду для настройки с параметрами по умолчанию.
[root @ slashroot2 ~] # cd iperf-2.0.5 [root @ slashroot2 iperf-2.0.5] # ./configure
Теперь давайте скомпилируем его с помощью команды «make», а затем установим его с помощью команды «make install».
[root @ slashroot2 iperf-2.0.5] # make [root @ slashroot2 iperf-2.0.5] # make install
Как установить iperf в машине Windows?
Установка iperf в Windows также довольно проста. Посмотрим как.
Вы можете скачать iperf для Windows с Iperf для окон , Теперь разархивируйте этот zip-файл в папку с именем «iperf» и запустите iperf.exe внутри этого каталога.
Например, я извлек iperf zip в каталог C: \ iperf , поэтому откроет Windows CMD и перейдет в этот каталог, чтобы запустить команду iperf.exe.
C: \> cd C: \ iperf C: \ iperf> iperf.exe
Как проверить скорость сети между одной машиной Windows и машиной Linux?
Как я уже говорил, iperf можно использовать для проверки скорости между удаленными компьютерами. Это работает в модели клиент-сервер.
Операционная система не имеет значения, пока вы используете iperf. Команды для использования iperf в Windows точно такие же, как в Linux. А также другая операционная система. Обычно в тестовой среде клиент iperf отправляет данные на сервер для теста.
Прежде чем приступить к тестированию, давайте разберемся с некоторыми сетевыми концепциями, связанными с тестированием скорости.
Пропускная способность сети
Скорость передачи данных из одного места в другое по времени называется пропускной способностью. Пропускная способность считается метрикой измерения качества для жестких дисков, сети и т. Д. Она измеряется в Кбит / с (килобит в секунду), Мбит / с (мегабит в секунду), Гбит / с (гигабит в секунду).
Окно TCP
TCP (протокол управления передачей) - это надежный протокол транспортного уровня, используемый для сетевых коммуникаций. Как работает TCP, выходит за рамки этой статьи. TCP работает надежно, отправляя сообщения и ожидая подтверждения от получателя.
Когда две машины обмениваются данными друг с другом, каждая из них будет информировать другую о количестве байтов, которые она готова получить за один раз.
Другими словами, максимальный объем данных, который отправитель может отправить другому концу без подтверждения, называется размером окна. Этот размер окна TCP иногда очень сильно влияет на пропускную способность сети. Давайте возьмем пример.
Предположим, вы хотите отправить 500 МБ данных с одного компьютера на другой с размером окна tcp 64 КБ.
Это означает, что для отправки целых 500 МБ данных отправляющее устройство должно ждать 800 раз подтверждения от получателя.
500 МБ / 64 КБ = 800
Таким образом, вы можете ясно видеть, что если вы немного увеличите размер окна для настройки TCP, это может привести к значительной разнице в достигнутой пропускной способности.
Предположим, у вас есть компьютер с Windows, и вы хотите измерить скорость между ним и другим компьютером с Linux, затем вам нужно сделать один как клиент, а другой как сервер. Посмотрим как.
Мы сделаем нашу машину Windows сервером, а машину Linux - клиентом.
C: \ iperf> iperf.exe -s ---------------------------------------- -------------------- Сервер прослушивает TCP-порт 5001 Размер окна TCP: 64,0 КБ (по умолчанию) --------------- ---------------------------------------------
-S аргумент используется для указания сервера
Приведенная выше команда запускает сервер iperf на компьютере с Windows и по умолчанию запускается на порту 5001. По умолчанию также сообщается, что размер окна TCP по умолчанию составляет 64.0 КБ.
Давайте проверим пропускную способность клиентского компьютера Linux, как показано ниже.
[root @ slashroot2 ~] # iperf -c 192.168.0.101 ------------------------------------- ----------------------- Клиент, подключающийся к 192.168.0.101, TCP-порт 5001 Размер окна TCP: 16,0 КБ (по умолчанию) -------- -------------------------------------------------- - [3] локальный 192.168.0.102 порт 47326, соединенный с 192.168.0.101 портом 5001 [ID] Пропускная способность интервальной передачи [3] 0,0-10,0 с 308 МБайт 258 Мбит / с
Из приведенного выше вывода видно, что я получил скорость 258 Мбит / с. Результат показывает нечто большее.
Интервал: Интервал определяет продолжительность времени, за которое передаются данные.
Передача: все данные, переданные с помощью iperf, проходят через память и удаляются после завершения теста. Таким образом, нет необходимости очищать переданный файл после теста. В этом столбце отображается размер передаваемых данных.
Полоса пропускания: показывает скорость, с которой данные передаются.
Вы можете запустить свой сервер iperf на желаемом порту следующим способом.
C: \ iperf> iperf.exe -s -p 2000 ------------------------------------- ----------------------- Сервер прослушивает TCP-порт 2000 Размер окна TCP: 64,0 КБ (по умолчанию) ------------ ------------------------------------------------
Также вы можете указать клиенту подключиться к желаемому порту сервера, а также настроить дополнительные параметры подключения и отчетности, как показано ниже.
root @ slashroot2 ~] # iperf -c 192.168.0.101 -t 20 -p 2000 -w 40k ----------------------------- ------------------------------- Клиент, подключающийся к 192.168.0.101, TCP-порт 2000 Размер окна TCP: 80,0 КБ (ВНИМАНИЕ: запрашивается 40.0 КБайт) ---------------------------------------------- -------------- [3] локальный 192.168.0.1 [02 порт 60961, соединенный с 192.168.0.101 портом 2000 [ID] Пропускная способность интервала передачи [3] 0,0-20,0 с 1,74 ГБайт 747 Мбит / с сек
Опция -t, использованная в приведенной выше команде, указывает на передачу данных в течение 20 секунд.
-p скажет клиенту подключить порт 2000 на сервере
-w укажет желаемый размер окна. Как я уже говорил, настройка размера окна в некоторой степени улучшит скорость передачи TCP.
И из приведенных выше результатов ясно видно, что пропускная способность для всей передачи увеличилась, поскольку мы увеличили размер окна (я использую две виртуальные машины в одном физическом блоке для этой демонстрации iperf, что является причиной получения исключительной передачи ставки).
Вы также можете указать клиенту iperf показывать скорость передачи с интервалом в 1 секунду для всей 10-секундной передачи, как показано ниже с параметром -i .
[root @ slashroot2 ~] # iperf -c 192.168.0.100 -P 1 -i 1 ------------------------------- ----------------------------- Клиент подключается к 192.168.0.100, TCP-порт 5001 Размер окна TCP: 16,0 КБ (по умолчанию) - -------------------------------------------------- -------- [3] локальный 192.168.0.102 порт 49597, соединенный с 192.168.0.100 портом 5001 [ID] Пропускная способность для интервальной передачи [3] 0,0-1,0 с 28,6 МБайт 240 Мбит / с [3] 1,0-2,0 с 25,9 МБ 217 Мбит / с [3] 2,0-3,0 с 26,5 МБ / с 222 Мбит / с [3] 3,0-4,0 с 26,6 МБ / с 223 Мбит / с [3] 4,0-5,0 с 26,0 МБ / с 218 Мбит / с [3] 5,0- 6,0 с 26,2 МБайт 220 Мбит / с [3] 6,0-7,0 с 26,8 МБ 224 Мбит / с [3] 7,0-8,0 с 26,0 МБ 218 Мбит / с [3] 8,0-9,0 с 25,8 МБ 216 Мбит / с [3] 9,0-10,0 с 26,4 МБ 221 Мбит / с [3] 0,0-10,0 с 265 МБ 222 Мбит / с
До сих пор мы видели только пропускную способность одного соединения TCP. Потому что при запуске iperf по умолчанию создается только одно TCP-соединение с удаленным сервером.
Возможно, вы заметили, что некоторые интернет-менеджеры загрузки работают так быстро, когда загружают любой контент из Интернета, по сравнению с обычным загрузчиком операционной системы. Основная причина этого заключается в том, что они работают на «параллельных TCP-соединениях». Один такой менеджер загрузок, который я помню, "Internet Download Manager" ,
Давайте проверим отчет о пропускной способности, увеличив число параллельных соединений с помощью «iperf».
[root @ slashroot2 ~] # iperf -c 192.168.0.100 -P 20 ---------------------------------- -------------------------- Клиент, подключающийся к 192.168.0.100, порт TCP 5001 Размер окна TCP: 16,0 КБ (по умолчанию) ----- -------------------------------------------------- ----- [15] локальный 192.168.0.102 порт 57258, соединенный с 192.168.0.100 портом 5001 [3] локальный 192.168.0.102 порт 57246, соединенный с 192.168.0.100 портом 5001 [4] локальный 192.168.0.102 порт 57247, соединенный с 192.168. 0.100 порт 5001 [5] локальный 192.168.0.102 порт 57248 соединен с 192.168.0.100 портом 5001 [7] локальный 192.168.0.102 порт 57250 соединен с 192.168.0.100 портом 5001 [6] локальный 192.168.0.102 порт 57249 соединен с портом 192.168.0.100 5001 [10] локальный 192.168.0.102 порт 57253, соединенный с 192.168.0.100 портом 5001 [8] локальный 192.168.0.102 порт 57251, соединенный с 192.168.0.100 портом 5001 [9] локальный 192.168.0.102 порт 57252, подключенный к 192.168.0.100 порту 5001 [ 16] локальный 192.168.0.102 порт 57259, соединенный с 192.168.0.1 00 порт 5001 [19] локальный 192.168.0.102 порт 57261, соединенный с 192.168.0.100 порт 5001 [18] локальный 192.168.0.102 порт 57260, соединенный с 192.168.0.100 порт 5001 [20] локальный 192.168.0.102 порт 57262, соединенный с 192.168.0.100 портом 5001 [17] локальный 192.168.0.102 порт 57263, соединенный с 192.168.0.100 портом 5001 [21] локальный 192.168.0.102 порт 57264, соединенный с 192.168.0.100 портом 5001 [11] локальный 192.168.0.102 порт 57254, подключенный к 192.168.0.100 порту 5001 [ 12] локальный порт 57255 192.168.0.102, подключенный к порту 5001 192.168.0.100 [13] локальный порт 57256 192.168.0.102, подключенный к порту 5001 192.168.0.100 [14] локальный порт 57257 192.168.0.102, подключенный к порту 5001 192.168.0.100 [22] локальный порт 192.168.0.102 57265, соединенный с портом 192.168.0.100 5001 [ID] Ширина полосы передачи интервала [8] 0,0-10,6 с 16,6 МБ / с 13,1 Мбит / с [16] 0,0-10,6 с 16,6 МБ / с 13,1 Мбит / с [18] 0,0- 10,6 с 16,5 МБайт 13,1 Мбит / с [17] 0,0-10,7 с 16,6 МБ 13,0 Мбит / с [21] 0,0- 10,7 с 15,6 МБ 12,3 Мбит / с [12] 0,0-10,7 с 17,5 МБ 13,7 Мбит / с [22] 0,0-10,7 с 16,6 МБ 13,0 Мбит / с [15] 0,0-10,8 с 17,8 МБ 13,8 Мбит / с [3] 0,0-10,7 с 18,5 МБ / с 14,5 Мбит / с [4] 0,0-10,8 с 18,1 МБ / с 14,1 Мбит / с [5] 0,0-10,7 с 17,6 МБ / с 13,9 Мбит / с [7] 0,0-10,8 с 18,4 МБ / с 14,3 Мбит / с [ 6] 0,0-10,8 с 17,0 МБайт 13,2 Мбит / с [10] 0,0-10,8 с 16,8 МБ 13,1 Мбит / с [9] 0,0-10,8 с 16,8 МБ 13,0 Мбит / с [19] 0,0-10,6 с 16,5 МБ 13,0 Мбит / с с [20] 0,0-10,7 с 16,5 МБайт 12,9 Мбит / с [11] 0,0-10,7 с 18,0 МБ 14,0 Мбит / с [13] 0,0-10,7 с 17,8 МБ 13,9 Мбит / с [14] 0,0-10,8 с 18,2 МБ 14,1 Мбит / с [СУММА] 0,0-10,8 с 344 МБайт 266 Мбит / с
В приведенном выше примере я сказал клиенту iperf создать 20 параллельных TCP-соединений с удаленным хостом во время передачи данных. И если посмотреть на результат, вы можете ясно увидеть, что 20 различных портов на клиенте подключены к порту 5001 по умолчанию на сервере.
И все соединения имели разную скорость передачи, и в итоге мы получили суммарную пропускную способность 266 Мбит / с (что намного лучше, чем одно TCP-соединение).
Проведение теста скорости UDP в iperf
Проведение теста скорости UDP с использованием iperf предоставит вам пару дополнительных сведений о вашей сети, которые будут очень полезны при поиске узких мест в сети.
Как мы уже говорили, не только размер окна TCP, но и параметры сети, подобные приведенным ниже, также влияют на пропускную способность, достигаемую во время соединения
- Доставка из заказа
- Сетевой джиттер
- Потеря пакетов из общего количества пакетов
Для проведения теста iperf udp вам необходимо запустить сервер с параметром -u, чтобы UDP-порт 5001 был открыт на стороне сервера.
C: \ iperf> iperf.exe -s -u -------------------------------------- ---------------------- Сервер прослушивает UDP-порт 5001 Получение 1470-байтовых дейтаграмм Размер буфера UDP: 64,0 КБ (по умолчанию) --------- -------------------------------------------------- -
Теперь давайте начнем передачу данных со стороны клиента, отправив трафик UDP.
[root @ slashroot2 ~] # iperf -c 192.168.0.100 -u -b 100 м -------------------------------- ---------------------------- Клиент, подключающийся к 192.168.0.100, порт UDP 5001 Отправка дейтаграмм 1470 байт Размер буфера UDP: 107 КБ (по умолчанию ) ------------------------------------------------- ----------- [3] локальный 192.168.0.102 порт 50836, соединенный с 192.168.0.100 портом 5001 [ID] Пропускная способность интервала передачи [3] 0,0-10,0 с 97,4 МБайт 81,7 Мбит / с [3] отправлено 69508 дейтаграмм [3] Отчет сервера: [3] 0,0-10,0 с 97,4 МБ 81,8 Мбит / с 0,167 мс 49/69507 (0,07%) [3] 0,0-10,0 с 1 датаграммы получены не в порядке [root @ slashroot2 ~ ] #
В приведенном выше примере я использовал опцию -b, чтобы указать используемую пропускную способность (поскольку по умолчанию iperf UDP использует только 1 Мбит / с, я рекомендую использовать вашу полную доступную пропускную способность, чтобы получить представление)
Параметры -u также должны использоваться на стороне клиента для указания трафика UDP.
Выход сообщает нам следующую информацию.
Пропускная способность = 81,7 Мбит / с
Сетевой джиттер = 0,167 мс (сетевой джиттер - это отклонение во времени для периодического поступления грамм данных. Если вы выполняете тестирование с серверами на другой стороне земного шара, то вы можете увидеть более высокие значения джиттера в выводе iperf.)
Out of Order = 1 датаграмма
Потерян / Всего = 49/69508
Потеря дейтаграмм в 0,07 процента не так уж и значительна, однако вы можете сказать, что получили хороший коэффициент потери сетевых пакетов.
VOIP требует очень меньше потерь дейтаграммы, потому что его голосовая связь. Большая потеря грамм данных может полностью отбросить вызов. Поэтому тестирование UDP с помощью iperf будет очень полезно, если у вас есть VOIP или другие важные приложения в вашей инфраструктуре.
Вы можете получить все опции, связанные с iperf, с помощью следующей команды.
[root @ slashroot2 ~] # iperf --help
Как установить iperf?Как установить iperf в машине Windows?
Как установить iperf?