скорость сетевого соединения

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

скорость сетевого соединения

Непрочитанное сообщение Olej » 07 июн 2016, 18:33

Как определить реальную скорость сетевого соединения (TCP, например).
В LAN (при прямом, локальном подключении) :!:

Реальную, потому как скорость IP соединения может радикально отличаться от декларируемой скорости физической среды, например:
- при WiFi соединении - от дальности
- при использовании WiFi репитеров - от их числа (есть непроверенные сообщения)
- при использовании PowerLine адаптеров - от качества электросети ... и, возможно, от протяжённости

Кроме того, из-за необходимости синхронизации, передачи объёмов служебной информации и др. физическая скорость среды может в разы превосходить скорость передачи целевой информации через соединение.

Интересует именно вопрос: как измерить скорость передачи потока информации через соединение (а не распространение ICMP/IP пакетов в среде - ping и т.д.).
Естественно, что все остальные хосты LAN на время измерения переводим в режим молчания - исключить коллизии, повторные передачи и вообще загрузку среды LAN при передаче информации.

Описано достаточно много программ-утилит для таких измерений. Но :
- зачастую это Windows .exe (не интересно)
- часто это очень устаревшие программы (не актуально)

Вопрос: какие Linux программы можно удобно и достоверно использовать для измерение пропускной способности канала хост-хост в LAN?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Скорость сетевого соединения

Непрочитанное сообщение Olej » 07 июн 2016, 20:29

Вариант 1 : старый добрый iperf

Присутствует во всех дистрибутивах, но не установлен по умолчанию.

Код: Выделить всё

[olej@dell ~]$ dnf list iperf
Последняя проверка окончания срока действия метаданных: 5 days, 3:22:48 назад, Thu Jun  2 16:43:33 2016.
Доступные пакеты
iperf.x86_64                                           2.0.8-2.fc23                                            fedora
[olej@dell ~]$ sudo dnf install iperf
...
Установлено:
  iperf.x86_64 2.0.8-2.fc23
Выполнено!
С этого же хоста (бегать лень) устанавливаю iperf на удалённом с которым буду проверять трафик:

Код: Выделить всё

[olej@dell ~]$ ssh -X 192.168.1.9
olej@192.168.1.9's password:
Welcome to Linux Mint 17.1 Rebecca (GNU/Linux 3.13.0-37-generic i686)
Welcome to Linux Mint
 * Documentation:  http://www.linuxmint.com
Last login: Mon Jun  6 12:51:17 2016 from 192.168.1.101

Код: Выделить всё

olej@nvidia ~ $ apt install iperf
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
  iperf
...
Настраивается пакет iperf (2.0.5-3) …
Тестируем трафик:
- сервер

Код: Выделить всё

olej@nvidia ~ $ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.9 port 5001 connected with 192.168.1.101 port 50226
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.6 sec  13.5 MBytes  10.7 Mbits/sec
^C
- клиент

Код: Выделить всё

[olej@dell ~]$ iperf -c 192.168.1.9
------------------------------------------------------------
Client connecting to 192.168.1.9, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.101 port 50226 connected with 192.168.1.9 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  13.5 MBytes  11.3 Mbits/sec
Это обмен TCP по трассе 192.168.1.101 => 192.168.1.9 :
ноутбук =WiFi=> TP-Link TD-W8101G роутер =Ethernet 100Mbps=> TP-Link TL-PA2010P =PowerLine=> ASUS PL-X52P =Ethernet 100Mbps=> десктоп

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Скорость сетевого соединения

Непрочитанное сообщение Olej » 07 июн 2016, 20:40

Olej писал(а): Это обмен TCP по трассе 192.168.1.101 => 192.168.1.9 :
ноутбук =WiFi=> TP-Link TD-W8101G роутер =Ethernet 100Mbps=> TP-Link TL-PA2010P =PowerLine=> ASUS PL-X52P =Ethernet 100Mbps=> десктоп
Теперь то же самое, но дэйтаграммами UDP:
- сервре

Код: Выделить всё

olej@nvidia ~ $ iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.9 port 5001 connected with 192.168.1.101 port 35271
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec   9.264 ms    0/  893 (0%)
^C

- клиент

Код: Выделить всё

[olej@dell ~]$ iperf -u -c 192.168.1.9
------------------------------------------------------------
Client connecting to 192.168.1.9, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.101 port 35271 connected with 192.168.1.9 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec
[  3] Sent 893 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec   9.264 ms    0/  893 (0%)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Скорость сетевого соединения

Непрочитанное сообщение Olej » 11 июн 2016, 12:35

Olej писал(а):Вариант 1: старый добрый iperf
Могут ли влиять скорости процессоров сервера и клиента iperf (или любого другого измерителя скорости канала) на результаты измерения скорости?
(т.е. могут ли вносить существенную разницу в цифру)
Всвтречал, может, кто-то об этом публикации или обсуждения...
Кто является в этом случае ограничивающим фактором: канал передачи или процессоры на концах?

