Beta-версия 14.2
Изменения в версии 14.2 BETA3
DPI
- [DPI] Добавлен разбор туннеля GRE ERSPAN для режима
check_tunnels=1 - [DPI] Сообщение "Can't allocate record http_state" теперь выводится раз в 50000
- [DPI] Добавлена проверка флага MARK2 для переопредления в QUIC_UNKNOWN_MARKED когда протокол QUIC еще в процессе определения SNI
BRAS
- [BRAS][Router] Изменено вычитывание Linux route table при старте роутера
В то время, как роутер вычитывает таблицу, BIRD может добавлять новые записи в нее, в результате некоторые записи могут не попасть к нам в роутер, что особенно неприятно, если эта запись - правило default route. Чтобы избежать таких ситуаций, теперь процесс синхронизации выполняется как минимум в два прохода: синхронизация считается успешной, если два последовательных чтения Linux route table возвратили одинаковое число записей. FastDPI будет вычитывать route table до тех пор, пока это условие не выполнится, но при этом если 4 попытки подряд оказались неудачными, то fastDPI строит свой RIB/FIB по последней попытке и планирует новую синхронизацию через небольшое время (2 секунды)
Изменения в версии 14.2 BETA2.1
NAT
- [CG-NAT] Изменения оптимизации NAT.
Изменения в версии 14.2 BETA2
DPI
- [DPI][DNS] Исправлена ошибка работы 19 услуги с IPv6 трафиком
BRAS
- [BRAS][DHCP-Dual] Добавлен учет
Lease-Time
В режиме DHCP Dual критически важно, чтобыSession-Timeoutбыл в несколько раз (минимум в 4 раза) больше, чемLease-Time. Если это условие нарушается, тоLease-Timeполагается равным 1/4 отSession-Timeout.
Lease-Timeберется из ответа RADIUS-авторизации (в порядке уменьшения приоритета):- атрибут
DHCP-IP-Address-Lease-Time; - атрибут
VasExperts-DHCP-Option-Num, задающий опцию 51; - DHCP-опция 51, если адрес распределен из
Framed-Pool.
ЕслиLease-timeне задан ни одним из вышеперечисленных способов, то полагается равным 1/16 отSession-Timeout.
Минимальные значения:
Session-Timeout— 600 секундLease-Time— 60 секунд
NAT
- [CG-NAT] Добавлена поддержка отключения кэша белых адресов для экспорта NAT трансляций. Настройка
nat_dstaddr_cache_size=0в/etc/dpi/fastdpi.conf
Изменения в версии 14.2 BETA1
DPI
- [DPDK] Переход на новую версию DPDK 25.11
- [DPI][NAT] Оптимизация при переполнении кэша серый-белый
- [CLI][VLAN] В команду
vlan rule dumpдобавлен параметр, определяющий, какой тип правил выводить:vlan rule dump [type]
type— rule type:perm,dhcp,all(default)
Вывести разрешения для VLAN:vlan rule dump perm
Вывести правила только для DHCP:
vlan rule dump dhcp
Вывести все правила:
vlan rule dump
- [CLI][DPI] Вывод команды
fdpi_cli dump flow cache formatрасширен новыми полями
Формат выводаdump flow
Пример:nthr=1 slic=3 proto=6 ip_1=192.168.4.20:65163 ip_2=217.69.133.145:443 ssid=1675E5CF5FB1337 dpip=91 ittr=16 tmlb='2019/10/30 02:02:51, -357.642147s (4148500652028035 ticks)' ialf=0 drct=0x1 iown=1 ilst=1 btsip=0x2 tcpbts_0='-APRSF' tcpbts_1='-AP-S-' qoest=0 qoef_0=0 qoef_1=0 qoer_0=6 qoer_1=6 whip=94.140.198.86:33326 itrnsld=1 igcache=0 gre_pid=0 gre_mtd=0
По полям:
nthr=1— номер потока, куда помещена запись (для мультикластера может не совпадать сiown)slic=3— номер slice кэшаproto=6— IP протоколip_1=192.168.4.20:65163 ip_2=217.69.133.145:443— пара IP адресов и портов идентифицирующие запись. Если у протокола нет портов - последние0ssid=1675E5CF5FB1337— идентификатор сессииdpip=91— протокол DPIittr=16— индекс в очереди использования повторных записейtmlb='2019/10/30 02:02:51, -357.642147s (4148500652028035 ticks)'— время последнего обращения к записиialf=0— номер очереди обработки :en_nalfs_shrt = 0— очередь с коротким временем жизниen_nalfs_long = 1— долгоиграющая очередь
drct=0x1— при каких условиях создана запись. Младшие 4 бита задают направление пакета, при котором создан ключ и соответственно принадлежностьsrc_ipиdst_ip
drct = h_ip_1 < h_ip_2 :drct == 0—h_ip_1—src_ipdrct == 1—h_ip_1—dst_ip
старшие 4 бита задаютflw_dir, при котором был создан ключ
iown=1— номер потока, который создал записьilst=1— номер потока, который последний раз обрабатывал записьbtsip=0x2— служебные биты обработки flowtcpbts_0='-APRSF' tcpbts_1='-AP-S-'— биты TCP соединения в двух направлениях:( tcp_bits_ & 0x0020 ) ? 'U' : '-' ( tcp_bits_ & 0x0010 ) ? 'A' : '-' ( tcp_bits_ & 0x0008 ) ? 'P' : '-' ( tcp_bits_ & 0x0004 ) ? 'R' : '-' ( tcp_bits_ & 0x0002 ) ? 'S' : '-' ( tcp_bits_ & 0x0001 ) ? 'F' : '-'
qoest=0— статус QoE:enst_none = 0,enst_ack— ждем подтверждающий ACK от клиента на SYN+ACK от сервераenst_fin_ack— ждем подтверждающий FIN+ACK от сервера на FYN от клиентаenst_ack_srvfin— ждем подтвердающий ACK от сервера на FIN+ACK от клиента (сервер первый послал FIN)
qoef_0=0 qoef_1=0— кол-во фрагментированных пакетов в двух направленияхqoer_0=6 qoer_1=6— кол-во ретрансмитов в двух направленияхpktp_0=1 pktp_1=0— количество пакетов с payload в двух направлениях, но не более 65000btsp_0=1 btsp_1=0— объем payload в двух направлениях, но не более 65Kwhoisc=0или1— кто инициировал соединение- Опционально — если еcть NAT трансляция:
whip=94.140.198.86:33326— выделенный белый адрес+портitrnsld=1— индекс данных профиля по которому был выделен белый адресigcache=0— индекс в соответствующем кэше-slice перекодировки серый -→ белыйgre_pid=0— опеределенный callidgre_mtd=0— метод выделения белого адреса для GRE
- [BALANCER] Добавлена возможность использования vlan rule для фильтрации пакетов
- [DPDK] Добавлено: новая опция
dpdk_max_memzone[cold] — Установка DPDK max memzone count. По умолчанию, в DPDKmax memzone count = 5120(зависит от версии DPDK)
0— использовать default-значение, зашитое в DPDK. Устанавливать значение больше имеет смысл для huge-конфигураций со многими картами, если на старте fastDPI получаем ошибку "Number of requested memzone segments exceeds maximum 5120" - [CLI][DHCP-Dual] Добавлено: поддержка команды
dhcp show stat vrf - [DPDK] Новый engine
dpdk_engine=7с поддержкой явного указания диспетчеров
Данный движок поддерживает гетерогенные конфигурации, когда в одном кластере находятся порты разного типа — например, in-dev 100G порт, out-dev - несколько 10G портов.
Диспетчеры задаются в опцияхdpdk_dispatch:dpdk_dispatch=<список-портов>[;params]*
<Список-портов>задает, какие порты обслуживает данный диспетчерparams— дополнительные опции данного диспетчера. Доступные опции:rss=N— включение RSS на всех портах данного диспетчера; будет создано N диспетчеров - по одному на каждую rx-очередь.mempool_size=N— размерmbuf_poolдля данного диспетчера. Каждыйdpdk_dispatchимеет свой mempool, размер пулов может быть разным для разныхdpdk_dispatch.
Опцийdpdk_dispatchможет быть много, каждая описывает отдельный диспетчер (или группу диспетчеров, если задано rss). Каждый порт кластера должен входить ровно в один параметрdpdk_dispatch. Для on-stick вdpdk_dispatchописывается *базовый* физический порт, а не on-stick порты, основанные на нем.
Фатальными ошибками конфигурации считаются следующие случаи:- порт кластера не входит ни в какой
<список-портов>параметраdpdk_dispatch - порт кластера входит в
<список-портов>нескольких различных параметровdpdk_dispatch - в
<списке-портов>параметраdpdk_dispatchперечислены порты из разных кластеров, — каждый диспетчер должен обслуживать порты только одного кластера
Данный движок является универсальным в том смысле, что через него могут быть выражены все остальные движки, например:dpdk_engine=0: один диспетчер на все порты in_dev=port1:port2 out_dev=port3:port4 dpdk_dispatch=port1,port2,port3,port4 dpdk_engine=1: диспетчер на направление in_dev=port1:port2 out_dev=port3:port4 dpdk_dispatch=port1,port2 dpdk_dispatch=port3,port4 dpdk_dispatch=2: диспетчер на направление c поддержкой RSS dpdk_rss=4 in_dev=port1:port2 out_dev=port3:port4 dpdk_dispatch=port1,port2;rss=4 dpdk_dispatch=port3,port4;rss=4 dpdk_engine=3: диспетчер на мост in_dev=port1:port2 out_dev=port3:port4 dpdk_dispatch=port1,port3 dpdk_dispatch=port2,port4 dpdk_engine=4: диспетчер на порт in_dev=port1:port2 out_dev=port3:port4 dpdk_dispatch=port1 dpdk_dispatch=port2 dpdk_dispatch=port3 dpdk_dispatch=port4 dpdk_engine=6: диспетчер на мост с поддержкой RSS dpdk_rss=4 in_dev=port1:port2 out_dev=port3:port4 dpdk_dispatch=port1,port3;rss=4 dpdk_dispatch=port2,port4;rss=4Для диспетчера необходимо указывать используемый
mempool. - Описатель
mempool— только дляdpdk_engine=7
Формат:dpdk_mempool=name=<name>;size=N
nameзадает имяmempool(max 15 символов)
sizeзадает размер (число элементов)mempool
Оба параметра являются обязательными
Опцийdpdk_mempoolможет быть много, каждая описывает отдельныйmempooldpdk_mempool=...
- Описатель диспетчера — только для
dpdk_engine=7
Формат:dpdk_dispatch=<список-портов>;mempool=<имя>[;params]*
<Список-портов>задает, какие порты обслуживает данный диспетчер
params— дополнительные опции данного диспетчера. Доступные опции:
mempool=<имя>— задает имяmempoolдля данного диспетчера (обязательный параметр)
rss=N— включение RSS на всех портах данного диспетчера; будет создано N диспетчеров, по одному на каждую rx-очередь.
Опцийdpdk_dispatchможет быть много, каждая описывает отдельный диспетчер (или группу диспетчеров, если заданоrss)dpdk_dispatch=...
- [IPFIX] Исправлена ошибка при изменении опции
ipfix_dev
Была ли полезна эта информация?