Список изменений и обновление СКАТ
Инструкция по обновлению
Если у вас установлена версия 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