dev pcap <dev-name> rx|tx|any|off
rx — record packets received from the porttx — record packets sent to the portany — rx and txoff — stop recordingdev - port name):rx-dev — for rxtx-dev — for txrg show <IP> for viewing current rating group data for a subscriberfdpi_ctrl list all status --service 11rating_group_count=0 — number of rating groups, 0 — RG disabled. Default value: 0 rg4 tbf rate 1Mbit burst 1Mbit inbound.rate 8Mbit inbound.burst 1Mbit quota 100MB report rg5 tbf rate 8Mbit burst 1Mbit inbound.rate 8Mbit inbound.burst 1Mbit quota 1GB block
report and block are available actions upon quota reach: report — notify about quota reached but continue traffic forwarding; block — notify and block traffic for this rating group
cat rg.txt | lst2rg rg.bin
cp rg.bin /var/lib/dpi/rg.bin
fdpi_ctrl load profile --service 20 --profile.name rg1 --profile.json '{ "rg_list" : "/var/lib/dpi/rg.bin" }'
max_profiles_serv20 — maximum number of profiles. Default — 32.
Utility rg2lst allows decoding binary file into readable form:
rg2lst rg.bin > rg.txt
fdpi_cli dump flow cache command. DescriptiontethN, possible values:rgN, possible values:
http cs0 teth1 rg1
https cs0 teth1 rg1
http cs0 teth2 rg2
https cs0 teth2 rg2
dns cs1 teth1 rg1
dns cs1 teth2 rg2
default cs7 teth0 rg3
In this example, tethering is tracked for http/https protocols and corresponding RG is assigned depending on it. Note that policing class cs is the same. Similarly for dns protocol. For ALL other protocols (default), tethering control is disabled and a separate RG is specified.
cat example.txt|lst2dscp /tmp/example.bin
dscp2lst /tmp/example.bin
fdpi_ctrl load profile --service 18 --profile.name test_dscp --profile.json '{ "dscp" : "/tmp/example.bin" }'
fdpi_ctrl load --service 18 --profile.name test_dscp --login test_subs
check
fdpi_ctrl list --service 18 --login test_subs
In trace, field rg=N is added
bras_term_by_as=1 enabled, when srcAS is not marked as term, Ethernet src/dst MAC was not changedlldp section):enable — LLDP support enable flag. By default, if lldp section exists in config, enable=on; otherwise enable=offchassis — string — Chassis-Id value. Chassis-Id TLV is mandatory in LLDP packet. If not set, it is taken as MAC address from bras_arp_mac, otherwise port MACttl — number — TTL value in seconds, default 120src_mac — MAC address — source MAC in Ethernet header of LLDPDU. If not set, taken from bras_arp_mac or port MACdest_mac — MAC address — destination MAC in Ethernet header of LLDPDU. Default — 01:80:c2:00:00:0e (LLDPDU multicast)system_name — string — System-Name TLV value. If not set, TLV is not included in LLDPDUsystem_desc — string — System-Desc TLV value. If not set, TLV is not included in LLDPDUdevice=<port_name>;enable=<on|off>;desc=<port_desc> — ports for which LLDPDU should be sent. Each port is defined via separate device parameter; port name is from in_dev/out_dev. Per-port options:enable=on|off — enable/disable LLDPDU sending for this port, default ondesc=string — Port-Desc TLV value; if not set, TLV is not includedtrace — enable LLDP tracing (boolean)pcap — write LLDP packets to PCAP (boolean)lldp enable, lldp disable — allow enabling/disabling LLDP packet generationnat_tcp_max_sessions/nat_udp_max_sessions limits, which define the number of allocated public ports, fixed decrement of allocated port counter which could lead to slight limit overflow. Counters whpf, whp_salfs, whp_lalfs, whp_ruse, whp_ruse_salfs, whp_ruse_lalfs and similar flow statistics counters (thr_salfs etc.), as well as nat show output, now reflect current actual usage instead of cumulative usagenat_whp_lifetime < lifetime_flow: if session becomes active again while NAT port is already reused, a new port is allocatedvlan rule show command output of all permissions for Service-NameSVLAN.* with and without SNamesvlan.cvlan) with SName selectivityvlan rule add/rm commands now support PPPoE and Service-Name.<Range> VLAN/QinQ: vlan rule add <Range> pppoe [enable | drop | pass | delay N]
Adding PPPoE Service-Name processing rule for a given <Range> VLAN/QinQ:
vlan rule add <Range> pppoe sname <Service-Name> [enable | drop | pass | delay N]
Here <Service-Name> is the PPPoE Service-Name in single or double quotes (or without quotes if it is an identifier ([a-zA-Z_][a-zA-Z_0-9]*)
Permissions:
enable - PPPoE processing alloweddrop - drop PPPoE packetspass - pass PPPoE packets through without processingdelay N - establish PPPoE session with a delay of N seconds (0 < N < 16)ajb_save_dns_answer_types and ajb_save_dns_request_types allowing definition of DNS request/response types for file logging and IPFIX exportbras_dhcp_trace_maccheck_tunnels=1 modeSession-Timeout is at least 4 times greater than Lease-Time. If this condition is violated, Lease-Time is set to 1/4 of Session-Timeout.Lease-Time is taken from RADIUS authentication response (in order of priority):DHCP-IP-Address-Lease-Time;VasExperts-DHCP-Option-Num defining option 51;Framed-Pool.Lease-Time is not specified by any of the above methods, it is set to 1/16 of Session-Timeout.Session-Timeout — 600 secondsLease-Time — 60 secondsnat_dstaddr_cache_size=0 in /etc/dpi/fastdpi.confvlan rule dump command defining rule type output: vlan rule dump [type]type — rule type: perm, dhcp, all (default)vlan rule dump perm
Show DHCP-only rules:
vlan rule dump dhcp
Show all rules:
vlan rule dump
fdpi_cli dump flow cache format with new fields. Descriptiondpdk_max_memzone [cold] — sets DPDK max memzone count. Default in DPDK is 5120 (depends on DPDK version)0 — use default value from DPDK. Increasing this is useful for huge configurations with many NICs if startup error occurs: "Number of requested memzone segments exceeds maximum 5120"dhcp show stat vrfdpdk_engine=7 with explicit dispatcher assignmentdpdk_dispatch: dpdk_dispatch=<port-list>[;params]*
<port-list> defines which ports are handled by this dispatcherparams — additional options:rss=N — enable RSS on all ports in dispatcher; creates N dispatchers per RX queuemempool_size=N — size of mbuf_pool for dispatcher; each dispatcher has its own mempooldpdk_dispatch entries may exist; each defines a separate dispatcher (or group if RSS is enabled). Each cluster port must belong to exactly one dpdk_dispatch. On-stick ports must reference the base physical port.dpdk_dispatchdpdk_dispatch entriesdpdk_engine=0: single dispatcher for all ports dpdk_engine=1: dispatcher per direction dpdk_engine=3: bridge dispatcher dpdk_engine=4: per-port dispatcher dpdk_engine=6: bridge dispatcher with RSS
ipfix_dev option