Raspberry Pi и iperf — тестер пропускной способности для устройств «Умного дома» и Интернета вещей

  • Tutorial


В рамках предыдущего моего проекта, «Видеофон из Raspberry Pi», мне довелось для настройки оборудования и решения проблемы, воспользоваться утилитой Iperf. Программа давно известная в кругу специалистов, работающих с локальными сетями.

Утилита позволяет генерировать трафик для анализа пропускной способности сети.

С ее помощью, довольно просто измерить максимальную пропускную способность сети между двумя устройствами (сервером и клиентом) и провести нагрузочное тестирование канала связи.
Думаю, в связи с увеличением домашних сетевых устройств, она будет довольно востребована, как для поиска и анализа неисправностей (сбоев) в работе, так и для оптимального размещения WiFi оборудования.

В моем примере, программа устанавливалась на Raspberry Pi с установленной системой домашней автоматизации MajorDoMo — базовый образ, и на устройства, работающие под ОС Windows (ноутбук), Android (смартфон, ТВ, медиаплеер).

Под катом немного про установку и тестирование, а также небольшой пример интеграции в систему домашней автоматизации MajorDoMo.

На Raspberry Pi, служащий сервером домашней автоматизации MajorDoMo и работающий под ОС Debian 9, устанавливаем утилиту iperf.

sudo apt-get install iperf

По умолчанию устанавливается версия version 2.0.9. Существуют два варианта iperf: iperf 2 и iperf 3. Между собой они не совместимы, для установки 3-ей версии, нужно задать команду

sudo apt-get install iperf3

На втором устройстве если возьмем ПК или ноутбук под Windows, то устанавливаем Jperf (устанавливал как 2.0 так и 2.2). Jperf – графическая java-надстройка для Iperf. Надстройка кроссплатформенна, работает как под Windows так и под nix системами. Jperf строит график пропускной способности канала в режиме реального времени. Установка не требуется, в ОС должна быть установлена java-машина.

Подключаем Ethernet сетевым шнуром Raspberry к домашнему роутеру, ноутбук подключен к домашней WiFi сети.

Запускаем утилиту на Raspberry Pi в режиме сервера, Клиент генерирует трафик, сервер ожидает его.

iperf -s -t 3600

где –s запуск в режиме сервера, -t 3600 на время 3600 секунд или 1 час.
На компьютере под Windows запускаем *.bat файл jperf.bat, вводим адрес сервера, оставляем порт по умолчанию, выставляем время тестирования, нажимаем иконку запуска.

На сервере получаем информацию в текстовом виде, на клиенте в графическом:



Для операционной системы Android (смартфон, телевизор, ТВ приставка и т.д.) устанавливаем программу из play market: Magic iPerf. Magic iPerf.

Вводим IP адрес нашего RPi, ключи и запускаем тестирование, передвинув ползунок из положения stopped в started.



Справку по командам (ключам запуска утилиты) можно посмотреть набрав в терминале или мобильном приложении — help (-h).



В качестве дополнения: при использовании системы домашней автоматизации MajorDoMo, базовой конфигурации, образа для Raspberri Pi.

При старте системы, в динамике идет проговаривание IP адреса. Что довольно удобно.
Также у сервера прописан hostname (имя, которое присваивается компьютеру, подключенному к сети, которое однозначно идентифицирует в сети и, таким образом, позволяет получить доступ к нему без использования его IP-адреса). Даже не зная IP адреса, можем подключиться SSH терминалом, или же клиентом iperf, набрав вместо IP имя: majordomopi.

Небольшое преимущество RPi, его относительная дешевизна и габариты, позволяющие разместить мини ПК соединив сетевым кабелем его с роутером, будь то в шкафу купе, тумбочке или 19" стойке.

В базовой конфигурации MajorDoMo, по умолчанию есть 3 кнопки управления, которые ничем не заняты, на главной странице системы это: свет 1, свет 2, свет 3.



Попробуем назначить одну из них для тестирования пропускной способности сети.

Открываем стартовую страницу MajorDoMo. Переходим в Панель управления — Устройства — Простые устройства — редактирование Switch 1 — Действия .

