QoS — это набор правил и механизмов, которые помогают сети распределять пропускную способность осознанно, чтобы важный трафик (голос, видеоконференции, интерактивные приложения) проходил стабильно даже тогда, когда канал загружен «под завязку». По-простому: QoS — это «приоритизация очереди», где скорую помощь пропускают вперёд, а грузовики с бэкапами едут правее и медленнее.
Где применяется. Почти везде, где есть конкуренция за канал: офисные и домашние роутеры, корпоративные маршрутизаторы и коммутаторы, Wi-Fi (WMM), провайдерские сети, дата-центры, VPN-туннели (WireGuard, IPsec, OpenVPN), SD-WAN, а также виртуальные среды и контейнерные платформы (например, класс QoS у Pod’ов в Kubernetes). В «облаках» QoS часто встречается как управление очередями на виртуальных интерфейсах и политика приоритизации внутри виртуальных маршрутизаторов/балансировщиков.
Из чего состоит QoS (в классической сетевой трактовке)
- Классификация и маркировка.
Сначала поток распознают (по портам, подсетям, протоколам, доменам SNI, L7-сигнатурам) и помечают. В IP-мире используют DSCP (поле в заголовке IP), на L2 — 802.1p/CoS. Частые пометки:- EF (Expedited Forwarding, DSCP 46) — для голоса;
- AF41/AF31 — видео/бизнес-критичные приложения;
- CS0 / Best Effort — всё остальное;
- Background/Scavenger — синхи, торренты, обновления.
- Ограничение и сглаживание — Policing vs Shaping.
- Policer «рубит с плеча»: если поток выше лимита — отбрасывает/урезает.
- Shaper сглаживает: временно буферизует и выдаёт трафик ровно в заданном темпе (уместно на границе к провайдеру, чтобы не распухали чужие буферы).
- Очереди и планировщики (Queuing/Scheduling).
Ключ к «волшебству» QoS: какой трафик в какую очередь и как часто её обслуживать. Используют:- LLQ/Strict Priority — «абсолютный приоритет» для голоса/сигнализации;
- WFQ/CBWFQ/DRR — взвешенная справедливая выдача;
- FQ-CoDel / CAKE — современные AQM-алгоритмы, снижающие bufferbloat (задержки из-за переполненных буферов).
- Active Queue Management (AQM).
CoDel/WRED/FQ-CoDel/CAKE раннее «пощипывают» очереди, не давая пингу расти до сотен миллисекунд при нагрузке. Это особенно заметно в видеозвонках и играх.
Зачем QoS нужен на практике
- Стабильный голос/видео: меньше джиттера, «робота» и обрывов, даже когда включился бэкап или кто-то заливает гигабайтный файл.
- Быстрая реакция приложений: SSH/RDP, CRM/ERP, админки и интерактивные веб-сервисы остаются отзывчивыми.
- Прозрачные пиковые часы: когда канал упёрся, QoS превращает «хаос» в предсказуемость: важное идёт, второстепенное ждёт.
- Контроль расходов в облаках и SD-WAN: ограничение шумного трафика, справедливое распределение между филиалами/подсетями.
Типичные подводные камни
- DSCP-«отбеливание»: провайдеры/туннели иногда сбрасывают или переписывают DSCP; пометки с вашей стороны могут не доехать. Решение — приоритизировать у себя (на вход/выход), а в туннелях включать политику preserve-DSCP, если поддерживается.
- Только egress — мало: если вы не контролируете входящий трафик, shape на вход (через IFB/ingress qdisc в Linux, SmartQueue/SmartQoS в CPE) и держите полосу чуть ниже реальной, чтобы очереди образовывались у вас, а не у провайдера.
- Bufferbloat: огромные буферы роутера «сглатывают» пик, но задержка взлетает. Лечат FQ-CoDel/CAKE и грамотный shaping.
- Приоритет всему: если «всё важно» — ничего не важно. Классов должно быть мало и понятно (3–5 вполне достаточно).
Что именно настраивают (карта действий)
- Разбейте трафик на 3–5 классов.
Пример: Voice (EF), Video (AF41), Interactive (AF31/CS4), Best Effort (CS0), Background/Scavenger. - Маркируйте на «границе доверия».
Не доверяйте меткам с ноутбуков/серверов. Помечайте на первом управляемом узле (шлюзе/маршрутизаторе/WLAN-контроллере). - Сделайте egress-shaping к провайдеру.
Поставьте лимиты на 3–10% ниже реальной полосы (особенно аплинк). Это удержит очереди у вас и даст AQM работать. - Включите AQM.
- Дом/малый офис (Linux/CPE): FQ-CoDel или CAKE.
- Enterprise: LLQ для голоса + CBWFQ/WFQ для остальных + WRED/ECN по месту.
- Wi-Fi — не забыть WMM.
Карта соответствия DSCP → WMM AC: AC_VO (голос), AC_VI (видео), AC_BE, AC_BK. - VPN и туннели.
Разрешите копирование DSCP внутрь туннеля (если поддерживается) или ремаркируйте заново после «вылета» из туннеля. - Проверьте под нагрузкой.
Запустите тяжёлую загрузку/обновления и параллельно измерьте ping/jitter и качество звонка/видео. С QoS задержка должна оставаться ровной.
Конкретные примеры (без привязки к брендам)
- Linux (маршрутизатор):
- Egress-shape до провайдерского uplink:
# пример: 90 Мбит/с аплинк, 900 Мбит/с даунлинк → ставим 85/850 tc qdisc replace dev eth0 root cake bandwidth 85mbit diffserv3 # для входящего потребуется ifb и ingress-редирект (упрощаем идею)
- Идея: diffserv3 автоматически уважает EF/Video/BestEffort; «бэкграунд» попадает в наименьший приоритет.
- Egress-shape до провайдерского uplink:
- Cisco (MQC-логика, концептуально):
- →
class-map match dscp ef
(LLQ для голоса)priority percent 5
- →
class-map match dscp af41
bandwidth percent 20
- Остальные классы —+
bandwidth remaining percent ...
(WRED).random-detect
- MikroTik (идея):
- Классификация mangle по DSCP/портам →с PCQ/fq_codel, один класс с priority для EF, отдельный — для фоновых задач.
queue tree
- Классификация mangle по DSCP/портам →
- Kubernetes (про CPU/память):
- Классы Guaranteed / Burstable / BestEffort — это ресурсный QoS контейнеров, не сетевой. Но логика та же: критичные ворклоады получают прогнозируемую долю ресурсов.
Мини-сценарий
В офисе 100/20 Мбит/с. Раз в день запускаются облачные бэкапы, и во время синхронизации в Zoom — «роботы», RDP рвётся. Вводим 4 класса (Voice/Video/Interactive/Best Effort), включаем shaping: uplink = 19 Мбит/с, downlink = 95 Мбит/с, FQ-CoDel/CAKE на очередях, EF для голоса, видео — AF41. Результат: при бэкапах звонки не «сыпятся», SSH нравственно отзывчивый, а файлы просто доходят чуть позже.
QoS — это не про «ускорить интернет», а про правильный порядок в очереди. Он держит задержку и джиттер под контролем, когда канал забит. Минимальный практический набор: разбить трафик по важности, сделать shaping на границе к провайдеру, включить AQM (FQ-CoDel/CAKE) и дать голосу приоритет. Остальное — нюансы реализации на конкретном оборудовании и в ваших сценариях.