Skip to main content

Receivers reference

Receivers are the flow listeners. None are configured by default, so the daemon starts no listener until you define one under riptide.receivers.<name>, where <name> is any free-form string.

Common keys​

NameTypeDefaultDescription
riptide.receivers.<name>.typestringrequirednetflow5, netflow9, ipfix, sflow or multi. Any other value fails startup naming the accepted values.
riptide.receivers.<name>.hoststringrequiredBind address, for example 0.0.0.0.
riptide.receivers.<name>.portintrequiredUDP port. An IPFIX receiver with transport=TCP listens on TCP instead. sFlow's conventional port is 6343.

Setting a key on a receiver type that does not define it fails startup, because riptide rejects properties a receiver does not define.

Keys by receiver type​

NameTypeDefaultTypesDescription
flow-active-timeout-fallbackdurationunsetnetflow9, ipfix, multiActive flow timeout used when the record carries none. An exporter that reports its own always wins.
flow-inactive-timeout-fallbackdurationunsetnetflow9, ipfix, multiInactive flow timeout used when the record carries none. Set both fallbacks or neither: the delta-switched time is derived only when both timeouts resolve, so one alone changes nothing.
flow-sampling-interval-fallbacklongunsetnetflow5, netflow9, ipfix, multiSampling interval recorded when nothing else states one. For v9 and IPFIX it ranks below the record and the sampler options table; for v5 it ranks below the packet header. Applies to every exporter on the receiver.
trust-header-sampling-intervalbooltruenetflow5, multiWhether a NetFlow v5 header interval is read as a rate when the header's mode bits are neither 1 (deterministic) nor 2 (random). A header stating mode 1 or 2 with a non-zero interval is always read.
transportUDP or TCPUDPipfixTransport the receiver listens on.
netflow5, netflow9, ipfix, sflowbooltruemultiSwitch one of the four parsers off on a multi receiver.

Durations take a suffix (5m, 30s) or ISO-8601 (PT5M). A bare number is milliseconds, so write 300s rather than 300 for five minutes.

A multi receiver parses all four protocols on one port and tells them apart by their version words.

riptide:
receivers:
ipfix:
type: ipfix
host: 0.0.0.0
port: 4739
nf9:
type: netflow9
host: 0.0.0.0
port: 2055
flow-active-timeout-fallback: 5m
flow-inactive-timeout-fallback: 30s
nf5:
type: netflow5
host: 0.0.0.0
port: 2056
flow-sampling-interval-fallback: 1000

The first receiver in .properties form:

riptide.receivers.ipfix.type=ipfix
riptide.receivers.ipfix.host=0.0.0.0
riptide.receivers.ipfix.port=4739

Session state bounds​

Per-exporter state on the UDP ingest path (templates, sequence trackers, exporter-pushed option records) is bounded by four keys under riptide.flows.session. All four must be positive; zero or a negative value is refused at startup naming the key. Why the bounds exist and what happens when one is reached is on Exporter identity and session state.

NameTypeDefaultDescription
riptide.flows.session.max-sourcesint4096Distinct UDP sources retaining state. New sources beyond it are refused; admitted ones keep their state.
riptide.flows.session.max-scopes-per-sourceint16Scope identities per source. Beyond it, that source's least-recently-used scope is displaced.
riptide.flows.session.max-ifindexes-per-scopeint1024Interface entries per scope in the exporter option table. Beyond it, that scope's least-recently-used interface is evicted.
riptide.flows.session.source-idle-timeoutduration30mSilence after which a source's slot is released. Keep it at or above the receiver's template timeout; riptide warns at startup if the template timeout is longer.
riptide:
flows:
session:
max-sources: 4096
max-scopes-per-source: 16
max-ifindexes-per-scope: 1024
source-idle-timeout: 30m

Worst-case retained state multiplies out from those keys:

TableWorst casePer single source
Session tablesmax-sources × max-scopes-per-source × ~852 B
Interface tablemax-sources × max-scopes-per-source × max-ifindexes-per-scope × ~144 Bmax-scopes-per-source × max-ifindexes-per-scope × ~144 B, about 2.4 MB at the defaults
Application tablemax-sources × max-scopes-per-source × 16,384 × ~464 Bmax-scopes-per-source × 16,384 × ~464 B, about 122 MB at the defaults

The application table's per-scope cap is fixed at 16,384 and is not a setting. Its entry is the interface entry's ~144 B plus a name of at most 64 characters and a description of at most 255.

samplingProvenance values​

Every row of flows carries the rung of the resolution ladder that supplied its samplingInterval. What the ladder is and why the column exists is on Sampling rates and provenance.

ValueThe rate came from
recordThe flow record itself (NetFlow v9 or IPFIX fields 34, 49, 50), or an sFlow sample.
optionsThe exporter's sampler options table (NetFlow v9 or IPFIX).
headerThe NetFlow v5 packet header.
derivedriptide's own arithmetic on the parameters of an IPFIX Selector Report.
fallbackThe receiver's flow-sampling-interval-fallback.
assumedNothing stated a rate; 1 was recorded in the absence of one.
'' (empty)The row was written before the column existed. Not backfilled.

riptide admits only finite intervals of 1.0 or more into the column and records 1.0 when nothing states one, so 0 is never a rate it produces.

flowProtocol values​

TableColumn typeValues
flowsEnum8NetflowV5, NetflowV9, IPFIX, SFLOW. Comparing the column against '' is an error (UNKNOWN_ELEMENT_OF_ENUM).
flows_by_*_1m rollupsLowCardinality(String)The same four names, plus '' on rows aggregated before the column was carried.