SQM (Smart Queue Management)
OpenWrt підтримує SQM для зменшення надмірної буферизації (bufferbloat) — небажаної затримки, яка виникає, коли маршрутизатор надмірно буферизує пакети.
Огляд
Надмірна буферизація найбільш помітна під час активного завантаження або відвантаження, що викликає підвищення затримки (ping), погіршуючи якість VoIP, відеозв’язку, онлайн-ігор і загальну чутливість мережі. Це можна зменшити за допомогою SQM, маючи достатньо швидкий процесор і трохи зменшену максимальну швидкість.
SQM — це інтегрована система, яка забезпечує пакетне/потокове планування, активне керування чергами (AQM), формування трафіку(traffic shaping), обмеження швидкості та QoS пріоритизацію. Для порівняння, “класичне” AQM регулює лише довжину черги, а “класичне” QoS лише виконує пріоритизацію.
SQM сильно залежить від процесора. Повільні пристрої можуть не впоратись з високошвидкісним з’єднанням.
SQM несумісний із апаратним прискоренням трафіку (hardware flow offloading), яке обходить частину ядра. Переконайтесь, що цю опцію вимкнено в LuCI → Network → Firewall.
Підготовка: Вимірювання поточної швидкості та затримки
Перш ніж оптимізувати мережу, потрібно знати її поточний стан:
- Увімкніть Packet Steering в LuCI → Network → Interfaces → Global network options, щоб покращити продуктивність.
- Якщо цей пристрій OpenWrt використовується як ретранслятор, повторювач або міст, спершу перевірте основний маршрутизатор.
- Якщо ви використовуєте бездротову точку доступу, окремо перевірте маршрутизатор. Якщо драйвер Wi-Fi підтримує обмеження AQL (наприклад, mt76), скоригуйте їх для покращення затримки.
Встановлення
Встановіть пакунок luci-app-sqm (або sqm-scripts, якщо не використовуєте LuCI) та дотримуйтесь інструкцій нижче.
У LuCI перейдіть до Network → SQM QoS:
- У вкладці Basic Settings:
- Позначте Enable
- Виберіть інтерфейс вашого інтернет-з'єднання (WAN)
- Вкажіть Download і Upload на рівні 90% від виміряних значень
- У вкладці Queue Discipline:
- Оберіть cake (або fq_codel, див. примітку 3)
- Оберіть скрипт piece_of_cake.qos
- Розширені налаштування можна залишити вимкненими (див. примітку 4)
- У вкладці Link Layer Adaptation:
- Виберіть тип з'єднання та накладні витрати (overhead), значення mpu — необов’язкове:
- VDSL — Ethernet, overhead 34 (або 26 без PPPoE), mpu 68. Для 100 Mbps — overhead 42, mpu 84.
- Інший DSL — ATM, overhead 44, mpu 96.
- DOCSIS (кабель) — Ethernet. Для швидкості <760 Mbps overhead 22 (mpu 64), ≥760 Mbps overhead 42 (mpu 84).
- Оптика або Ethernet — Ethernet, overhead 44, mpu 84.
- Не впевнені? — Ethernet, overhead 44, mpu 96.
- Натисніть Save & Apply
Готово! Повторно проведіть тест швидкості — затримка при навантаженні має бути мінімальною.
Результати
Приклад: користувач використовує OpenWrt 23.05 на WRT32X з кабельним з'єднанням DOCSIS 500/35 Мбіт/с. Обрано SQM із cake на 90% швидкості. Увімкнено Packet Steering. Результати:
| Результати Speedtest | ||||||||
|---|---|---|---|---|---|---|---|---|
| QoS | Завантаження | Відвантаження | Ping (idle) | Ping під час DL | Ping під час UL | Якість | Буферизація | |
| Немає | 532 Мбіт | 37 Мбіт | 12 мс | +18 мс | +38 мс | B | B | |
| SQM | 495 Мбіт | 28 Мбіт | 12 мс | +0 мс | +0 мс | A+ | A+ | |
Додаткове тонке налаштування
1. Щоб ще більше зменшити затримку:
- Поступово збільшуйте значення Download/Upload і перевіряйте затримку. Якщо з’являється буферизація — трохи зменшіть.
- Використовуйте тест Waveform для досягнення оцінок A+.
- Для DSL — дозволяється перевищення результатів початкового тесту, оскільки SQM враховує ~9% накладні витрати ATM.
- Для DOCSIS — провайдер може штучно завищувати швидкість на перші 10 сек. тесту.
2. Встановіть значення mpu у LuCI → SQM QoS → Link Layer Adaptation → Advanced Linklayer Options. Див. SQM Details і обговорення.
3. Хоча Cake — рекомендований варіант, fq_codel забезпечує вищу швидкість на слабших пристроях (до 15% швидше при обмеженому CPU — джерело).
4. Для просунутих параметрів див. Налаштування SQM.