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

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

touch /etc/dpi/noprioadj

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

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

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