В действиях, прописываем строку кода на PHP, которая запускает от пользователя Pi утилиту Iperf в режиме сервера на 600 секунд:

exec ('sudo -u pi  iperf -s -t 600 >/dev/null &');




После этого, при нажатии кнопки «свет 1» с главной страницы системы домашней автоматизации, запускается Iperf на 10 минут, и уже далее, с нужного устройства производится тестирование пропускной способности.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 10

    0
    У вас как подключены динамики к малине? Получилось воспроизводить звуки в мобильном приложении majordomo? Спасибо.
      0
      Динамики подключены к ному разъёму 3,5 jack. Так же в посте в первой части DIY кнопка вызова, описывал подключение и настройку USB аудио карты, но системные звуки (произношение IP адреса) идут всё равно через родной разъём.
      Мобильным приложением ещё не пользовался.
      0

      Это конечно все круто. Но зачем?
      И тем более на малинке же порт 100М?

        0

        От speedtest для Linux есть, но я не разобрался как на NanoPi-NEO пользоваться. Сейчас как DNS, pi-hole

          0
          Speedtest тестирует скорость к интернету, а не конкректно, допустим к серверу «Умного дома». Если устройство работает только в локальной сети, то результаты спидтеста — несколько некорректны.
            0
            тогда iPerf поднимай для такого случая :) «локальная сеть»
          0
          Это конечно все круто. Но зачем?
          И тем более на малинке же порт 100М?

          На малинке действительно есть ethernet порт 100М. Я предполагал при написании поста — малинка подключена портом Ethernet к роутеру. А вот уже сторонние устройства, работающие по WiFi, для которых и тестируется скорость используют, беспроводное подключение. В таком случае мы хоть как то можем определить, допустим скорость от ТВ к роутеру, или же оптимальное место установки WiFi видеокамеры.
          В моем случае при использовании RPi как видеофона — не всегда имело смысл прокладывать кабели, особенно при отладке и тестировании устройства. Днём в выходные, работал в своей комнате, ночью, утром на кухне. Вот и получилось, нестабильность видеосвязи, прерывания, сбросы (грешил на кодеки, некорректныу работу камеры, приложения, VoIP оператора). Оказалось всё просто, WiFi модуль у RPi послабее чем на смартфоне или ноуте, за счет тестирования скорости к роутеру удалось найти оптимальное размещение малины.
            0
            я думал тут будет статья о том как сделать из малины автономный кабельный тестер, с возможностью мерять скорость через iperf блекджеком и балеринами… а тут всего лишь статья о двух командах в консоли, как запустить iperf (((
              0
              А какой результат вы хотели?
              Если пошагово, то получается так:
              1) подключаете малину к роутеру, и источнкиу питания, при необходимости к автономному источнику питания (портативному зарядному устройству). При загрузке произносится IP адрес
              2) Заходите в браузере по IP адресу, по нажатию кнопки на главной странице запускается Iperf в режиме сервера.
              3) Подключаетесь вторым устройством (ПК, смартфон, планшет и т.д.) в режиме клиента и тестируете скорость.
              На мой взгляд алгоритм достаточно прост и понятен.
              Что не так?
              0
              Как-то сейчас проглядел цифру 3 и пытался понять почему iperf на Pi и iperf3 на ПК не начинают тест, и почему у них разные порты. Пришлось нагуглить эту статью.
              image
              Может кому пригодится: сервер на ПК, подключение с RPi по Wifi и Ethernet.
              Ethernet
              [ ID] Interval           Transfer     Bandwidth       Retr
              [  4]   0.00-10.00  sec   104 MBytes  87.0 Mbits/sec    2             sender
              [  4]   0.00-10.00  sec   104 MBytes  86.8 Mbits/sec                  receiver


              WiFi
              [ ID] Interval           Transfer     Bandwidth       Retr
              [  4]   0.00-10.00  sec  1.08 MBytes   907 Kbits/sec    0             sender
              [  4]   0.00-10.00  sec   986 KBytes   807 Kbits/sec                  receiver

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое