Управление исходящим трафиком через обратную связь [Документация VAS Experts]

Управление исходящим трафиком через обратную связь

Механизм обратной связи — дополнение к HTB-полисеру абонента. Он ограничивает входящий трафик абонента не напрямую, а через сокращение исходящего.

Зачем это нужно

Ограничивать входящий трафик напрямую неэффективно с точки зрения экономии полосы: к моменту отбрасывания пакеты уже получены из интернет-канала оператора. Отброшенные пакеты отправитель передаёт повторно, и это создаёт лишнюю нагрузку на канал. TCP и часть UDP-протоколов со своим механизмом congestion control со временем подстраиваются под ограничение, но лишний трафик по каналу всё равно проходит.

Большинство прикладных протоколов работают по принципу «запрос — ответ»: абонент отправляет запрос (исходящий трафик) и получает ответ (входящий). Если сокращать полосу для запросов, уменьшается и объём ответов. Такой подход позволяет дополнительно сэкономить до 10% полосы канала оператора по сравнению с обычным полисингом.

Как это работает

В HTB-профиль абонента добавляется параметр htb_inbound_bw:

htb_inbound_bw=rate <порог> ceil <максимум>
  1. Пока входящий трафик абонента ниже порога htb_inbound_bw rate, исходящий трафик ограничен как обычно — значением ceil в htb_root.
  2. Когда входящий трафик превышает порог, верхняя граница исходящего трафика (htb_root ceil) начинает уменьшаться.
  3. Величина уменьшения пропорциональна превышению: процент превышения считается по интервалу между htb_inbound_bw rate и htb_inbound_bw ceil, и на тот же процент сокращается исходящий трафик.
  4. Исходящий трафик никогда не ограничивается сильнее, чем htb_root rate.
  5. При уменьшении htb_root ceil классы трафика перераспределяют полосу между собой в соответствии со своими rate и ceil.

Пример: тариф 10 Мбит/с с обратной связью

За основу возьмём пример 1 из раздела Создание HTB, TBF полисера через файл с разметкой: тариф 10 Мбит/с, торренты выделены в класс cs7 и ограничены 3 Мбит/с.

Добавим параметр htb_inbound_bw и зададим для корневых классов rate и ceil:

# Обратная связь: порог 9 Мбит/с, максимум 10 Мбит/с входящего трафика
htb_inbound_bw=rate 9mbit ceil 10mbit
# Входящий трафик (к абоненту)
htb_inbound_root=rate 2mbit ceil 10mbit
htb_inbound_class0=rate 8bit ceil 10mbit
htb_inbound_class1=rate 8bit ceil 10mbit
htb_inbound_class2=rate 8bit ceil 10mbit
htb_inbound_class3=rate 8bit ceil 10mbit
htb_inbound_class4=rate 8bit ceil 10mbit
htb_inbound_class5=rate 8bit ceil 10mbit
htb_inbound_class6=rate 8bit ceil 10mbit
htb_inbound_class7=rate 1mbit ceil 3mbit
# Исходящий трафик (от абонента): ceil уменьшается до rate при превышении порога
htb_root=rate 2mbit ceil 10mbit
htb_class0=rate 8bit ceil 10mbit
htb_class1=rate 8bit ceil 10mbit
htb_class2=rate 8bit ceil 10mbit
htb_class3=rate 8bit ceil 10mbit
htb_class4=rate 8bit ceil 10mbit
htb_class5=rate 8bit ceil 10mbit
htb_class6=rate 8bit ceil 10mbit
htb_class7=rate 1mbit ceil 3mbit

В этом примере:

  • пока входящий трафик абонента не превышает 9 Мбит/с, исходящий может занимать до 10 Мбит/с;
  • при входящем трафике от 9 до 10 Мбит/с верхняя граница исходящего пропорционально снижается;
  • исходящий трафик не ограничивается сильнее, чем до 2 Мбит/с (htb_root rate).
  • Как и в любом HTB-профиле, необходимо описать все 8 классов.
  • Сумма rate по классам должна быть меньше rate корневого класса.

Для полисинга общего и виртуального канала аналогичный механизм настраивается иначе, через ceil корневых классов: Полисинг Общего канала.

Была ли полезна эта информация?