3. Data Structures

3. Data Structures (PDF)

Here are the data structures with brief descriptions:

DPI init configuration
L2-L4 flow information
Dequeue result
Extra signature data
Signature info
DPI statistics
Flow record, represent a flow at specific moment, usually after a flow end or after some timeout. Each one is a data record that will appear in the collector. This template is based on V5 fields with additional V9 fields
One field in netflow template, please look at doca_netflow_types for type macros
Template for the records. struct record_exmaple { uint32_t src_addr_V4; uint32_t dst_addr_V4; } struct doca_netflow_flowset_field fields[] = { {.type = DOCA_NETFLOW_IPV4_SRC_ADDR, .length = DOCA_NETFLOW_IPV4_SRC_ADDR_DEFAULT_LENGTH}, {.type = DOCA_NETFLOW_IPV4_DST_ADDR, .length = DOCA_NETFLOW_IPV4_DST_ADDR_DEFAULT_LENGTH} }; struct doca_netflow_template template = { .field_count = 2; .fields = fields; };

[Deep packet inspection]

Public Variables

uint32_t  max_packets_per_queue
uint32_t  max_sig_match_len
uint16_t  nb_queues


uint32_t doca_dpi_config_t::max_packets_per_queue [inherited]

Number of packets concurrently processed by the DPI engine.

uint32_t doca_dpi_config_t::max_sig_match_len [inherited]

The minimum required overlap between two packets for regex match

uint16_t doca_dpi_config_t::nb_queues [inherited]

Number of DPI queues

[Deep packet inspection]

Public Variables

uint16_t  ethertype
in_addr  ipv4
in6_addr  ipv6
uint16_t  l4_dport
uint8_t  l4_protocol
uint16_t  l4_sport


uint16_t doca_dpi_parsing_info::ethertype [inherited]

Ethertype of the packet

in_addr doca_dpi_parsing_info::ipv4 [inherited]

Ipv4 destination address

in6_addr doca_dpi_parsing_info::ipv6 [inherited]

Ipv6 destination address

uint16_t doca_dpi_parsing_info::l4_dport [inherited]

Layer 4 destination port

uint8_t doca_dpi_parsing_info::l4_protocol [inherited]

Layer 4 protocol

uint16_t doca_dpi_parsing_info::l4_sport [inherited]

Layer 4 source port

[Deep packet inspection]

Public Variables

struct doca_dpi_sig_info info
bool  matched
rte_mbuf * pkt
int  status_flags
void * user_data


struct doca_dpi_sig_infodoca_dpi_result::info [inherited]

Signature information

bool doca_dpi_result::matched [inherited]

Indicates flow was matched

rte_mbuf * doca_dpi_result::pkt [inherited]

Pkt provided on enqueue

int doca_dpi_result::status_flags [inherited]

doca_dpi_flow_status flags

void * doca_dpi_result::user_data [inherited]

User data provided on enqueue

[Deep packet inspection]

Public Variables

char  name[1024]
uint32_t  sig_id


char doca_dpi_sig_data::name[1024] [inherited]

Signature name

uint32_t doca_dpi_sig_data::sig_id [inherited]

Signature ID as provided in the signature

[Deep packet inspection]

Public Variables

uint32_t  sig_id


uint32_t doca_dpi_sig_info::sig_id [inherited]

Signature ID as provided in the signature

[Deep packet inspection]

Public Variables

uint32_t  nb_http_parser_based
uint32_t  nb_matches
uint32_t  nb_other_l4
uint32_t  nb_other_l7
uint32_t  nb_scanned_pkts
uint32_t  nb_ssl_parser_based
uint32_t  nb_tcp_based
uint32_t  nb_udp_based


uint32_t doca_dpi_stat_info::nb_http_parser_based [inherited]

Total number of http signature matches

uint32_t doca_dpi_stat_info::nb_matches [inherited]

Total number of signature matches

uint32_t doca_dpi_stat_info::nb_other_l4 [inherited]

Total number of other l5 signature matches

uint32_t doca_dpi_stat_info::nb_other_l7 [inherited]

Total number of other l7 signature matches

uint32_t doca_dpi_stat_info::nb_scanned_pkts [inherited]

Total number of scanned packets

uint32_t doca_dpi_stat_info::nb_ssl_parser_based [inherited]

Total number of ssl signature matches

uint32_t doca_dpi_stat_info::nb_tcp_based [inherited]

Total number of tco signature matches

uint32_t doca_dpi_stat_info::nb_udp_based [inherited]

Total number of udp signature matches


Public Variables

uint32_t  d_octets
uint32_t  d_pkts
uint32_t  dst_addr_v4
uint16_t  dst_as
uint8_t  dst_mask
uint16_t  dst_port
uint32_t  first
uint64_t  flow_id
uint16_t  input
uint32_t  last
uint32_t  next_hop
uint16_t  output
uint8_t  protocol
uint32_t  src_addr_v4
uint16_t  src_as
uint8_t  src_mask
uint16_t  src_port
uint8_t  tcp_flags
uint8_t  tos


char doca_netflow_default_record::application_name[DOCA_NETFLOW_APPLICATION_NAME_DEFAULT_LENGTH] [inherited]

Name associated with a classification

uint32_t doca_netflow_default_record::d_octets [inherited]

Octets sent in Duration.

uint32_t doca_netflow_default_record::d_pkts [inherited]

Packets sent in Duration

uint32_t doca_netflow_default_record::dst_addr_v4 [inherited]

Destination IP Address

uint16_t doca_netflow_default_record::dst_as [inherited]

originating AS of destination address

uint8_t doca_netflow_default_record::dst_mask [inherited]

destination address prefix mask bits

uint16_t doca_netflow_default_record::dst_port [inherited]

TCP/UDP destination port number or equivalent

uint32_t doca_netflow_default_record::first [inherited]

SysUptime at start of flow

uint64_t doca_netflow_default_record::flow_id [inherited]

This identifies a transaction within a connection

uint16_t doca_netflow_default_record::input [inherited]

Input interface index

uint32_t doca_netflow_default_record::last [inherited]

and of last packet of flow

uint32_t doca_netflow_default_record::next_hop [inherited]

Next hop router's IP Address

uint16_t doca_netflow_default_record::output [inherited]

Output interface index

uint8_t doca_netflow_default_record::protocol [inherited]

IP protocol type (for example, TCP = 6; UDP = 17)

uint32_t doca_netflow_default_record::src_addr_v4 [inherited]

Source IP Address

uint16_t doca_netflow_default_record::src_as [inherited]

originating AS of source address

uint8_t doca_netflow_default_record::src_mask [inherited]

source address prefix mask bits

uint16_t doca_netflow_default_record::src_port [inherited]

TCP/UDP source port number or equivalent

uint8_t doca_netflow_default_record::tcp_flags [inherited]

Cumulative OR of tcp flags

uint8_t doca_netflow_default_record::tos [inherited]

IP Type-of-Service


Public Variables

int  length
int  type


int doca_netflow_flowset_field::length [inherited]

field len in bytes (see link) - will be converted to uint16

int doca_netflow_flowset_field::type [inherited]

field number id (see link) - will be converted to uint16


Public Variables

int  field_count


int doca_netflow_template::field_count [inherited]

number of fields in 'fields' array - will be converted to uint16

doca_netflow_flowset_field * doca_netflow_template::fields [inherited]

array of field info

© Copyright 2023, NVIDIA. Last updated on Apr 13, 2021.