Это старая версия документа!
Обновление
Инструкция по обновлению
Если у вас установлена версия 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 до версии 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
- Изменено: переход на DPDK 22.11 LTS.
- Добавлено: разбор заголовков с защитой
Chaos Protection
в QUIC IETF. - Добавлено: параметр (холодный)
nat_transcode_cidr
который задает CIDR белых адресов оператора. Возможно только 2 CIDR. Значения используются при перекодировке белый -→ серый для NAT 1:1. Для серого адреса может быть назначен любой белый адрес для NAT 1:1. - Изменено: хэш функция распределения по рабочим потокам:
(crc(ip_src) % nthread + crc(ip_dst) % nthread) % nthread
. - Изменено: алгоритм выделения белых адресов для CG-NAT:
crc(серый) % nthread + crc(белый) % nthread
. - Изменено: Сообщение
[NFLW] very long operation ….
выводится всегда независимо от количества повтора сообщений. - Изменено: изменено имя каталога записи файлов — добавлено
stream
. - Добавлено: статистика вывода информации по отправлению 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}
- [PCRF][PPPoE] Исправлено: если Радиус отдает нам IPv6-адрес вместо префикса, мы не делали префикс из адреса, что приводило к пересозданию acct-сессий. Вновь создаваемые acct-сессии были без логина и прочих важных для провайдеров атрибутов.
- [BRAS][L3-AUTH] Изменено: Framed-Route теперь не применяется к PD-префиксу.
- [PCRF][ACCT] Исправлено: при отсоединении (unlink) записи от мультисессии не корректировались IP-адреса для мультисессии. Отсоединение (unlink) происходит при агрегации. В результате в дальнейшем к этой мультисессии могли быть привязаны другие записи, не имеющие уже к ней никакого отношения.
- [PCRF][DHCPv6-Pool] Исправлено: формирование поля Link-Address для Relay-Fwd при отправке запроса на конкретный DHCPv6-сервер.
- [BRAS][PPPoE-IP6] Запрос IPv6-адреса из Framed-IPv6-Pool осуществляется по приходу от клиента первого IP6CP Cfg-Req.
- [CLI][ACCT] Добавлено: вывод NAS-атрибутов fastDPI-сервера в командах PCRF acct show.
- [BRAS][DHCP] Исправлено: отправка NAK на DHCP-Request для другого сервера.
- Добавлена поддержка DDP профилей для карт Intel 700-series (драйвер i40e) для балансировки туннелей PPPoE/GTP/MPLS при использовании
dpdk_engine=2
. DDP загружается из файла/lib/firmware/intel/i40e/ddp/i40e.pkg
при инициализации i40e портов. Время жизни загруженного DDP-профиля: до перезагрузки сервера. - Изменено: алгоритм выбора сервера для записи SDS.
- [CLI] Добавлено: установка
l2subs_id
в командеsubs prop set
. - [BRAS][DHCP-Relay] Добавлена поддержка
l2subs_id
. - [BRAS][AUTH] Добавлена поддержка
l2subs_id
для L3-авторизации, так как в ответе L3 auth от Радиуса может указываться, что это L2-абонент. - [BRAS][ARP-AUTH] Добавлена поддержка
l2subs_id
. - [BRAS][PPPoE][CLI] Добавлено: атрибут
l2subs_id
для PPPoE-сессии. - [BRAS][PPPoE] Удалена поддержка авторизации по MAC, без логина и пароля, удаление опции
bras_ppp_mac_auth
. - [PPPoE][CLI] Добавлена поддержка параметра
subs_id
, идентифицирующего PPPoE-сессию. - [BRAS] Добавлен класс
l2lan_id
--- идентификатор L2-сети.l2lan_id
предназначен для разделения абонентов по VLAN.l2lan_id
получается изl2subs_id
, то есть его формирование задается той же опциейbras_subs_id
. По сутиl2lan_id
--- это VLAN-префикс изl2subs_id
. - [BRAS][DHCP] Все внутренние БД DHCP-сессий теперь учитывают
l2lan_id
--- он входит в их ключ по MAC и Client-Id. То есть два абонента с одним и тем же MAC-адресом, но в разных VLAN, считаются разными абонентами (еслиbras_subs_id
задано учитывать VLAN). Вторичные ключи по Opt82 и Q-in-Q не учитываютl2lan_id
. Подробнее bras_subs_id. - Добавлен настроечный параметр
rx_dispatcher =
метод хеширования flow по рабочим потокам- 0 --- по умолчанию используется прежний метод
(ip_src+ipdst)%N ) & ip_mask
; - 1 --- новый метод с поддержкой перекодировки для NAT1:1
(CRC(IP SRC)%N+CRC(IP_DST)%N)%N
.
- [Radius monitor] Добавлена поддержка экспорта адреса и порта NAS, а также других атрибутов.
- [Radius monitor] Добавлено подключение 12 услуги.
- [BRAS] Добавлена настройка
bras_ppp_lcp_start_timeout
.
Изменения в версии 12.1
- Добавлено: диагностическая информация NAT.
- Добавлено: поддержка режима On-Stick.
- Минорные исправления в работе CG-NAT.
- Поддержка загружаемых из облака протоколов с именами.
- SDS: передача данных в формате
pcapng
.
Изменения в версии 12.2
- Исправления в выводе статистики утилизации CG-NAT.
- Разбор новых версий GQUIC.
- Новая услуга 16 --- белый список с переадресацией на
captive portal
без доступа абонентов в интернет (по причине аварии на аплинках, абонент в долгосрочной блокировке и т.п.). - Новая утилита
dpdkinfo
(-h подсказка, module_eeprom - информация по оптической диагностике модуля SFP, если она поддерживается модулем).
Изменения в версии 12.3
- Добавлено: поддержка VRF в роутере (описание готовится).
- Сервис управления авторизацией PPPoE на основе поля Service-name.
- Добавлено: поддержка отправки heartbeat для внешних bypass (описание готовится).
- Добавлено: извлечение и передача в IPFIX куки из Set-Cookie.
- Улучшено: блокировка коротких подвисаний TCP протокола в потоках IPFIX через дополнительную установку
user timeout
(в дополнении к стандартному механизмуtcp keep alive
). - Добавлено: производительный
rx_dispatcher=2
с равномерной балансировкой по произвольному количеству потоков (но без поддержкиnat1:1
с требованием назначения конкретных адресов). - [BRAS][PPPoE] Исправлено:
dual-stack
: добавление IP-адресов к уже существующей acct-сессии. - [PCRF] Исправлено: переключение
persist queue
в режим "есть связь". - [CLI] Добавлена команда CLI
fdpi_cli pcrf persist queue reconnect
, которая позволяет сделать реконнект к fastDPI без сброса очереди. Может быть применена к конкретному соединению или ко всем. - [PCRF][PPPoE][Framed-Pool] Исправлено: создание acct-сессии с тем
session_id
, который был анонсирован при авторизации. - Добавлена поддержка формата
pcapng
для записи в СХД. - [CoA] Добавлена обработка CoA Update по
l2subs_id
. - Добавлено: сохранение в экспорте NAT трансляций ICMP протокола.
- Изменено: параметр
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
. - [CoA] Добавлена обработка CoA Reauth по
l2subs_id
. - [CoA] Добавлена обработка CoA Disconnect по
l2subs_id
. - [fDPI] Максимальное число кластеров увеличено до 12 (было 10).
- [PCRF][ACCT] Добавлено: передача атрибута
VasExperts-L2-SubsId
вAcct Start/Interim/Stop
. - [DPDK] Добавлено:
disable Ethernet Flow Control
на старте порта. - [PCRF][DHCPv6-POOL] Исправлено формирование Client-DUID при составлении DHCP6-RENEW для Framed-IPv6-Pool
Client-DUID должен быть неизменным на всем протяжении DHCPv6-сессии, иначе при Renew DHCPv6-сервер может выдать другой IPv6-префикс, что приведет к закрытию PPPoE-сессии. Для достижения неизменяемости теперь Client-DUID формируется изl2subs_id
абонента. - [PCRF][DHCP-POOL] Исправлена идентификация 'запрос-ответ' при работе с DHCP-пулами.
В качестве идентификатора используется:
Для DHCPv4 — MAC-адрес абонента (chaddr
) +xid
запроса
Для DHCPv6 — опцияClient-Id
иxid
запроса. Сервер обязан передать опциюClient-Id
в ответе, в отличие от других опций запроса. - [BRAS] Добавлена CLI-команда
dhcp show stat vrf
Вывод числа DHCP-абонентов в разрезе VRF. - [PCRF] Добавлена CLI-команда
pcrf radius enable/disable
. - [PCRF] Добавлена CLI-команда
pcrf radius ping
. - [PCRF] Добавлена CLI-команда
pcrf radius status
. - Изменено: если у сессии нет белого адреса — включается CG-NAT.
- Добавлено: если услуга 11 удалена, NAT выключается и освобождаются ресурсы. Происходит только если есть (прочитаны) данные по flow.
- [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
. - [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
удален за ненадобностью.
- Изменено: Для flow ставится признак
p_flow_
→cmn.bts_check_ip |= ntconnt::bts_nat_must_whip
Признак говорит о том, что идет обращение с серого адреса и для этого flow требуется белый адрес. Если белый адрес не назначен — попытки выделения белого адреса продолжаются (Для TCP — только если SYN). Это происходит из-за того что могут идти запросы с серого адреса, а только потом появляется услуга 11, но flow уже существует и будет вечно мертвый. - Изменено: Если для flow задан белый адрес, проверяется наличие 11 услуги. Если услуги нет — белый адрес освобождается.
- [Router] Добавлено: сообщение об ошибке в
fastdpi_alert.log
"VRF не имеет TAP"
Если VRF не имеет ни одного девайса — невозможно анонсировать адрес в такой VRF. Данная ошибка выводится вfastdpi_alert.log
не чаще чем раз в час для каждого VRF. - Добавлено: команды
fdpi_cli
:nat dump transcode
,nat dump translater [имя профиля]
,nat dump translater data [имя профиля]
. - Новое имя профиля полисинга —
BV##NNNN[#MMMM][#++++----]
, гдеNNNN
— скорость входящего трафика в кбит/с,MMMM
— скорость исходящего трафика в кбит/с,+
— включенный класс,—
— отключенный класс. - [PCRF] Добавлено: новое значение
chaddr@opt60
для опцииradius_user_name_dhcp
Пример:radius_user_name_dhcp=chaddr@opt60
, User-Name в Access-Request формируется из MAC-адреса заголовка DHCP пакета (полеchaddr
) и опции 60, если эта опция есть в DHCP-запросе. - Изменено: улучшено распознавание FACEBOOK VIDEO.
- Исправлено: при разборе
quic_ietf
для первого пакета CRYPTO, если заданoffset==0
— проверяется факт возможной фрагментации. - Добавлено: изменения парсинга — учет изменений в версиях Google QUIC: до версии 34 было дополнительное поле "Private Flags". Не разбирали такие пакеты, начиная с версии 39 — изменился порядок байт для записи "Data Length".
- Добавлен полисинг и услуга 16 по значениям из имени профиля.
- [BRAS] Добавлено: новая опция
bras_ip_filtering
[hot] Фильтрация трафика (битовая маска) по умолчанию отключена(=0)
.
Допустимые флаги:0x0001
— контроль подмены IP абонента (restricting forged traffic
). Дропаем пакет на путиsubs
→inet
, если IP-адрес абонента (srcIP
) неизвестный для L2 BRAS иbras_term_by_as = 0
и AS абонента неlocal
.bras_ip_filtering=0
. - [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.
- Исправлено: сообщения об ошибке для клиента не должны содержать LF в json.
- [BRAS][ARP] Изменено: обработка ARP к шлюзу. Отвечаем на ARP-запрос к шлюзу только если VRF отправителя и шлюза совпадают (
sender
и GW находятся в одной VRF). - [VRF] Изменено: задание имени VRF через услугу 254 (только Radius).
- [BRAS][DHCP-Proxy] Session-Timeout и Lease-Time для Framed-Pool.
Если адрес выдан из Framed-Pool на малое время (малоеlease-time
) и указано большоеsession-timeout
при авторизации, то все запросы Renew/Rebind от абонента нужно посылать на DHCP-сервер через PCRF для продления лицензии, иначе DHCP-сервер может посчитать, что адрес свободен. Реавторизация производится только при достиженииsession-timeout
. - Добавлено: поддержка услуги 16 — обработка запросов SYN и последующая переадресация без передачи пакетов в интернет.
- [Router] Добавлено: общие
neighbor cache
для VRF.
В настройку VRF добавлена опция:router_vrf { [cold][optional]
Строка — имя ARP кеша для данной VRF по умолчанию, каждый VRF имеет свой собственный, изолированный от других ARP/Neighbor кеш. Если нужно, чтобы несколько разных VRF имели общий ARP/Neighbor кеш, то следует задать в описании этих VRF одно и то же значение опцииneighbor_cache. neighbor_cache=… }
. - [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
. - Добавлено: поддержка услуги 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. - [DHCP-Proxy] Введены режимы обработки CoA Disconnect
Добавлена новая опцияbras_dhcp_disconnect
, которая является битовой маской следующих флагов:0x0001
—disable acct stop
, не посылать немедленноacct stop
для disconnected DHCP-абонента;0x0002
—disable L3 auth
, не выполнять L3-авторизации для disconnected DHCP-абонента;0x0004
—block traffic
— блокировать весь трафик от disconnected абонента (то есть на путиsubs
→inet
);0x0008
— на DHCP Request → отвечать NAK;0x0010
— игнорировать DHCP Request (ждем DHCP Discovery).
- [DHCP-Proxy] Добавлено: контроль смены IP-адреса абонента
Если абоненту выдается другой IP-адрес, то для прежнего IP-адреса нужно сделать деанонс. - [VRF][CLI] Поддержка VRF добавлена во все CLI-команды роутера.