Но это легко проверить:

Код: Выделить всё

olej@nvidia ~ $ cat /proc/cpuinfo | grep 'model name'
model name      : Pentium(R) Dual-Core  CPU      E6600  @ 3.06GHz
model name      : Pentium(R) Dual-Core  CPU      E6600  @ 3.06GHz

olej@nvidia ~ $ iperf -c 127.0.0.1
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 5001
TCP window size: 2.50 MByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 50467 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  18.5 GBytes  15.9 Gbits/sec

olej@nvidia ~ $ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 127.0.0.1 port 5001 connected with 127.0.0.1 port 50467
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  18.5 GBytes  15.9 Gbits/sec
^C
Издержки производительности процессора, создающего поток 15.9 Gbits/sec, несоизмеримы со скоростями канала порядка 10-30 Mits/sec (при тех же параметрах), наблюдаемыми на реальном сетевом канале.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Скорость сетевого соединения

Непрочитанное сообщение Olej » 11 июн 2016, 12:48

Olej писал(а): Издержки производительности процессора, создающего поток 15.9 Gbits/sec, несоизмеримы со скоростями канала порядка 10-30 Mits/sec (при тех же параметрах), наблюдаемыми на реальном сетевом канале.
Самый медленный процессор, который у меня оказался под рукой:

Код: Выделить всё

olej@atom ~ $ cat /proc/cpuinfo | grep 'model name'
model name	: Intel(R) Atom(TM) CPU  330   @ 1.60GHz
model name	: Intel(R) Atom(TM) CPU  330   @ 1.60GHz
model name	: Intel(R) Atom(TM) CPU  330   @ 1.60GHz
model name	: Intel(R) Atom(TM) CPU  330   @ 1.60GHz

olej@atom ~ $ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 127.0.0.1 port 5001 connected with 127.0.0.1 port 53127
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  3.89 GBytes  3.34 Gbits/sec
^C

olej@atom ~ $ iperf -c 127.0.0.1
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 5001
TCP window size: 2.50 MByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 53127 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  3.89 GBytes  3.34 Gbits/sec

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Скорость сетевого соединения

Непрочитанное сообщение Olej » 11 июн 2016, 16:10

Olej писал(а): Самый медленный процессор, который у меня оказался под рукой:
Быстрый процессор:

Код: Выделить всё

[olej@dell ~]$ cat /proc/cpuinfo | grep 'model name'
model name      : Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz
model name      : Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz
model name      : Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz
model name      : Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz
model name      : Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz
model name      : Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz
model name      : Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz
model name      : Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz

[olej@dell ~]$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 127.0.0.1 port 5001 connected with 127.0.0.1 port 40970
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  23.6 GBytes  20.3 Gbits/sec
^C

[olej@dell own.WORK]$ iperf -c 127.0.0.1
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 5001
TCP window size: 2.50 MByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 40970 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  23.6 GBytes  20.3 Gbits/sec
Здесь же убеждаемся, что iperf (и предполагаю что любая измерительная утилита) не умеет использовать многопроцессорность и выполняется на одиночном процессоре:

Код: Выделить всё

[olej@dell ~]$ taskset -c 0 iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 127.0.0.1 port 5001 connected with 127.0.0.1 port 41182
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  24.2 GBytes  20.8 Gbits/sec
^C

[olej@dell own.WORK]$ taskset -c 2 iperf -c 127.0.0.1
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 5001
TCP window size: 2.50 MByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 41182 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  24.2 GBytes  20.8 Gbits/sec

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Скорость сетевого соединения

Непрочитанное сообщение Olej » 11 июн 2016, 16:42

Вариант 2 :

Передавать большой фиксированный объём данных, засекая при этом время всей операции.
Обычно это делают передавая файл с хоста на хост. Это не очень здорово, потому что вовлекаются времена дисковых операций: чтение файла на источнике и запись файла на приёмнике.

Но можно вместо файлов (и там и там) использовать фиктивные устройства (/dev/zero & /dev/null). Как-то так:

Код: Выделить всё

bash-4.2$ time dd bs=1M count=100 if=/dev/zero | nc -v -4 127.0.0.1 1234
Ncat: Version 6.45 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:1234.
100+0 записей получено
100+0 записей отправлено
Ncat: 104857600 bytes sent, 0 bytes received in 0.52 seconds.
 скопировано 104857600 байт (105 MB), 0,525794 c, 199 MB/c
real    0m0.529s
user    0m0.146s
sys     0m0.558s

