How to test the network speed/throughput between two Linux servers
iperf is a tool for performing network throughput measurements. It can test either TCP or UDP throughput. To perform an iperf test the user must establish both a server (to discard traffic) and a client (to generate traffic).
Here is my sample setup:
Fig.01 Test network speed between two Linux computers
Step 1 – Installation
You need to install iperf as per your Linux distro version. There are two versions of iperf:
The iperf/iperf3 works on Linux, Unix, Windows, *BSD and other operating systems.
Install iperf on a Ubuntu/Debian Linux server
Type the following apt-get command/[nixmcd name=”apt”] to install iperf on both servers:
$ sudo apt-get update
$ sudo apt-get install iperf
Sample outputs:
Reading package lists. Done Building dependency tree Reading state information. Done The following NEW packages will be installed: iperf 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 51.0 kB of archives. After this operation, 184 kB of additional disk space will be used. Get:1 http://mirrors.linode.com/ubuntu xenial/universe amd64 iperf amd64 2.0.5+dfsg1-2 [51.0 kB] Fetched 51.0 kB in 0s (4921 kB/s) Selecting previously unselected package iperf. (Reading database . 26108 files and directories currently installed.) Preparing to unpack . /iperf_2.0.5+dfsg1-2_amd64.deb . Unpacking iperf (2.0.5+dfsg1-2) . Processing triggers for man-db (2.7.5-1) . Setting up iperf (2.0.5+dfsg1-2) .
A note about installing iperf3 on a Debian/Ubuntu Linux
It is also possible to install iperf3 (latest version) as follows:
$ sudo apt-get install iperf3
Sample outputs:
Install iperf on a Fedora Linux server
Type the following [nixmcd name=”dnf”] to install iperf on both servers:
$ sudo dnf install iperf
A note about installing iperf3 on a CentOS/RHEL/SL/Oracle Linux
Type the following command:
$ sudo dnf install iperf3
Install iperf on a CentOS/RHEL/Oracle/Scientific Linux server
Type the following [nixmcd name=”yum”] to install iperf on both servers (first turn on EPEL repo for CentOS/RHEL):
$ sudo yum install iperf
Sample outputs:
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.mirror.snu.edu.in * epel: mirror01.idc.hinet.net * extras: centos.mirror.snu.edu.in * updates: centos.mirror.snu.edu.in Resolving Dependencies —> Running transaction check —> Package iperf.x86_64 0:2.0.8-1.el7 will be installed —> Finished Dependency Resolution Dependencies Resolved ===================================================================== Package Arch Version Repository Size ===================================================================== Installing: iperf x86_64 2.0.8-1.el7 epel 321 k Transaction Summary ===================================================================== Install 1 Package Total download size: 321 k Installed size: 396 k Is this ok [y/d/N]: y Downloading packages: iperf-2.0.8-1.el7.x86_64.rpm | 321 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : iperf-2.0.8-1.el7.x86_64 1/1 Verifying : iperf-2.0.8-1.el7.x86_64 1/1 Installed: iperf.x86_64 0:2.0.8-1.el7 Complete!
A note about installing iperf3 on a CentOS/RHEL/SL/Oracle Linux
Type the following command:
$ sudo yum install iperf3
Step 2 – Start an iperf server on serverA (server mode)
Type the following command to run iperf in server mode:
iperf -s
OR
iperf3 -s
Sample outputs:
A note about firewall config
Please note that you must open TCP port 5001 on the serverA. See how to use ufw to open a port on Ubuntu/Debian Linux:
$ sudo ufw allow from 192.168.149.0/24 to 192.168.149.69 port 5001 proto tcp
It is also possible to change the port by passing the -p option as follows (e.g. open and use TCP port 2323):
iperf -s -p 2323
Step 3 – Start an iperf server on serverB (client mode)
Type the following command to run in client mode, connecting to 192.168.149.69:
iperf -c
iperf -c
iperf -c 192.168.149.69 -p 2323
iperf -c 192.168.149.69
OR
iperf3 -c
iperf3 -c
iperf3 -c 192.168.149.69 -p 2323
iperf3 -c 192.168.149.69
Sample outputs:
Fig.02: Linux network speed test result
How to use UDP rather than TCP
On the server side:
iperf -s -u
On the client side:
iperf -c 192.168.149.69 -u
How to set number of parallel client threads to run (client mode options)
Pass the -P option:
iperf -c 192.168.149.69 -P 3
You can also set time in seconds to transmit for (default 10 secs) as follows:
iperf -c 192.168.149.69 -P 3 -t 30
Sample outputs:
———————————————————— Client connecting to 192.168.149.69, TCP port 5001 TCP window size: 85.0 KByte (default) ———————————————————— [ 5] local 192.168.181.40 port 54198 connected with 192.168.149.69 port 5001 [ 3] local 192.168.181.40 port 54194 connected with 192.168.149.69 port 5001 [ 4] local 192.168.181.40 port 54196 connected with 192.168.149.69 port 5001 [ ID] Interval Transfer Bandwidth [ 5] 0.0-30.0 sec 2.26 GBytes 647 Mbits/sec [ 3] 0.0-30.0 sec 2.89 GBytes 828 Mbits/sec [ 4] 0.0-30.5 sec 1.91 GBytes 539 Mbits/sec [SUM] 0.0-30.5 sec 7.07 GBytes 1.99 Gbits/sec
Here is output from iperf3:
## on the server side ##
iperf3 -s
## on the client side ##
iperf3 -c 192.168.149.69
Sample outputs:
Connecting to host 192.168.149.69, port 5201 [ 4] local 192.168.181.40 port 55522 connected to 192.168.149.69 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 235 MBytes 1.97 Gbits/sec 32 609 KBytes [ 4] 1.00-2.00 sec 230 MBytes 1.93 Gbits/sec 21 670 KBytes [ 4] 2.00-3.00 sec 159 MBytes 1.33 Gbits/sec 19 635 KBytes [ 4] 3.00-4.00 sec 235 MBytes 1.97 Gbits/sec 7 686 KBytes [ 4] 4.00-5.00 sec 229 MBytes 1.92 Gbits/sec 86 757 KBytes [ 4] 5.00-6.00 sec 206 MBytes 1.73 Gbits/sec 6 537 KBytes [ 4] 6.00-7.00 sec 210 MBytes 1.76 Gbits/sec 5 556 KBytes [ 4] 7.00-8.00 sec 235 MBytes 1.97 Gbits/sec 10 617 KBytes [ 4] 8.00-9.00 sec 245 MBytes 2.06 Gbits/sec 11 670 KBytes [ 4] 9.00-10.00 sec 234 MBytes 1.96 Gbits/sec 10 713 KBytes — — — — — — — — — — — — — — — — — — — — — — — — — [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 2.17 GBytes 1.86 Gbits/sec 207 sender [ 4] 0.00-10.00 sec 2.16 GBytes 1.86 Gbits/sec receiver
Getting help
Type the following command:
$ man iperf
$ iperf —help
Usage: iperf [-s|-c host] [options] iperf [-h|—help] [-v|—version] Client/Server: -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) -o, —output output the report or error message to this specified file -p, —port # server port to listen on/connect to -u, —udp use UDP rather than TCP -w, —window #[KM] TCP window size (socket buffer size) -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) -N, —nodelay set TCP no delay, disabling Nagle’s Algorithm -V, —IPv6Version Set the domain to IPv6 Server specific: -s, —server run in server mode -U, —single_udp run in single threaded UDP 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) -c, —client run in client mode, connecting to -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 receive bidirectional tests back on -P, —parallel # number of parallel client threads to run -T, —ttl # time-to-live, for multicast (default 1) -Z, —linux-congestion set TCP congestion control algorithm (Linux only) Miscellaneous: -x, —reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) S(settings) V(server) reports -y, —reportstyle C report as a Comma-Separated Values -h, —help print this message and quit -v, —version print version information and quit [KM] Indicates options that support a K or M suffix for kilo- or mega- The TCP window size option can be set by the environment variable TCP_WINDOW_SIZE. Most other options can be set by an environment variable IPERF_ , such as IPERF_BANDWIDTH.
Мониторинг пропускной способности и скорости сети в Linux
В этой статье мы перечислим некоторые утилиты с открытым исходным кодом для мониторинга сетевого трафика, пропускной способности и скорости интернета в Linux.
Olga Brykova
Read more posts by this author.
Olga Brykova
Вкратце: в этой статье мы перечислим некоторые утилиты с открытым исходным кодом для мониторинга сетевого трафика, пропускной способности и скорости интернета в Linux.
Мониторинг скорости интернета может оказаться ключевым шагом в диагностике вашего соединения и способен помочь вам обнаружить возможные проблемы. Это также поможет вам устранить неполадки с подключением интернета и найти узкие места.
Инструменты для мониторинга интернет-трафика и скорости сетевого соединения в Linux
Я представляю вам различные утилиты, которые помогут мониторить скорость вашего интернет соединения. Также я добавил инструкции по установке для дистрибутивов на основе Ubuntu/Debian, также данные утилиты могут быть легко установлены и в других дистрибутивах.
Неважно, если вы новичок, который хочет простых, работающих решений, или гуру, желающий получить как можно больше информации о сети, предпочитаете ли вы программы с графическим интерфейсом (GUI) или командной строкой (CLI), я помогу вам найти необходимую утилиту для определенной задачи.
1. NetSpeed - расширение оболочки GNOME для пользователей ПК
NetSpeed — это расширение оболочки GNOME, которое отображает суммарные скорости загрузки и скачивания на панели gnome. При нажатии на него выводятся отдельные значения в выпадающем списке.
Это применимо, только если вы используете рабочую среду GNOME. Если еще не знакомы, прочитайте руководство, чтобы узнать, как использовать расширения GNOME Shell .
2. Fast — тестировщик скорости интернета от Netflix
Fast — это CLI-утилита с открытым исходным кодом, работающая на сервисе Netflix fast.com . Хотя код самого сайта не является открытым исходным кодом, Netflix объяснил, как он работает здесь . Fast — это идеальный инструмент для тех, кто хочет проверить скорость скачивания простым способом.
После установки вы можете запустить утилиту, напишите:
И через несколько секунд вы еще раз получите свой результат
Скорость интернета на дисплее snap Fast
3. speedtest-cli: проверка скорости загрузки и скачивания
speedtest-cli — это интерфейс командной строки с открытым исходным кодом для тестирования пропускной способности интернета с использованием speedtest.net (код самой страницы не является открытым). Это быстрый и легкий инструмент для проверки скорости загрузки и скачивания.
speedtest-cli доступен в большинстве дистрибутивов и может быть легко установлен с помощью менеджера пакетов. В Debian/Ubuntu вы можете написать следующую команду:
Установили — запустите, просто напишите:
Через несколько секунд вы получите информацию о том, какой сервер использовался для проверки вашего соединения, а также сведения о скорости вашего интернет соединения. Прочтите man speedtest, чтобы узнать о дополнительных возможностях (например, не выполнять тест скачивания командой no-download ).
4. NetHogs — проверка использования пропускной способности для каждой программы
NetHogs — это простая утилита с открытым исходным кодом, которая запускается в терминале. Вместо того, чтобы разбивать трафик по протоколу или подсети, он группирует полосы пропускания по процессам. Это очень полезно для нахождения PID зависшей программы или просто для просмотра того, что съедает вашу пропускную способность. Он опирается в основном на команду /proc , поэтому большинство функций доступно только для Linux.
К счастью, NetHogs входит во многие дистрибутивы. Это означает, что вы можете установить и удалить его с помощью обычного менеджера пакетов. В Debian/Ubuntu вы можете написать такую команду:
Чтобы запустить ее, напишите:
Удобно, что вы можете указать устройства после команды (например, sudo nethogs eth0 ). Также есть дополнительные параметры, такие как: выбор интервала для частоты обновления ( -d ), информация о версии ( -V ), режим трассировки ( -t ) и некоторые другие, о них вы можете прочитать в мануале (man nethogs ).
5. nload — мониторинг интернет-трафика в режиме реального времени
nload — консольное приложение с открытым исходным кодом, которое позволяет вам отслеживать сетевой трафик и использование полосы пропускания в режиме реального времени. Он визуализирует входящий и исходящий трафик с помощью графиков, а также предоставляет дополнительную информацию (общий объем передаваемых данных, минимальное/максимальное использование сети и др.). Это простой в использовании инструмент, который иногда очень помогает.
Вы можете установить его в дистрибутивах на основе Debian и Ubuntu, используя команду:
Для запуска напишите:
Вы можете посмотреть его различные параметры в мануале ( man nload ).
6. CBM — измеритель полосы пропускания с цветным интерфейсом
CBM — очень простая утилита, которая отображает (в цвете) сетевой трафик на всех подключенных устройствах очень лаконично.
CBM — немного устаревшая программа, которую можно найти в большинстве дистрибутивов. Поэтому устанавливать и удалять ее с помощью менеджера пакетов очень просто.
Запустить CBM так же просто, как и установить. Пишем:
Команды отображаются в нижней части вашего терминала, чтобы вы могли легко их выбрать.
7. iPerf — тестирование производительности сети между двумя хостами
iPerf — это инструмент, используемый для измерения и настройки производительности сети, который может производить стандартизированные измерения производительности для любой сети. Он имеет функциональные возможности клиента и сервера и может создавать потоки данных для измерения пропускной способности, потери данных и других параметров между двумя узлами сети в одном или обоих направлениях. Существует две версии: исходная iPerf (iPerf2) и не совместимая с предыдущей версия iPerf3.
Самый простой способ установить (или удалить) iPerf или iPerf3 — использовать менеджер пакетов. Например, в Ubuntu таким образом:
Далее запускаем нужную вам версию:
Примечание. Для всех дальнейших примеров, если вы используете iPerf3, просто замените все случаи iperf на iperf3 .
Однако при этом будут отображаться только ваши параметры. Чтобы запустить iPerf , вам нужно минимум 2 устройства: один для работы в качестве клиента и один для работы в качестве сервера . Для сервера напишите:
Это откроет устройство для прослушивания через порт 5001. Чтобы подключиться к другому устройству и запустить тест, используйте команду:
Где server_address — это, конечно, адрес сервера, к которому вы пытаетесь подключиться. Это может быть либо IP-адрес , либо что-то вроде ping.online.net . У команды iPerf3 есть список серверов для тестирования. Рекомендуется прочитать Топ-31 лучших игр для Linux, в которые можно играть бесплатно
iPerf — это широко используемый инструмент, который имеет множество конкретных применений и специальных возможностей. Я не буду вдаваться в них, поскольку это выходит за рамки этой статьи. Тем не менее, вы можете почитать о них в мануале ( man iperf / man iperf3 ) или в этой документации .
8. vnStat — логгер сетевого трафика
vnStat — это монитор сетевого трафика на основе консоли с открытым исходным кодом, который использует статистику сетевого интерфейса, предоставляемую ядром в качестве источника информации, для своих периодических логов. Это означает, что vnStat, на самом деле, не будет анализировать трафик, а также гарантирует низкую загрузку процессора. Он может быть запущен без root прав.
Как и многие другие сетевые инструменты, vnStat входит в большинство хранилищ дистрибутивов. Это означает, что вы можете очень легко установить (и удалить) его, используя менеджер пакетов.
Чтобы использовать его в обычном виде, напишите:
vnStat также предлагает вам расширенные возможности, такие как возможность использования базы данных (их импорт или экспорт данных в файл). Вы можете прочесть об этом в мануале ( man vnstat ). Больше примеров можно найти на официальном сайте .
9. iftop — «топ» использования сети
iftop — это бесплатный программный инструмент мониторинга c командной строкой и открытым исходным кодом, который выводит часто обновляемый список сетевых подключений между парой хостов. Соединения могут быть упорядочены по разным параметрам, но по умолчанию они упорядочены в зависимости от использования пропускной способности, при этом отображаются только «верхние» потребители пропускной способности.
Заключение
В этой статье я рассказал вам о нескольких инструментах, которые вы можете использовать для мониторинга различной статистики, касающейся производительности вашей сети. Существует инструмент, который подходит для всех, но вы можете выбрать тот, который соответствует вашим конкретным потребностям. Я надеюсь, что эта статья была хорошим введением в мир интернет-мониторинга.
Какой ваш любимый инструмент и как вы его используете? Дайте нам знать в разделе комментариев!