====== Создание HTB, TBF полисера через файл с разметкой ======
{{indexmenu_n>2}}
Профиль полисинга (тарифный план) описывается текстовым файлом с расширением ''.cfg''. В файле задаются ограничения полосы для каждого из 8 классов трафика. Тот же профиль можно задать [[dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_json|в формате JSON]].
Как назначить профиль абоненту и чем именованный профиль отличается от анонимного, описано в разделе [[dpi:dpi_components:platform:subscriber_management:policing_mng|]].
===== Формат файла =====
Каждая строка задаёт ограничение для одного класса трафика в одном направлении. Строка, начинающаяся с ''#'', считается комментарием.
^ Ключ ^ Направление ^ Назначение ^
| ''tbf_inbound_class0'' … ''tbf_inbound_class7'' | Входящий (к абоненту) | Ограничение класса для TBF |
| ''tbf_class0'' … ''tbf_class7'' | Исходящий (от абонента) | Ограничение класса для TBF |
| ''htb_inbound_root'' | Входящий (к абоненту) | Общая полоса тарифа для HTB |
| ''htb_root'' | Исходящий (от абонента) | Общая полоса тарифа для HTB |
| ''htb_inbound_class0'' … ''htb_inbound_class7'' | Входящий (к абоненту) | Полоса класса для HTB |
| ''htb_class0'' … ''htb_class7'' | Исходящий (от абонента) | Полоса класса для HTB |
Параметры в значении ключа:
^ Параметр ^ Механизм ^ Описание ^
| ''rate'' | TBF, HTB | Для TBF — ограничение полосы класса. Для HTB — гарантированная (минимальная) полоса класса, а для root — общая полоса тарифа |
| ''ceil'' | HTB | Максимальная полоса, которую класс может занять, заимствуя свободную полосу корневого класса |
| ''burst'', ''cburst'' | TBF, HTB | Необязательные. Размер всплеска для ''rate'' и ''ceil'' |
| ''peakrate'' | TBF | Необязательный. Пиковая скорость |
| ''static'' | HTB | Выводит класс из иерархии: ограничение ''rate'' действует независимо, без привязки к root |
Номер класса (''class0'' … ''class7'') соответствует классу трафика ''cs0'' … ''cs7''. По умолчанию класс cs0 имеет наивысший приоритет, cs7 — наименьший. Протоколы и направления распределяются по классам глобальной разметкой [[dpi:dpi_options:opt_priority|]] или индивидуальной разметкой по протоколам (18 услуга): [[dpi:dpi_options:opt_shaping:shaping_session|]].
===== Полисер TBF =====
TBF ограничивает каждый класс трафика независимо. Если ограничение для класса не указано, полоса для него не ограничена.
TBF не ограничивает суммарную полосу абонента: если задать ''rate 20mbit'' для всех 8 классов, абонент в сумме может получить больше 20 Мбит/с. Для тарифа с общей полосой используйте HTB.
==== Пример: ограничение торрентов 3 Мбит/с ====
Торренты выделены в класс cs7 (разметка — как в примере для HTB ниже). Остальной трафик не ограничивается.
# Входящий трафик (к абоненту)
tbf_inbound_class7=rate 3mbit
# Исходящий трафик (от абонента)
tbf_class7=rate 3mbit
===== Полисер HTB =====
HTB реализует иерархический QoS: задаётся общая полоса тарифа (root), которая распределяется между классами трафика. Класс получает гарантированную полосу ''rate'' и может заимствовать свободную полосу до ''ceil''.
* Необходимо описать **все** 8 классов, даже неиспользуемые.
* Сумма ''rate'' по классам должна быть меньше ''rate'' корневого класса.
==== Пример 1: тариф 10 Мбит/с с ограничением торрентов ====
Тариф с общей полосой 10 Мбит/с, в котором торренты ограничены 3 Мбит/с на скачивание и на отдачу.
Сначала выделим торренты в отдельный класс трафика глобальной разметкой на DPI, как описано в разделе [[dpi:dpi_options:opt_priority:priority_config|]]:
default cs0
bittorrent cs7
Здесь весь трафик разделён на 2 класса:
* cs0 — DSCP=0, QoS (IPP)=0, Best Effort;
* cs7 — DSCP=56, QoS (IPP)=7, Priority.
Обозначения Best Effort и Priority относятся к значениям DSCP в заголовках пакетов. В полисинге СКАТ приоритеты по умолчанию обратные: cs0 — наивысший, cs7 — наименьший. Поэтому торренты в примере выделены в cs7.
Создадим файл ''rateplan_1.cfg''. Торрентам (class7) гарантируем 1 Мбит/с и разрешаем занимать не больше 3 Мбит/с. Остальной трафик может занимать всю полосу тарифа.
# Входящий трафик (к абоненту)
htb_inbound_root=rate 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
# Исходящий трафик (от абонента)
htb_root=rate 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
Классы 1–6 в этом примере не используются, так как разметка задаёт только cs0 и cs7, но описать их всё равно необходимо. Позже их можно задействовать, изменив разметку на DPI, без изменения профиля.
==== Пример 2: независимая скорость для пиринга, CDN и кеш-серверов ====
Локальный трафик (пиринг, CDN, кеш-серверы) выделяется в отдельный класс разметкой по направлению для всей платформы DPI: [[dpi:dpi_options:opt_priority:priority_config_as|]].
Если для класса указать ключевое слово ''static'', он выводится из иерархии HTB и его ограничение действует независимо от общей полосы тарифа. В примере тариф 10 Мбит/с, а трафик класса cs6 ограничен отдельно 100 Мбит/с:
# Входящий трафик (к абоненту)
htb_inbound_root=rate 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 100mbit static
htb_inbound_class7=rate 8bit ceil 10mbit
# Исходящий трафик (от абонента)
htb_root=rate 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 100mbit static
htb_class7=rate 8bit ceil 10mbit
Для продвинутых пользователей: для HTB можно включить механизм обратной связи, при котором исходящая полоса абонента автоматически сокращается при росте входящего трафика. Описание — в разделе [[dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_conf:bandwidth_incoming|]].
===== Назначение профиля =====
На один IP-адрес:
fdpi_ctrl load --policing rateplan_1.cfg --ip 10.10.10.10
На login. Если адрес абонента выдаётся динамически, профиль назначается на login, а IP связывается с ним отдельной командой:
fdpi_ctrl load --bind --user DEMO:10.10.10.10
fdpi_ctrl load --policing rateplan_1.cfg --login DEMO
На абонента с несколькими IP (например, корпоративный клиент или Dual Stack IPv4/IPv6). При связке ''bind_multi'' все адреса login считаются одним абонентом и делят полосу тарифа:
fdpi_ctrl load --bind_multi --user CORP:10.10.20.0/30
fdpi_ctrl load --bind_multi --user CORP:2001:db8:2000:1200::/64
fdpi_ctrl load --policing rateplan_1.cfg --login CORP
Подробнее:
* назначение на список IP и диапазон CIDR, создание именованных профилей — [[dpi:dpi_components:platform:subscriber_management:policing_mng|]];
* связки ''bind'' и ''bind_multi'' — [[dpi:dpi_components:platform:subscriber_management:dpi_dynamicip|]].
Профиль полисинга (тарифный план) описывается текстовым файлом с расширением ''.cfg''. В файле задаются ограничения полосы для каждого из 8 классов трафика. Тот же профиль можно задать [[dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_json|в формате JSON]].
Как назначить профиль абоненту и чем именованный профиль отличается от анонимного, описано в разделе [[dpi:dpi_components:platform:subscriber_management:policing_mng|]].
===== Формат файла =====
Каждая строка задаёт ограничение для одного класса трафика в одном направлении. Строка, начинающаяся с ''#'', считается комментарием.
^ Ключ ^ Направление ^ Назначение ^
| ''tbf_inbound_class0'' … ''tbf_inbound_class7'' | Входящий (к абоненту) | Ограничение класса для TBF |
| ''tbf_class0'' … ''tbf_class7'' | Исходящий (от абонента) | Ограничение класса для TBF |
| ''htb_inbound_root'' | Входящий (к абоненту) | Общая полоса тарифа для HTB |
| ''htb_root'' | Исходящий (от абонента) | Общая полоса тарифа для HTB |
| ''htb_inbound_class0'' … ''htb_inbound_class7'' | Входящий (к абоненту) | Полоса класса для HTB |
| ''htb_class0'' … ''htb_class7'' | Исходящий (от абонента) | Полоса класса для HTB |
Параметры в значении ключа:
^ Параметр ^ Механизм ^ Описание ^
| ''rate'' | TBF, HTB | Для TBF — ограничение полосы класса. Для HTB — гарантированная (минимальная) полоса класса, а для root — общая полоса тарифа |
| ''ceil'' | HTB | Максимальная полоса, которую класс может занять, заимствуя свободную полосу корневого класса |
| ''burst'', ''cburst'' | TBF, HTB | Необязательные. Размер всплеска для ''rate'' и ''ceil'' |
| ''peakrate'' | TBF | Необязательный. Пиковая скорость |
| ''static'' | HTB | Выводит класс из иерархии: ограничение ''rate'' действует независимо, без привязки к root |
Номер класса (''class0'' … ''class7'') соответствует классу трафика ''cs0'' … ''cs7''. Протоколы и направления распределяются по классам глобальной разметкой [[dpi:dpi_options:opt_priority|]] или индивидуальной разметкой по протоколам (18 услуга): [[dpi:dpi_options:opt_shaping:shaping_session|]].
===== Полисер TBF =====
TBF ограничивает каждый класс трафика независимо. Если ограничение для класса не указано, полоса для него не ограничена.
TBF не ограничивает суммарную полосу абонента: если задать ''rate 20mbit'' для всех 8 классов, абонент в сумме может получить больше 20 Мбит/с. Для тарифа с общей полосой используйте HTB.
==== Пример: ограничение торрентов 3 Мбит/с ====
Торренты выделены в класс cs7 (разметка — как в примере для HTB ниже). Остальной трафик не ограничивается.
# Входящий трафик (к абоненту)
tbf_inbound_class7=rate 3mbit
# Исходящий трафик (от абонента)
tbf_class7=rate 3mbit
===== Полисер HTB =====
HTB реализует иерархический QoS: задаётся общая полоса тарифа (root), которая распределяется между классами трафика. Класс получает гарантированную полосу ''rate'' и может заимствовать свободную полосу до ''ceil''.
* Необходимо описать **все** 8 классов, даже неиспользуемые.
* Сумма ''rate'' по классам должна быть меньше ''rate'' корневого класса.
==== Пример 1: тариф 10 Мбит/с с ограничением торрентов ====
Тариф с общей полосой 10 Мбит/с, в котором торренты ограничены 3 Мбит/с на скачивание и на отдачу.
Сначала выделим торренты в отдельный класс трафика глобальной разметкой на DPI, как описано в разделе [[dpi:dpi_options:opt_priority:priority_config|]]:
default cs0
bittorrent cs7
Здесь весь трафик разделён на 2 класса:
* cs0 — DSCP=0, QoS (IPP)=0, Best Effort;
* cs7 — DSCP=56, QoS (IPP)=7, Priority.
Создадим файл ''rateplan_1.cfg''. Торрентам (class7) гарантируем 1 Мбит/с и разрешаем занимать не больше 3 Мбит/с. Остальной трафик может занимать всю полосу тарифа.
# Входящий трафик (к абоненту)
htb_inbound_root=rate 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
# Исходящий трафик (от абонента)
htb_root=rate 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
Классы 1–6 в этом примере не используются, так как разметка задаёт только cs0 и cs7, но описать их всё равно необходимо. Позже их можно задействовать, изменив разметку на DPI, без изменения профиля.
==== Пример 2: независимая скорость для пиринга, CDN и кеш-серверов ====
Локальный трафик (пиринг, CDN, кеш-серверы) выделяется в отдельный класс разметкой по направлению для всей платформы DPI: [[dpi:dpi_options:opt_priority:priority_config_as|]].
Если для класса указать ключевое слово ''static'', он выводится из иерархии HTB и его ограничение действует независимо от общей полосы тарифа. В примере тариф 10 Мбит/с, а трафик класса cs6 ограничен отдельно 100 Мбит/с:
# Входящий трафик (к абоненту)
htb_inbound_root=rate 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 100mbit static
htb_inbound_class7=rate 8bit ceil 10mbit
# Исходящий трафик (от абонента)
htb_root=rate 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 100mbit static
htb_class7=rate 8bit ceil 10mbit
Для продвинутых пользователей: для HTB можно включить механизм обратной связи, при котором исходящая полоса абонента автоматически сокращается при росте входящего трафика. Описание — в разделе [[dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_conf:bandwidth_incoming|]].
===== Назначение профиля =====
На один IP-адрес:
fdpi_ctrl load --policing rateplan_1.cfg --ip 10.10.10.10
На login. Если адрес абонента выдаётся динамически, профиль назначается на login, а IP связывается с ним отдельной командой:
fdpi_ctrl load --bind --user DEMO:10.10.10.10
fdpi_ctrl load --policing rateplan_1.cfg --login DEMO
На абонента с несколькими IP (например, корпоративный клиент или Dual Stack IPv4/IPv6). При связке ''bind_multi'' все адреса login считаются одним абонентом и делят полосу тарифа:
fdpi_ctrl load --bind_multi --user CORP:10.10.20.0/30
fdpi_ctrl load --bind_multi --user CORP:2001:db8:2000:1200::/64
fdpi_ctrl load --policing rateplan_1.cfg --login CORP
Подробнее:
* назначение на список IP и диапазон CIDR, создание именованных профилей — [[dpi:dpi_components:platform:subscriber_management:policing_mng|]];
* связки ''bind'' и ''bind_multi'' — [[dpi:dpi_components:platform:subscriber_management:dpi_dynamicip|]].