vlan rule show добавлен вывод всех разрешений для Service-NameSVLAN.* с указанием SName и безsvan.cvlan) с селективностью по SNamevlan rule add/rm добавляется поддержка PPPoE и Service-Name.<Range> VLAn/QinQ: vlan rule add <Range> pppoe [enable | drop | pass | delay N]
Добавление правила обработки PPPoE Service-Name для указанного диапазона <Range> и VLAn/QinQ:
vlan rule add <Range> pppoe sname <Service-Name> [enable | drop | pass | delay N]
Здесь <Service-Name> — имя PPPoE Service-Name в одинарных или двойных кавычках (можно без кавычек, если является идентификатором ([a-zA-Z_][a-zA-Z_0-9]*)
Разрешения:
enable - разрешена обработка PPPoEdrop - дропать пакеты PPPoEpass - пропустить пакеты PPPoE насквозь без обработкиdelay N - устанавливать PPPoE-сессию с задержкой в N секунд (0 < N < 16)ajb_save_dns_answer_types и ajb_save_dns_request_types, которые позволяют задавать типы DNS запросов/ответов для записи в файл и отправку по IPFIXbras_dhcp_trace_maccheck_tunnels=1Lease-TimeSession-Timeout был в несколько раз (минимум в 4 раза) больше, чем Lease-Time. Если это условие нарушается, то Lease-Time полагается равным 1/4 от Session-Timeout.Lease-Time берется из ответа RADIUS-авторизации (в порядке уменьшения приоритета):DHCP-IP-Address-Lease-Time;VasExperts-DHCP-Option-Num, задающий опцию 51;Framed-Pool.Lease-time не задан ни одним из вышеперечисленных способов, то полагается равным 1/16 от Session-Timeout.Session-Timeout — 600 секундLease-Time — 60 секундnat_dstaddr_cache_size=0 в /etc/dpi/fastdpi.confvlan rule dump добавлен параметр, определяющий, какой тип правил выводить: vlan rule dump [type]type — rule type: perm, dhcp, all (default)vlan rule dump perm
Вывести правила только для DHCP:
vlan rule dump dhcp
Вывести все правила:
vlan rule dump
fdpi_cli dump flow cache format расширен новыми полямиdump flownthr=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_ipdrct == 0 — h_ip_1 — src_ipdrct == 1 — h_ip_1 — dst_ipflw_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 — кто инициировал соединениеwhip=94.140.198.86:33326 — выделенный белый адрес+портitrnsld=1 — индекс данных профиля по которому был выделен белый адресigcache=0 — индекс в соответствующем кэше-slice перекодировки серый -→ белыйgre_pid=0 — опеределенный callidgre_mtd=0 — метод выделения белого адреса для GREdpdk_max_memzone [cold] — Установка DPDK max memzone count. По умолчанию, в DPDK max memzone count = 5120 (зависит от версии DPDK)0 — использовать default-значение, зашитое в DPDK. Устанавливать значение больше имеет смысл для huge-конфигураций со многими картами, если на старте fastDPI получаем ошибку "Number of requested memzone segments exceeds maximum 5120"dhcp show stat vrfdpdk_engine=7 с поддержкой явного указания диспетчеров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=7dpdk_mempool=name=<name>;size=N
name задает имя mempool (max 15 символов)
size задает размер (число элементов) mempool
Оба параметра являются обязательными
Опций dpdk_mempool может быть много, каждая описывает отдельный mempool
dpdk_mempool=...
dpdk_engine=7dpdk_dispatch=<список-портов>;mempool=<имя>[;params]*
<Список-портов> задает, какие порты обслуживает данный диспетчер
params — дополнительные опции данного диспетчера. Доступные опции:
mempool=<имя> — задает имя mempool для данного диспетчера (обязательный параметр)
rss=N — включение RSS на всех портах данного диспетчера; будет создано N диспетчеров, по одному на каждую rx-очередь.
Опций dpdk_dispatch может быть много, каждая описывает отдельный диспетчер (или группу диспетчеров, если задано rss)
dpdk_dispatch=...
ipfix_dev