AI Нагрузочное испытание Wi-Fi, «народный» метод

AI

Редактор
Регистрация
23 Август 2023
Сообщения
3 603
Лучшие ответы
0
Реакции
0
Баллы
243
Offline
#1
2025 год начался с короткого затишья текущих проектов, возникла идея поковырять тему нагрузочного испытания радиоподсистемы Wi-Fi. Основная сложность и основной вопрос всех нагрузочных тестов - Чем нагрузить? Вот этот вопрос попробуем разобрать в этой статье ...

Собираем стенд



Стенд состоит из:


  • испытуемой точки доступа;


  • контроллер (в нашем случае виртуальный);


  • ПК с развернутым сервером LibreSpeetTest;


  • 20 обычных офисных ноутбуков.

Ноутбуки раскладываем по столам для максимального приближения к реальным условиям. Измерения планируем на выходной день для минимизации влияния существующих беспроводных сетей, в пустом офисе активность их минимальна, хотя утилизация радиочастотного спектра в пустом офисе не нулевая:



Для минимизации вероятности организации «бутылочного горлышка» точку доступа подключаем непосредственно к серверу через мультигигабитный (1/2.5/10 Gbps) медный интерфейс. Перечень тестовых устройств:

№​

Model​

Adapter​

Driver​

IP​

1​

Lenovo ThinkPad E14​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.101​

2​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.102​

3​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.103​

4​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.104​

5​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.105​

6​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.106​

7​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.107​

8​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.108​

9​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.109​

10​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.110​

11​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.111​

12​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.112​

13​

Lenovo ThinkBook 13s​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.113​

14​

Lenovo ThinkPad E13​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.114​

15​

Lenovo ThinkPad E14​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.115​

16​

Lenovo ThinkPad E14​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.116​

17​

Lenovo ThinkPad E14​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.117​

18​

Lenovo ThinkPad E14​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.118​

19​

Lenovo ThinkPad E14​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.119​

20​

Lenovo ThinkPad E14​

Intel(R) Wi-Fi 6 AX201 160MHz​

22.40.0.7 (larEnabled=0)​

192.168.1.120​

21​

Xiaomi 13 (2211133G)​

Qualcomm Snapdragon 8 Gen 2​

-​

-​


Тест точка - несколько клиентов


Сложность в том чтобы организовать запуск теста скорости на всех клиентах одновременно, для этого используем librespeed/speedtest-cli, на всякий случай выложу уже готовый скомпилированный файл librespeed-cli-windows-amd64.7z.

Для того чтобы программа не искала сервер самостоятельно, есть возможность указать ему конкретный URL в файле server.json. В нашем случае содержимое файла выглядит так:

[
{
"id": 1,
"name": "PHP Backend",
"server": "http://192.168.1.254/backend",
"dlURL": "garbage.php",
"ulURL": "empty.php",
"pingURL": "empty.php",
"getIpURL": "getIP.php"
}
]

При этом запустить программу из консоли следует конструкцией вида:

librespeed-cli-windows-amd64.exe --local-json server.json

Осталось придумать как же запустить эту конструкцию на всех клиентах одновременно?

Возможно, кто-то придумает более изящное решение, мне показалось наиболее простым способом будет запуск скрипта на сервере, который по SSH подключается к хостам по списку из файла HOSTS_FILE="hosts.txt" и запускает описанную выше конструкцию. Перед запуском скрипта необходимо в папки с учетной записью admin на все тестовые устройства раскидать ssh ключ, для того чтобы не запрашивались учетные данные. Собственно, вот и сам скрипт:

#!/bin/bash

# Файл с адресами ПК
HOSTS_FILE="hosts.txt"
# Файл для сохранения результатов
OUTPUT_FILE="results.txt"

# Очищаем файл с результатами перед запуском
> $OUTPUT_FILE

# Функция для выполнения команды на удаленном ПК
run_command() {
local host=$1
echo "Подключение к $host..."

# Выполняем команду и фильтруем вывод
ssh admin@$host 'librespeed-cli-windows-amd64.exe --local-json server.json' >> $OUTPUT_FILE

if [ $? -eq 0 ]; then
echo "Команда выполнена успешно на $host"
else
echo "Ошибка при выполнении команды на $host"
fi
}

# Проходим по каждому хосту из файла
while IFS= read -r host; do
run_command "$host" &
done < "$HOSTS_FILE"

# Ждем завершения всех фоновых процессов
wait

echo "Все команды выполнены. Результаты сохранены в $OUTPUT_FILE."
Итак, пробуем измерить …


Убедимся, что клиенты подключены:

Тип​

MAC​

Частота​

Канал​

RSSI​

Беспроводной​

34:CF:F6:89:FF:99​

2.4​

1/20​

-43​

Беспроводной​

38:FC:98:6F:DA:51​

2.4​

1/20​

-35​

Беспроводной​

38:FC:98:73:C4:77​

2.4​

1/20​

-55​

Беспроводной​

38:FC:98:73:ED:F3​

2.4​

1/20​

-52​

Беспроводной​

5E:E1:1F:29:E4:48​

2.4​

1/20​

-44​

Беспроводной​

64:79:F0:A4:82:7E​

2.4​

1/20​

-40​

Беспроводной​

64:79:F0:A6:B1:D9​

2.4​

1/20​

-48​

Беспроводной​

64:79:F0:A6:BA:6C​

2.4​

1/20​

-52​

Беспроводной​

64:79:F0:A6:BA:DF​

2.4​

1/20​

-45​

Беспроводной​

64:79:F0:A7:1C:A0​

2.4​

1/20​

-56​

Беспроводной​

7C:50:79:4E:AE:E9​

2.4​

1/20​

-45​

Беспроводной​

8C:C6:81:F8:57:41​

2.4​

1/20​

-55​

Беспроводной​

C0:B8:83:C2:CA:DB​

2.4​

1/20​

-48​

Беспроводной​

D8:3B:BF:12:9F:B2​

2.4​

1/20​

-44​

Беспроводной​

D8:3B:BF:17:32:57​

2.4​

1/20​

-44​

Беспроводной​

D8:3B:BF:17:7F:46​

2.4​

1/20​

-41​

Беспроводной​

D8:3B:BF:18:23:DD​

2.4​

1/20​

-47​

Беспроводной​

D8:3B:BF:18:36:9D​

2.4​

1/20​

-42​

Беспроводной​

D8:F8:83:7B:3F:68​

2.4​

1/20​

-47​

Беспроводной​

D8:F8:83:7D:5E:DD​

2.4​

1/20​

-36​

Беспроводной​

DC:21:5C:E0:2D:65​

2.4​

1/20​

-47​

Беспроводной​

FC:B3:BC:FD:DD:97​

2.4​

1/20​

-37​



Запускаем скрипт, ждем завершения испытаний (около 30-40 секунд), смотрим что получилось:


Download rate: 12.39 Mbps

Upload rate: 17.03 Mbps

Download rate: 9.91 Mbps

Upload rate: 2.58 Mbps

Download rate: 7.21 Mbps

Upload rate: 0.58 Mbps

Download rate: 15.24 Mbps

Upload rate: 30.93 Mbps

Download rate: 12.05 Mbps

Upload rate: 0.82 Mbps

Download rate: 9.71 Mbps

Upload rate: 1.53 Mbps

Download rate: 9.96 Mbps

Upload rate: 6.82 Mbps

Download rate: 6.43 Mbps

Upload rate: 1.07 Mbps

Download rate: 2.81 Mbps

Upload rate: 7.60 Mbps

Download rate: 9.63 Mbps

Upload rate: 0.48 Mbps

Download rate: 8.76 Mbps

Upload rate: 1.18 Mbps

Download rate: 5.38 Mbps

Upload rate: 5.68 Mbps

Download rate: 6.65 Mbps

Upload rate: 1.17 Mbps

Download rate: 7.50 Mbps

Upload rate: 0.80 Mbps

Download rate: 3.45 Mbps

Upload rate: 0.53 Mbps

Download rate: 6.36 Mbps

Upload rate: 0.90 Mbps

Download rate: 9.59 Mbps

Upload rate: 46.40 Mbps

Download rate: 4.97 Mbps

Upload rate: 1.05 Mbps

Download rate: 7.77 Mbps

Upload rate: 3.27 Mbps

Download rate: 8.88 Mbps

Upload rate: 40.00 Mbps

Как видно полученные значения от устройства к устройству сильно отличаются, однако если просуммировать строки получаем:


суммарный Download rate = 164,65 Mbps,

суммарный Upload rate = 130,42 Mbps.

Свою оценку корректности такого подхода к суммированию скорости таким образом и насколько близок к истине такой результат пишите в комментариях. Было бы интересно услышать аргументированную критику, куда же без нее…

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

В таблице ниже результаты измерений для различных диапазонов и различной ширине каналов точки доступа:

Bandwidth, MHz​

Download rate SUM, Mbps​

Download rate SUM, Mbps​

ch1 - 20MHz​

164,65​

130,42​

ch1 - 40MHz​

199,33​

133,52​

ch36 - 20MHz​

221,69​

211,08​

ch36 ch40 - 40MHz​

346,13​

277,17​

ch36 ch40 ch44 ch48 - 80MHz​

417,41​

513,34​

ch149 ch153 ch157 ch161 - 80MHz​

479,67​

450,45​



Таким образом констатируем неплохую производительность тестируемой точки доступа Wi-Fi .

Пишите в комментариях насколько интересны полученные результаты, испытания какого вендора хотелось бы увидеть в следующей статье?
 
Сверху Снизу