Agent Settings
Agent settings in Netify v5 control the core behavior of the DPI engine, resource allocation, flow tracking, and performance tuning. These configuration options allow you to optimize the agent for your specific deployment environment and performance requirements.
Whether you are deploying on embedded systems with limited resources, high-throughput gateway deployments, or dedicated analysis appliances, proper configuration of these settings is critical to achieving optimal DPI accuracy and performance. This reference documents all available configuration parameters, their default values, and guidance on when to adjust them.
You can make custom configuration changes to the Netify agent by modifying Netify's main profile configuration file, /etc/netifyd/profiles.d/10-default.conf . Changes made to this file remain persistent across reboots and upgrades.
Optimizations
Core Dumps
The netifyd_enable_coredumps should be set to no on production systems. On test or development systems, enabling core dumps can help identify stability issues that may later appear in production.
- Core dumps do not include debug symbols unless a special debug build is in use (i.e., binaries are not stripped).
- As a result, core dumps generated from standard production packages are of limited value for root cause analysis.
- For meaningful debugging, contact Netify Support for custom debug packages and libraries.
Serial Numbers
The path_uuid_serial field can be a regular file, containing a unique string, however this case is rarely used since the string must be exactly 32 bytes in length. More often, an integrator will add the path to an executable file that extracts the unique value. As an executable script, any length (providing enough entropy) can be used. Two examples are listed below:
[netifyd]
...
path_uuid_serial = /usr/share/netifyd/get-serial.sh
Script Example 1 - Activation Key in File
#/bin/sh
if [ -f /var/distro/activation ]; then
cat /var/distro/activation
else
echo '-'
fi
Script Example 2 - Using Hardware Serial as Key
#/bin/sh
dmidecode -s system-uuid
Netifyd - Main Configuration
The main configuration file only uses one section name by default, that being netifyd , identified by:
[netifyd]
profile
stringConfiguration profile to load from /etc/netifyd/profiles.d
- Default
- /etc/netifyd/profiles.d/00-default.conf
path_state_volatile
stringWhere to store 'volatile' data (temporary state files). The value for this attribute can be referenced throughout this configuration file using the ${path_state_volatile} variable.
- Default
- /var/run/netifyd
path_state_persistent
stringWhere to store 'persistent' data (configuration files). The value for this attribute can be referenced throughout this configuration file using the ${path_state_persistent} variable.
- Default
- /etc/netifyd
path_pid_file
stringWhere to save our PID for: netifyd --status.
- Default
- ${path_state_volatile}/netifyd.pid
path_shared_data
stringPath to shared data files
- Default
- /usr/share/netifyd
enable_coredumps
stringControls whether core dump files are saved when the Netify agent or one of its plugins terminates unexpectedly (for example, due to a segmentation fault).
- Default
- no
- Options
- yes, no
path_license_manager
stringPath to License Manager Library
- Default
- $\{path_plugin_libdir\}/libnetify-plm.so
auto_informatics
stringEnable automatic Netify Informatics integration. This option is intended to be managed exclusively by the --enable/disable-informatics command-line parameters
- Default
- no
- Options
- yes, no
Netifyd
The netifyd section is identified by:
[netifyd]
auto_flow_expiry
stringWhen set to yes, TCP flows will not be tracked until a SYN+ACK has been captured.
- Default
- yes
- Options
- yes, no
auto_flow_expiry
integerThe number of 'buckets' the main flow map will be divided into. the default is adequate for up to 5,000 flows. Increasing this value will reduce the chances of flow map lock contention on systems that track a large number of flows.
- Default
- 128
max_capture_length
integerThe maximum number of bytes to capture (copy) per packet. Reducing this may be appropriate for embedded systems. Reducing this value too much will result in less accurate application/protocol detection. The maximum value is 65535, which is also the default.
- Default
- 65535
max_detection_pkts
integerThe maximum number of packets to inspect per flow. This is a performance tuning option for embedded systems. Reducing this value too much will result in less accurate application/protocol detection, specifically TLS. Generally, a safe range for adequate detection accuracy would be between 15 - 25 packets.
- Default
- 32
max_flows
integerThe maximum number of flows to track at any given moment. When this value has been reached, new flows will stop being tracked until old flows expire. This option can be used to conserve memory on embedded systems, or to set an upper safety limit to guard against DDoS attacks or network scanning tools.
- Default
- 0
soft_dissectors
yesSoft-dissectors are flow expressions defined in the application signatures configuration file (usually in /etc/netifyd/netify-apps.conf). For debugging or for embedded systems with very limited resources, it may be helpful to disable Soft-dissectors.
- Options
- yes, no
syn_scan_protection
yes, noDon't track TCP flows until a SYN+ACK has been captured. This option can offer protection against network scanners and has the alternative benefit of not tracking already established TCP flows when the Agent is first started.
- Default
- no
ttl_idle_flow
integerHow long to wait (in seconds) until an idle flow is scheduled for expiry. This time-to-live (TTL) applies to all non-TCP flows.
- Default
- 30
ttl_idle_tcp_flow
integerHow long to wait (in seconds) until an idle TCP flow is scheduled for expiry.
- Default
- 300
update_interval
integerHow often (in seconds) to process the global flow maps. Flow statistics are made available, idle flows are expired, and other house-keeping is performed during this update period. The default of 15s is appropriate in most cases.
- Default
- 15
use_getifaddrs
booleanPeriodically call getifaddrs(3) to update the associated IP addresses of each capture source, where applicable. This option is primarily intended for non-Linux systems where an on-demand system like Netlink is non available. Should be enabled for FreeBSD and variants.
- Default
- Options
- true, false
path_server_socket
stringLocal command/control socket. Receive commands and control messages on a local UNIX socket.
- Default
- ${path_state_volatile}/netifyd.sock
path_uuid_serial
stringThe path to a script that returns a unique UUID for the agent. When set, this UUID will be sent in addition to the Agent UUID as a means of uniquely identifying the agent.
Capture Defaults
The capture-defaults section is identified by:
[capture-defaults]
capture_type
stringDefault capture method for -I and -E command-line options.
- Default
- pcap
- Options
- pcap, tpv3
read_timeout
integer# Packet capture timeout value (milliseconds). How long reads from PCAP or TPv3 capture sources will wait for packet data before being cancelled and retrying. The default value of 500ms is appropriate in almost all cases.
- Default
- 500
Threads
The threads section is identified by:
[threads]
capture_base
integerBase CPU ID to start capture threads from.
- Default
- 0
detection_base
integerBase CPU ID to start detection threads from.
- Default
- 0
detection_cores
integerNumber of detection cores to start.
- Default
- 1
Flow Hash Cache
The flow-hash-cache section is identified by:
[flow-hash-cache]
enable
stringEnable flow hash caching.
- Default
- yes
- Options
- yes, no
save
stringEnable flow hash cache persistence during restarts.
- Default
- persistent
cache_size
integerLimits the maximum size of the flow hash cache (in bytes).
- Default
- 1000
DNS Hint Cache
The DNS Hint Cache (DHC) in the Netify Agent is a feature that is designed to aid or improve flow detection when protocol metadata may be lacking, for example, TLS without SNI.
The DHC system processes DNS responses. It stores the returned IP address and the associated domain name in a configurable LRU (least-recently used) cache. During the flow detection phase, if the flow remains unclassified, a look-up is performed in the DHC for the remote IP address. If a match is found, the associated domain name is used to improve application detection.
This cache is optionally saved to disk on exit (enabled by default) which will be reloaded on start-up, priming the cache. The DHC is saved as a CSV file. When save is set to persistent, the default location is /etc/netifyd/dns-cache.csv .
The DNS hint cache section is identified by:
[dns-hint-cache]
enable
stringEnable DNS hint caching.
- Default
- yes
- Options
- yes, no
save
stringEnable DNS hint cache persistence during restarts.
- Default
- persistent
cache_size
integerLimits the maximum size of the flow hash cache (in bytes).
- Default
- 1000
partial_lookups
stringIf set to yes, the Netify agent will apply DNS cache hinting only when a hostname is not extracted from the protocol. The practical implications of setting this field to yes typically results in slightly lower application classification rates.Unknown applications that use a Content Delivery Network or CDN to deliver content such as Cloudflare, Fastly etc. will no longer be classified as the CDN. The potential upside is fewer false positive rates due to shared IP usage across applications.
- Default
- no
- Options
- no, yes
Netify API
Netify API is an optional RESTful API endpoint owned and maintained by eGloo Inc. for:
- enabling application signature and category updates
- enabling Netify Informatics
- automating tracking/audit for OEM integrations
The Netify API section is identified by:
[netify-api]
enable
booleanBy default, Netify API is disabled and will not connect to any resource outside of your network.
- Default
- false
- Options
- true, false
update_tick
integerNumber of seconds between API check-ins.
- Default
- 30
update_interval
integerNumber of seconds between API updates. An API update checks for things like a new application signature file.
- Default
- 86400
tls_verify
true, falseValidate certificate - this should always be set to true or be undefined, except possibly in developer environments.
- Default
- true
vendor
stringVendor code.
- Default
- N/A - Please contact us for OEM details
Protocols
The protocols section name is:
[protocols]
all
stringEnabling and disabling Protocol dissection can be an effective way to manage CPU resources.
- Default
- include
- Options
- include, exclude
Privacy
The privacy section name is:
[privacy_filter]
For information on Netify's privacy settings, please refer to the Privacy Settings section of the documentation.