Это старая версия документа!
Beta-версия 14.2
Изменения в версии 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
Была ли полезна эта информация?