Для тестирования производительности точек доступа параллельными нагрузочным испытанием при помощи сенсоров типа qow-lite (wdq) применяется упрощенный способ.

Вместо генерации периодического задания с набором инструкций, из административного интерфейса сервера WNAM QoW, из раздела панели управления в "Группе", запускается разовое измерение.

Оно имеет следующие параметры выбора:

  • SSID, BSSID и частотный канал конкретной тестируемой точки доступа (выпадающий список)
  • Число тестирующих сенсоров типа 820; если задано "0" - работают все доступные сенсоры в группе 
  • Число тестирующих сенсоров типа 840; если задано "0" - работают все доступные сенсоры в группе 
  • Задержка запуска, время (в секундах), которое используется для формирование потока команд на сенсоры так, чтобы запуск подключения-измерения проводился с некоторой задержкой между сенсорами, для избежания массового одновременного старта. По умолчанию 1 секунда.
  • Тип теста: TCP или UDP (по умолчанию: TCP)
  • Длительность теста, в секундах (по умолчанию: 30)
  • Направление теста (передачи трафика): прямое, обратное, оба
  • Ограничение скорости, в Мбит/с (для UDP теста)


Запуск теста приводит к отправке на каждый сенсор MQTT-команды типа "FASTTEST" с следующими параметрами:

qos/XX:XX:XX:XX:XX:XX/cmd {"type":"FASTTEST", "sid":"random-sid-value", 
     "connect": {"ssid":"network-name", "security":"psk", "password":"12345678", "bssid":"XX:XX:XX:XX:XX:XX", "band":0}, 
     "measure": {"duration": 30, "cmd": "iperf3 -4 -c 1.2.3.4:4444 100M -u -J -R"}

}

Сенсор должен подключиться к заданной сети, запустить получение IP адреса, и затем выполнить команду, указанную в measure.cmd. Максимальное её время выполнения задается в duration, при превышении этого времени запускаемый процесс должен быть убит.

В ответ сенсор должен собрать stdout тестирующей утилиты iperf (или что было указано в командной строке measure.cmd), и вернуть его результаты на сервер в следующем формате:

qos/XX:XX:XX:XX:XX:XX/data {"type":"FASTTEST", "sid":"req-sid-value", 
      "connect": {"status": true, "duration": 12345, "ip":"5.6.7.8"}, 
      "measure":{"status": true, "duration": 12345, "result":{iperf-json-object} }
}

Где { iperf-json-object } - объект, полученный в результате выполнения команды iperf.

Если подключение к сети не успешно, то запуск iperf не производится, и возвращается ответ вида:

qos/XX:XX:XX:XX:XX:XX/data {"type":"FASTTEST", "sid":"req-sid-value", 
      "connect": {"status": false, "duration": 12345, "error":"словесное описание причины ошибки"}, 
      "measure":{"status": false, "duration": 0, "result":{} }
}
  • No labels

4 Comments


  1. Написано "result":{iperf-json-object}. iperf выдает строку, а не json объект. 
    1. посмотри iperf3 -J

  2. Предлагаю поменять возвращаемый формат сообщения. Т.к. возвращать нужно не только по ней, но и по другим. 

    Когда делали wda я соглашался с названиями Андрея, теперь постоянно путаюсь. Давай здесь хотя бы api делать самодокументируемым. Чтобы вместо restart reload, а вместо uuid - sid.