Это старая версия документа!
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 адресов и портов идентифицирующие запись. Если у протокола нет портов - последние 0
- ssid=1675E5CF5FB1337 — идентификатор сессии
- dpip=91 — протокол DPI
- ittr=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_ip
- drct == 1 — h_ip_1 — dst_ip
старшие 4 бита задаютflw_dir, при котором был создан ключ
- iown=1 — номер потока, который создал запись
- ilst=1 — номер потока, который последний раз обрабатывал запись
- btsip=0x2 — служебные биты обработки flow
- tcpbts_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 в двух направлениях, но не более 65000
- btsp_0=1 btsp_1=0 — объем payload в двух направлениях, но не более 65K
- whoisc=0 или 1 — кто инициировал соединение
- Опционально — если еcть NAT трансляция:
- whip=94.140.198.86:33326 — выделенный белый адрес+порт
- itrnsld=1 — индекс данных профиля по которому был выделен белый адрес
- igcache=0 — индекс в соответствующем кэше-slice перекодировки серый -→ белый
- gre_pid=0 — опеределенный callid
- gre_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
Была ли полезна эта информация?