Полисинг Виртуального канала (vChannel) [Документация VAS Experts]

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
dpi:dpi_options:opt_shaping:shaping_multi [2020/02/05 15:39] – ↷ Страница перемещена из dpi:dpi_options:base_functionality:opt_shaping:shaping_multi в dpi:dpi_options:opt_shaping:shaping_multi lexx26dpi:dpi_options:opt_shaping:shaping_multi [2024/12/25 12:37] (текущий) – [Для VLAN] elena.krasnobryzh
Строка 1: Строка 1:
-====== Приоритизация нескольких каналов ======+====== Полисинг Виртуального канала (vChannel) ====== 
 +{{indexmenu_n>3}}
  
 +<note tip>Подробнее о конфигурации vChannels: {{youtube>yP55RSZom48?}}</note>
 +
 +Когда у оператора есть несколько внешних (аплинков) или внутренних каналов
 +часто возникает потребность контролировать в них "полку" и ограничивать 
 +низкоприоритетный трафик независимо друг от друга,
 +так как балансировка трафика обычно неравномерна и каналы часто неравнозначны.
 +
 +<note>С помощью vChannel можно выделить трафик из общего канала на основе **физических портов / VLAN / CIDR**. На vChannel применяются полисинг и сервисы [[dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_conf|аналогично тарифным планам абонентов]]. Настройка параметров канала и ограничений в канале осуществляется  по специальному идентификатору.</note> 
 +
 +{{ :dpi:dpi_options:opt_shaping:shaping_multi:3_type_of_channels_14062023.png?nolink&600 |}}
 +===== Настройка =====
 +
 +В настройках DPI **/etc/dpi/fastdpi.conf** указывается способ, по которому он будет различать каналы:
 +<code>vchannels_type=1</code>
 +где 
 +  * 1 - означает, что для разных каналов используются разные сетевые интерфейсы
 +  * 2 - означает, что будут использоваться разные VLAN
 +  * 3 - означает, что будут определяться через CIDR
 +
 +<note>**СКАТ 12.4+** Добавлена настройка ''vchannels_default='' для помещения нераспределенного по другим каналам трафика в отдельный канал **(но не 0!)**</note>
 +
 +Далее нужно указать, какие физические интерфейсы, VLAN, CIDR образуют виртуальный канал.
 +Для этого используется параметр **vchannels_list** в /etc/dpi/fastdpi.conf.
 +<note important> После добавления в конфигурацию для создания vChannels требуется перезагрузить FastDPI процесс:
 +<code>
 +systemctl restart fastdpi
 +</code></note>
 +
 +==== Для физических интерфейсов ====
 +<code>
 +vchannels_list=60-00.0:60-00.1|61-00.0:61-00.1
 +</code>
 +
 +<note important>Трафик через сетевые интерфейсы **60-00.0 и 60-00.1 относится к первому виртуальному каналу**,
 +а трафик через **61-00.0 и 61-00.1 ко второму**.\\
 +Если на СКАТ есть кроме них еще сетевые интерфейсы, указанные в настройке in_dev/out_dev, то трафик через них будет относиться к общему каналу, ограничения на который заданы в [[dpi:dpi_options:opt_shaping:shaping_settings|конфигурационном файле.]]
 +</note>
 +
 +==== Для VLAN ====
 +===Способ 1===
 +<code>
 +vchannels_list=100:101-115|200:201:240-250
 +</code>
 + 
 +<note important>Трафик с **VLAN тегом 100 и от 101 до 115 относится к первому** виртуальному каналу, **с 200 и от 240 до 250 ко второму** каналу,
 +а весь трафик, который не попал в указанные VLAN, будет относится к общему каналу, ограничения на который
 +заданы в [[dpi:dpi_options:opt_shaping:shaping_settings|конфигурационном файле.]]</note>
 +
 +===Способ 2===
 +:!: При применении настроек ниже значение, заданное в ''fastdpi.conf'' ([[dpi:dpi_options:opt_shaping:shaping_multi#способ_1|способ 1]]), будет перезаписано. Но при рестарте сервиса значение параметра будет применено из файла ''fastdpi.conf''
 +  - Задание списка vlan: <code bash>fdpi_cli dpi config set vchannels_list='100|101|102|103' --json
 +[
 +  {
 +    result: {
 +      result_code: 0,
 +      message: "All parameters successfully reloaded"
 +    },
 +    params: [
 +      {
 +        opt_name: "vchannels_list",
 +        result: true,
 +        err_msg: ""
 +      }
 +    ]
 +  }
 +]</code>Где: 100-vchannel 1, 101-vchannel 2 и т.д.
 +  - Получение спиcка vlan: <code bash>fdpi_cli dpi config get vchannels_list --json
 +[
 +  {
 +    result: {
 +      result_code: 0
 +    },
 +    params: [
 +      {
 +        opt_name: "vchannels_list",
 +        opt_value: "100|101|102|103",
 +        result: true
 +      }
 +    ]
 +  }
 +]</code>
 +  - Подключение тарифного плана: <code bash>fdpi_ctrl load --policing --profile.name 1M --vchannel 2 --outformat json
 +{
 + "query" : { "cmd":"load", "param":"policing", "all":0, "profile":0},
 + "lddls" : [
 +
 + ],
 + "stat_ld" : { "total" : 1, "ok" : 1, "ierr" : 0, "isset" : 0, "noset" : 0}
 +}</code> Где:
 +    * ''total'' — число выполняемых запросов
 +    * ''ok'' — число удачных выполнений
 +    * ''ierr'' — количество ошибок
 +    * ''isset'' — количество команд, которые были заданы, но не были выполнены из-за отсутствия настроек или ограничений
 +    * ''noset'' — количество команд, которые не были выполнены по другим причинам
 +  - Проверка подключенного тарифного плана на vchannel: <code bash>fdpi_ctrl list --policing  --vchannel 2 --outformat json
 +{
 + "query" : { "cmd":"list", "param":"policing", "all":0, "profile":0},
 + "lpolicings" : [
 +   { "nvc":2, "policing":{ "type":"HTB", "outbound": "root_rate":"1mbit","root_ceil":"1mbit","root_burst":"500kbit","root_cburst":"500kbit" , "classes" : [ {"cte":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":1, "rate":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":2, "rate":"":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":3, "rate":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":4, "rate":"8bit", "ceil":"1m:"8bit","cburst":"500kbit" },{"class":5, "rate":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":6, "rate":"8bit", "ceil":"8bit","burst":"8bit8bit" },{"class":7, "rate":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"500kbit" } ]}, "inbound":{ "bw_rate":"0bit", "bw_ceil":"0bit" , "root_rate":"1mbit","rmbit","root_burst":"500kbit","root_cburst":"500kbit" , "classes" : [ {"class":0, "rate":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":1, "r "ceil":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":2, "rate":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":3, "rate":"8bit", "ceiburst":"8bit","cburst":"500kbit" },{"class":4, "rate":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"500kbit" },{"class":5, "rate":"8bit", "ceil":"1mbit","bursturst":"500kbit" },{"class":6, "rate":"8bit", "ceil":"8bit","burst":"8bit","cburst":"8bit" },{"class":7, "rate":"8bit", "ceil":"1mbit","burst":"8bit","cburst":"50, "description":{ "name":"1M" }}
 + ],
 + "stat_lst" : { "total" : 1, "isset" : 1, "noset" : 0}
 +}</code> Name – название тарифного плана.
 +  - Удаление тарифного плана с vchannel: <code bash>fdpi_ctrl del --policing  --vchannel 2 --outformat json
 +{
 + "query" : { "cmd":"del", "param":"policing", "all":0, "profile":0},
 + "lddls" : [
 +
 + ],
 + "stat_ld" : { "total" : 1, "ok" : 1, "ierr" : 0, "isset" : 0, "noset" : 0}
 +}</code>
 +
 +
 +==== Для CIDR ====
 +Создать файл ipchannels.txt:
 +<code>
 +10.0.1.0/24 1
 +10.0.2.0/24 1
 +10.1.0.0/16 2
 +</code>
 +
 +Сконвертировать
 +<code> cat ipchannels.txt | as2bin /etc/dpi/ipchannels.bin </code>
 +<note>**СКАТ 12.4+** Добавлена поддержка IPv6 channels (с ''reload'').\\
 +Пример задания:
 +<code bash>
 +fe80::0/8 1
 +cat ipchannels6.txt | as2bin6 /etc/dpi/ipchannels6.bin</code></note>
 +
 +<note>**[СКАТ v13+]** во входных файлах утилит as2bin и as2bin6 появилась возможность добавлять комментарии (#) и пустые линии.</note>
 +
 +Перечислить vChannels в /etc/dpi/fastdpi.conf:
 +<code>
 +vchannels_list=1|2
 +</code>
 +<note important>Трафик с **CIDR 10.0.1.0/24 и 10.0.2.0/24 относится к первому** виртуальному каналу, **с 10.1.0.0/16 ко второму** каналу,
 +а весь трафик, который не попал в указанные CIDR, будет относится к общему каналу, ограничения на который
 +заданы в [[dpi:dpi_options:opt_shaping:shaping_settings|конфигурационном файле.]]</note>
 +
 +
 +===== Настройка полисинга =====
 +Загрузим настройки полисинга для каналов 1 и 2
 +<code>
 +fdpi_ctrl load --policing vchannel1.cfg --vchannel 1
 +fdpi_ctrl load --policing vchannel2.cfg --vchannel 2
 +</code>
 +
 +Где vchannel1.cfg это имя файла с описанием настроек полисинга (формат этого файла идентичен для общего канала,
 +виртуальных каналов и для тарифного плана абонентов)
 +
 +**Пример конфигурационного файла:**
 +<code ini>
 +htb_inbound_root=rate 10mbit 
 +htb_inbound_class0=rate 8bit ceil 10mbit
 +htb_inbound_class1=rate 1mbit ceil 3mbit 
 +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 1mbit ceil 3mbit 
 +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
 +</code>
 +
 +Проверим какие настройки загружены
 +<code>
 +fdpi_ctrl list all vchannel --policing
 +</code>
 +
 +Настройки для виртуальных каналов хранятся во внутренней БД DPI,
 +их можно на лету менять в процессе работы, и также как и для абонентов, 
 +настройки полисинга для канала можно загружать по имени из профиля,
 +сохраненного ранее в БД.
 +<code>
 +fdpi_ctrl load --policing --profile.name vchannel_1 --vchannel 1
 +</code> 
 +
 +Также тарифный план можно задать в [[dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_json|формате JSON]]
 +
 +===== Настройка Черного списка - 4 услуга =====
 +Создается профиль аналогично как для абонента: [[dpi:dpi_options:opt_filtration:filtration_ctrl|Управление Черным списком.]] 
 +<code>
 +fdpi_ctrl load --service 4 --profile.name test_blocked ––vchannel 2
 +</code> 
 +
 +===== Настройка Белого списка - 5 услуга =====
 +Создается профиль аналогично как для абонента: [[dpi:dpi_options:opt_capture:capt_mgmt|Управление Белым списком.]] 
 +<code>
 +fdpi_ctrl load --service 5 --profile.name test_white ––vchannel 1
 +
 +</code>