TGViewer
NetworkAdmin.ru NetworkAdmin.ru @networkadminru · 4.7K subscribers
Post #856 1.54K
⭐️ QoS в Linux

Как только в linux заходит разговор про QoS, shaping и управление трафиком, у многих сразу одна реакция: tc - это боль, страдание и странные команды из 2009 года. И это недалеко от правды. Утилита мощная, но синтаксис у нее такой, будто она не хочет, чтобы ей пользовались. При этом tc - это стандартный инструмент linux для управления очередями, задержками, полосой и приоритетами трафика.

Что с его помощью обычно делают:

ограничивают скорость;
дают приоритет важному трафику;
режут шумные сервисы;
эмулируют плохую сеть: delay, loss, jitter;
наводят порядок на WAN-линках и VPN.


Самое главное, что нужно понять:

QoS в linux почти всегда про исходящий трафик (egress). Входящий поток контролировать сложнее, обычно его либо полируют через IFB, либо ограничивают уже на стороне отправителя.

▪️ Самый простой пример - ограничить скорость интерфейса до 50 Мбит/с:


tc qdisc add dev eth0 root tbf rate 50mbit burst 32kbit latency 400ms


tbf - Token Bucket Filter
rate - лимит скорости
burst - допустимый всплеск
latency - максимальная задержка очереди

▪️ Удалить правило:


tc qdisc del dev eth0 root


Если нужен вариант без магии, для большинства случаев, чаще смотрят в сторону fq_codel или cake. Например:


tc qdisc add dev eth0 root fq_codel


fq_codel хорош тем, что помогает бороться с bufferbloat и в целом делает очередь более адекватной без сложной ручной настройки.

▪️ Если нужно не просто сделать лучше, а именно ограничить канал и при этом сохранить нормальную отзывчивость, часто используют cake:


tc qdisc add dev eth0 root cake bandwidth 100mbit


Почему tc кажется страшным:

qdisc
class
filter
parent
handle
flowid


На первый взгляд это выглядит как отдельная религия. Но на практике часто хватает 3 сценариев:

ограничить скорость
сделать очередь адекватной
эмулировать плохую сеть для тестов

Например, добавить задержку в 100 мс:


tc qdisc add dev eth0 root netem delay 100ms


Или сделать "плохую" сеть с потерями:


tc qdisc add dev eth0 root netem delay 100ms loss 2%


Это уже очень полезно для тестирования приложений, API, VoIP, VPN и всего, что в локалке работает идеально, а в реальной сети нет.

#tc #network

🧑‍💻 NetworkAdmin
  • 👍 8
  • ❤ 2
More from @networkadminru
  1. Sep 29, 2026🥱 Как быстро разобраться с дисками и маунтами Когда на сервере несколько дисков, LVM, отд…
  2. Sep 28, 2026🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему Иногд…
  3. Sep 25, 2026🤩 Как расшифровать код ошибки Windows через certutil При установке обновлений Windows ран…
  4. Sep 23, 2026💻 Как жестко перезагрузить linux, когда обычный reboot уже не помогает Иногда сервер зави…
  5. Sep 22, 2026🌚 watch: простая динамическая диагностика в терминале Иногда не нужен отдельный мониторин…
  6. Sep 21, 2026👌 Firewall default deny: как внедрять без внезапного отрезания доступа Идея простая: разр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →