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.

Перш ніж оптимізувати мережу, потрібно знати її поточний стан:

  • Проведіть тест швидкості на Waveform або Speedtest у період низької активності в мережі. Отримайте пікову швидкість завантаження/відвантаження, затримку та оцінку надмірної буферизації.
  • Увімкніть Packet Steering в LuCI → Network → Interfaces → Global network options, щоб покращити продуктивність.
  • Якщо цей пристрій OpenWrt використовується як ретранслятор, повторювач або міст, спершу перевірте основний маршрутизатор.
  • Якщо ви використовуєте бездротову точку доступу, окремо перевірте маршрутизатор. Якщо драйвер Wi-Fi підтримує обмеження AQL (наприклад, mt76), скоригуйте їх для покращення затримки.

Встановіть пакунок luci-app-sqm (або sqm-scripts, якщо не використовуєте LuCI) та дотримуйтесь інструкцій нижче.

У LuCI перейдіть до Network → SQM QoS:

  1. У вкладці Basic Settings:
    • Позначте Enable
    • Виберіть інтерфейс вашого інтернет-з'єднання (WAN)
    • Вкажіть Download і Upload на рівні 90% від виміряних значень
  2. У вкладці Queue Discipline:
    • Оберіть cake (або fq_codel, див. примітку 3)
    • Оберіть скрипт piece_of_cake.qos
    • Розширені налаштування можна залишити вимкненими (див. примітку 4)
  3. У вкладці 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.
  1. Натисніть 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.

  • Last modified: 2025/06/06 12:41
  • by vazaz