# Traffic Shaping

Шейпинг ограничивает скорость путём буферизации лишнего трафика.\
Весь приходящий трафик проходит через буфер. Шейпер из этого буфера с постоянной скоростью изымает пакеты.

Если скорость поступления пакетов в буфер ниже выходной, они в буфере не задерживаются — пролетают насквозь.\
А если скорость поступления выше выходной, они начинают скапливаться.\
Выходная скорость при этом всегда одинакова.\
Таким образом всплески трафика складываются в буфер и будут отправлены, когда до них дойдёт очередь.\
Поэтому наряду с диспетчеризацией в очередях, шейпинг — второй инструмент, делающий **вклад в совокупную задержку**.

![](https://3903873742-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LIgRTPaaN7wUujKIWEz%2F-LMaZAd3eKxVTz6opO3a%2F-LMaZJH0339J-hqZZ_4F%2Fimage-73.png?generation=1537171609057040\&alt=media)

На иллюстрации хорошо видно, как пакет, пришедший буфер в момент времени t2, на выходе оказывается в момент t3. t3-t2 — это задержка, вносимая шейпером.\
Шейпер обычно применяется к исходящему трафику.\
Так выглядит профиль после шейпера.

![](https://3903873742-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LIgRTPaaN7wUujKIWEz%2F-LMaZAd3eKxVTz6opO3a%2F-LMaZJH25CeTPq54is2T%2Fimage-62.png?generation=1537171605398206\&alt=media)

Название «Shaping» говорит о том, что инструмент придаёт профилю трафика форму, сглаживая его.\
Главное достоинство такого подхода — оптимальное использование имеющейся полосы — вместо дропа чрезмерного трафика, мы его откладываем.

Главный недостаток — непредсказуемая задержка — при заполнении буфера, пакеты будут томиться в нём долго. Поэтому не для всех типов трафика шейпинг хорошо подходит.\
Shaping использует механизм [Leaky Bucket](https://linkmeup.gitbook.io/sdsm/15.-qos/7.-ogranichenie-skorosti/4-mekhanizmy-leaky-bucket-i-token-bucket/0-algoritm-leaky-bucket).
