Механизм обратной связи — дополнение к HTB-полисеру абонента. Он ограничивает входящий трафик абонента не напрямую, а через сокращение исходящего.
Ограничивать входящий трафик напрямую неэффективно с точки зрения экономии полосы: к моменту отбрасывания пакеты уже получены из интернет-канала оператора. Отброшенные пакеты отправитель передаёт повторно, и это создаёт лишнюю нагрузку на канал. TCP и часть UDP-протоколов со своим механизмом congestion control со временем подстраиваются под ограничение, но лишний трафик по каналу всё равно проходит.
Большинство прикладных протоколов работают по принципу «запрос — ответ»: абонент отправляет запрос (исходящий трафик) и получает ответ (входящий). Если сокращать полосу для запросов, уменьшается и объём ответов. Такой подход позволяет дополнительно сэкономить до 10% полосы канала оператора по сравнению с обычным полисингом.
В HTB-профиль абонента добавляется параметр htb_inbound_bw:
htb_inbound_bw=rate <порог> ceil <максимум>
htb_inbound_bw rate, исходящий трафик ограничен как обычно — значением ceil в htb_root.htb_root ceil) начинает уменьшаться.htb_inbound_bw rate и htb_inbound_bw ceil, и на тот же процент сокращается исходящий трафик.htb_root rate.htb_root ceil классы трафика перераспределяют полосу между собой в соответствии со своими rate и ceil.За основу возьмём пример 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
В этом примере:
htb_root rate).rate по классам должна быть меньше rate корневого класса.
Для полисинга общего и виртуального канала аналогичный механизм настраивается иначе, через ceil корневых классов: Полисинг Общего канала.