Список изменений и обновление СКАТ [Документация VAS Experts]

Список изменений и обновление СКАТ

Инструкция по обновлению

Начиная с версии 12.0, DPI устанавливается только на CentOS 8.x и VEOS!

Если у вас установлена версия 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 на платформе.

Клиентам, использующим функционал BRAS, при обновлении СКАТ на новую версию необходимо обратить внимание на изменения.

Обновление платформы 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

  1. Поддержка LAG/LACP в on-stick. Описание
  2. Переход на DPDK 23.11
  3. Изменено: для QUIC и QUIC_IETF: если не определили SNI — проверяем по AS
  4. Изменено: при анализе STUN проверяется AS от Facebook — определяем FACEBOOK_VIDEO, а не WHATSAPP_VOICE
  5. Задание RSS hash флагов для UDP и TCP
  6. Изменено: определение протокола openvpn
  7. Исправлено: обработка SIGHUP только если fastDPI полностью инициализирован. Возможно падение, если в процессе запуска fastDPI приходит SIGHUP
  8. Запись trace/debug пакетов переведена на новый API
  9. Добавлено: поддержка протокола wechat для UDP
  10. Поддержка дополнительной разметки автономных систем mark1, mark2, mark3. Описание
  11. Приоритет определения по SNI в кастомных сигнатурах для автономных систем, помеченных как mark1. Описание
  12. Приоритет более специфичных кастомных SNI сигнатур.
    Пример: для хоста a.b.c.d при наличии сигнатур *.d, *.c.d и *.b.c.d будет выбран протокол, определенный сигнатурой *.b.c.d :!: работает только для сигнатур с *. Описание
  13. Поддержка жестких блокировок (несмотря на имя хоста/SNI) — задается в дополнительном поле в черном списке адресов, пример: 1.1.1.1 443 hard. Описание
  14. Улучшено детектирование YOUTUBE, SIGNAL
  15. Добавлен протокол DPITUNNEL, в который включены аномалии трафика, обычно применяемые для обхода DPI
  16. Обновление dpiutils
  17. Новые протоколы VK_CDN_VIDEO, META_CHAT
  18. Улучшение сигнатур протоколов FACEBOOK_VIDEO, META_CALLS
  19. Исправлено имя протокола VK_CDN_VIDEO
  20. Исправлено: декодирование SNI в QUIC IETF и возможность образования корки в исключительных случаях
  21. Исправлено: очистка структур поиска при удалении CUSTOM протоколов
  22. Добавлена возможность добавлять комментарии (#) и пустые линии во входных файлах для утилит lst2dscp, lst2tbf
  23. Добавлены протоколы QUIC_UNKNOWN - QUIC без SNI и QUIC_UNKNOWN_MARKED - QUIC без SNI и AS с пометкой MARK2. Описание
  24. Исправлено: определение хар-к stun для TCP
  25. Изменено: если достигли ограничения просмотра пакетов stun - устанавливаем этот протокол с учетом AS
  26. Обновлены утилиты для поддержки новых протоколов
  27. Улучшения в протоколах QUIC_UNKNOWN, QUIC_UNKNOWN_MARKED, SIGNAL, DpiTunnel
  28. Определения встроенных протоколов по SNI/HOST вынесены в облако, поддерживается приоритет SNI/IP
  29. Изменено: сравнение SNI производится без учета регистра
  30. Добавлена сигнатура протокола LANTERN_WEAK
  31. Улучшено распознавание протокола IMAP
  32. Исправление в LPM при выборе канала по IP/CIDR
  33. Добавлено: в формат записи в текстовый файл DNS - формат vchnl - номер виртуального канала.
  34. Добавлено: в шаблон IPFIX передачи данных для DNS номер канала. Описание
  35. Исправлено: падение при трейсе DNS
  36. Улучшено определение протокола VIBER_VSTREAMS
  37. Исправлено: в процессе остановки fastDPI не принимаем и не обрабатываем никакие запросы по ctl
  38. Добавлен протокол SSTP (49296)
  39. Добавлен протокол ANYDESK (49297,54273)
  40. Улучшено распознавание LANTERN

BRAS

  1. Добавлено: учет DHCP-пакетов от абонента в биллинговой статистике: абонентский CPE (то есть Wi-Fi роутер) без клиентов (например, ночью) — посылает только запросы на продление лицензии. Так как эти запросы перехватывались BRAS и не включались в аккаунтинг, происходило завершение сессии по idle timeout
  2. Исправлено: действия при изменении QinQ/VLAN у абонента
  3. Исправлено: framed-pool renew
    В некоторых случаях формировались некорректные DHCP-ответы. Добавлена трассировка в лог DHCP-пакетов для framed-pool renew
  4. Исправлено: прием пакетов от relay. Ранее проверялось, что relay находится в сети fc::/7. Теперь эта проверка излишняя и удалена, — у relay может быть любой адрес.
  5. Исправлено: разбор DHCPv6-опций от Радиуса
  6. Добавлена команда subs prop show active. Команда выводит дамп L2-свойств всех активных (не-expired) абонентов. Описание
  7. Изменено: запрет вызова CLI-команд в процессе остановки
  8. Исправлено: idle-timeout для сессии. Для PPPoE-сессий idle timeout должен браться из настройки bras_ppp_idle_timeout, если не задан явно в ответе авторизации (атрибут Idle-Timeout).
  9. Добавлена приоритетная переадресация с переводом DSCP. Описание
  10. Исправлено: добавление лишней опции 61 (Client-Id) в ответ fastDPI при распределении адреса из Framed-Pool
  11. Исправлено: вывод в лог IP-адресов DHCP-серверов
  12. Исправлено: включение услуг с профилями. Атрибут `VasExperts-Service-Profile` (имя профиля услуги, неявно включает услугу) имеет больший приоритет, чем `VasExperts-Enable-Service` (включение/выключение услуги без задания профиля).
  13. Добавлена команда ping inet от имени абонентов через всю цепочку обработку BRAS/NAT/ROUTER. Подсказка - fdpi_cli ping inet ?. Описание
  14. Исправлено: вызов деанонса IP-адреса абонента при acct idle. В опцию роутера router_subs_announce добавлен новый флаг: 0x10000 - деанонсировать L3-абонента при наступлении acct idle (закрытие acct-сесси по idle timeout). Описание
  15. Добавлена поддержка задания профиля услуги 18 при авторизации. Включение услуги 18 в ответе Радиуса Access-Accept задается обычным для услуги с обязательным профилем образом (здесь serv18 - имя профиля):
    VasExperts-Service-Profile = "18:serv18"
  16. В команду subs prop show добавлен поиск по MAC и subs_id. Результат поиска по MAC или subs_id может быть многозначным, - несколько разных записей для одного того же MAC/subs_id. Результат команды subs prop show active изменен, что может быть критично при разборе json-выхлопа команды. Описание
  17. Исправлено: установка флага link up/down для портов, не поддерживающих link up/down прерывания (например, af_packet)
  18. Код возврата команды Uptime. CLI-команда uptime может использоваться для контроля полного запуска fastDPI: она возвращает result=0 (Success) только тогда, когда fastDPI полностью проинициализирован и все рабочие потоки запущены. По получении ответа от fastDPI на команду fdpi_cli uptime сама утилита fdpi_cli проверяет результат выполнения и если result!=0 — выставляет ненулевой код возврата.
  19. Исправлено: при наличии VRF (service 254) в Access-Accept пакет неправомерно выводился в лог как ошибочный
  20. Восстановление работы UDR после вызова команды с большим числом параметров

NAT

  1. Добавлена утилита checknat для проверки распределения белых адресов. Описание
  2. Исправлено online изменение параметра nat_private_cidr

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

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

Router

  1. Распределение mempool для emit-пакетов: не допускаем полного исчерпания пула, в пуле должно быть не менее 256 свободных элементов
  2. Ошибка удаления маршрута errno=3 (No record found) переведена в разряд TRACE, чтобы не засоряла лог
  3. Исправлен порядок завершения компонентов роутера
  4. Изменено: system error при очистке route tables. Очистка route tables (удаление всех записей, добавленных СКАТ) производится при стопе и старте fastDPI. В процессе очистки может возникнуть ошибка EBUSY, которая является фатальной для netlink-сокета, сокет должен быть закрыт.
  5. Исправлено: TAP link down in LAG. Если порт входит в лаг, то TAP этого порта в состояние Link down нужно производить только тогда, когда ВСЕ порты LAG в down.
  6. Исправлено: контроль за исчерпанием selfgen mempool
  7. Оптимизация вычитывания данных с TAP
  8. Исправлено LAG+On-stick: перевод TAP в состояние link down. TAP переводится в link down только тогда, когда все порты в LAG в состоянии down. Если же есть хотя бы один порт в состоянии Up - TAP должен находится в состоянии Link Up.
  9. Исправлено: отведение трафика в роутере для on-stick девайса в LAG. При формировании топологии VRF не учитывалось, что в LAG входит базовый (физический) девайс, а при описании роутера указывается on-stick (виртуальный) девайс.
  10. Исправлено: вычитывание всех данных с TAP-девайса. При старте fastDPI были возможны ситуации, когда роутер еще не полностью инициализирован, а TAP уже мониторится, но не вычитывается.
  11. Опция router_subs_announce сделана горячей (hot)
  12. Исправлено: утечка mbuf при старте fastDPI

SDS

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

Radius

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

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

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

DPI

  1. Глобальный рефакторинг кода - отказ от поддержки pf_ring
  2. Добавлено: услуга 19 - подмена DNS-ответов. Описание
  3. Изменено: минимальный размер PCAP файла до 100 MB. Ротация PCAP-файлов при reload Описание
  4. Изменено: улучшена трассировка событий DROP
  5. Исправлено: ошибочное появление сообщения уровня ERROR при некоторых запросах fdpi_ctrl
  6. Исправлено: некорректный разбор TLS(SNI) в случае если задано несколько 'ALPN Protocol'
  7. Изменено: механизм обновления списков соответствия AS и IP. Описание

BRAS

  1. Исправлено: контроль активности абонента с помощью unicast ARP Request. Ранее был broadcast ARP Request, что не оптимально для сети. Описание
  2. Добавлено: SHCV (Subscriber Host Connectivity Verification) — контроль активности DHCP-абонента. Учтен сценарий для уже "закрытой" записи, чтобы не было повторного срабатывания SHCV и росте счетчика 'SHCV: session closed by inactivity'. Описание
  3. Добавлено: ARP Proxy для известных маршрутов (только в режиме роутера), Данную возможность применяем только если инициатор ARP-запроса - известный нам абонент. В опцию bras_arp_proxy добавлен новый флаг - 0x0004. Описание
  4. Исправлено: help() для IPv6-адресов в команде subs prop show
  5. Исправлено: ошибка разбора параметров команды subs prop del, что приводило к невозможности удаления свойств по IP c ошибкой
    ERROR: Result code=9: No subscriber IP address
  6. Добавлено: CLI-команда dhcp disconnect. Это CLI-аналог CoA Disconnect. Режим выполнения дисконнекта задается опцией bras_dhcp_disconnect.
    1. dhcp disconnect all - дисконнект всех DHCP-сессий
    2. dhcp disconnect [ mac=X | ip=X ] - дисконнект указанной сессии
  7. Исправлено: отправка L3 reauth для L2-абонента заранее, не дожидаясь завершения session timeout
  8. Добавлено: в CLI-команду dhcp show stat добавлено число закрытых по неактивности сессий (SHCV)
  9. Исправлено: ошибка при перехвате и обработке ICMPv6-пакетов, при изменении ICMPv6-пакета в некоторых случаях не пересчитывалась контрольная сумма

NAT

  1. Изменено: трассировка в vdpi_new_flow_nat_ipv4 выводится всегда
  2. Исправлено: в зависимости от значения параметра nat_exclude_private проверяется дополнительно пара CHECK_AS_LOCAL или CHECK_AS_PEER для AS при local interconnect

Router

  1. Добавлено: ARP менеджмент. Описание
  2. Исправлено: выбор порта для записи в сквозном LAG. Если LAG проходит сквозь fastDPI, то при выборе порта для записи с TAP нужно учитывать не только состояние самого порта Link Up/Down, но и состояние Link Up/Down второго плеча моста для этого порта
  3. Исправлено: анонсирование подсетей профиля NAT при добавлении
  4. Добавлено: CLI-команда router vrf dump. Команда выводит список VRF, заданных в системе, и свойства этих VRF
  5. Исправлено: не учитывать term by AS при анонсе подсетей NAT. Режим term_by_AS относится к абонентам, а не к профилям NAT, поэтому его не нужно учитывать при анонсировании NAT-подсети
  6. Исправлено: порядок перехвата пакетов из общего конвейера обработки
  7. Исправлено: Увеличено число mbuf в selfgen mempool, если включен роутер: если роутер disabled: mempool size=512 * число_slave_на_кластер, если роутер enabled: mempool size=8 * 1024 * число_slave_на_кластер

LAG

  1. Исправлено: необнуление массива при построении нового списка активных портов. Ошибка приводит к переполнению массива и порчи памяти
  2. Добавлено логирование ошибки "no mbuf" при отправке LACP

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

  1. [BRAS][PPPoE] Исправлено: пинг неактивного клиента запросами Echo
  2. Добавлено: поддержка профилей услуги 19 (Подмена DNS-ответов). Для услуги 19 возможно задавать AAAA-записи и указывать * для доменов.Описание
  3. Исправлено: для профиля услуги 18 не требуется одновременно задавать DSCP и TBF. Описание
  4. Исправлено: приоритет IP:PORT перед IP и CIDR для кастомных определений протоколов. Описание
  5. Изменено: приоритет пользовательских протоколов выше облачных. Описание
  6. Исправлено: длина АААА записей в услуге 19
  7. Добавлено: в параметр block_options маска 8 — не формировать RST-пакеты блокировки и переадресации для направления пакетов inet→subs. Описание
  8. [DPI] Улучшено: анализ out-of-order пакетов (также появилась возможность задавать количество буферов для обработки out-of-order пакетов) и расшифровка фрагментированного QUIC. Также появилась возможность задавать количество буферов для обработки out-of-order пакетов, устранено исчерпание буферов для обработки out-of-order пакетов. Описание
  9. [DPI] Исправлено: распознавание DOT
  10. [CTRL] Добавлено: новый формат для вывода полисинга. Описание
    fdpi_ctrl list profile --policing --profile.name htb_6 --outformat=json2
  11. [CTRL] Добавлено: загрузка профилей полисинга c новым форматом (где есть value и unit). Описание
  12. [BRAS][IPv6] Добавлено: при получении от клиента DHCPv6 confirm и отсутствии сессии в БД BRAS отправляется ответ со статусом NotOnLink
  13. [FastPCRF][DHCPv6] Исправлено: ошибка, приводящая к закрытию и последующему открытию текущей IPv6 accounting сессии при обработке DHCPv6 запросов от клиента на продление аренды адреса
  14. [DPI] Добавлено: обновление asnum.bin из облака, параметр asnum_download аналогичен по набору значений federal_black_list. Описание
  15. Добавлено: параметр mem_ssl_savebl (холодный). Задает количество сохраняемых буферов для разбора ssl при перемешивании пакетов. Описание
  16. Добавлено: статистика утилизации сохранения буферов парсинга ssl запросов. Описание
  17. [BRAS][DHCPv6] Добавлена возможность извлекать option 37 и option 38 из клиентского пакета
  18. [Router][tap] Исправлено: инициализация статуса моста при старте fastDPI. TAP-девайс для сквозного LAG находится в состоянии Up, если хотя бы один порт в сквозном LAG находится в состоянии Up и его второй конец в мосту также в Up. Статус моста (Up/Down) вычислялся только при наступлении события link Up/Down, при старте fastDPI статус моста полагался равным Down. Данный патч инициализирует статус мостов (Up/Down) при старте роутера на основании текущего статуса портов.
  19. [BRAS] Исправлено: local interconnect разрешаем только если srcIP — известный нам абонент. Ранее не проверялось, что srcIP — известный нам абонент, что могло привести к подделке IP-адреса абонента и DDoS от имени этого поддельного IP других локальных абонентов с пометкой local interconnect.
  20. Добавлено: CLI-команда permit.
  21. [CLI][Ping] Изменено: сообщение об ошибке, если subs IP не найден
  22. [CLI] Добавлено: В json-вывод команды dev xstat добавлен булевый признак on_stick
  23. [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"
  24. Удалены поддельные yandex sni из TELEGRAM_TLS
  25. Добавлен параметр mem_quic_ietf_savebl. Задает количество буферов для разбора quic_ietf-запросов, которые состоят из нескольких пакетов. Значение по умолчанию 15% от mem_ssl_parsers. Описание
  26. [DPI] Добавлены протоколы
    "HLS VIDEO"             49298 
    "ICMP TUNNEL"           49299 
    "DNS TUNNEL"            49300 
    "FORTICLIENT_VPN"       49301 
    "CISCO_ANYCONNECT_VPN"  49302
    "SHADOWSOCKS_VPN"       49303
    "NOT_DNS"               49304 
  27. Добавлена возможность отправки DNS query по IPFIX
  28. [DPDK] Добавлены read-only движки: RSS и диспетчер на порт
  29. [BRAS][SHCV] Исправлен вызов SHCV до полного запуска пайплайна обработки пакетов. Это было возможно в многопортовых конфигурациях, когда время запуска пайплайна относительно велико.
  30. [DPDK] Добавлен вывод типа создаваемых mempool на старте fastDPI
  31. [Router] Добавлена статистика по TAP-девайсам. В вывод CLI-команды router vrf show добавлена статистика по TAP-девайсам - сколько пакетов/байт вычитано с TAP, сколько записано в порт с TAP, сколько передано в TAP, число событий и ошибок.
  32. [Router] Изменена отправка пакетов, вычитанных с TAP-девайса: выбранный slave-поток для записи закрепляется за TAP-интерфейсом на ближайшие 5 секунд, что должно значительно уменьшить реордеринг при большом трафике с TAP-интерфейса
  33. [DPI] Улучшено детектирование DNS TUNNEL, CISCO_ANYCONNECT_VPN, SHADOWSOCKS_VPN, DPITUNNEL, FORTICLIENT_VPN, SHADOWSOCKS_VPN
  34. Изменен log level для запросов от телеметрии на INFO независимо от результата запроса
  35. [fastPCRF][ACCT] Исправлена отправка Interim-Update при переключении на резервный RADIUS сервер
  36. [BRAS][CLI] Исправлено: абоненты, закрытые по SHCV, теперь не выводятся командой fdpi_cli subs prop show active
  37. [BRAS][Auth] Оптимизация подключения/отключения услуг
  38. [FastRadius] Разбор конфигурационного файла переведен на новый движок
  39. [BRAS][DHCP] Offer посылаем сперва на bcast 255.255.255.255
  40. [BRAS][CLI] Исправлено: команда dhcp show stat vrf поддерживается только в режиме Radius proxy (в режиме DHCP Relay вызов этой команды приводил к падению)
  41. [DPI] Улучшено распознавание DNS Tunnel и Shadowsocks
  42. [Utils] Улучшены утилиты. checkproto: если задать IP и SNI, будет выведен результат с учетом MARK1 и приоритета, ascheckip: выводит DSCP и MARK1
  43. [Utils] Добавлена поддержка в url2norm окончания имени хоста на :, что позволяет задать "любой порт" для HTTP
  44. [CLI] Исправлена команда dhcp disconnect
  45. [DPI] Исправлено: допускается смена протокола по CUSTOM SNI если ранее произошло распознавание по встроенной сигнатуре
  46. [DPI] Дополнительная проверка целостности файла при загрузке списка AS из облака
  47. [DPI] Исправлена загрузка черных и белых списков из облака
  48. [utils] Добавлена поддержка новых форматов в утилите обратной конвертации черных и белых списков bin2ip
  49. Исправлено возможное падение в корку
  50. Поддержка 128-ядерных процессоров. Описание
1)
Колыбель человечества: люди обитают здесь более 50 тыс лет