Real-time Application Quality-of-Service Monitoring (RAQMON) MIB
Extracted elements (27)
The raqmonParticipantAddrTable comment notes that index size limits from RFC 2578 Section 3.5 are not a concern because RFC 4710 Section 5.1 restricts participant addresses to IPv4 and IPv6 only, bounding the OID component length.
The raqmonParticipantTable is indexed by raqmonParticipantStartDate (DateAndTime) as the primary index to ease chronological sorting by management applications, with raqmonParticipantAddrTable providing a secondary index keyed by address for address-sorted lookups.
The raqmonQosTable captures per-report historical snapshots with a more restricted set of parameters compared to raqmonParticipantTable, which holds session-lifetime aggregates. This separation allows fine-grained time-series analysis without bloating the aggregate table.
If the RAQMON PDU transport is SNMP, writing raqmonConfigPort has no effect because the standard SNMP trap port 162 is always used; raqmonConfigPort only governs non-SNMP transports (e.g., TCP).
The raqmonCompliance MODULE-COMPLIANCE restricts raqmonParticipantAddrType and raqmonParticipantPeerAddrType to InetAddressType { ipv4(1), ipv6(2) } only; other address families defined in RFC 4001 need not be supported.
A conceptual row in the raqmonSessionExceptionTable that is in the 'notReady' or 'notInService' state MAY be removed after 5 minutes. No writeable objects can be changed while the row is active.
Agents MUST NOT report identical start times for any two sessions on the same host. The raqmonParticipantStartDate combined with raqmonParticipantIndex forms the unique index for each participant entry.
Deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. It is RECOMMENDED to deploy SNMPv3 and enable cryptographic security for authentication and privacy.
The information in the raqmonSessionExceptionTable MUST be persistent across agent reboots.
The value of raqmonConfigPort MUST be persistent across agent reboots. Similarly, the value of raqmonConfigRDSTimeout MUST be persistent across agent reboots.
This MIB module MUST be implemented by RAQMON Report Collectors (RRCs). A separate MIB module defined in RFC 4712 is normally implemented by RAQMON Data Sources (RDS).
The raqmonConfig MIB group provides collector configuration: raqmonConfigPort (UDP listen port), raqmonConfigPduTransport (supported transports: other/tcp/snmp), raqmonConfigRaqmonPdus (PDU counter), and raqmonConfigRDSTimeout (session termination timeout in seconds).
The raqmonParticipantAddrTable maps raqmonParticipantAddr to the raqmonParticipantTable index, enabling management applications to locate entries sorted by address rather than by session start time.
The raqmonParticipantReportCaps BITS object (30 named bits, indices 0–29) indicates which RAQMON metrics the data source is capable of reporting, as perceived by the collector. Capability to report a metric does not mandate that the metric is always sent.
The raqmonParticipantTable contains information about participants in both active and closed sessions, indexed by raqmonParticipantStartDate and raqmonParticipantIndex, with aggregated QoS metrics (RTT, jitter, IPDV, packet loss, discards, CPU, memory) covering the entire session lifetime.
The raqmonQosTable contains historical per-RAQMON-report QoS data indexed by session start date, participant index, and raqmonQosTime (seconds since session start), capturing end-to-end delay, jitter, packet/octet counts, lost packets, and session status per report interval.
The raqmonSessionAlarm NOTIFICATION-TYPE carries raqmonParticipantAddr, raqmonParticipantName, peer address fields, raqmonQoSEnd2EndNetDelay, raqmonQoSInterArrivalJitter, raqmonQosLostPackets, and raqmonQosRcvdPackets as varbinds when a session exception is triggered.
The raqmonSessionExceptionTable defines configurable thresholds (IAJitter, NetRTT, LostPackets) that trigger raqmonSessionAlarm notifications when a session's QoS values meet or exceed the threshold. Exception entries are created and managed via RowStatus.
The RAQMON-MIB MODULE-IDENTITY is assigned OID { rmon 31 }, allocated under the RMON subtree per the IANA guidelines in RFC 3737. No additional IANA actions are required by this document.
Misconfiguration of raqmonConfigRDSTimeout (too low causes premature session termination; too high wastes memory), the exception threshold objects (flooding or suppressing notifications), and raqmonConfigPort (blocking PDU reception) can degrade collector operation. SET access should be restricted in non-secure environments.
SNMP versions prior to SNMPv3 provided no adequate security; even on a network secured by IPsec, they offer no access control over who can GET or SET MIB objects. Implementers MUST consider SNMPv3 with cryptographic authentication and privacy.
The readable tables raqmonParticipantTable, raqmonQosTable, and raqmonParticipantAddrTable may expose participant addresses and application traffic patterns; unauthorized access to these objects could reveal sensitive information. GET and NOTIFY access should be controlled, and values should be encrypted when sent over SNMP.
VACM-based access control is of limited utility for fine-grained protection of RAQMON tables because raqmonParticipantEntry index values (start date, index) cannot be known in advance, preventing row-level access restriction for specific device groups.
All unreported optional QoS metrics use a sentinel value of -1 encoded as Integer32 to distinguish 'not reported' from a zero measurement. Fields such as raqmonParticipantSetupDelay, raqmonParticipantNetRTTMean, raqmonParticipantIAJitterMean, raqmonParticipantLostPackets, etc. share this convention.
raqmonParticipantAddrType and raqmonParticipantAddr use InetAddressType/InetAddress from RFC 4001; conformance constrains address types to ipv4(1) and ipv6(2) with InetAddress SIZE(4|16).
raqmonQosTime is encoded as Unsigned32 (0..2147483647) in seconds measured from the start of the corresponding participant session, serving as the third component of the raqmonQosEntry index.
raqmonSessionExceptionLostPacketsThreshold is encoded as Unsigned32 in units of tenths of a percent (range 0..1000), allowing sub-percent loss thresholds to be represented without floating point.