Версия 13.0 Congo

13.0 Congo 1) Колыбель человечества: люди обитают здесь более 50 тыс лет

Изменения в версии 13.0

DPI

Поддержка LAG/LACP в on-stick. Описание

Переход на DPDK 23.11

Изменено: для QUIC и QUIC_IETF: если не определили SNI — проверяем по AS

Изменено: при анализе STUN проверяется AS от Facebook — определяем FACEBOOK_VIDEO, а не WHATSAPP_VOICE

Задание RSS hash флагов для UDP и TCP

Изменено: определение протокола openvpn

Исправлено: обработка SIGHUP только если fastDPI полностью инициализирован. Возможно падение, если в процессе запуска fastDPI приходит SIGHUP

Запись trace/debug пакетов переведена на новый API

Добавлено: поддержка протокола wechat для UDP

Поддержка дополнительной разметки автономных систем mark1, mark2, mark3. Описание

Приоритет определения по SNI в кастомных сигнатурах для автономных систем, помеченных как mark1. Описание

Приоритет более специфичных кастомных SNI сигнатур.
Пример: для хоста a.b.c.d при наличии сигнатур *.d, *.c.d и *.b.c.d будет выбран протокол, определенный сигнатурой *.b.c.d.
Работает только для сигнатур с *. Описание

Поддержка жестких блокировок (несмотря на имя хоста/SNI) — задается в дополнительном поле в черном списке адресов, пример: 1.1.1.1 443 hard. Описание

Улучшено детектирование YOUTUBE, SIGNAL

Добавлен протокол DPITUNNEL, в который включены аномалии трафика, обычно применяемые для обхода DPI

Обновление dpiutils

Новые протоколы VK_CDN_VIDEO, META_CHAT

Улучшение сигнатур протоколов FACEBOOK_VIDEO, META_CALLS

Исправлено имя протокола VK_CDN_VIDEO

Исправлено: декодирование SNI в QUIC IETF и возможность образования корки в исключительных случаях

Исправлено: очистка структур поиска при удалении CUSTOM протоколов

Добавлена возможность добавлять комментарии (#) и пустые линии во входных файлах для утилит lst2dscp, lst2tbf

Добавлены протоколы QUIC_UNKNOWN - QUIC без SNI и QUIC_UNKNOWN_MARKED - QUIC без SNI и AS с пометкой MARK2. Описание

Исправлено: определение хар-к stun для TCP

Изменено: если достигли ограничения просмотра пакетов stun - устанавливаем этот протокол с учетом AS

Обновлены утилиты для поддержки новых протоколов

Улучшения в протоколах QUIC_UNKNOWN, QUIC_UNKNOWN_MARKED, SIGNAL, DpiTunnel

Определения встроенных протоколов по SNI/HOST вынесены в облако, поддерживается приоритет SNI/IP

Изменено: сравнение SNI производится без учета регистра

Добавлена сигнатура протокола LANTERN_WEAK

Улучшено распознавание протокола IMAP

Исправление в LPM при выборе канала по IP/CIDR

Добавлено: в формат записи в текстовый файл DNS - формат vchnl - номер виртуального канала.

Добавлено: в шаблон IPFIX передачи данных для DNS номер канала. Описание

Исправлено: падение при трейсе DNS

Улучшено определение протокола VIBER_VSTREAMS

Исправлено: в процессе остановки fastDPI не принимаем и не обрабатываем никакие запросы по ctl

Добавлен протокол SSTP (49296)

Добавлен протокол ANYDESK (49297,54273)

Улучшено распознавание LANTERN

BRAS

Добавлено: учет DHCP-пакетов от абонента в биллинговой статистике: абонентский CPE (то есть Wi-Fi роутер) без клиентов (например, ночью) — посылает только запросы на продление лицензии. Так как эти запросы перехватывались BRAS и не включались в аккаунтинг, происходило завершение сессии по idle timeout

Исправлено: действия при изменении QinQ/VLAN у абонента

Исправлено: framed-pool renew
В некоторых случаях формировались некорректные DHCP-ответы. Добавлена трассировка в лог DHCP-пакетов для framed-pool renew

Исправлено: прием пакетов от relay. Ранее проверялось, что relay находится в сети fc::/7. Теперь эта проверка излишняя и удалена, — у relay может быть любой адрес.

Исправлено: разбор DHCPv6-опций от Радиуса

Добавлена команда subs prop show active. Команда выводит дамп L2-свойств всех активных (не-expired) абонентов. Описание

Изменено: запрет вызова CLI-команд в процессе остановки

Исправлено: idle-timeout для сессии. Для PPPoE-сессий idle timeout должен браться из настройки bras_ppp_idle_timeout, если не задан явно в ответе авторизации (атрибут Idle-Timeout).

Добавлена приоритетная переадресация с переводом DSCP. Описание

Исправлено: добавление лишней опции 61 (Client-Id) в ответ fastDPI при распределении адреса из Framed-Pool

Исправлено: вывод в лог IP-адресов DHCP-серверов

Исправлено: включение услуг с профилями. Атрибут `VasExperts-Service-Profile` (имя профиля услуги, неявно включает услугу) имеет больший приоритет, чем `VasExperts-Enable-Service` (включение/выключение услуги без задания профиля).

Добавлена команда ping inet от имени абонентов через всю цепочку обработку BRAS/NAT/ROUTER. Подсказка - fdpi_cli ping inet ?. Описание

Исправлено: вызов деанонса IP-адреса абонента при acct idle. В опцию роутера router_subs_announce добавлен новый флаг: 0x10000 - деанонсировать L3-абонента при наступлении acct idle (закрытие acct-сесси по idle timeout). Описание

Добавлена поддержка задания профиля услуги 18 при авторизации. Включение услуги 18 в ответе Радиуса Access-Accept задается обычным для услуги с обязательным профилем образом (здесь serv18 - имя профиля):

VasExperts-Service-Profile = "18:serv18"

В команду subs prop show добавлен поиск по MAC и subs_id. Результат поиска по MAC или subs_id может быть многозначным, - несколько разных записей для одного того же MAC/subs_id. Результат команды subs prop show active изменен, что может быть критично при разборе json-выхлопа команды. Описание

Исправлено: установка флага link up/down для портов, не поддерживающих link up/down прерывания (например, af_packet)

Код возврата команды Uptime. CLI-команда uptime может использоваться для контроля полного запуска fastDPI: она возвращает result=0 (Success) только тогда, когда fastDPI полностью проинициализирован и все рабочие потоки запущены. По получении ответа от fastDPI на команду fdpi_cli uptime сама утилита fdpi_cli проверяет результат выполнения и если result!=0 — выставляет ненулевой код возврата.

Исправлено: при наличии VRF (service 254) в Access-Accept пакет неправомерно выводился в лог как ошибочный

Восстановление работы UDR после вызова команды с большим числом параметров

NAT

Добавлена утилита checknat для проверки распределения белых адресов. Описание

Исправлено online изменение параметра nat_private_cidr

Балансировщик

Добавлен режим L2 балансировщика трафика. Данная доработка позволяет использовать СКАТ как балансировщик трафика на основе IP-адресов, принадлежащих AS и определяемой как local в asnum.dscp. Описание

Добавлен движок mqrx_lb_engine, который активируется при dpdk_engine=2. Описание

Router

Распределение mempool для emit-пакетов: не допускаем полного исчерпания пула, в пуле должно быть не менее 256 свободных элементов

Ошибка удаления маршрута errno=3 (No record found) переведена в разряд TRACE, чтобы не засоряла лог

Исправлен порядок завершения компонентов роутера

Изменено: system error при очистке route tables. Очистка route tables (удаление всех записей, добавленных СКАТ) производится при стопе и старте fastDPI. В процессе очистки может возникнуть ошибка EBUSY, которая является фатальной для netlink-сокета, сокет должен быть закрыт.

Исправлено: TAP link down in LAG. Если порт входит в лаг, то TAP этого порта в состояние Link down нужно производить только тогда, когда ВСЕ порты LAG в down.

Исправлено: контроль за исчерпанием selfgen mempool

Оптимизация вычитывания данных с TAP

Исправлено LAG+On-stick: перевод TAP в состояние link down. TAP переводится в link down только тогда, когда все порты в LAG в состоянии down. Если же есть хотя бы один порт в состоянии Up - TAP должен находится в состоянии Link Up.

Исправлено: отведение трафика в роутере для on-stick девайса в LAG. При формировании топологии VRF не учитывалось, что в LAG входит базовый (физический) девайс, а при описании роутера указывается on-stick (виртуальный) девайс.

Исправлено: вычитывание всех данных с TAP-девайса. При старте fastDPI были возможны ситуации, когда роутер еще не полностью инициализирован, а TAP уже мониторится, но не вычитывается.

Опция router_subs_announce сделана горячей (hot)

Исправлено: утечка mbuf при старте fastDPI

SDS

Значение storage_tag устанавливается на основании приоритета по направлению или приоритета по протоколу

RADIUS

Добавлена возможность работы со стандартными интерфейсами linux с помощью libpcap. Описание

Изменения в версии 13.1

Внимание! Обнаружена ошибка в версии 13.1. В PPPoE не происходит закрытие сессии при истечении idle_timeout. Исправление планируется в следующем релизе.

DPI

Глобальный рефакторинг кода - отказ от поддержки pf_ring

Добавлено: услуга 19 - подмена DNS-ответов. Описание

Изменено: минимальный размер PCAP файла до 100 MB. Ротация PCAP-файлов при reload Описание

Изменено: улучшена трассировка событий DROP

Исправлено: ошибочное появление сообщения уровня ERROR при некоторых запросах fdpi_ctrl

Исправлено: некорректный разбор TLS(SNI) в случае если задано несколько 'ALPN Protocol'

Изменено: механизм обновления списков соответствия AS и IP. Описание

BRAS

Исправлено: контроль активности абонента с помощью unicast ARP Request. Ранее был broadcast ARP Request, что не оптимально для сети. Описание

Добавлено: SHCV (Subscriber Host Connectivity Verification) — контроль активности DHCP-абонента. Учтен сценарий для уже "закрытой" записи, чтобы не было повторного срабатывания SHCV и росте счетчика 'SHCV: session closed by inactivity'. Описание

Добавлено: ARP Proxy для известных маршрутов (только в режиме роутера), Данную возможность применяем только если инициатор ARP-запроса - известный нам абонент. В опцию bras_arp_proxy добавлен новый флаг - 0x0004. Описание

Исправлено: help() для IPv6-адресов в команде subs prop show

Исправлено: ошибка разбора параметров команды subs prop del, что приводило к невозможности удаления свойств по IP c ошибкой

ERROR: Result code=9: No subscriber IP address

Добавлено: CLI-команда dhcp disconnect. Это CLI-аналог CoA Disconnect. Режим выполнения дисконнекта задается опцией bras_dhcp_disconnect.

dhcp disconnect all - дисконнект всех DHCP-сессий

dhcp disconnect [ mac=X | ip=X ] - дисконнект указанной сессии

Исправлено: отправка L3 reauth для L2-абонента заранее, не дожидаясь завершения session timeout

Добавлено: в CLI-команду dhcp show stat добавлено число закрытых по неактивности сессий (SHCV)

Исправлено: ошибка при перехвате и обработке ICMPv6-пакетов, при изменении ICMPv6-пакета в некоторых случаях не пересчитывалась контрольная сумма

NAT

Изменено: трассировка в vdpi_new_flow_nat_ipv4 выводится всегда

Исправлено: в зависимости от значения параметра nat_exclude_private проверяется дополнительно пара CHECK_AS_LOCAL или CHECK_AS_PEER для AS при local interconnect

Router

Добавлено: ARP менеджмент. Описание

Исправлено: выбор порта для записи в сквозном LAG. Если LAG проходит сквозь fastDPI, то при выборе порта для записи с TAP нужно учитывать не только состояние самого порта Link Up/Down, но и состояние Link Up/Down второго плеча моста для этого порта

Исправлено: анонсирование подсетей профиля NAT при добавлении

Добавлено: CLI-команда router vrf dump. Команда выводит список VRF, заданных в системе, и свойства этих VRF

Исправлено: не учитывать term by AS при анонсе подсетей NAT. Режим term_by_AS относится к абонентам, а не к профилям NAT, поэтому его не нужно учитывать при анонсировании NAT-подсети

Исправлено: порядок перехвата пакетов из общего конвейера обработки

Исправлено: Увеличено число mbuf в selfgen mempool, если включен роутер: если роутер disabled: mempool size=512 * число_slave_на_кластер, если роутер enabled: mempool size=8 * 1024 * число_slave_на_кластер

LAG

Исправлено: необнуление массива при построении нового списка активных портов. Ошибка приводит к переполнению массива и порчи памяти

Добавлено логирование ошибки "no mbuf" при отправке LACP

Изменения в версии 13.2

[BRAS][PPPoE] Исправлено: пинг неактивного клиента запросами Echo

Добавлено: поддержка профилей услуги 19 (Подмена DNS-ответов). Для услуги 19 возможно задавать AAAA-записи и указывать * для доменов.Описание

Исправлено: для профиля услуги 18 не требуется одновременно задавать DSCP и TBF. Описание

Исправлено: приоритет IP:PORT перед IP и CIDR для кастомных определений протоколов. Описание

Изменено: приоритет пользовательских протоколов выше облачных. Описание

Исправлено: длина АААА записей в услуге 19

Добавлено: в параметр block_options маска 8 — не формировать RST-пакеты блокировки и переадресации для направления пакетов inet→subs. Описание

[DPI] Улучшено: анализ out-of-order пакетов (также появилась возможность задавать количество буферов для обработки out-of-order пакетов) и расшифровка фрагментированного QUIC. Также появилась возможность задавать количество буферов для обработки out-of-order пакетов, устранено исчерпание буферов для обработки out-of-order пакетов. Описание

[DPI] Исправлено: распознавание DOT

[CTRL] Добавлено: новый формат для вывода полисинга. Описание

fdpi_ctrl list profile --policing --profile.name htb_6 --outformat=json2

[CTRL] Добавлено: загрузка профилей полисинга c новым форматом (где есть value и unit). Описание

[BRAS][IPv6] Добавлено: при получении от клиента DHCPv6 confirm и отсутствии сессии в БД BRAS отправляется ответ со статусом NotOnLink

[FastPCRF][DHCPv6] Исправлено: ошибка, приводящая к закрытию и последующему открытию текущей IPv6 accounting сессии при обработке DHCPv6 запросов от клиента на продление аренды адреса

[DPI] Добавлено: обновление asnum.bin из облака, параметр asnum_download аналогичен по набору значений federal_black_list. Описание

Добавлено: параметр mem_ssl_savebl (холодный). Задает количество сохраняемых буферов для разбора ssl при перемешивании пакетов. Описание

Добавлено: статистика утилизации сохранения буферов парсинга ssl запросов. Описание

[BRAS][DHCPv6] Добавлена возможность извлекать option 37 и option 38 из клиентского пакета

[Router][tap] Исправлено: инициализация статуса моста при старте fastDPI. TAP-девайс для сквозного LAG находится в состоянии Up, если хотя бы один порт в сквозном LAG находится в состоянии Up и его второй конец в мосту также в Up. Статус моста (Up/Down) вычислялся только при наступлении события link Up/Down, при старте fastDPI статус моста полагался равным Down. Данный патч инициализирует статус мостов (Up/Down) при старте роутера на основании текущего статуса портов.

[BRAS] Исправлено: local interconnect разрешаем только если srcIP — известный нам абонент. Ранее не проверялось, что srcIP — известный нам абонент, что могло привести к подделке IP-адреса абонента и DDoS от имени этого поддельного IP других локальных абонентов с пометкой local interconnect.

Добавлено: CLI-команда permit.

[CLI][Ping] Изменено: сообщение об ошибке, если subs IP не найден

[CLI] Добавлено: В json-вывод команды dev xstat добавлен булевый признак on_stick

[CLI] Изменено: json-вывод команды dev info для on-stick.
Для on-stick-девайса было:

"pci_address": "on-stick based on 82:00.3"

Теперь:

// адрес базового девайса "pci_address": "82:00.3" // признак on-stick "on-stick": "true|false"

Удалены поддельные yandex sni из TELEGRAM_TLS

Добавлен параметр mem_quic_ietf_savebl. Задает количество буферов для разбора quic_ietf-запросов, которые состоят из нескольких пакетов. Значение по умолчанию 15% от mem_ssl_parsers. Описание

[DPI] Добавлены протоколы

"HLS VIDEO" 49298 "ICMP TUNNEL" 49299 "DNS TUNNEL" 49300 "FORTICLIENT_VPN" 49301 "CISCO_ANYCONNECT_VPN" 49302 "SHADOWSOCKS_VPN" 49303 "NOT_DNS" 49304

Добавлена возможность отправки DNS query по IPFIX

[DPDK] Добавлены read-only движки: RSS и диспетчер на порт

[BRAS][SHCV] Исправлен вызов SHCV до полного запуска пайплайна обработки пакетов. Это было возможно в многопортовых конфигурациях, когда время запуска пайплайна относительно велико.

[DPDK] Добавлен вывод типа создаваемых mempool на старте fastDPI

[Router] Добавлена статистика по TAP-девайсам. В вывод CLI-команды router vrf show добавлена статистика по TAP-девайсам - сколько пакетов/байт вычитано с TAP, сколько записано в порт с TAP, сколько передано в TAP, число событий и ошибок.

[Router] Изменена отправка пакетов, вычитанных с TAP-девайса: выбранный slave-поток для записи закрепляется за TAP-интерфейсом на ближайшие 5 секунд, что должно значительно уменьшить реордеринг при большом трафике с TAP-интерфейса

[DPI] Улучшено детектирование DNS TUNNEL, CISCO_ANYCONNECT_VPN, SHADOWSOCKS_VPN, DPITUNNEL, FORTICLIENT_VPN, SHADOWSOCKS_VPN

Изменен log level для запросов от телеметрии на INFO независимо от результата запроса

[fastPCRF][ACCT] Исправлена отправка Interim-Update при переключении на резервный RADIUS сервер

[BRAS][CLI] Исправлено: абоненты, закрытые по SHCV, теперь не выводятся командой fdpi_cli subs prop show active

[BRAS][Auth] Оптимизация подключения/отключения услуг

[FastRadius] Разбор конфигурационного файла переведен на новый движок

[BRAS][DHCP] Offer посылаем сперва на bcast 255.255.255.255

[BRAS][CLI] Исправлено: команда dhcp show stat vrf поддерживается только в режиме Radius proxy (в режиме DHCP Relay вызов этой команды приводил к падению)

[DPI] Улучшено распознавание DNS Tunnel и Shadowsocks

[Utils] Улучшены утилиты. checkproto: если задать IP и SNI, будет выведен результат с учетом MARK1 и приоритета, ascheckip: выводит DSCP и MARK1

[Utils] Добавлена поддержка в url2norm окончания имени хоста на :, что позволяет задать "любой порт" для HTTP

[CLI] Исправлена команда dhcp disconnect

[DPI] Исправлено: допускается смена протокола по CUSTOM SNI если ранее произошло распознавание по встроенной сигнатуре

[DPI] Дополнительная проверка целостности файла при загрузке списка AS из облака

[DPI] Исправлена загрузка черных и белых списков из облака

[utils] Добавлена поддержка новых форматов в утилите обратной конвертации черных и белых списков bin2ip

Исправлено возможное падение в корку

Поддержка 128-ядерных процессоров. Описание

Изменения в версии 13.3

[DPI] Добавлены протоколы:

BIGOTV 49305 SAYHI_CALL 49306 AZARLIVE 49307 LINE_CALL 49308 QQ_CALL 49309 VYKE_CALL 49310 VEEGO_STREAMS 49311 BHABI_CAM 49312 WEPARTY 49313

[DPI] Улучшено распознавание Viber

[DPI] Уменьшено число ложных срабатываний для DPI TUNNEL

[DPI] Увеличена глубина просмотра пакетов при поиске BIGOTV

[DPI] Изменен протокол FACETIME

[DPI] Изменено: если протокол определился по ip/sni/cname, то не происходит переопределение протокола по встроенным сигнатурам

[DPI] Упорядочено соблюдение приоритетов протоколов, что позволяет избежать лишних переключений между протоколами в процессе анализа.

[DPI] Исправлено: поиск одновременно * и : в http доменах

[DPI] Исправлено: удаление адресов в виртуальных каналах при reload

[DPI] Исправлено: игнорирования drop при задании параметра smartdrop при ошибках разбора ssl

[BRAS][PPP] Исправлено: учет опции bras_pppoe_trace_mac при сохранение DHCPv6-пакетов в pcap. Ранее учитывалась только опция bras_dhcp_trace_mac. Теперь для DHCPv6-пакетов в PPPoE-туннеле учитывается также и bras_pppoe_trace_mac

[DPI] Исправлены ошибки при назначении vchannel по IP/CIDR

[DPI] Исправлено: блокировка по IP DNS, работающего через tcp

[DPI][PCRF] Изменен уровень логгирования с INFO на WARNING для сообщений старта и остановки

[DPI Utils] Исправлена checkproto для случая IP протокол Unknown

[Utils] Исправлено: checkproto проверяет с учетом MARK1, задан ли номер порта, т.е. checkproto 8.8.8.8 443 www.google.com и checkproto 8.8.8.8 www.google.com могут вернуть разный результат

[Utils] bin2as принимает любое количество входных файлов как аргументов

[Utils] ascheckip принимает адреса для гупповой проверки со stdin

[Utils] bgp2bin аналог as2bin, но принимает только подсети /24 и крупнее, понимает формат диапазона IP1-IP2 как в записях ripe (выделяя из него подсети /24 и крупнее), последующие записи приоритетнее предыдущих, создает файл немного крупнее чем as2bin, но в нем диапазоны подсетей не пересекаются (т.к. менее приоритетные записи отфильтрованы), что позволяет передать утилите на вход данные из нескольких источников в порядке приоритета

[BRAS] Доработка L3-авторизации:

Если приходит Reject на IP-адрес, привязанный к multi-bind логину, то сначала отвязываем этот IP от логина, а затем навешиваем услуги (белый список, полисинг) на IP.

При успешной авторизации (Access-Accept): если IP не имеет логина, но при авторизации (успешной) пришел логин - надо отвязать все услуги от IP, прежде чем связывать IP с новым логином.

[BRAS][PPP] Исправлено: разнородный dual-stack. Один адрес (IPv4 или IPv6) задан явно, для второго (IPv6 или IPv4) указан framed-pool.

[BRAS][PPP] Исправлено: бродкастные пакеты теперь молча дропаем

[PCRF] Добавлена поддержка записи в syslog. Новый параметр syslog_level в fastpcrf.conf — уровень записи сообщений из alert-лога в syslog. 0 — запись в syslog отключена (значение по умолчанию)

Добавлено: горячий параметр smartdrop = 1, если для прокола задан drop, то он будет отложен, пока не будет разобран tls или ошибка разбора tls

Исправлено: добавление http доменов с окончанием на : (номер порта)

Изменен путь загрузки ASNUM из VAS Cloud (cloud.vasexperts.ru)

Блокировка по черному списку в GTP туннеле (при заданной настройке detect_gtp_tunnel)

Исправлено: блокировка https с опцией hard

Поддержка reload для автономных систем IPv6

Начальная поддержка записи alert лога в syslog. Включается настройкой syslog_level=7 (уровень, включительно до которого дублируются сообщения в syslog), по умолчанию не писать. Замечания:

По умолчанию rsyslog при записи в текстовый лог заменяет символ табуляции и переводы строк на их коды. Чтобы это отключить можно создать файл /etc/rsyslog.d/fastdpi.conf с настройкой

global(parser.escapeControlCharactersOnReceive="off")

либо пользоваться утилитой journalctl. Пример:

journalctl -t fastdpi -p 4 --since "1 hour ago" -o verbose --output-fields PRIORITY,MESSAGE

Можно перенаправить запись логов на удаленный сервер. Пример из /etc/rsyslog.conf:

на локальном сервере с fastdpi:

*.* action(type="omfwd" target="192.0.0.1" port="10514" protocol="tcp" action.resumeRetryCount="100" queue.type="linkedList" queue.size="10000")

на удаленном сервере:

input(type="imptcp" port="10514" ruleset="writeRemoteData") ruleset(name="writeRemoteData" queue.type="fixedArray" queue.size="250000" queue.dequeueBatchSize="4096" queue.workerThreads="4" queue.workerThreadMinimumMessages="60000" ) { action(type="omfile" file="/var/log/fastdpi.log" ioBufferSize="64k" flushOnTXEnd="off" asyncWriting="on")