Шейпинг трафика — механизм управления сетевыми потоками, при котором трафик намеренно регулируется: ограничивается скорость для определённых типов данных, приоритизируются критичные пакеты, сглаживаются всплески. В хостинге шейпинг применяется для: ограничения скорости на тарифах (100 Мбит/с, 1 Гбит/с), защиты от DDoS-атак, честного распределения полосы между пользователями на shared hosting.
Как работает
На Linux шейпинг реализован через Traffic Control (tc) с дисциплинами очередей (qdisc): HTB (Hierarchical Token Bucket) для ограничения скорости, HFSC для приоритизации, FQ-CoDel для снижения буферного раздувания (bufferbloat). Правила создаются командами tc qdisc, tc class, tc filter.
Алгоритм Token Bucket: токены накапливаются в «ведре» со скоростью, равной разрешённой полосе. Каждый пакет тратит токены. При отсутствии токенов пакет задерживается или отбрасывается. Это позволяет разрешать короткие всплески (burst) выше номинальной скорости за счёт накопленных токенов.
История
Концепция управления сетевым трафиком формализована в RFC 2475 (1998) — архитектура DiffServ (Differentiated Services). Алгоритм Token Bucket описан ещё в 1960-х годах в теории очередей. В Linux Traffic Control появился в ядре версии 2.2 (1999). HTB-дисциплина разработана Мартином Девераой в 2001 году.
Шейпинг в хостинге
- Port limiting — жёсткое ограничение скорости порта (100 Мбит/с на тарифе)
- Burst allowance — временное превышение лимита (например, 1 Гбит/с на 10 секунд)
- Fair queuing — равное распределение полосы между пользователями при конкуренции
- QoS приоритизация — голосовой трафик (VOIP) получает приоритет над bulk-данными
На что обращать внимание
Хостеры нередко применяют шейпинг без предупреждения при превышении «fair use» лимита трафика. Признак — нестабильная скорость при наличии большого пинга. Отличайте шейпинг от packet loss: шейпинг задерживает пакеты, а не теряет их. При выборе тарифа проверяйте, является ли заявленная скорость портовой или средней с учётом burst-ограничений.
Как работает шейпинг трафика
Шейпинг реализуется на уровне сетевого стека через очереди (qdisc). В Linux стандартный инструмент — tc (Traffic Control) из пакета iproute2. Алгоритм Token Bucket Filter (TBF) — классика шейпинга: пакеты потребляют токены, которые накапливаются со скоростью лимита. HTB (Hierarchical Token Bucket) позволяет создавать иерархии приоритетов: трафик VoIP получает приоритет над HTTP, HTTP — над P2P. QoS (Quality of Service) — более широкое понятие, включающее шейпинг как один из механизмов. На хостинге шейпинг применяется, чтобы один VPS не забивал канал и не мешал соседям.
Виды ограничений трафика
- Полосовое ограничение — ограничение скорости (bandwidth shaping)
- Квотирование — ограничение суммарного трафика в месяц
- Приоритизация — разные типы трафика обрабатываются с разным приоритетом
История
RFC 2475 (1998) формализовал DiffServ — архитектуру QoS. В Linux инструменты шейпинга появились в ядре 2.2 (1999). С 2013 года FQ-CoDel заменил традиционные алгоритмы, снижая буферизацию и задержки. Bandwidth и шейпинг тесно связаны с latency — правильный шейпинг снижает jitter без потери пропускной способности.