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

Это старая версия документа!


Обновление

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

Если у вас установлена версия 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
Для корректного хранения и отображения новых протоколов в модуле статистики и отчетов NFSEN необходимо провести его обновление.
На типовых конфигурациях во время рестарта время простоя сервиса составит 1-3 секунды.

Пользователям, эксплуатирующим DPI на виртуальных машинах, старых процессорах (2009 года выпуска) и старых процессорах AMD (до Ryzen):
Выполните перед обновлением команду:

touch /etc/dpi/noprioadj

и процесс DPI будет запускаться с обычным (не realtime) приоритетом, что существенно снизит потребление системных (sys) ресурсов CPU, но немного увеличит latency на платформе.

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

Обновление платформы DPI до версии 12.0 Machu Picchu

12.0 Machu Picchu 1)

Проверить текущую установленную версию можно командой:

yum info fastdpi

Откат на 11.4.2:

yum downgrade fastdpi-11.4-2 fastpcrf-11.4-2

После обновления или смены версии требуется рестарт сервиса:

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

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

  1. Изменено: переход на DPDK 22.11 LTS.
  2. Добавлено: разбор заголовков с защитой Chaos Protection в QUIC IETF.
  3. Добавлено: параметр (холодный) nat_transcode_cidr который задает CIDR белых адресов оператора. Возможно только 2 CIDR. Значения используются при перекодировке белый -→ серый для NAT 1:1. Для серого адреса может быть назначен любой белый адрес для NAT 1:1.
  4. Изменено: хэш функция распределения по рабочим потокам: (crc(ip_src) % nthread + crc(ip_dst) % nthread) % nthread.
  5. Изменено: алгоритм выделения белых адресов для CG-NAT: crc(серый) % nthread + crc(белый) % nthread.
  6. Изменено: Сообщение [NFLW] very long operation …. выводится всегда независимо от количества повтора сообщений.
  7. Изменено: изменено имя каталога записи файлов — добавлено stream.
  8. Добавлено: статистика вывода информации по отправлению Netflow/IPFIX
        [STAT    ][2022/11/20-17:55:03:213770] Statistics on NFLW_export : {a/b/c%/d/e}
     
        a - количество выполнения циклов отправки
        b - количество циклов отправки, когда время, затраченное на отправку, превысило период выполнения циклов
        c - процент превышения количества циклов отправки: 100 * b/a
        d - время в микросекундах максимальной продолжительности цикла отправки
        e - время в микросекундах периода отправки статистики (значение параметра ''netflow_timeout''(параметр задается в секундах))
     
        Пример:
        [STAT    ][2022/11/20-17:55:03:213770] Statistics on NFLW_export : {7/0/0.00%/45297us/30008163us}
  9. [PCRF][PPPoE] Исправлено: если Радиус отдает нам IPv6-адрес вместо префикса, мы не делали префикс из адреса, что приводило к пересозданию acct-сессий. Вновь создаваемые acct-сессии были без логина и прочих важных для провайдеров атрибутов.
  10. [BRAS][L3-AUTH] Изменено: Framed-Route теперь не применяется к PD-префиксу.
  11. [PCRF][ACCT] Исправлено: при отсоединении (unlink) записи от мультисессии не корректировались IP-адреса для мультисессии. Отсоединение (unlink) происходит при агрегации. В результате в дальнейшем к этой мультисессии могли быть привязаны другие записи, не имеющие уже к ней никакого отношения.
  12. [PCRF][DHCPv6-Pool] Исправлено: формирование поля Link-Address для Relay-Fwd при отправке запроса на конкретный DHCPv6-сервер.
  13. [BRAS][PPPoE-IP6] Запрос IPv6-адреса из Framed-IPv6-Pool осуществляется по приходу от клиента первого IP6CP Cfg-Req.
  14. [CLI][ACCT] Добавлено: вывод NAS-атрибутов fastDPI-сервера в командах PCRF acct show.
  15. [BRAS][DHCP] Исправлено: отправка NAK на DHCP-Request для другого сервера.
  16. Добавлена поддержка DDP профилей для карт Intel 700-series (драйвер i40e) для балансировки туннелей PPPoE/GTP/MPLS при использовании dpdk_engine=2. DDP загружается из файла /lib/firmware/intel/i40e/ddp/i40e.pkg при инициализации i40e портов. Время жизни загруженного DDP-профиля: до перезагрузки сервера.
  17. Изменено: алгоритм выбора сервера для записи SDS.
  18. [CLI] Добавлено: установка l2subs_id в команде subs prop set.
  19. [BRAS][DHCP-Relay] Добавлена поддержка l2subs_id.
  20. [BRAS][AUTH] Добавлена поддержка l2subs_id для L3-авторизации, так как в ответе L3 auth от Радиуса может указываться, что это L2-абонент.
  21. [BRAS][ARP-AUTH] Добавлена поддержка l2subs_id.
  22. [BRAS][PPPoE][CLI] Добавлено: атрибут l2subs_id для PPPoE-сессии.
  23. [BRAS][PPPoE] Удалена поддержка авторизации по MAC, без логина и пароля, удаление опции bras_ppp_mac_auth.
  24. [PPPoE][CLI] Добавлена поддержка параметра subs_id, идентифицирующего PPPoE-сессию.
  25. [BRAS] Добавлен класс l2lan_id --- идентификатор L2-сети. l2lan_id предназначен для разделения абонентов по VLAN. l2lan_id получается из l2subs_id, то есть его формирование задается той же опцией bras_subs_id. По сути l2lan_id --- это VLAN-префикс из l2subs_id.
  26. [BRAS][DHCP] Все внутренние БД DHCP-сессий теперь учитывают l2lan_id --- он входит в их ключ по MAC и Client-Id. То есть два абонента с одним и тем же MAC-адресом, но в разных VLAN, считаются разными абонентами (если bras_subs_id задано учитывать VLAN). Вторичные ключи по Opt82 и Q-in-Q не учитывают l2lan_id. Подробнее bras_subs_id.
  27. Добавлен настроечный параметр rx_dispatcher = метод хеширования flow по рабочим потокам
    • 0 --- по умолчанию используется прежний метод (ip_src+ipdst)%N ) & ip_mask;
    • 1 --- новый метод с поддержкой перекодировки для NAT1:1 (CRC(IP SRC)%N+CRC(IP_DST)%N)%N.
  28. [Radius monitor] Добавлена поддержка экспорта адреса и порта NAS, а также других атрибутов.
  29. [Radius monitor] Добавлено подключение 12 услуги.
  30. [BRAS] Добавлена настройка bras_ppp_lcp_start_timeout.

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

  1. Добавлено: поддержка режима On-Stick.
  2. Минорные исправления в работе CG-NAT.
  3. Поддержка 12 услуги2) на VCHANNEL.
  4. Поддержка загружаемых из облака протоколов с именами.
  5. SDS: передача данных в формате pcapng.

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

  1. Исправления в выводе статистики утилизации CG-NAT.
  2. Разбор новых версий GQUIC.
  3. Новая услуга 16 --- белый список с переадресацией на captive portal без доступа абонентов в интернет (по причине аварии на аплинках, абонент в долгосрочной блокировке и т.п.).
  4. Новая утилита dpdkinfo (-h подсказка, module_eeprom - информация по оптической диагностике модуля SFP, если она поддерживается модулем).

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

  1. Добавлено: поддержка VRF в роутере (описание готовится).
  2. Сервис управления авторизацией PPPoE на основе поля Service-name.
  3. Добавлено: поддержка отправки heartbeat для внешних bypass (описание готовится).
  4. Добавлено: извлечение и передача в IPFIX куки из Set-Cookie.
  5. Улучшено: блокировка коротких подвисаний TCP протокола в потоках IPFIX через дополнительную установку user timeout (в дополнении к стандартному механизму tcp keep alive).
  6. Добавлено: производительный rx_dispatcher=2 с равномерной балансировкой по произвольному количеству потоков (но без поддержки nat1:1 с требованием назначения конкретных адресов).
  7. [BRAS][PPPoE] Исправлено: dual-stack: добавление IP-адресов к уже существующей acct-сессии.
  8. [PCRF] Исправлено: переключение persist queue в режим "есть связь".
  9. [CLI] Добавлена команда CLI fdpi_cli pcrf persist queue reconnect, которая позволяет сделать реконнект к fastDPI без сброса очереди. Может быть применена к конкретному соединению или ко всем.
  10. [PCRF][PPPoE][Framed-Pool] Исправлено: создание acct-сессии с тем session_id, который был анонсирован при авторизации.
  11. Добавлена поддержка формата pcapng для записи в СХД.
  12. [CoA] Добавлена обработка CoA Update по l2subs_id.
  13. Добавлено: сохранение в экспорте NAT трансляций ICMP протокола.
  14. Изменено: параметр nat_exclude_private и соответсвующая поддержка: int nat_exclude_private;
    Битовая маска для того чтобы не делать NAT для серых адресов:
    0 — всегда делаем преобразование серый -→ белый
    1 — Не делаем NAT для серых адресов (ip_src и ip_dst серые или находятся в psz_prms_user_private)
    2 — ip_src — серый с учетом psz_prms_user_private и AS для dst_ip = local
    4 — ip_src — серый с учетом prms_user_private и AS для dst_ip = peer.
  15. [CoA] Добавлена обработка CoA Reauth по l2subs_id.
  16. [CoA] Добавлена обработка CoA Disconnect по l2subs_id.
  17. [fDPI] Максимальное число кластеров увеличено до 12 (было 10).
  18. [PCRF][ACCT] Добавлено: передача атрибута VasExperts-L2-SubsId в Acct Start/Interim/Stop.
  19. [DPDK] Добавлено: disable Ethernet Flow Control на старте порта.
  20. [PCRF][DHCPv6-POOL] Исправлено формирование Client-DUID при составлении DHCP6-RENEW для Framed-IPv6-Pool
    Client-DUID должен быть неизменным на всем протяжении DHCPv6-сессии, иначе при Renew DHCPv6-сервер может выдать другой IPv6-префикс, что приведет к закрытию PPPoE-сессии. Для достижения неизменяемости теперь Client-DUID формируется из l2subs_id абонента.
  21. [PCRF][DHCP-POOL] Исправлена идентификация 'запрос-ответ' при работе с DHCP-пулами.
    В качестве идентификатора используется:
    Для DHCPv4 — MAC-адрес абонента (chaddr) + xid запроса
    Для DHCPv6 — опция Client-Id и xid запроса. Сервер обязан передать опцию Client-Id в ответе, в отличие от других опций запроса.
  22. [BRAS] Добавлена CLI-команда dhcp show stat vrf
    Вывод числа DHCP-абонентов в разрезе VRF.
  23. [PCRF] Добавлена CLI-команда pcrf radius enable/disable.
  24. [PCRF] Добавлена CLI-команда pcrf radius ping.
  25. [PCRF] Добавлена CLI-команда pcrf radius status.
  26. Изменено: если у сессии нет белого адреса — включается CG-NAT.
  27. Добавлено: если услуга 11 удалена, NAT выключается и освобождаются ресурсы. Происходит только если есть (прочитаны) данные по flow.
  28. [BRAS][DHCP] Использование MAC-адреса абонента из DHCP-запроса для l2subs_id.
    При формировании L2-идентификатора абонента (см. bras_subs_id) используется srcMAC из ethernet-заголовка пакета. В случае, если DHCP-запросы проходят через DHCP Relay, srcMAC в ethernet-заголовке DHCP-пакета уже не является MAC-адресом абонента. DHCP-запросы всех абонентов, проходящих через DHCP Relay, имеют один и тот же MAC в ethernet-заголовке и один и тот же subs_id.
    Решение: для формирования L2-идентификатора MAC-адрес абонента теперь берется из DHCP-пакета, поле chaddr.
  29. [PCRF] watchdog — новый монитор Radius-серверов.
    Новые параметры fastpcrf.conf:
    • Тайм-аут пингования Радиус-серверов, в секундах.
      Если нет никаких запросов авторизации, fastPCRF периодически пингует Радиус-сервера, посылая Server-Status или Access-Request. Если сервер отвечает, то он считается доступным. Значение по умолчанию: 60 секунд. radius_keepalive=60
    • User-Name (radius_ping_user_name) и Password (radius_ping_user_password) псевдоабонента для пинг-запросов.
      FastPCRF пытается поддерживать соединение со всеми описанными Радиус-серверами, периодически посылая пинг-запрос на сервера.
      Пинг-запрос — это запрос Status-Server (если Радиус его поддерживает) или обычный Access-Request с заданными User-Name и Password. Эти параметры задают User-Name и Password для пинг-запросов Access-Request (в Server-Status эти параметры не используются). FastDPI важен сам факт ответа сервера на пинг-запрос, содержимое ответа (Access/Reject и их атрибуты) не анализируется. Если данные User-Name и Password не заданы — пинг-запрос Access-Request все равно будет посылаться, но без атрибутов User-Name и Password. Значений по умолчанию нет. Параметр radius_revive_period удален за ненадобностью.
  30. Изменено: Для flow ставится признак p_flow_cmn.bts_check_ip |= ntconnt::bts_nat_must_whip
    Признак говорит о том, что идет обращение с серого адреса и для этого flow требуется белый адрес. Если белый адрес не назначен — попытки выделения белого адреса продолжаются (Для TCP — только если SYN). Это происходит из-за того что могут идти запросы с серого адреса, а только потом появляется услуга 11, но flow уже существует и будет вечно мертвый.
  31. Изменено: Если для flow задан белый адрес, проверяется наличие 11 услуги. Если услуги нет — белый адрес освобождается.
  32. [Router] Добавлено: сообщение об ошибке в fastdpi_alert.log "VRF не имеет TAP"
    Если VRF не имеет ни одного девайса — невозможно анонсировать адрес в такой VRF. Данная ошибка выводится в fastdpi_alert.log не чаще чем раз в час для каждого VRF.
  33. Добавлено: команды fdpi_cli: nat dump transcode, nat dump translater [имя профиля], nat dump translater data [имя профиля].
  34. Новое имя профиля полисинга — BV##NNNN[#MMMM][#++++----], где NNNN — скорость входящего трафика в кбит/с, MMMM — скорость исходящего трафика в кбит/с, + — включенный класс, — отключенный класс.
  35. [PCRF] Добавлено: новое значение chaddr@opt60 для опции radius_user_name_dhcp
    Пример: radius_user_name_dhcp=chaddr@opt60, User-Name в Access-Request формируется из MAC-адреса заголовка DHCP пакета (поле chaddr) и опции 60, если эта опция есть в DHCP-запросе.
  36. Изменено: улучшено распознавание FACEBOOK VIDEO.
  37. Исправлено: при разборе quic_ietf для первого пакета CRYPTO, если задан offset==0 — проверяется факт возможной фрагментации.
  38. Добавлено: изменения парсинга — учет изменений в версиях Google QUIC: до версии 34 было дополнительное поле "Private Flags". Не разбирали такие пакеты, начиная с версии 39 — изменился порядок байт для записи "Data Length".
  39. Добавлен полисинг и услуга 16 по значениям из имени профиля.
  40. [BRAS] Добавлено: новая опция bras_ip_filtering
    [hot] Фильтрация трафика (битовая маска) по умолчанию отключена (=0).
    Допустимые флаги: 0x0001 — контроль подмены IP абонента (restricting forged traffic). Дропаем пакет на пути subsinet, если IP-адрес абонента (srcIP) неизвестный для L2 BRAS и bras_term_by_as = 0 и AS абонента не local. bras_ip_filtering=0.
  41. [BRAS] Добавлено: опция bras_vrf_isolation — изоляция на уровне VRF
    Добавлена новая опция fastdpi.conf: [hot] Изоляция VRF. По умолчанию (0), L2 BRAS не изолирует абонентов из разных VRF: Если данный режим включен (1), то абоненты из разных VRF будут изолированы друг от друга: для абонента из VRF1: шлюз также должен быть в VRF1, local interconnect будет работать только для абонентов из той же VRF1. bras_vrf_isolation=0
    При включении этой опции:
    • 1. ARP абонента к шлюзу — обрабатывается fastDPI только если абонент и шлюз в одном VRF;
    • 2. ICMP ping шлюза — обрабатывается fastDPI только если абонент и шлюз в одном VRF;
    • 3. local interconnect — применяется только если оба абонента в одном VRF.
  42. Исправлено: сообщения об ошибке для клиента не должны содержать LF в json.
  43. [BRAS][ARP] Изменено: обработка ARP к шлюзу. Отвечаем на ARP-запрос к шлюзу только если VRF отправителя и шлюза совпадают (sender и GW находятся в одной VRF).
  44. [VRF] Изменено: задание имени VRF через услугу 254 (только Radius).
  45. [BRAS][DHCP-Proxy] Session-Timeout и Lease-Time для Framed-Pool.
    Если адрес выдан из Framed-Pool на малое время (малое lease-time) и указано большое session-timeout при авторизации, то все запросы Renew/Rebind от абонента нужно посылать на DHCP-сервер через PCRF для продления лицензии, иначе DHCP-сервер может посчитать, что адрес свободен. Реавторизация производится только при достижении session-timeout.
  46. Добавлено: поддержка услуги 16 — обработка запросов SYN и последующая переадресация без передачи пакетов в интернет.
  47. [Router] Добавлено: общие neighbor cache для VRF.
    В настройку VRF добавлена опция: router_vrf { [cold][optional]
    Строка — имя ARP кеша для данной VRF по умолчанию, каждый VRF имеет свой собственный, изолированный от других ARP/Neighbor кеш. Если нужно, чтобы несколько разных VRF имели общий ARP/Neighbor кеш, то следует задать в описании этих VRF одно и то же значение опции neighbor_cache. neighbor_cache=… }.
  48. [PCRF] fastpcrf.conf опция radius_user_name_dhcp — добавлено новое значение opt61@opt60: radius_user_name_dhcp=opt61@opt60.
    User-Name в Access-Request формируется из DHCP-опций 61 и 60, если эти опции есть в DHCP-запросе.
    Новые опции fastpcrf.conf — в каких атрибутах передавать DHCP-опции в Access-Request.
    [hot] Задание атрибутов, в которых передаются опции DHCP. Формат задания: attr_dhcp_opt43=vendorId.attrId где vendorId — id вендора, число от 0 до 2^32-1.
    Если vendorId != 0, то значение передается в VSA-атрибуте.
    Если vendorId == 0, то значение передается в обычном Радиус-атрибуте (не-VSA).
    attrId — id атрибута, число от 1 до 255.
    Предполагается, что атрибуты имеют тип octets (передаются как есть в бинарном виде).
    Значение 0.0 — не передавать данный атрибут на Радиус-сервер.
    Значения по умолчанию указаны ниже: attr_dhcp_opt43=0.0, attr_dhcp_opt60=43823.34 # VasExperts-DHCP-ClassId, attr_dhcp_opt61=43823.33 # VasExperts-DHCP-ClientId.
  49. Добавлено: поддержка услуги 16 и соответствующего профиля — задание, удаление, просмотр через fdpi_ctrl профиль совпадает со структурой для услуги 5.
    Пример задания: fdpi_ctrl load profile --service 16 --profile.name portal_info_1 --profile.json '{ "ip_list" : "/var/lib/dpi/ip_list_1.bin", "redirect" : "http://info.test.ru" }' , параметр max_profiles_serv16 — задает максимальное кол-во профилей. По умолчанию 32.
  50. [DHCP-Proxy] Введены режимы обработки CoA Disconnect
    Добавлена новая опция bras_dhcp_disconnect, которая является битовой маской следующих флагов:
    • 0x0001disable acct stop, не посылать немедленно acct stop для disconnected DHCP-абонента;
    • 0x0002disable L3 auth, не выполнять L3-авторизации для disconnected DHCP-абонента;
    • 0x0004block traffic — блокировать весь трафик от disconnected абонента (то есть на пути subsinet);
    • 0x0008 — на DHCP Request → отвечать NAK;
    • 0x0010 — игнорировать DHCP Request (ждем DHCP Discovery).
  51. [DHCP-Proxy] Добавлено: контроль смены IP-адреса абонента
    Если абоненту выдается другой IP-адрес, то для прежнего IP-адреса нужно сделать деанонс.
  52. [VRF][CLI] Поддержка VRF добавлена во все CLI-команды роутера.
1)
Мачу Пикчу --- "город среди облаков", расположен в Перу, имеет статус Всемирного Наследия ЮНЕСКО
2)
Запись абонентского трафика в PCAP файл