Bandwidth Test на MikroTik — тестирование скорости
Bandwidth Test на MikroTik — тестирование пропускной способности
Bandwidth Test — встроенный инструмент RouterOS для измерения пропускной способности канала между двумя устройствами MikroTik. Он позволяет протестировать реальную скорость TCP или UDP в направлении send, receive или both, не прибегая к внешним сервисам. Начиная с RouterOS 7.13 доступен также /tool/speed-test — упрощённый тест до серверов MikroTik. В этой статье разберём оба инструмента, настроим сервер и клиент, научимся интерпретировать результаты и избежим типичных ошибок.
Все команды приведены для RouterOS 7.20+.
Описание
Как работает Bandwidth Test
Bandwidth Test состоит из двух компонентов:
- Bandwidth Server (
/tool/bandwidth-server) — слушает входящие соединения на порту 2000 (TCP). Должен быть включён на устройстве, к которому вы тестируете. - Bandwidth Client (
/tool/bandwidth-test) — инициирует тестирование. Запускается на другом устройстве и подключается к серверу.
Протокол работы:
- Клиент устанавливает управляющее TCP-соединение к серверу на порт 2000.
- Клиент аутентифицируется (логин/пароль пользователя RouterOS на сервере).
- Начинается передача данных по выбранному протоколу (TCP или UDP).
- Результаты отображаются в реальном времени: скорость tx (отправка), rx (приём), потери пакетов (для UDP).
Протоколы: TCP vs UDP
| Параметр | TCP | UDP |
|---|---|---|
| Контроль потока | Да (TCP congestion control) | Нет |
| Потери пакетов | Автоматическая ретрансмиссия | Отображаются в статистике |
| Точность измерения | Показывает «безопасную» скорость | Показывает реальную пропускную способность |
| Нагрузка на CPU | Выше (обработка TCP стека) | Ниже |
| Рекомендация | Тестирование через WAN/интернет | Тестирование локальных каналов |
Важно: UDP-тест отправляет данные без контроля потока. Если указать скорость выше реальной пропускной способности канала — часть пакетов будет потеряна, но это нормально и ожидаемо. TCP-тест автоматически подстраивается под пропускную способность.
Направления тестирования
- send — клиент отправляет данные серверу (тестирование upload).
- receive — клиент принимает данные от сервера (тестирование download).
- both — одновременная передача в обе стороны (full-duplex тест).
Speed Test (/tool/speed-test)
Начиная с RouterOS 7.13 доступна команда /tool/speed-test. Это упрощённый клиент, который тестирует скорость подключения к серверам MikroTik (по аналогии с speedtest.net). Не требует настройки удалённого сервера — достаточно выхода в интернет.
Настройка
Шаг 1: Включение Bandwidth Server
По умолчанию Bandwidth Server включён на новых устройствах. Убедитесь, что он активен на устройстве, к которому будете тестировать:
[admin@MikroTik] ># Проверить статус сервера /tool/bandwidth-server/print # Включить сервер, если выключен /tool/bandwidth-server/set enabled=yes authenticate=yes # Ограничить максимальное количество сессий (защита от перегрузки) /tool/bandwidth-server/set max-sessions=5
Параметр authenticate=yes требует от клиента предоставить логин и пароль существующего пользователя RouterOS. Это важно для безопасности — без аутентификации любой может нагрузить ваш роутер тестом.
Шаг 2: Создание пользователя для тестирования
Рекомендуется создать отдельного пользователя с минимальными правами:
[admin@MikroTik] ># Создать группу с минимальными правами /user/group/add name=btest-group policy=read,test # Создать пользователя для Bandwidth Test /user/add name=btest password="BtestP@ss2024" group=btest-group
Шаг 3: Firewall — разрешить порт 2000
Если на сервере настроен firewall, нужно разрешить входящие соединения на порт 2000:
[admin@MikroTik] ># Разрешить Bandwidth Test с определённой подсети /ip/firewall/filter/add chain=input protocol=tcp dst-port=2000 \ src-address=192.168.0.0/16 action=accept \ comment="Allow Bandwidth Test from LAN" place-before=0
Шаг 4: Запуск теста (клиент)
Допустим, сервер имеет IP 192.168.88.1. Запускаем тест с другого MikroTik:
[admin@MikroTik] ># TCP тест — приём данных (download) /tool/bandwidth-test address=192.168.88.1 protocol=tcp \ direction=receive user=btest password="BtestP@ss2024" duration=30s # TCP тест — отправка данных (upload) /tool/bandwidth-test address=192.168.88.1 protocol=tcp \ direction=send user=btest password="BtestP@ss2024" duration=30s # TCP тест — обе стороны (full-duplex) /tool/bandwidth-test address=192.168.88.1 protocol=tcp \ direction=both user=btest password="BtestP@ss2024" duration=30s # UDP тест — с ограничением скорости /tool/bandwidth-test address=192.168.88.1 protocol=udp \ direction=both user=btest password="BtestP@ss2024" \ duration=30s local-tx-speed=500M remote-tx-speed=500M
Обратите внимание на параметры UDP: local-tx-speed и remote-tx-speed задают скорость отправки. Для UDP это обязательно — без лимита роутер попытается отправить данные на максимальной скорости CPU, что приведёт к огромным потерям и бесполезному результату.
Шаг 5: Speed Test (к серверам MikroTik)
[admin@MikroTik] ># Простой speed test к ближайшему серверу MikroTik /tool/speed-test address=speed.mikrotik.com # С указанием направления /tool/speed-test address=speed.mikrotik.com direction=both duration=15s
Speed Test не требует логина/пароля — серверы MikroTik принимают анонимные подключения. Это удобно для быстрой проверки скорости интернет-канала прямо с роутера.
Проверка
Интерпретация результатов TCP
При TCP-тесте вы увидите результат вида:
codetx-current tx-10-second-average tx-total-average 0bps 0bps 0bps rx-current rx-10-second-average rx-total-average 932.1Mbps 921.5Mbps 918.7Mbps
- tx-current / rx-current — текущая скорость (мгновенное значение).
- tx-10-second-average — средняя скорость за последние 10 секунд.
- tx-total-average — средняя скорость за весь тест.
Ориентируйтесь на total-average — это наиболее репрезентативное значение.
Интерпретация результатов UDP
UDP-тест дополнительно показывает потери пакетов:
codetx-current tx-10-second-average tx-total-average lost-packets 500.0Mbps 499.8Mbps 499.5Mbps 12 rx-current rx-10-second-average rx-total-average lost-packets 498.2Mbps 497.1Mbps 496.8Mbps 28
Потери до 0.1% — норма. Потери более 1% указывают на проблему: перегрузка канала, плохой кабель, ошибки на интерфейсе.
Мониторинг нагрузки во время теста
Во второй сессии Terminal (или через вторую вкладку WinBox) следите за нагрузкой CPU:
[admin@MikroTik] ># Мониторинг CPU в реальном времени /system/resource/monitor # Проверить загрузку интерфейса /interface/monitor-traffic ether1
Если CPU достигает 100% — результат теста ограничен процессором, а не каналом. Это критически важно для корректной интерпретации.
Типичные ошибки
1. Тестирование в рабочее время
Проблема: Bandwidth Test создаёт максимальную нагрузку на канал и CPU роутера. Если запустить тест, когда через роутер работают пользователи — весь трафик встанет.
Решение: Тестируйте только в нерабочее время или в maintenance window. Если нужен тест в рабочие часы — ограничьте скорость: local-tx-speed=100M.
2. Результат ограничен CPU, а не каналом
Проблема: На бюджетных устройствах (hAP lite, hEX) CPU — узкое место. Тест показывает 400 Мбит/с, а вы думаете, что проблема в канале.
Решение: Во время теста проверяйте загрузку CPU (/system/resource/monitor). Если CPU 100% — тест показывает скорость обработки роутера, а не пропускную способность канала. Для hEX S максимум TCP bandwidth test — около 800-900 Мбит/с при 100% CPU.
3. Firewall блокирует порт 2000
Проблема: Тест не подключается — connection timed out.
Решение: Проверьте правила firewall на стороне сервера. Порт 2000/TCP должен быть открыт для IP клиента. Также проверьте наличие drop-правил в цепочке input.
[admin@MikroTik] ># Найти drop-правила в цепочке input /ip/firewall/filter/print where chain=input action=drop
4. UDP-тест без лимита скорости
Проблема: Запущен UDP-тест без local-tx-speed и remote-tx-speed. Роутер отправляет пакеты на максимальной скорости CPU, 90% теряется, результаты бесполезны.
Решение: Всегда указывайте ожидаемую скорость для UDP. Начните с заведомо достижимой (например, 100M) и постепенно увеличивайте, пока потери не превысят 1%.
5. Bandwidth Server доступен из интернета
Проблема: Если порт 2000 открыт наружу и authenticate=no — злоумышленники могут использовать ваш роутер для генерации трафика (DDoS-amplification).
Решение: Всегда держите authenticate=yes. Закройте порт 2000 на WAN-интерфейсе. Лучше всего — отключите Bandwidth Server, если не используете:
[admin@MikroTik] ># Отключить сервер, если тесты не нужны /tool/bandwidth-server/set enabled=no # Или ограничить доступ только с LAN /ip/firewall/filter/add chain=input protocol=tcp dst-port=2000 \ in-interface-list=WAN action=drop comment="Block BW-test from WAN"
6. Тестирование через VPN-туннель
Проблема: При тестировании через WireGuard/IPsec результат значительно ниже ожидаемого из-за overhead шифрования и MTU.
Решение: Это нормальное поведение. Для VPN ожидайте 50-70% от скорости «чистого» канала в зависимости от алгоритма шифрования и мощности CPU. Для точного измерения пропускной способности VPN используйте TCP-протокол — он корректно обработает сниженный MTU.
# Проверить статус сервера
/tool/bandwidth-server/print
# Включить сервер, если выключен
/tool/bandwidth-server/set enabled=yes authenticate=yes
# Ограничить максимальное количество сессий (защита от перегрузки)
/tool/bandwidth-server/set max-sessions=5
# Создать группу с минимальными правами
/user/group/add name=btest-group policy=read,test
# Создать пользователя для Bandwidth Test
/user/add name=btest password="BtestP@ss2024" group=btest-group
# Разрешить Bandwidth Test с определённой подсети
/ip/firewall/filter/add chain=input protocol=tcp dst-port=2000 \
src-address=192.168.0.0/16 action=accept \
comment="Allow Bandwidth Test from LAN" place-before=0
# TCP тест — приём данных (download)
/tool/bandwidth-test address=192.168.88.1 protocol=tcp \
direction=receive user=btest password="BtestP@ss2024" duration=30s
# TCP тест — отправка данных (upload)
/tool/bandwidth-test address=192.168.88.1 protocol=tcp \
direction=send user=btest password="BtestP@ss2024" duration=30s
# TCP тест — обе стороны (full-duplex)
/tool/bandwidth-test address=192.168.88.1 protocol=tcp \
direction=both user=btest password="BtestP@ss2024" duration=30s
# UDP тест — с ограничением скорости
/tool/bandwidth-test address=192.168.88.1 protocol=udp \
direction=both user=btest password="BtestP@ss2024" \
duration=30s local-tx-speed=500M remote-tx-speed=500M
# Простой speed test к ближайшему серверу MikroTik
/tool/speed-test address=speed.mikrotik.com
# С указанием направления
/tool/speed-test address=speed.mikrotik.com direction=both duration=15s
tx-current tx-10-second-average tx-total-average
0bps 0bps 0bps
rx-current rx-10-second-average rx-total-average
932.1Mbps 921.5Mbps 918.7Mbps
tx-current tx-10-second-average tx-total-average lost-packets
500.0Mbps 499.8Mbps 499.5Mbps 12
rx-current rx-10-second-average rx-total-average lost-packets
498.2Mbps 497.1Mbps 496.8Mbps 28
# Мониторинг CPU в реальном времени
/system/resource/monitor
# Проверить загрузку интерфейса
/interface/monitor-traffic ether1
# Найти drop-правила в цепочке input
/ip/firewall/filter/print where chain=input action=drop
# Отключить сервер, если тесты не нужны
/tool/bandwidth-server/set enabled=no
# Или ограничить доступ только с LAN
/ip/firewall/filter/add chain=input protocol=tcp dst-port=2000 \
in-interface-list=WAN action=drop comment="Block BW-test from WAN"