bash-4.2$ nc -v -l -4 0.0.0.0 1234 > /dev/null
Ncat: Version 6.45 ( http://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 127.0.0.1.
Ncat: Connection from 127.0.0.1:50447.

Код: Выделить всё

$ man 1 time
...
       These statistics consist of (i) the elapsed real  time  between
       invocation  and  termination, (ii) the user CPU time (the sum of the tms_utime and tms_cutime values in a struct tms as returned
       by times(2)), and (iii) the system CPU time (the sum of the tms_stime and tms_cstime values in  a  struct  tms  as  returned  by
       times(2)).
...
Так что в данном случае, скорее, sys

Код: Выделить всё

bash-4.2$ time dd bs=1M count=1000 if=/dev/zero | nc -v -4 127.0.0.1 1234
Ncat: Version 6.45 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:1234.
1000+0 записей получено
1000+0 записей отправлено
 скопировано 1048576000 байт (1,0 GB), 5,11898 c, 205 MB/c
Ncat: 1048576000 bytes sent, 0 bytes received in 5.12 seconds.

real    0m5.122s
user    0m1.206s
sys     0m5.650s


bash-4.2$ nc -v -l -4 0.0.0.0 1234 > /dev/null
Ncat: Version 6.45 ( http://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 127.0.0.1.
Ncat: Connection from 127.0.0.1:50449.
199 MB/c * 8 = 1.595 Gbits/sec
Это тот же процессор, для которого iperf давал значение 20.8 Gbits/sec (см. выше) на локальной петле.
Так что и то, и другое (и т.д.) годится для относительных измерений при реконфигурации сети (что и как влияет) ... но в абсолютных цифрах это всё достаточно бессмысленные цифры, потому что они имеют смысл только прменительно к множеству конкретных условий.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Скорость сетевого соединения

Непрочитанное сообщение Olej » 18 июн 2016, 13:58

Вся эта бадяга со скоростью IP-канала была связана с экспериментами со скоростью WiFi и с WiFi репитерами ... ну и ещё, совсем отчасти, с устройствами PowerLine обмена через электросеть.

Теперь, подобрав инструменты для тестирования, дальнейшие непонятки со скоростью WiFi продолжим здесь: скорость обмена WiFi.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Скорость сетевого соединения

Непрочитанное сообщение Olej » 24 мар 2017, 23:00

Olej писал(а):Вариант 1 : старый добрый iperf
Ещё раз в другой системе:

Код: Выделить всё

olej@nvidia ~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	LinuxMint
Description:	Linux Mint 18.1 Serena
Release:	18.1
Codename:	serena
olej@nvidia ~ $ iperf
Программа 'iperf' на данный момент не установлена. Вы можете установить её, выполнив:
sudo apt install iperf

Код: Выделить всё

olej@nvidia ~ $ iperf
Программа 'iperf' на данный момент не установлена. Вы можете установить её, выполнив:
sudo apt install iperf
olej@nvidia ~ $ sudo apt install iperf
[sudo] пароль для olej: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
  iperf
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 51,0 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 184 kB.
Пол:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 iperf amd64 2.0.5+dfsg1-2 [51,0 kB]
Получено 51,0 kБ за 0с (172 kБ/c)
Выбор ранее не выбранного пакета iperf.
(Чтение базы данных … на данный момент установлено 235367 файлов и каталогов.)
Подготовка к распаковке …/iperf_2.0.5+dfsg1-2_amd64.deb …
Распаковывается iperf (2.0.5+dfsg1-2) …
Обрабатываются триггеры для man-db (2.7.5-1) …
Обрабатываются триггеры для doc-base (0.10.7) …
Обработка 1 добавленный файл doc-base...
Регистрация документа в scrollkeeper...
Настраивается пакет iperf (2.0.5+dfsg1-2) …

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Скорость сетевого соединения

Непрочитанное сообщение Olej » 25 мар 2017, 13:57

Скорость потока в релтайм -

Код: Выделить всё

[olej@dell Jarosovich]$ dnf info nload
Последняя проверка окончания срока действия метаданных: 0:01:31 назад, Sat Mar 25 12:14:05 2017.
Доступные пакеты
Имя         : nload
Архитектура : x86_64
Эпоха       : 0
Версия      : 0.7.4
Релиз       : 6.fc23
Размер      : 75 k
Репозиторий : fedora
Краткое опи : A tool can monitor network traffic and bandwidth usage in real time
URL         : http://www.roland-riegel.de/nload/
Лицензия    : GPLv2+
Описание    : nload is a console application which monitors network traffic and bandwidth
            : usage in real time. It visualizes the in and outgoing traffic using two graphs
            : and provides additional info like total amount of transfered data and min/max
            : network usage.

[olej@dell Jarosovich]$ sudo dnf install nload
...
Установлено:
  nload.x86_64 0.7.4-6.fc23
  
Выполнено!
Для выбранного интерфейса (можно для всех без параметров) это выглядит так:

Код: Выделить всё

[olej@dell Jarosovich]$ nload eno1
...
На картинке показано воспроизведение одного ролика с YouTube.
Вложения
net1.png

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей