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

Upload 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 .

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

Комментарии (1)


  1. navion
    28.11.2025 09:20

    Похожим образом сравнивали airtime fairness, когда Aruba и Meraki ещё были отдельными компаниями.