Skip to main content

Enrichment reference

The design behind these keys is on the enrichment page.

SNMP polling​

Per-profile cadence, under riptide.snmp.polling.<name>. The profile named default applies to every agent range that names none.

NameTypeDefaultDescription
riptide.snmp.polling.<name>.refresh-intervalduration10mHow often each exporter in a range using this profile is walked. Zero or negative fails startup naming the profile.
riptide.snmp.polling.<name>.snapshot-expiryduration30mHow long a snapshot stays usable after its walk. A value shorter than refresh-interval logs a startup warning and leaves enrichment blank between walks. Zero or negative fails startup.

Fleet-level keys, under riptide.snmp.poll:

NameTypeDefaultDescription
riptide.snmp.poll.pool-widthint4Walks in flight across the whole fleet. Per-endpoint concurrency is always 1.
riptide.snmp.poll.deregister-afterint3Silent refresh intervals after which an exporter stops being polled.
riptide.snmp.poll.dead-endpoint-base-mslong (ms)60000First retry delay after a failed walk. Doubles on each failure.
riptide.snmp.poll.dead-endpoint-ceiling-mslong (ms)1800000Upper bound on the retry delay.
riptide.snmp.poll.max-exportersint4096Bound on retained snapshots, counted in exporters. Registration follows flow arrival, so the population is whatever sends flows, including a spoofed source.

Exporter-pushed option tables (interface and application) share one retention:

NameTypeDefaultDescription
riptide.snmp.options.retention-mslong (ms)1200000How long an exporter-pushed interface or application table entry is kept after it was last advertised. The application table has no separate key.

The application table's per-scope cap is fixed at 16,384 ids and its name length at 64 characters; neither is configurable.

Retired keys​

KeyEffect when setReplacement
riptide.snmp.poll.refresh-interval-msfails startup, in any file or environment spellingriptide.snmp.polling.<name>.refresh-interval
riptide.snmp.poll.snapshot-expiry-msfails startupriptide.snmp.polling.<name>.snapshot-expiry
riptide.snmp.cache.retention-msignored, with a startup warningriptide.snmp.polling.<name>.refresh-interval. Not carried over: the old value was a cache TTL, the new one is a poll interval. See Upgrade riptide.
riptide.snmp.cache.negative-retention-msignored, with a startup warningnone. An ifIndex absent from a polled snapshot is a known absence.
riptide.snmp.cache.dead-endpoint-retention-msignored, with a startup warningriptide.snmp.poll.dead-endpoint-base-ms and -ceiling-ms

Riptide logs a warning at startup for each ignored key it finds set, so a stale configuration file is loud rather than silently ineffective.

IF-MIB columns​

ResolvedIF-MIB sourceNotes
…IfNameifName (ifXTable), ifDescr fallback (legacy ifTable)short interface name, for example Eth1/0
…IfAliasifAlias (ifXTable)the operator-assigned label; unlike ifIndex it is stable across device reboots (RFC 2863)
…IfSpeedifHighSpeed (ifXTable)Mbit/s

… is inputSnmp or outputSnmp, matching the flow's INPUT_SNMP/OUTPUT_SNMP (NetFlow v9) or ingressInterface/egressInterface (IPFIX) value.

Reverse DNS​

NameTypeDefaultDescription
riptide.enricher.hostnames.enabledboolfalseResolve srcAddr, dstAddr and nextHop to hostnames through asynchronous PTR lookups. The bundled application.properties sets false; the class default is true.

Classification​

NameTypeDefaultDescription
riptide.classification.rulesSpring resourceclasspath:classification-rules.csvThe ruleset. file: and http(s):// locations are accepted. An unreadable or unparseable resource fails startup.
riptide.classification.reload-intervalduration0 (disabled)Poll the resource on this schedule and apply a changed ruleset without a restart. Absent or 0 parses the rules once at boot.

The rule format and the reload procedure are in Write a classification rule.

Clock correction​

NameTypeDefaultDescription
riptide.enricher.clock-correction.enabledbooltrueRegisters the enricher. false removes both the ordering repair and the skew correction.
riptide.enricher.clock-correction.skew-threshold-mslong (ms)0Skew at or above which every time column is shifted by the negative skew. 0 disables skew correction; only the ordering repair runs.

Columns enrichment writes​

ColumnTypeWritten whenValue
applicationstringa rung of the application ladder named the flowthe exporter's name or the rule's name; null when nothing matched
applicationIdintegerevery rowengine << 24 | selector from IE 95, 0 when the record carried none
applicationSourcestringevery rowexporter, rules or none; '' on rows written before the column existed
applicationDescriptionstringapplicationSource is exporterthe exporter table's description; '' otherwise
httpHoststringa Cisco AVC request record carried PEN 9 element 12235the hostname after the six-byte prefix; '' for a response record, a record without the element, or a row that predates the column
httpUristringa Cisco AVC request record carried PEN 9 element 9357the URI with the highest hit count, first on a tie; '' under the same conditions as httpHost
clockCorrectionnullable integerskew correction shifted the rowthe negated skew; null otherwise

The rollups carry application but not applicationId, applicationSource or applicationDescription.

Metrics​

The enrichment meters (enrichment.optionApplications.*, enrichment.application.unresolved, classification.rules.*) are listed on the metrics reference.

Open questions​

  • riptide.enricher.hostnames.* carries further keys in HostnamesConfig (cache TTLs, resolver threads, nameservers, a circuit breaker) that no page documents.