linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Команды/cmd-tc

kb/commands ── Команды ── advanced

tc - traffic control

`tc` управляет очередями пакетов на сетевых интерфейсах: лимиты bandwidth, задержки, потери, классификация. Часть iproute2.

view as markdownaka: traffic-control, qdisc

Понятийный минимум

  • qdisc (queueing discipline) - правило очереди на интерфейсе. На каждом интерфейсе ВСЕГДА есть qdisc - по умолчанию pfifo_fast или fq_codel.
  • class - иерархия внутри qdisc (для деления bandwidth между трафиком)
  • filter - что в какой class попадает (по портам, IP, маркеру)

Просмотр

bash
tc qdisc show                        # qdisc на всех интерфейсах
tc qdisc show dev eth0
tc -s qdisc show dev eth0            # -s: со статистикой (bytes, packets, dropped)
tc class show dev eth0
tc filter show dev eth0

netem: симуляция плохой сети

Самый частый use-case для CI / chaos-тестов:

bash
sudo tc qdisc add dev eth0 root netem delay 200ms
sudo tc qdisc add dev eth0 root netem delay 100ms 20ms       # +-20ms jitter
sudo tc qdisc add dev eth0 root netem loss 5%
sudo tc qdisc add dev eth0 root netem corrupt 1%
sudo tc qdisc add dev eth0 root netem duplicate 1%
sudo tc qdisc add dev eth0 root netem reorder 25% 50%
# Комбо - сразу несколько эффектов:
sudo tc qdisc replace dev eth0 root netem delay 50ms loss 1%
# Снять:
sudo tc qdisc del dev eth0 root

Проверить эффект - пинговать через интерфейс, смотреть retransmits в cmd-ss -ti.

tbf: лимит bandwidth

Token Bucket Filter - простой rate-limiter:

bash
sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

▸1 Mbit/s outgoing, очередь до 400мс

htb: иерархическое деление полосы

bash
# 100Mbit на интерфейсе, разделено: 70 для класса 1:10, 30 для 1:20
sudo tc qdisc add dev eth0 root handle 1: htb default 20
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 70mbit ceil 100mbit
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 30mbit ceil 100mbit
# Распихать трафик: SSH (port 22) - в premium-класс
sudo tc filter add dev eth0 parent 1: protocol ip prio 1 \
  u32 match ip dport 22 0xffff flowid 1:10

Применение к loopback (для тестов)

netem на lo - самый быстрый chaos-тест локально, без подъёма топологии:

bash
sudo tc qdisc add dev lo root netem delay 200ms
ping -c 3 127.0.0.1  

▸RTT теперь ~200ms

sudo tc qdisc del dev lo root

Capability

Для всех tc add/del нужен CAP_NET_ADMIN. В контейнерах - --cap-add=NET_ADMIN.

§ команды

bash
tc -s qdisc show dev eth0

Текущий qdisc + статистика (dropped/overlimits показывают перегрузку)

bash
sudo tc qdisc add dev eth0 root netem delay 100ms loss 1%

Симулировать плохую сеть: задержка + потери (для тестов)

bash
sudo tc qdisc replace dev eth0 root netem rate 10mbit

Жёсткий лимит 10 Mbit/s - replace создаёт или меняет

bash
sudo tc qdisc del dev eth0 root

Снять все правила - вернуть дефолтный qdisc

bash
sudo tc -s -d qdisc show dev eth0

Подробный вывод с detailed-статистикой и параметрами

§ см. также

  • routing-tableRouting tableТаблица маршрутизации - список «куда направлять пакеты с таким destination». Самая длинная (longest-prefix) подходящая запись выигрывает.
  • cmd-ipip - швейцарский нож сетевой настройки`ip` - фронт-энд iproute2, заменяет старые ifconfig/route/arp. Подкоманды: `ip addr` (адреса), `ip link` (интерфейсы), `ip route` (маршруты), `ip neigh` (ARP).
  • tcp-statesTCP states (LISTEN, ESTABLISHED, TIME_WAIT)TCP-сессия проходит через 11 состояний от LISTEN до CLOSED. Самые важные на проде: LISTEN, ESTABLISHED, TIME_WAIT, CLOSE_WAIT.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки