Список изменений и обновление СКАТ
Инструкция по обновлению
Если у вас установлена версия CentOS 6.x или CentOS 8.x, то однократно переключите репозиторий командой:
sed -i -e '/^mirrorlist=http:\/\//d' -e 's/^# *baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/vault.centos.org/' /etc/yum.repos.d/CentOS-*.repo
и далее производите обновления командой:
yum update fastdpi
Module yaml error
, то следует обновить модуль dnf upgrade libmodulemd
.
После обновления выполните рестарт DPI:
service fastdpi restart
и других зависимых процессов (PCRF/Radius), но только если они реально используются и их конфигурация валидна:
service fastpcrf restart service fdpi_radius restart
При необходимости можно обновить компоненты операционной системы. Не проводите обновление версии ядра и зависимых от него утилит!
Для CentOS 6.x:
yum --exclude=kernel*,util-linux-ng,libuuid,libblkid update
Для CentOS 8.x:
yum update
Пользователям, эксплуатирующим DPI на виртуальных машинах, старых процессорах (2009 года выпуска) и старых процессорах AMD (до Ryzen):
Выполните перед обновлением команду:
touch /etc/dpi/noprioadj
и процесс DPI будет запускаться с обычным (не realtime
) приоритетом, что существенно снизит потребление системных (sys
) ресурсов CPU, но немного увеличит latency
на платформе.
Обновление платформы DPI до версии 13.0 Congo
13.0 Congo 1)
Проверить текущую установленную версию можно командой:
yum info fastdpi
Откат на 12.4:
yum downgrade fastdpi-12.4-0 fastpcrf-12.4-0
После обновления или смены версии требуется рестарт сервиса:
service fastdpi restart
Если используются PCRF и/или Radius, их тоже надо рестартовать. Для рестарта PCRF предпочтителен следующий порядок:
service fastdpi stop service fastpcrf restart service fastdpi start
Не проводите обновления ядра Linux. В новых версиях ядра может быть нарушена бинарная совместимость с Kernel ABI и сетевой драйвер после обновления не загрузится. Если вы все-таки произвели обновление, то на время решения проблемы настройте в загрузчике GRUB загрузку прежней версии ядра: в файле
/etc/grub.conf
установите параметр default=1
.
Если при обновлении появляется сообщение, что обновление не найдено или возникают проблемы с зависимостями, то перед обновлением выполните команду:
yum clean all
Изменения в версии 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
- Приоритет определения по 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 протоколов
- Добавлены протоколы 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
Балансировщик
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
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-ядерных процессоров. Описание