{{indexmenu_n>1}}
======Beta-версия 14.2======
Отслеживайте текущую версию СКАТ и отправляйте заявки на обновление через [[dpi:dpi_brief:personal_account|Личный кабинет]]\\ \\ {{:dpi:changelog:versions:ver.png?nolink&1000|}}
=====Изменения в версии 14.2 BETA8=====
- [DPI] Изменено: после проверки IPSNI откат на базовый протокол или протокол, заданный по SNI (если определен)
- [DPI] Изменено: уменьшена глубина просмотра в попытках декодировь cname/sni
- [CLI] Добавлена команда записи pcap с порта: dev pcap rx|tx|any|off
* ''rx'' — записывать принятые с порта пакеты
* ''tx'' — записывать отправляемые в порт пакеты
* ''any'' — rx и tx
* ''off'' — завершить запись\\ \\ Префиксы файлов pcap (''dev'' - имя порта):
* ''rx-dev'' — для rx
* ''tx-dev'' — для tx
- [NAT] Исправление консистентности очереди приватного адреса
- [DPI] Решение проблемы выбора tx-порта для многозначных конфигураций: обратный пакет приоритетно посылается в тот порт, из которого был первоначальный пакет
- [NAT] Исправление и оптимизация очереди портов приватного адреса:
- Очередь портов приватного адреса распределена по потокам
- Очередь портов приватного адреса разделена на "короткую" и "длинную".
- [CLI][RG] Добавлено: команда ''rg show '' просмотра текущих данных по рейтинг-группе для абонента
=====Изменения в версии 14.2 BETA7=====
- [DPI] Изменено: проверка на FakeSNI не производится если протокол определен по IP и нет mark1
- [CG-NAT] Оптимизация команды статистики ''fdpi_ctrl list all status --service 11''
- [DPDK] Увеличен максимальный размер памяти до 256 ГБ
- [DPI][BRAS] Добавлена услуга 20: полисинг по рейтинг группам (RG) и контроль квот по объему.\\ Создание профиля услуги 20:
- Включить поддержку RG в fastdpi.conf\\ ''rating_group_count=0'' — число rating group, ''0'' — RG отключены. Значение по умолчанию: ''0''
- Подготовить текстовый файл, в котором для каждой рейтинг-группы прописать TBF-полисинг, квоту и действие по достижении квоты, пример:rg4 tbf rate 1Mbit burst 1Mbit inbound.rate 8Mbit inbound.burst 1Mbit quota 100MB report
rg5 tbf rate 8Mbit burst 1Mbit inbound.rate 8Mbit inbound.burst 1Mbit quota 1GB block ''report'' и ''block'' — это доступные действия по достижении квоты: ''report'' — сообщить о достижении квоты, но пропускать трафик далее; ''block'' — сообщить о достижении квоты и блокировать трафик по данной рейтинг-группе
- Конвертировать тектовый файл в бинарный формат: cat rg.txt | lst2rg rg.bin
- Поместить полученный бинарный файл в директорию, откуда его будет читать DPI: cp rg.bin /var/lib/dpi/rg.bin
- Создать профиль услуги: fdpi_ctrl load profile --service 20 --profile.name rg1 --profile.json '{ "rg_list" : "/var/lib/dpi/rg.bin" }' ''max_profiles_serv20'' — настройка максимального количества профилей. По умолчанию — 32.\\ \\ Утилита rg2lst позволяет декодировать динарный файл в читаемый вид: rg2lst rg.bin > rg.txt
- [DPIUTILS] Добавлены утилиты lst2rg и rg2lst для конвертации профиля услуги 20
=====Изменения в версии 14.2 BETA6=====
- [DPI] Добавлена проверка viber_cl по контейнеру
- [DPI] Исправлено: переопределение облачных протоколов некоторыми встроенными
- [DPI] Исправлено: добавлено определение протокола адресам в случае когда SNI уже в первом пакете для соблюдения приоритета IP/SNI
- [DPI] Исправлено: определение DSCP с первого пакета для облачных протоколов, заданных по адресам
- [NAT] Добавлено явное закрытие TCP-соединения при переиспользовании порта другим абонентом
- [CLI] Добавлены новые поля в ''fdpi_cli dump flow cache command''. [[dpi:qoe_analytics:cases:network_health:flood|Описание]]
- [NAT] Изменена работа с очередями публичных портов: порты с коротким временем жизни и с длинным временем жизни живут в разных очередях. Порты теперь являются элементами подочереди приватного адреса. Порт, к которому обращались из non-owner потока, может переиспользоваться сразу
- [CLI] Добавлена установка rating group и контроля tethering через 18 услугу, в настройке профиля которой добавлены новые опциональные поля:\\ ''tethN'', где возможные варианты:
* teth0 — нет контроля tethering (default)
* teth1 — есть контроль tethering: tethering присутствует
* teth2 — есть контроль tethering: tethering отсутствует\\ \\ ''rgN'', где возможные варианты:
* rg0 default (rg не установлена)
* rg1 установлена rg=1\\ ..
* rg65535 установлена rg=65535\\ \\ **Пример задания 18 услуги:**
- подготавливаем текстовое описание настроек example.txt
http cs0 teth1 rg1
https cs0 teth1 rg1
http cs0 teth2 rg2
https cs0 teth2 rg2
dns cs1 teth1 rg1
dns cs1 teth2 rg2
default cs7 teth0 rg3 :!: **В данном примере по http, https протоколам отслеживается тетеринг и в зависимости от этого назначается соответсвующая rg. Отметим, что класс полисинга cs один и тот же. Аналогично по dns протоколу. По ВСЕМ остальным протоколам (default) нет контроля тетеринга и указана отдельная rg.**
- конвертируем во внутренний форматcat example.txt|lst2dscp /tmp/example.bin
- опционально проверяем обратной конвертациейdscp2lst /tmp/example.bin
- создаем профиль 18 услуги и назначаем абоненту (либо сразу назначаем неименованный профиль) fdpi_ctrl load profile --service 18 --profile.name test_dscp --profile.json '{ "dscp" : "/tmp/example.bin" }'
fdpi_ctrl load --service 18 --profile.name test_dscp --login test_subs Проверяемfdpi_ctrl list --service 18 --login test_subs В трассировке добавлено поле ''rg=N''
- [BRAS][DHCPv6] Исправлена отправка периодического ICMPv6 Router Adv DHCPv6-абонентам
- [BRAS][pppoe] Исправлено изменение src/dst MAC в ethernet-заголовке пакета при терминации. Для PPPoE-пакетов терминация ethernet-заголовка должна проводится всегда. Но при включенной настройке ''bras_term_by_as=1'' в ситуации, когда srcAS не помечена как term, изменения ethernet src/dst MAC не происходило.
=====Изменения в версии 14.2 BETA5=====
- [BASE] Добавлена поддержка LLDP.\\ При включении поддержки LLDP fastDPI начинает эмитировать LLDP-пакеты (LLDPDU) на указанных портах. Входящие LLDP-пакеты безусловно дропаются.\\ Новые параметры fastdpi.conf (все параметры являются горячими, задаются в секции ''lldp''):
* ''enable'' — включение поддержки LLDP (булевый флаг). По умолчанию, если в файле конфигурации есть секция ''lldp'', то ''enable=on''; если такой секции нет, ''enable=off''
* ''chassis'' — строка — значение Chassis-Id. TLV Chassis-Id является обязательным в LLDP-пакете. Если не задано — полагается равным MAC-адресу, заданному в опции ''bras_arp_mac'', если этой опции нет — MAC-адресу порта
* ''ttl'' — число — значение TTL в секундах, по умолчанию 120
* ''src_mac'' — MAC-адрес — значение source MAC в ethernet-заголовке LLDPDU. Если не задано — полагается равным MAC-адресу, заданному в опции ''bras_arp_mac'', если этой опции нет — MAC-адресу порта
* ''dest_mac'' — MAC-адрес — значение dest MAC в ethernet-заголовке LLDPDU. По умолчанию — ''01:80:c2:00:00:0e'' (LLDPDU multicast)
* ''system_name'' — строка — значение TLV System-Name пакета LLDPDU. Если не задано — TLV System-Name не включается в LLDPDU.
* ''system_desc'' — строка — значение TLV System-Desc пакета LLDPDU. Если не задано — TLV System-Desc не включается в LLDPDU.
* ''device=<имя_порта>;enable=;desc='' — имена портов, для которых надо посылать LLDPDU. Каждый порт задается в отдельном параметре ''device'', имя порта — то, что задано в in_dev/out_dev. Для каждого порта можно задать следующие опции:
* ''enable=on|off'' — включить или отключить отправку LLDPDU для этого порта, по умолчанию ''on'' (включено)
* ''desc=строка'' — значение TLV Port-Desc пакета LLDPDU; если не задано — TLV Port-Desc не включается в LLDPDU\\ \\ Отладочные опции:
* ''trace'' — включение трассировки LLDP (булевый флаг)
* ''pcap'' — запись LLDP-пакетов в PCAP (булевый флаг)
- [CLI] Новые команды CLI: ''lldp enable'', ''lldp disable'' — позволяют включать/выключать формирование LLDP-пакетов
- [NAT] Улучшения в управлении лимитами сессий: для лимитов ''nat_tcp_max_sessions''/''nat_udp_max_sessions'', задающих ограничения на количество выданных белых портов, исправлено уменьшение счетчика количества выданных портов, что могло приводить к небольшому превышению заданного лимита. Изменены счетчики ''whpf'', ''whp_salfs'', ''whp_lalfs'', ''whp_ruse'', ''whp_ruse_salfs'', ''whp_ruse_lalfs'' и аналогичные счетчики в статистике по потокам (''thr_salfs'' и другие), а также вывод команды ''nat show'', чтобы отражать текущее актуальное использование портов, а не кумулятивное (накопительное)
- [NAT] Исправлено: добавлена проверка актуальности NAT трансляций в режиме FullCone в случае ''nat_whp_lifetime'' < ''lifetime_flow'': если в сессии появилась активность, а NAT-порт уже переиспользован, то выделяется новый порт
=====Изменения в версии 14.2 BETA4=====
- [DPI] Добавлено детектирование протокола FakeTLS с валидацией
- [DPI] Исправлено: переключение с QUIC_UNKNOWN на QUIC при успешном разборе SNI
- [DHCP6-Proxy] Добавлена DHCPv6-опция 79 Client-LinkLayer-Address, содержащая MAC-адрес абонента, в Relay-Forward запросы к DHCPv6-серверу Framed-Pool
- [VLAN-Rule][PPPoE] В команду ''vlan rule show'' добавлен вывод всех разрешений для Service-Name
- [VLAN-Rule][PPPoE] Добавлено: полная поддержка Service-Name для QinQПоддерживаются правила:
- без селективности по CVLAN: правила вида ''SVLAN.*'' с указанием SName и без
- полный QinQ (''svan.cvlan'') с селективностью по SName
- [VLAN-Rule][PPPoE] Рефакторинг поддержки Service-Name. В команды ''vlan rule add/rm'' добавляется поддержка PPPoE и Service-Name.\\ Добавление правила обработки PPPoE для указанного диапазона '''' VLAn/QinQ: vlan rule add pppoe [enable | drop | pass | delay N]Добавление правила обработки PPPoE Service-Name для указанного диапазона '''' и VLAn/QinQ:vlan rule add pppoe sname [enable | drop | pass | delay N] Здесь '''' — имя PPPoE Service-Name в одинарных или двойных кавычках (можно без кавычек, если является идентификатором (''[a-zA-Z_][a-zA-Z_0-9]*'')\\ \\ Разрешения:
- ''enable'' - разрешена обработка PPPoE
- ''drop'' - дропать пакеты PPPoE
- ''pass'' - пропустить пакеты PPPoE насквозь без обработки
- ''delay N'' - устанавливать PPPoE-сессию с задержкой в N секунд (0 < N < 16)
- [IPFIX] Добавлена возможность отправки данных по протоколу UDP больше размера MTU (с IP фрагментацией)
- [DNS] Добавлены параметры ''ajb_save_dns_answer_types'' и ''ajb_save_dns_request_types'', которые позволяют задавать типы DNS запросов/ответов для записи в файл и отправку по IPFIX
- [IPFIX] Исправлена ошибка установки таймаута отправки данных по умолчанию
- [DHCP-Dual] Исправлено: некорректное формирование IPv6 PD-префикса для адресов из Framed-IPv6-Pool
- [DHCP-Dual] Исправлено: падение при включении трассировки по mac ''bras_dhcp_trace_mac''
- [DHCP-Dual] Исправлено: последовательность запроса адресов DHCPv6, затем DHCPv4 приводила к лишней авторизации
- [DHCP-Dual] Исправлено: трассировка ответов DHCPv6, если MAC-адрес стоит на трассировке
- [DNS] Добавлена утилита dic2dns. [[dpi:dpi_options:dns_substitution#настройка|Описание]]
=====Изменения в версии 14.2 BETA3=====
===DPI===
- [DPI] Добавлен разбор туннеля GRE ERSPAN для режима ''check_tunnels=1''
- [DPI] Сообщение "Can't allocate record http_state" теперь выводится раз в 50000
- [DPI] Добавлена проверка флага MARK2 для переопредления в QUIC_UNKNOWN_MARKED когда протокол QUIC еще в процессе определения SNI. [[dpi:dpi_options:opt_priority:priority_config_as#формат_файла_со_списком_автономных_систем_и_их_приоритетами|Описание]]
===BRAS===
- [BRAS][Router] Изменено вычитывание Linux route table при старте роутера. [[dpi:dpi_components:router#внутренняя_архитектура_роутера|Описание]]
=====Изменения в версии 14.2 BETA2.1=====
===NAT===
- [CG-NAT] Изменения оптимизации NAT.
=====Изменения в версии 14.2 BETA2=====
===DPI===
- [DPI][DNS] Исправлена ошибка работы 19 услуги с IPv6 трафиком
===BRAS===
- [BRAS][DHCP-Dual] Добавлен учет ''Lease-Time''\\ В режиме DHCP Dual критически важно, чтобы ''Session-Timeout'' был в несколько раз (минимум в 4 раза) больше, чем ''Lease-Time''. Если это условие нарушается, то ''Lease-Time'' полагается равным 1/4 от ''Session-Timeout''.\\ ''Lease-Time'' берется из ответа RADIUS-авторизации (в порядке уменьшения приоритета):
- атрибут ''DHCP-IP-Address-Lease-Time'';
- атрибут ''VasExperts-DHCP-Option-Num'', задающий опцию 51;
- DHCP-опция 51, если адрес распределен из ''Framed-Pool''.\\ \\ Если ''Lease-time'' не задан ни одним из вышеперечисленных способов, то полагается равным 1/16 от ''Session-Timeout''.\\ Минимальные значения:
* ''Session-Timeout'' — 600 секунд
* ''Lease-Time'' — 60 секунд
===NAT===
- [CG-NAT] Добавлена поддержка отключения кэша белых адресов для экспорта NAT трансляций. Настройка ''nat_dstaddr_cache_size=0'' в ''/etc/dpi/fastdpi.conf''
=====Изменения в версии 14.2 BETA1=====
===DPI===
- [DPDK] Переход на новую версию DPDK 25.11. [[dpi:dpi_brief:dpi_requirements#минимальные_требования|Описание]]
- [DPI][NAT] Оптимизация при переполнении кэша приватный-публичный
- [CLI][VLAN] В команду ''vlan rule dump'' добавлен параметр, определяющий, какой тип правил выводить: ''vlan rule dump [type]''\\ ''type'' — rule type: ''perm'', ''dhcp'', ''all'' (default)\\ Вывести разрешения для VLAN:vlan rule dump perm Вывести правила только для DHCP: vlan rule dump dhcp Вывести все правила: vlan rule dump
- [CLI][DPI] Вывод команды ''fdpi_cli dump flow cache format'' расширен новыми полями. [[dpi:dpi_components:platform:dpi_admin:flow_statistics|Описание]]
- [BALANCER] Добавлена возможность использования vlan rule для фильтрации пакетов
- [DPDK] Добавлено: новая опция ''dpdk_max_memzone'' [cold] — Установка DPDK max memzone count. По умолчанию, в DPDK ''max memzone count = 5120'' (зависит от версии DPDK)\\ ''0'' — использовать default-значение, зашитое в DPDK. Устанавливать значение больше имеет смысл для huge-конфигураций со многими картами, если на старте fastDPI получаем ошибку "Number of requested memzone segments exceeds maximum 5120"
- [CLI][DHCP-Dual] Добавлено: поддержка команды ''dhcp show stat vrf''
- [DPDK] Новый engine ''dpdk_engine=7'' с поддержкой явного указания диспетчеров\\ Данный движок поддерживает гетерогенные конфигурации, когда в одном кластере находятся порты разного типа — например, in-dev 100G порт, out-dev — несколько 10G портов.\\ Диспетчеры задаются в опциях ''dpdk_dispatch'': dpdk_dispatch=<список-портов>[;params]*
* ''<Список-портов>'' задает, какие порты обслуживает данный диспетчер
* ''params'' — дополнительные опции данного диспетчера. Доступные опции:
* ''rss=N'' — включение RSS на всех портах данного диспетчера; будет создано N диспетчеров — по одному на каждую rx-очередь.
* ''mempool_size=N'' — размер ''mbuf_pool'' для данного диспетчера. Каждый ''dpdk_dispatch'' имеет свой mempool, размер пулов может быть разным для разных ''dpdk_dispatch''.\\ \\ Опций ''dpdk_dispatch'' может быть много, каждая описывает отдельный диспетчер (или группу диспетчеров, если задано rss). Каждый порт кластера должен входить ровно в один параметр ''dpdk_dispatch''. Для on-stick в ''dpdk_dispatch'' описывается *базовый* физический порт, а не on-stick порты, основанные на нем.\\ Фатальными ошибками конфигурации считаются следующие случаи:
* порт кластера не входит ни в какой ''<список-портов>'' параметра ''dpdk_dispatch''
* порт кластера входит в ''<список-портов>'' нескольких различных параметров ''dpdk_dispatch''
* в ''<списке-портов>'' параметра ''dpdk_dispatch'' перечислены порты из разных кластеров, — каждый диспетчер должен обслуживать порты только одного кластера\\ \\ Данный движок является универсальным в том смысле, что через него могут быть выражены все остальные движки, например: dpdk_engine=0: один диспетчер на все порты
in_dev=port1:port2
out_dev=port3:port4
dpdk_dispatch=port1,port2,port3,port4
dpdk_engine=1: диспетчер на направление
in_dev=port1:port2
out_dev=port3:port4
dpdk_dispatch=port1,port2
dpdk_dispatch=port3,port4
dpdk_dispatch=2: диспетчер на направление c поддержкой RSS
dpdk_rss=4
in_dev=port1:port2
out_dev=port3:port4
dpdk_dispatch=port1,port2;rss=4
dpdk_dispatch=port3,port4;rss=4
dpdk_engine=3: диспетчер на мост
in_dev=port1:port2
out_dev=port3:port4
dpdk_dispatch=port1,port3
dpdk_dispatch=port2,port4
dpdk_engine=4: диспетчер на порт
in_dev=port1:port2
out_dev=port3:port4
dpdk_dispatch=port1
dpdk_dispatch=port2
dpdk_dispatch=port3
dpdk_dispatch=port4
dpdk_engine=6: диспетчер на мост с поддержкой RSS
dpdk_rss=4
in_dev=port1:port2
out_dev=port3:port4
dpdk_dispatch=port1,port3;rss=4
dpdk_dispatch=port2,port4;rss=4 Для диспетчера необходимо указывать используемый ''mempool''.
* Описатель ''mempool'' — только для ''dpdk_engine=7''\\ Формат:dpdk_mempool=name=;size=N\\ ''name'' задает имя ''mempool'' (max 15 символов)\\ ''size'' задает размер (число элементов) ''mempool''\\ Оба параметра являются обязательными\\ Опций ''dpdk_mempool'' может быть много, каждая описывает отдельный ''mempool''dpdk_mempool=...
* Описатель диспетчера — только для ''dpdk_engine=7''\\ Формат:dpdk_dispatch=<список-портов>;mempool=<имя>[;params]*\\ ''<Список-портов>'' задает, какие порты обслуживает данный диспетчер\\ ''params'' — дополнительные опции данного диспетчера. Доступные опции:\\ ''mempool=<имя>'' — задает имя ''mempool'' для данного диспетчера (обязательный параметр)\\ ''rss=N'' — включение RSS на всех портах данного диспетчера; будет создано N диспетчеров, по одному на каждую rx-очередь.\\ Опций ''dpdk_dispatch'' может быть много, каждая описывает отдельный диспетчер (или группу диспетчеров, если задано ''rss'')dpdk_dispatch=...
- [IPFIX] Исправлена ошибка при изменении опции ''ipfix_dev''