Создание HTB, TBF полисера через файл с разметкой [Документация VAS Experts]

Создание HTB, TBF полисера через файл с разметкой

Профиль полисинга (тарифный план) описывается текстовым файлом с расширением .cfg. В файле задаются ограничения полосы для каждого из 8 классов трафика. Тот же профиль можно задать в формате JSON.

Как назначить профиль абоненту и чем именованный профиль отличается от анонимного, описано в разделе Управление полисингом (тарифным планом). Именованные профили полисинга.

Формат файла

Каждая строка задаёт ограничение для одного класса трафика в одном направлении. Строка, начинающаяся с #, считается комментарием.

Ключ Направление Назначение
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 — наименьший. Протоколы и направления распределяются по классам глобальной разметкой Классы трафика по протоколам и направлениям. Разметка трафика. или индивидуальной разметкой по протоколам (18 услуга): Полисинг по сессии и переопределение классов трафика.

Полисер 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, как описано в разделе Назначение приоритетов в зависимости от протокола:

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: Назначение приоритетов в зависимости от направления.

Если для класса указать ключевое слово 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 можно включить механизм обратной связи, при котором исходящая полоса абонента автоматически сокращается при росте входящего трафика. Описание — в разделе Управление исходящим трафиком через обратную связь.

Назначение профиля

На один 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

Подробнее:

Профиль полисинга (тарифный план) описывается текстовым файлом с расширением .cfg. В файле задаются ограничения полосы для каждого из 8 классов трафика. Тот же профиль можно задать в формате JSON.

Как назначить профиль абоненту и чем именованный профиль отличается от анонимного, описано в разделе Управление полисингом (тарифным планом). Именованные профили полисинга.

Формат файла

Каждая строка задаёт ограничение для одного класса трафика в одном направлении. Строка, начинающаяся с #, считается комментарием.

Ключ Направление Назначение
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. Протоколы и направления распределяются по классам глобальной разметкой Классы трафика по протоколам и направлениям. Разметка трафика. или индивидуальной разметкой по протоколам (18 услуга): Полисинг по сессии и переопределение классов трафика.

Полисер 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, как описано в разделе Назначение приоритетов в зависимости от протокола:

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: Назначение приоритетов в зависимости от направления.

Если для класса указать ключевое слово 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 можно включить механизм обратной связи, при котором исходящая полоса абонента автоматически сокращается при росте входящего трафика. Описание — в разделе Управление исходящим трафиком через обратную связь.

Назначение профиля

На один 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

Подробнее:

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