Симуляция задержек и потерь пакетов с tc в Linux

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

linuxtcnetem

ℹ️ При разработке и тестировании сетевых приложений важно понимать, как они ведут себя в условиях нестабильной сети.

🔥 Инструмент tc (Traffic Control) позволяет эмулировать различные сетевые условия прямо на вашем локальном компьютере.

🖥 Установка

Установите пакет iproute2, если его нет, выполнив следующие команды:

sudo apt install iproute2  # для Ubuntu/Debian
sudo yum install iproute # для RHEL/CentOS

⌛️ Добавление задержки

Это симулирует ситуацию, когда приложение работает в условиях медленного интернета.

sudo tc qdisc add dev eth0 root netem delay 100ms

ℹ️ Что происходит?

Задержка в 100 мс добавляется к каждому пакету, отправляемому через интерфейс eth0.

🔽 Эмуляция потери пакетов

Иногда пакеты теряются в сети, что может привести к сбоям в приложении.

sudo tc qdisc change dev eth0 root netem loss 10%

ℹ️ Что происходит?

10% пакетов будут случайным образом теряться при передаче через интерфейс eth0.

📂 Комбинирование параметров

Вы можете одновременно добавить задержку, потерю и даже повреждение пакетов.

sudo tc qdisc change dev eth0 root netem delay 100ms loss 10% corrupt 5%

ℹ️ Что происходит?

  • Задержка в 100 мс: каждый пакет будет отправлен с задержкой.
  • Потеря 10% пакетов: 10% пакетов не достигнут получателя.
  • Повреждение 5% пакетов: 5% пакетов будут повреждены при передаче.

Удаление всех ограничений

Когда вы завершили тестирование и хотите вернуть сеть в нормальное состояние, достаточно удалить все ограничения:

sudo tc qdisc del dev eth0 root netem

ℹ️ Что происходит?

Все настройки, сделанные с помощью tc, будут удалены, и сеть вернётся к обычному режиму работы.

✳️ tc — это мощный инструмент, который может значительно улучшить качество и надежность вашего сетевого приложения.

tags: #linux #сети #тестирование

🧭 @recura_tech

Иллюстрация: два ноутбука с логотипом Tux и сетевыми кабелями на ярком фоне, символизирующая тестирование сетей в Linux.
Иллюстрация: Tux и ноутбуки как метафора Linux и сетевого тестирования.

Читайте так же