1.1. Что такое управление трафиком и как это работает?

1.1. Что такое управление трафиком и как это работает?

Управление трафиком — название, объединяющее в себе все части подсистемы организации очередей в сети или сетевом устройстве. Управление трафиком состоит из нескольких операций: классифицирование (classification) — механизм, позволяющий идентифицировать пакеты и помещать их в определенные потоки или классы; ограничение входящего трафика (policing) — механизм, с помощью которого можно ограничить количество пакетов или байт в потоке, соответствующих определенной классификации; планирование (scheduling) — процесс принятия решений, при котором пакеты упорядочиваются и переупорядочиваются для дальнейшей передачи; наконец, ограничение исходящего трафика (shaping) — процесс при котором пакеты задерживаются и передаются таким образом, чтобы реализовать постоянную и предсказуемую скорость потока.

Все эти характеристики системы управления трафиком могут быть скомбинированы комплексными методами для резервирования или ограничения полосы пропускания для отдельных потоков (или приложений).

Одним из ключевых моментов управления трафиком является понятие токенов. Реализация ограничения входящего и исходящего трафиков требует вычисления количества пакетов или байт проходящих за момент времени для определения скорости. Каждый пакет или байт (в зависимости от реализации) соответствует токену и передается только в случае наличия свободного токена. Общее образное хранилище, где находятся токены, называется буфером (bucket). Если кратко, то буфер характеризует две величины: количество токенов, которые могут быть одновременно использованы (размер буфера) и скорость, с которой буфер заполняется новыми токенами.

В секции 1.2 приведены примеры буферов системы управления трафиком в Linux.

В Linux, управление трафиком исторически сложная задача. Команда tc обеспечивает интерфейс со структурами ядра, ответственными за ограничение, планирование и классификацию трафика. Синтаксис этой команды, однако, весьма загадочен. Проект tcng предоставляет более дружественный пользователю интерфейс к такой мощной утилите как tc, определяя свой язык описания конфигурации. Его использование при написании конфигурации системы управления трафиком упрощает поддержку, облегчает понимание и, что важно, увеличивает переносимость.