Полисинг Виртуального канала (vChannel)

Подробнее о конфигурации vChannels:

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

С помощью vChannel можно выделить трафик из общего канала на основе физических портов / VLAN / CIDR. На vChannel применяются полисинг и сервисы аналогично тарифным планам абонентов. Настройка параметров канала и ограничений в канале осуществляется по специальному идентификатору.

Настройка

В настройках DPI /etc/dpi/fastdpi.conf указывается способ, по которому он будет различать каналы:

vchannels_type=1

где

1 - означает, что для разных каналов используются разные сетевые интерфейсы

2 - означает, что будут использоваться разные VLAN

3 - означает, что будут определяться через CIDR

СКАТ 12.4+ Добавлена настройка vchannels_default= для помещения нераспределенного по другим каналам трафика в отдельный канал (но не 0!)

Далее нужно указать, какие физические интерфейсы, VLAN, CIDR образуют виртуальный канал. Для этого используется параметр vchannels_list в /etc/dpi/fastdpi.conf.

После добавления в конфигурацию для создания vChannels требуется перезагрузить FastDPI процесс: systemctl restart fastdpi

Для физических интерфейсов

vchannels_list=60-00.0:60-00.1|61-00.0:61-00.1

Трафик через сетевые интерфейсы 60-00.0 и 60-00.1 относится к первому виртуальному каналу, а трафик через 61-00.0 и 61-00.1 ко второму. Если на СКАТ есть кроме них еще сетевые интерфейсы, указанные в настройке in_dev/out_dev, то трафик через них будет относиться к общему каналу, ограничения на который заданы в конфигурационном файле.

Для VLAN

Способ 1

vchannels_list=100:101-115|200:201:240-250

Трафик с VLAN тегом 100 и от 101 до 115 относится к первому виртуальному каналу, с 200 и от 240 до 250 ко второму каналу, а весь трафик, который не попал в указанные VLAN, будет относится к общему каналу, ограничения на который заданы в конфигурационном файле.

Способ 2

При применении настроек ниже значение, заданное в fastdpi.conf (способ 1), будет перезаписано. Но при рестарте сервиса значение параметра будет применено из файла fastdpi.conf.

Задание списка vlan:

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: "" } ] } ]

Где: 100-vchannel 1, 101-vchannel 2 и т.д.

Получение спиcка vlan:

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 } ] } ]

Подключение тарифного плана:

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} }

Где:

total — число выполняемых запросов

ok — число удачных выполнений

ierr — количество ошибок

isset — количество команд, которые были заданы, но не были выполнены из-за отсутствия настроек или ограничений

noset — количество команд, которые не были выполнены по другим причинам

Проверка подключенного тарифного плана на vchannel:

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} }

Name – название тарифного плана.

Удаление тарифного плана с vchannel:

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} }

Для CIDR

Создать файл ipchannels.txt:

10.0.1.0/24 1
10.0.2.0/24 1
10.1.0.0/16 2

Сконвертировать

cat ipchannels.txt | as2bin /etc/dpi/ipchannels.bin

СКАТ 12.4+ Добавлена поддержка IPv6 channels (с reload). Пример задания: fe80::0/8 1 cat ipchannels6.txt | as2bin6 /etc/dpi/ipchannels6.bin
[СКАТ v13+] во входных файлах утилит as2bin и as2bin6 появилась возможность добавлять комментарии (#) и пустые линии.

Перечислить vChannels в /etc/dpi/fastdpi.conf:

vchannels_list=1|2

Трафик с CIDR 10.0.1.0/24 и 10.0.2.0/24 относится к первому виртуальному каналу, с 10.1.0.0/16 ко второму каналу, а весь трафик, который не попал в указанные CIDR, будет относится к общему каналу, ограничения на который заданы в конфигурационном файле.

Настройка полисинга

Загрузим настройки полисинга для каналов 1 и 2

fdpi_ctrl load --policing vchannel1.cfg --vchannel 1
fdpi_ctrl load --policing vchannel2.cfg --vchannel 2

Где vchannel1.cfg это имя файла с описанием настроек полисинга (формат этого файла идентичен для общего канала, виртуальных каналов и для тарифного плана абонентов)

Использование полисинга виртуального канала (vChannel) влечет дополнительные внутренние блокировки, что снижает производительность системы до 40G (при использовании tbf) и до 20G (при использовании htb) суммарного трафика на vChannel вне зависимости от количества ядер.

Пример конфигурационного файла:

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

Проверим какие настройки загружены

fdpi_ctrl list all vchannel --policing

Настройки для виртуальных каналов хранятся во внутренней БД DPI, их можно на лету менять в процессе работы, и также как и для абонентов, настройки полисинга для канала можно загружать по имени из профиля, сохраненного ранее в БД.

fdpi_ctrl load --policing --profile.name vchannel_1 --vchannel 1

Также тарифный план можно задать в формате JSON

Настройка Черного списка - 4 услуга

Создается профиль аналогично как для абонента: Управление Черным списком.

fdpi_ctrl load --service 4 --profile.name test_blocked ––vchannel 2

Настройка Белого списка - 5 услуга

Создается профиль аналогично как для абонента: Управление Белым списком.

fdpi_ctrl load --service 5 --profile.name test_white ––vchannel 1