RFC 4711
Real-time Application Quality-of-Service Monitoring (RAQMON) MIB
Real-time Application Quality-of-Service Monitoring (RAQMON) MIB π
Part 1 of 7 π
okay so here's the header tea β
- Document: RFC 4711 π, from the Network Working Group
- Authors: A. Siddiqui, D. Romascanu (Avaya), and E. Golovinsky (Alert Logic) π«Ά
- Category: Standards Track β¨
- Date: October 2006 π
- Obsoletes and updates: the header doesn't list any, so this one isn't replacing or patching another RFC π
Status of This Memo
bestie, this part is the legal-ish bit but it matters π This document is an Internet standards track protocol for the Internet community, and it's asking everyone for discussion and suggestions for improvements π¦ For the current standardization state and status, check the "Internet Official Protocol Standards" (STD 1) π And distribution of this memo is unlimited π
Copyright Notice
Copyright (C) The Internet Society (2006) Β©οΈπ
Abstract
this memo defines a chunk of the Management Information Base (MIB) for network management protocols in the Internet community π§ It's basically an extension to the Remote Monitoring MIB, RFC 2819 π The main vibe: it describes managed objects used for real-time application Quality of Service (QoS) monitoring β¨
Table of Contents
1. Introduction ....................................................2
2. The Internet-Standard Management Framework ......................2
3. RAQMON Framework ................................................2
4. Structure of the RAQMON MIB .....................................2
5. RAQMON MIB Definitions ..........................................3
6. Security Considerations ........................................33
7. IANA Considerations ............................................35
8. Acknowledgements ...............................................35
9. Normative References ...........................................36
10. Informative References ........................................36
1. Introduction β¨
so the intro says it again: this memo defines a chunk of the MIB for network management protocols in the Internet community π¦ The big difference is that it extends [RFC2819] with managed objects for real-time application QoS monitoring π₯
Now the key words. These are the BCP 14 words, and they mean exactly what [RFC2119] says they mean π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
2. The Internet-Standard Management Framework π§
if you want the full overview of the current Internet-Standard Management Framework docs, go read section 7 of RFC 3410 [RFC3410] π
Managed objects are accessed through a virtual information store called the Management Information Base, or MIB πΈ MIB objects usually get accessed through the Simple Network Management Protocol (SNMP) π‘ Objects in the MIB are defined using the Structure of Management Information (SMI) mechanisms π This memo specifies a MIB module that is compliant to the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] π
3. RAQMON Framework π¦
as outlined in [RFC4710], the RAQMON framework is built on three entities π
- RAQMON Data Source (RDS)
- RAQMON Report Collector (RRC)
- RAQMON MIB Structure
the RAQMON MIB describes the information passed between RRCs and a RAQMON Application ("RAQMON manager") π«Ά
4. Structure of the RAQMON MIB π
the RAQMON MIB module is made of three MIB groups: raqmonSession, raqmonException, and raqmonConfig π
the raqmonSession MIB group has these tables π
- The raqmonParticpantTable holds info about participants in open and closed (terminated) sessions, including the parameters of the sessions they're in, aggregated since the session began β¨
- The raqmonQosTable holds historical QoS info during sessions. The set of parameters here is more restricted, but it includes historical per-RAQMON-report info π
- The raqmonParticpantAddrTable maps participant addresses into the indices of the raqmonParticpantTable. This lets management apps find entries sorted by raqmonParticipantAddr instead of raqmonParticipantStartDate π§
the raqmonException MIB group includes a table of filters that trigger notifications for sessions with poor QoS π
the raqmonConfig MIB group includes objects that define the configuration of the RAQMON Report Collector π₯
this MIB module MUST be implemented by RAQMON Report Collectors π
a separate MIB module is defined in [RFC4712] for mapping the RAQMON PDUs onto an SNMP transport. The MIB module defined in [RFC4712] is normally implemented by RAQMON Data Sources (RDS) π
5. RAQMON MIB Definitions π
the MIB module here IMPORTS definitions from the following π₯
SNMPv2-SMI [RFC2578]
SNMPv2-TC [RFC2579]
SNMPv2-CONF [RFC2580]
RMON-MIB [RFC2819]
SNMP-FRAMEWORK-MIB [RFC3411]
INET-ADDRESS-MIB [RFC4001]
it also uses REFERENCE clauses to refer to [RFC4710] πΈ
it also mentions [RFC3737] with respect to the MODULE-IDENTITY OID allocation π§
RAQMON-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-GROUP, NOTIFICATION-GROUP, MODULE-COMPLIANCE
FROM SNMPv2-CONF
Integer32, Unsigned32,
Gauge32, Counter32, OBJECT-TYPE,
MODULE-IDENTITY, NOTIFICATION-TYPE
FROM SNMPv2-SMI
InetAddressType, InetAddress, InetPortNumber
FROM INET-ADDRESS-MIB
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB
rmon
FROM RMON-MIB
RowStatus, TruthValue, DateAndTime, RowPointer
FROM SNMPv2-TC;
raqmonMIB MODULE-IDENTITY
LAST-UPDATED "200610100000Z" -- October 10, 2006
ORGANIZATION
"IETF RMON MIB Working Group"
CONTACT-INFO
"WG Charter:
http://www.ietf.org/html.charters/rmonmib-charter.html
Mailing lists:
General Discussion: rmonmib@ietf.org
To Subscribe: rmonmib-requests@ietf.org
In Body: subscribe your_email_address
Chair: Andy Bierman
Email: ietf@andybierman.com
Editor: Dan Romascanu
Avaya
Email: dromasca@avaya.com"
DESCRIPTION
"Real-Time Application QoS Monitoring MIB.
Copyright (c) The Internet Society (2006).
This version of this MIB module is part of
RFC 4711; See the RFC itself for full legal notices."
REVISION "200610100000Z"
DESCRIPTION
"Initial version, published as RFC 4711."
::= { rmon 31 }
-- This OID allocation conforms to [RFC3737]
--
-- Node definitions
--
raqmonNotifications OBJECT IDENTIFIER ::= { raqmonMIB 0 }
raqmonSessionAlarm NOTIFICATION-TYPE
OBJECTS { raqmonParticipantAddr,
raqmonParticipantName,
raqmonParticipantPeerAddrType,
raqmonParticipantPeerAddr,
raqmonQoSEnd2EndNetDelay,
raqmonQoSInterArrivalJitter,
raqmonQosLostPackets,
raqmonQosRcvdPackets }
STATUS current
DESCRIPTION
"A notification generated by an entry in the
raqmonSessionExceptionTable."
::= { raqmonNotifications 1 }
raqmonMIBObjects OBJECT IDENTIFIER ::= { raqmonMIB 1 }
raqmonSession OBJECT IDENTIFIER ::= { raqmonMIBObjects 1 }
raqmonParticipantTable OBJECT-TYPE
SYNTAX SEQUENCE OF RaqmonParticipantEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains information about participants in
both active and closed (terminated) sessions."
::= { raqmonSession 1 }
raqmonParticipantEntry OBJECT-TYPE
SYNTAX RaqmonParticipantEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each row contains information for a single session
(application) run by one participant.
Indexation by the start time of the session aims
to ease sorting by management applications. Agents MUST
NOT report identical start times for any two sessions
on the same host.
Rows are removed for inactive sessions
when implementation-specific age or space limits are
reached."
INDEX { raqmonParticipantStartDate, raqmonParticipantIndex }
::= { raqmonParticipantTable 1 }
okay so this part is where the RaqmonParticipantEntry row gets built, and bestie, it is a lot π Every field a participant can report lives in this one row, from start date to CPU and memory stats π¦
RaqmonParticipantEntry ::=
SEQUENCE {
raqmonParticipantStartDate DateAndTime,
raqmonParticipantIndex Unsigned32,
raqmonParticipantReportCaps BITS,
raqmonParticipantAddrType InetAddressType,
raqmonParticipantAddr InetAddress,
raqmonParticipantSendPort InetPortNumber,
raqmonParticipantRecvPort InetPortNumber,
raqmonParticipantSetupDelay Integer32,
raqmonParticipantName SnmpAdminString,
raqmonParticipantAppName SnmpAdminString,
raqmonParticipantQosCount Gauge32,
raqmonParticipantEndDate DateAndTime,
raqmonParticipantDestPayloadType Integer32,
raqmonParticipantSrcPayloadType Integer32,
raqmonParticipantActive TruthValue,
raqmonParticipantPeer RowPointer,
raqmonParticipantPeerAddrType InetAddressType,
raqmonParticipantPeerAddr InetAddress,
raqmonParticipantSrcL2Priority Integer32,
raqmonParticipantDestL2Priority Integer32,
raqmonParticipantSrcDSCP Integer32,
raqmonParticipantDestDSCP Integer32,
raqmonParticipantCpuMean Integer32,
raqmonParticipantCpuMin Integer32,
raqmonParticipantCpuMax Integer32,
raqmonParticipantMemoryMean Integer32,
raqmonParticipantMemoryMin Integer32,
raqmonParticipantMemoryMax Integer32,
raqmonParticipantNetRTTMean Integer32,
raqmonParticipantNetRTTMin Integer32,
raqmonParticipantNetRTTMax Integer32,
raqmonParticipantIAJitterMean Integer32,
raqmonParticipantIAJitterMin Integer32,
raqmonParticipantIAJitterMax Integer32,
raqmonParticipantIPDVMean Integer32,
raqmonParticipantIPDVMin Integer32,
raqmonParticipantIPDVMax Integer32,
raqmonParticipantNetOwdMean Integer32,
raqmonParticipantNetOwdMin Integer32,
raqmonParticipantNetOwdMax Integer32,
raqmonParticipantAppDelayMean Integer32,
raqmonParticipantAppDelayMin Integer32,
raqmonParticipantAppDelayMax Integer32,
raqmonParticipantPacketsRcvd Integer32,
raqmonParticipantPacketsSent Integer32,
raqmonParticipantOctetsRcvd Integer32,
raqmonParticipantOctetsSent Integer32,
raqmonParticipantLostPackets Integer32,
raqmonParticipantLostPacketsFrct Integer32,
raqmonParticipantDiscards Integer32,
raqmonParticipantDiscardsFrct Integer32
}
raqmonParticipantStartDate OBJECT-TYPE
SYNTAX DateAndTime
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The date and time of this entry.
It will be the date and time
of the first report received."
::= { raqmonParticipantEntry 1 }
raqmonParticipantIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index of the conceptual row, which is for SNMP
purposes only and has no relation to any protocol value.
There is no requirement that these rows be created or
maintained sequentially. The index will be unique for a
particular date and time."
::= { raqmonParticipantEntry 2 }
raqmonParticipantReportCaps OBJECT-TYPE
SYNTAX BITS {
raqmonPartRepDsrcName(0),
raqmonPartRepRecvName(1),
raqmonPartRepDsrcPort(2),
raqmonPartRepRecvPort(3),
raqmonPartRepSetupTime(4),
raqmonPartRepSetupDelay(5),
raqmonPartRepSessionDuration(6),
raqmonPartRepSetupStatus(7),
raqmonPartRepRTEnd2EndNetDelay(8),
raqmonPartRepOWEnd2EndNetDelay(9),
raqmonPartApplicationDelay(10),
raqmonPartRepIAJitter(11),
raqmonPartRepIPDV(12),
raqmonPartRepRcvdPackets(13),
raqmonPartRepRcvdOctets(14),
raqmonPartRepSentPackets(15),
raqmonPartRepSentOctets(16),
raqmonPartRepCumPacketsLoss(17),
raqmonPartRepFractionPacketsLoss(18),
raqmonPartRepCumDiscards(19),
raqmonPartRepFractionDiscards(20),
raqmonPartRepSrcPayloadType(21),
raqmonPartRepDestPayloadType(22),
raqmonPartRepSrcLayer2Priority(23),
raqmonPartRepSrcTosDscp(24),
raqmonPartRepDestLayer2Priority(25),
raqmonPartRepDestTosDscp(26),
raqmonPartRepCPU(27),
raqmonPartRepMemory(28),
raqmonPartRepAppName(29)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Report capabilities of the participant, as perceived
by the Collector.
If the participant can report the Data Source Name as
defined in [RFC4710], Section 5.3, then the
raqmonPartRepDsrcName bit will be set.
If the participant can report the Receiver Name as
defined in [RFC4710], Section 5.4, then the
raqmonPartRepRecvName bit will be set.
If the participant can report the Data Source Port as
defined in [RFC4710], Section 5.5, then the
raqmonPartRepDsrcPort bit will be set.
If the participant can report the Receiver Port as
defined in [RFC4710], Section 5.6, then the
raqmonPartRepRecvPort bit will be set.
If the participant can report the Session Setup Time as
defined in [RFC4710], Section 5.7, then the
raqmonPartRepSetupTime bit will be set.
If the participant can report the Session Setup Delay as
defined in [RFC4710], Section 5.8, then the
raqmonPartRepSetupDelay bit will be set.
If the participant can report the Session Duration as
defined in [RFC4710], Section 5.9, then the
raqmonPartRepSessionDuration bit will be set.
If the participant can report the Setup Status as
defined in [RFC4710], Section 5.10, then the
raqmonPartRepSetupStatus bit will be set.
If the participant can report the Round-Trip End-to-end
Network Delay as defined in [RFC4710], Section 5.11,
then the raqmonPartRepRTEnd2EndNetDelay bit will be set.
If the participant can report the One-way End-to-end
Network Delay as defined in [RFC4710], Section 5.12,
then the raqmonPartRepOWEnd2EndNetDelay bit will be set.
If the participant can report the Application Delay as
defined in [RFC4710], Section 5.13, then the
raqmonPartApplicationDelay bit will be set.
If the participant can report the Inter-Arrival Jitter
as defined in [RFC4710], Section 5.14, then the
raqmonPartRepIAJitter bit will be set.
If the participant can report the IP Packet Delay
Variation as defined in [RFC4710], Section 5.15, then
the raqmonPartRepIPDV bit will be set.
If the participant can report the number of application
packets received as defined in [RFC4710], Section 5.16,
then the raqmonPartRepRcvdPackets bit will be set.
If the participant can report the number of application
octets received as defined in [RFC4710], Section 5.17,
then the raqmonPartRepRcvdOctets bit will be set.
If the participant can report the number of application
packets sent as defined in [RFC4710], Section 5.18, then
the raqmonPartRepSentPackets bit will be set.
If the participant can report the number of application
octets sent as defined in [RFC4710], Section 5.19, then
the raqmonPartRepSentOctets bit will be set.
If the participant can report the number of cumulative
packets lost as defined in [RFC4710], Section 5.20, then
the raqmonPartRepCumPacketsLoss bit will be set.
If the participant can report the fraction of packet
loss as defined in [RFC4710], Section 5.21, then the
raqmonPartRepFractionPacketsLoss bit will be set.
If the participant can report the number of cumulative
discards as defined in [RFC4710], Section 5.22, then the
raqmonPartRepCumDiscards bit will be set.
If the participant can report the fraction of discards
as defined in [RFC4710], Section 5.23, then the
raqmonPartRepFractionDiscards bit will be set.
If the participant can report the Source Payload Type as
defined in [RFC4710], Section 5.24, then the
raqmonPartRepSrcPayloadType bit will be set.
If the participant can report the Destination Payload
Type as defined in [RFC4710], Section 5.25, then the
raqmonPartRepDestPayloadType bit will be set.
If the participant can report the Source Layer 2
Priority as defined in [RFC4710], Section 5.26, then the
raqmonPartRepSrcLayer2Priority bit will be set.
If the participant can report the Source DSCP/ToS value
as defined in [RFC4710], Section 5.27, then the
raqmonPartRepSrcToSDscp bit will be set.
If the participant can report the Destination Layer 2
Priority as defined in [RFC4710], Section 5.28, then the
raqmonPartRepDestLayer2Priority bit will be set.
If the participant can report the Destination DSCP/ToS
Value as defined in [RFC4710], Section 5.29, then the
raqmonPartRepDestToSDscp bit will be set.
If the participant can report the CPU utilization as
defined in [RFC4710], Section 5.30, then the
raqmonPartRepCPU bit will be set.
If the participant can report the memory utilization as
defined in [RFC4710], Section 5.31, then the
raqmonPartRepMemory bit will be set.
If the participant can report the Application Name as
defined in [RFC4710], Section 5.32, then the
raqmonPartRepAppName bit will be set.
The capability of reporting of a specific metric does
not mandate that the metric must be reported permanently
by the data source to the respective collector. Some
data sources MAY be configured not to send a metric, or
some metrics may not be relevant to the specific
application."
::= { raqmonParticipantEntry 3 }
that's the whole capability bit list, and the big takeaway is that reporting a metric is a capability πΈ it doesn't mean the metric is sent all the time, since some sources MAY be configured not to send one β¨
raqmonParticipantAddrType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "The type of the Internet address of the participant for this session." ::= { raqmonParticipantEntry 4 }
raqmonParticipantAddr OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The Internet Address of the participant for this session. Formatting of this object is determined by the value of raqmonParticipantAddrType." ::= { raqmonParticipantEntry 5 }
raqmonParticipantSendPort OBJECT-TYPE SYNTAX InetPortNumber MAX-ACCESS read-only STATUS current DESCRIPTION "Port from which session data is sent. If the value was not reported to the collector, this object will have the value 0." REFERENCE "Section 5.5 of the [RFC4710]" ::= { raqmonParticipantEntry 6 }
raqmonParticipantRecvPort OBJECT-TYPE SYNTAX InetPortNumber MAX-ACCESS read-only STATUS current DESCRIPTION "Port on which session data is received. If the value was not reported to the collector, this object will have the value 0." REFERENCE
"Section 5.6 of the [RFC4710]" ::= { raqmonParticipantEntry 7 }
raqmonParticipantSetupDelay OBJECT-TYPE SYNTAX Integer32 (-1|0..2147483647) UNITS "milliseconds" MAX-ACCESS read-only STATUS current DESCRIPTION "Session setup time. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.8 of the [RFC4710]" ::= { raqmonParticipantEntry 8 }
raqmonParticipantName OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "The data source name for the participant." REFERENCE "Section 5.3 of the [RFC4710]" ::= { raqmonParticipantEntry 9 }
raqmonParticipantAppName OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "A string giving the name and possibly the version of the application generating the stream, e.g., 'videotool 1.2.'
This information may be useful for debugging purposes and is similar to the Mailer or Mail-System-Version SMTP headers. The tool value is expected to remain constant for the duration of the session." REFERENCE "Section 5.32 of the [RFC4710]" ::= { raqmonParticipantEntry 10 }
raqmonParticipantQosCount OBJECT-TYPE SYNTAX Gauge32 UNITS "entries" MAX-ACCESS read-only STATUS current DESCRIPTION "The current number of entries in the raqmonQosTable for this participant and session." ::= { raqmonParticipantEntry 11 }
raqmonParticipantEndDate OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The date and time of the most recent report received." ::= { raqmonParticipantEntry 12 }
raqmonParticipantDestPayloadType OBJECT-TYPE SYNTAX Integer32 (-1|0..127) MAX-ACCESS read-only STATUS current DESCRIPTION "Destination Payload Type. If the value was not reported to the collector, this object will have the value -1." REFERENCE "RFC 3551 and Section 5.25 of the [RFC4710]" ::= { raqmonParticipantEntry 13 }
raqmonParticipantSrcPayloadType OBJECT-TYPE SYNTAX Integer32 (-1|0..127) MAX-ACCESS read-only STATUS current DESCRIPTION "Source Payload Type. If the value was not reported to the collector, this object will have the value -1." REFERENCE "RFC 3551 and Section 5.24 of the [RFC4710]" ::= { raqmonParticipantEntry 14 }
raqmonParticipantActive OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "Value 'true' indicates that the session for this participant is active (open). Value 'false' indicates that the session is closed (terminated)." ::= { raqmonParticipantEntry 15 }
raqmonParticipantPeer OBJECT-TYPE SYNTAX RowPointer MAX-ACCESS read-only STATUS current DESCRIPTION "The pointer to the corresponding entry in this table for the other peer participant. If there is no such entry in the participant table of the collector represented by this SNMP agent, then the value will be { 0 0 }. " ::= { raqmonParticipantEntry 16 }
raqmonParticipantPeerAddrType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "The type of the Internet address of the peer participant for this session." ::= { raqmonParticipantEntry 17 }
raqmonParticipantPeerAddr OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The Internet Address of the peer participant for this session. Formatting of this object is determined by the value of raqmonParticipantPeerAddrType." ::= { raqmonParticipantEntry 18 }
raqmonParticipantSrcL2Priority OBJECT-TYPE SYNTAX Integer32 (-1|0..7) MAX-ACCESS read-only STATUS current DESCRIPTION "Source Layer 2 Priority. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.26 of the [RFC4710]" ::= { raqmonParticipantEntry 19 }
raqmonParticipantDestL2Priority OBJECT-TYPE SYNTAX Integer32 (-1|0..7) MAX-ACCESS read-only STATUS current DESCRIPTION
"Destination Layer 2 Priority. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.28 of the [RFC4710]" ::= { raqmonParticipantEntry 20 }
raqmonParticipantSrcDSCP OBJECT-TYPE SYNTAX Integer32 (-1|0..63) MAX-ACCESS read-only STATUS current DESCRIPTION "Source Layer 3 DSCP value. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.27 of the [RFC4710]" ::= { raqmonParticipantEntry 21 }
raqmonParticipantDestDSCP OBJECT-TYPE SYNTAX Integer32 (-1|0..63) MAX-ACCESS read-only STATUS current DESCRIPTION "Destination Layer 3 DSCP value." REFERENCE "Section 5.29 of the [RFC4710]" ::= { raqmonParticipantEntry 22 }
raqmonParticipantCpuMean OBJECT-TYPE SYNTAX Integer32 (-1|0..100) UNITS "percents" MAX-ACCESS read-only STATUS current DESCRIPTION "Mean CPU utilization. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.30 of the [RFC4710]" ::= { raqmonParticipantEntry 23 }
raqmonParticipantCpuMin OBJECT-TYPE SYNTAX Integer32 (-1|0..100) UNITS "percents" MAX-ACCESS read-only STATUS current DESCRIPTION
"Minimum CPU utilization. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.30 of the [RFC4710]" ::= { raqmonParticipantEntry 24 }
raqmonParticipantCpuMax OBJECT-TYPE SYNTAX Integer32 (-1|0..100) UNITS "percents" MAX-ACCESS read-only STATUS current DESCRIPTION "Maximum CPU utilization. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.30 of the [RFC4710]" ::= { raqmonParticipantEntry 25 }
raqmonParticipantMemoryMean OBJECT-TYPE SYNTAX Integer32 (-1|0..100) UNITS "percents" MAX-ACCESS read-only STATUS current DESCRIPTION "Mean memory utilization. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.31 of the [RFC4710]" ::= { raqmonParticipantEntry 26 }
raqmonParticipantMemoryMin OBJECT-TYPE SYNTAX Integer32 (-1|0..100) UNITS "percents" MAX-ACCESS read-only STATUS current DESCRIPTION "Minimum memory utilization. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.31 of the [RFC4710]" ::= { raqmonParticipantEntry 27 }
raqmonParticipantMemoryMax OBJECT-TYPE SYNTAX Integer32 (-1|0..100) UNITS "percents" MAX-ACCESS read-only STATUS current DESCRIPTION "Maximum memory utilization. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.31 of the [RFC4710]" ::= { raqmonParticipantEntry 28 }
raqmonParticipantNetRTTMean OBJECT-TYPE SYNTAX Integer32 (-1|0..2147483647) UNITS "milliseconds" MAX-ACCESS read-only STATUS current DESCRIPTION "Mean round-trip end-to-end network delay over the entire session. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.11 of the [RFC4710]" ::= { raqmonParticipantEntry 29 }
raqmonParticipantNetRTTMin OBJECT-TYPE SYNTAX Integer32 (-1|0..2147483647) UNITS "milliseconds" MAX-ACCESS read-only STATUS current DESCRIPTION "Minimum round-trip end-to-end network delay over the entire session. If the value was not reported to the collector, this object will have the value -1." REFERENCE "Section 5.11 of the [RFC4710]" ::= { raqmonParticipantEntry 30 }
Okay so this next batch is all about the per-session participant stats, and honestly it's giving spreadsheet dream πβ¨ Every one of these is read-only, and if the collector never got a value, it just shows -1 π
Round-trip delay first. This is the max round-trip end-to-end network delay over the whole session πΈ
raqmonParticipantNetRTTMax OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Maximum round-trip end-to-end network delay
over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.11 of the [RFC4710]"
::= { raqmonParticipantEntry 31 }
Next up is inter-arrival jitter. Mean, min, and max all live together here, and they all cite Section 5.14 of [RFC4710] π¦
raqmonParticipantIAJitterMean OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Mean inter-arrival jitter over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.14 of the [RFC4710]"
::= { raqmonParticipantEntry 32 }
raqmonParticipantIAJitterMin OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Minimum inter-arrival jitter over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.14 of the [RFC4710]"
::= { raqmonParticipantEntry 33 }
raqmonParticipantIAJitterMax OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Maximum inter-arrival jitter over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.14 of the [RFC4710]"
::= { raqmonParticipantEntry 34 }
IP packet delay variation (IPDV) comes next, with mean, min, and max, all pointing at Section 5.15 of [RFC4710] π
raqmonParticipantIPDVMean OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Mean IP packet delay variation over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.15 of the [RFC4710]"
::= { raqmonParticipantEntry 35 }
raqmonParticipantIPDVMin OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Minimum IP packet delay variation over the entire
session. If the value was not reported to the
collector, this object will have the value -1."
REFERENCE
"Section 5.15 of the [RFC4710]"
::= { raqmonParticipantEntry 36 }
raqmonParticipantIPDVMax OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Maximum IP packet delay variation over the entire
session. If the value was not reported to the
collector, this object will have the value -1."
REFERENCE
"Section 5.15 of the [RFC4710]"
::= { raqmonParticipantEntry 37 }
Network one-way delay is next. Mean and min cite Section 5.12 of [RFC4710], and the max is the one that points at Section 5.1, so don't mix those up π
raqmonParticipantNetOwdMean OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Mean Network one-way delay over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.12 of the [RFC4710]"
::= { raqmonParticipantEntry 38 }
raqmonParticipantNetOwdMin OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Minimum Network one-way delay over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.12 of the [RFC4710]"
::= { raqmonParticipantEntry 39 }
raqmonParticipantNetOwdMax OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Maximum Network one-way delay over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.1 of the [RFC4710]"
::= { raqmonParticipantEntry 40 }
Application delay is up next. Mean, min, and max all cite Section 5.13 of [RFC4710], so they're a matching set π
raqmonParticipantAppDelayMean OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Mean application delay over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.13 of the [RFC4710]"
::= { raqmonParticipantEntry 41 }
raqmonParticipantAppDelayMin OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Minimum application delay over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.13 of the [RFC4710]"
::= { raqmonParticipantEntry 42 }
raqmonParticipantAppDelayMax OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Maximum application delay over the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.13 of the [RFC4710]"
::= { raqmonParticipantEntry 43 }
Now the counters. These are packets received, packets sent, octets received, and octets sent, and they're all counts for the whole session π§ Note that the octet ones say "Octets" with a capital O, and that's exactly how it's written in the original.
raqmonParticipantPacketsRcvd OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of packets received for the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.16 of the [RFC4710]"
::= { raqmonParticipantEntry 44 }
raqmonParticipantPacketsSent OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of packets sent for the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.17 of the [RFC4710]"
::= { raqmonParticipantEntry 45 }
raqmonParticipantOctetsRcvd OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "Octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of octets received for the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.18 of the [RFC4710]"
::= { raqmonParticipantEntry 46 }
raqmonParticipantOctetsSent OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "Octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of octets sent for the entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.19 of the [RFC4710]"
::= { raqmonParticipantEntry 47 }
Loss and discards are last in this group. Lost packets and discarded packets are both counted by this receiver for the whole session, and each one has a percentage version too π₯Ί
raqmonParticipantLostPackets OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of packets lost by this receiver for the entire
session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.20 of the [RFC4710]"
::= { raqmonParticipantEntry 48 }
raqmonParticipantLostPacketsFrct OBJECT-TYPE
SYNTAX Integer32 (-1|0..100)
UNITS "percents"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Fraction of lost packets out of total packets received.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.21 of the [RFC4710]"
::= { raqmonParticipantEntry 49 }
raqmonParticipantDiscards OBJECT-TYPE
SYNTAX Integer32 (-1|0..2147483647)
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of packets discarded by this receiver for the
entire session.
If the value was not reported to the collector,
this object will have the value -1."
REFERENCE
"Section 5.22 of the [RFC4710]"
::= { raqmonParticipantEntry 50 }
raqmonParticipantDiscardsFrct OBJECT-TYPE
SYNTAX Integer32 (-1|0..100)
UNITS "percents"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Fraction of discarded packets out of total packets
received. If the value was not reported to the
collector, this object will have the value -1."
REFERENCE
"Section 5.23 of the [RFC4710]"
::= { raqmonParticipantEntry 51 }
Last up is the QoS table. It holds historical quality-of-service data from sessions, and each row is indexed by session start time, participant index, and QoS time. Here's the big rule: agents MUST NOT report identical start times for any two sessions on the same host, so keep that one in mind π¨
raqmonQosTable OBJECT-TYPE
SYNTAX SEQUENCE OF RaqmonQosEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of historical information about quality-of-service
data during sessions."
::= { raqmonSession 2 }
raqmonQosEntry OBJECT-TYPE
SYNTAX RaqmonQosEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry contains information from a single RAQMON
packet, related to a single session
(application) run by one participant.
Indexation by the start time of the session aims
to ease sorting by management applications. Agents MUST
NOT report identical start times for any two sessions
on the same host.
Rows are removed for inactive sessions when
implementation-specific time or space limits are
reached."
INDEX { raqmonParticipantStartDate,
raqmonParticipantIndex,
raqmonQosTime }
::= { raqmonQosTable 1 }
Okay so the table gets even more fun here, bestie π Every OBJECT-TYPE below is literally a little data bucket for one QoS number, and each one gets its own ::= index so the agent knows exactly where to file it ποΈβ¨
The per-entry QoS objects start here π
RaqmonQosEntry ::=
SEQUENCE {
raqmonQosTime Unsigned32,
raqmonQoSEnd2EndNetDelay Integer32,
raqmonQoSInterArrivalJitter Integer32,
raqmonQosRcvdPackets Integer32,
raqmonQosRcvdOctets Integer32,
raqmonQosSentPackets Integer32,
raqmonQosSentOctets Integer32,
raqmonQosLostPackets Integer32,
raqmonQosSessionStatus SnmpAdminString
}
raqmonQosTime OBJECT-TYPE
SYNTAX Unsigned32 (0..2147483647)
UNITS "seconds"
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Time of this entry measured from the start of the
corresponding participant session."
::= { raqmonQosEntry 1 }
raqmonQoSEnd2EndNetDelay OBJECT-TYPE
SYNTAX Integer32 (-1 | 0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The round-trip time.
Will contain the previous value if there was no report
for this time, or -1 if the value has never been
reported."
REFERENCE
"Section 5.11 of the [RFC4710]"
::= { raqmonQosEntry 2 }
raqmonQoSInterArrivalJitter OBJECT-TYPE
SYNTAX Integer32 (-1 | 0..2147483647)
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An estimate of delay variation as observed by this
receiver. Will contain the previous value if there
was no report for this time, or -1 if the value
has never been reported."
REFERENCE
"Section 5.14 of the [RFC4710]"
::= { raqmonQosEntry 3 }
raqmonQosRcvdPackets OBJECT-TYPE
SYNTAX Integer32 (-1 | 0..2147483647)
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of packets received by this receiver since the
previous entry. Will contain the previous value if
there was no report for this time, or -1 if the value
has never been reported."
REFERENCE
"Section 5.16 of the [RFC4710]"
::= { raqmonQosEntry 4 }
raqmonQosRcvdOctets OBJECT-TYPE
SYNTAX Integer32 (-1 | 0..2147483647)
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of octets received by this receiver since the
previous report. Will contain the previous value if
there was no report for this time, or -1 if the value
has never been reported."
REFERENCE
"Section 5.18 of the [RFC4710]"
::= { raqmonQosEntry 5 }
raqmonQosSentPackets OBJECT-TYPE
SYNTAX Integer32 (-1 | 0..2147483647)
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of packets sent since the previous report.
Will contain the previous value if there
was no report for this time, or -1 if the value
has never been reported."
REFERENCE
"Section 5.17 of the [RFC4710]"
::= { raqmonQosEntry 6 }
raqmonQosSentOctets OBJECT-TYPE
SYNTAX Integer32 (-1 | 0..2147483647)
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of octets sent since the previous report.
Will contain the previous value if there
was no report for this time, or -1 if the value
has never been reported."
REFERENCE
"Section 5.19 of the [RFC4710]"
::= { raqmonQosEntry 7 }
raqmonQosLostPackets OBJECT-TYPE
SYNTAX Integer32 (-1 | 0..2147483647)
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of packets lost as observed by this receiver
since the previous report. Will contain the previous
value if there was no report for this time, or -1 if
the value has never been reported."
REFERENCE
"Section 5.20 of the [RFC4710]"
::= { raqmonQosEntry 8 }
raqmonQosSessionStatus OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The session status. Will contain the previous value
if there was no report for this time or the zero-length
string if no value was ever reported."
REFERENCE
"Section 5.10 of the [RFC4710]"
::= { raqmonQosEntry 9 }
Next up is the participant address table, which is basically a lookup map π¦ It lets management apps sort participants by address instead of by start date, and it's a total mood, honestly πΈ
raqmonParticipantAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF RaqmonParticipantAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Maps raqmonParticipantAddr to the index of the
raqmonParticipantTable. This table allows
management applications to find entries
sorted by raqmonParticipantAddr rather than
raqmonParticipantStartDate."
::= { raqmonSession 3 }
raqmonParticipantAddrEntry OBJECT-TYPE
SYNTAX RaqmonParticipantAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry corresponds to exactly one entry in the
raqmonParticipantEntry: the entry containing the
index pair raqmonParticipantStartDate,
raqmonParticipantIndex.
Note that there is no concern about the indexation of
this table exceeding the limits defined by RFC 2578,
Section 3.5. According to [RFC4710], Section
5.1, only IPv4 and IPv6 addresses can be reported as
participant addresses."
INDEX { raqmonParticipantAddrType,
raqmonParticipantAddr,
raqmonParticipantStartDate,
raqmonParticipantIndex }
::= { raqmonParticipantAddrTable 1 }
RaqmonParticipantAddrEntry ::=
SEQUENCE { raqmonParticipantAddrEndDate DateAndTime }
raqmonParticipantAddrEndDate OBJECT-TYPE
SYNTAX DateAndTime
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of raqmonParticipantEndDate for the
corresponding raqmonParticipantEntry."
::= { raqmonParticipantAddrEntry 1 }
Now we're entering the exception zone π¨ The raqmonException branch holds the thresholds that tell the management station when a session is having a rough time π
raqmonException OBJECT IDENTIFIER ::= { raqmonMIBObjects 2 }
raqmonSessionExceptionTable OBJECT-TYPE
SYNTAX SEQUENCE OF RaqmonSessionExceptionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table defines thresholds for the management
station to get notifications about sessions that
encountered poor quality of service.
The information in this table MUST be persistent
across agent reboots."
::= { raqmonException 2 }
raqmonSessionExceptionEntry OBJECT-TYPE
SYNTAX RaqmonSessionExceptionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the raqmonSessionExceptionTable."
INDEX { raqmonSessionExceptionIndex }
::= { raqmonSessionExceptionTable 1 }
RaqmonSessionExceptionEntry ::=
SEQUENCE {
raqmonSessionExceptionIndex Unsigned32,
raqmonSessionExceptionIAJitterThreshold Unsigned32,
raqmonSessionExceptionNetRTTThreshold Unsigned32,
raqmonSessionExceptionLostPacketsThreshold Unsigned32,
raqmonSessionExceptionRowStatus RowStatus
}
raqmonSessionExceptionIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..65535)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An index that uniquely identifies an
entry in the raqmonSessionExceptionTable.
Management applications can determine unused indices
by performing GetNext or GetBulk operations on the
Table."
::= { raqmonSessionExceptionEntry 2 }
raqmonSessionExceptionIAJitterThreshold OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Threshold for jitter.
The value during a session must be greater than or
equal to this value for an exception to be created."
::= { raqmonSessionExceptionEntry 3 }
raqmonSessionExceptionNetRTTThreshold OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Threshold for round-trip time.
The value during a session must be greater than or
equal to this value for an exception to be created."
::= { raqmonSessionExceptionEntry 4 }
raqmonSessionExceptionLostPacketsThreshold OBJECT-TYPE
SYNTAX Unsigned32 (0..1000)
UNITS "tenth of a percent"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Threshold for lost packets in units of tenths
of a percent. The value during a session must
be greater than or equal to this value for an
exception to be created."
::= { raqmonSessionExceptionEntry 5 }
raqmonSessionExceptionRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object has a value of 'active' when
exceptions are being monitored by the system.
A newly-created conceptual row must have all
the read-create objects initialized before
becoming 'active'. A conceptual row 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."
::= { raqmonSessionExceptionEntry 7 }
Heads up, bestie: theraqmonSessionExceptionTableMUST stay persistent across agent reboots, and a row in thenotReadyornotInServicestate MAY get removed after 5 minutes. Those are the big rules here π
Last bit for this part is the config branch π The raqmonConfigPort object is the UDP port to listen on, and there's a little twist for SNMP π
The config object starts here π§
raqmonConfig OBJECT IDENTIFIER ::= { raqmonMIBObjects 3 }
raqmonConfigPort OBJECT-TYPE
SYNTAX InetPortNumber
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The UDP port to listen on for RAQMON reports,
running on transport protocols other than SNMP.
If the RAQMON PDU transport protocol is SNMP,
a write operation on this object has no effect, as
the standard port 162 is always used.
The value of this object MUST be persistent across
agent reboots."
::= { raqmonConfig 1 }
Slay, that's the end of this stretch π β¨ There's a lot more coming, so keep your eyes peeled π
raqmonConfigPduTransport OBJECT-TYPE
SYNTAX BITS
{
other(0),
tcp(1),
snmp(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The PDU transport(s) used by this collector.
If other(0) is set, the collector supports a
transport other than SNMP or TCP.
If tcp(1) is set, the collector supports TCP as a
transport protocol.
If snmp(2) is set, the collector supports SNMP as a
transport protocol."
::= { raqmonConfig 2 }
raqmonConfigRaqmonPdus OBJECT-TYPE
SYNTAX Counter32
UNITS "PDUs"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Count of RAQMON PDUs received by the Collector."
::= { raqmonConfig 3 }
raqmonConfigRDSTimeout OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The number of seconds since the reception of the
last RAQMON PDU from a RDS after which a session
between the respective RDS and the collector will be
considered terminated.
The value of this object MUST be persistent across
agent reboots."
::= { raqmonConfig 4 }
raqmonConformance OBJECT IDENTIFIER ::= { raqmonMIB 2 }
raqmonCompliances OBJECT IDENTIFIER ::= { raqmonConformance 1 }
raqmonGroups OBJECT IDENTIFIER ::= { raqmonConformance 2 }
raqmonCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Describes the requirements for conformance to the
RAQMON MIB."
MODULE -- this module
MANDATORY-GROUPS { raqmonCollectorGroup,
raqmonCollectorNotificationsGroup
}
OBJECT raqmonParticipantAddrType
SYNTAX InetAddressType { ipv4(1), ipv6(2) }
DESCRIPTION
"Only IPv4 and IPv6 addresses need to be supported."
OBJECT raqmonParticipantAddr
SYNTAX InetAddress (SIZE(4|16))
DESCRIPTION
"Only IPv4 and IPv6 addresses need to be supported."
OBJECT raqmonParticipantPeerAddrType
SYNTAX InetAddressType { ipv4(1), ipv6(2) }
DESCRIPTION
"Only IPv4 and IPv6 addresses need to be supported."
OBJECT raqmonParticipantPeerAddr
SYNTAX InetAddress (SIZE(4|16))
DESCRIPTION
"Only IPv4 and IPv6 addresses need to be supported."
::= { raqmonCompliances 1 }
raqmonCollectorGroup OBJECT-GROUP
OBJECTS {
raqmonParticipantReportCaps,
raqmonParticipantAddrType,
raqmonParticipantAddr,
raqmonParticipantSendPort,
raqmonParticipantRecvPort,
raqmonParticipantSetupDelay,
raqmonParticipantName,
raqmonParticipantAppName,
raqmonParticipantQosCount,
raqmonParticipantEndDate,
raqmonParticipantDestPayloadType,
raqmonParticipantSrcPayloadType,
raqmonParticipantActive,
raqmonParticipantPeer,
raqmonParticipantPeerAddrType,
raqmonParticipantPeerAddr,
raqmonParticipantSrcL2Priority,
raqmonParticipantDestL2Priority,
raqmonParticipantSrcDSCP,
raqmonParticipantDestDSCP,
raqmonParticipantCpuMean,
raqmonParticipantCpuMin,
raqmonParticipantCpuMax,
raqmonParticipantMemoryMean,
raqmonParticipantMemoryMin,
raqmonParticipantMemoryMax,
raqmonParticipantNetRTTMean,
raqmonParticipantNetRTTMin,
raqmonParticipantNetRTTMax,
raqmonParticipantIAJitterMean,
raqmonParticipantIAJitterMin,
raqmonParticipantIAJitterMax,
raqmonParticipantIPDVMean,
raqmonParticipantIPDVMin,
raqmonParticipantIPDVMax,
raqmonParticipantNetOwdMean,
raqmonParticipantNetOwdMin,
raqmonParticipantNetOwdMax,
raqmonParticipantAppDelayMean,
raqmonParticipantAppDelayMin,
raqmonParticipantAppDelayMax,
raqmonParticipantPacketsRcvd,
raqmonParticipantPacketsSent,
raqmonParticipantOctetsRcvd,
raqmonParticipantOctetsSent,
raqmonParticipantLostPackets,
raqmonParticipantLostPacketsFrct,
raqmonParticipantDiscards,
raqmonParticipantDiscardsFrct,
raqmonQoSEnd2EndNetDelay,
raqmonQoSInterArrivalJitter,
raqmonQosRcvdPackets,
raqmonQosRcvdOctets,
raqmonQosSentPackets,
raqmonQosSentOctets,
raqmonQosLostPackets,
raqmonQosSessionStatus,
raqmonParticipantAddrEndDate,
raqmonConfigPort,
raqmonSessionExceptionIAJitterThreshold,
raqmonSessionExceptionNetRTTThreshold,
raqmonSessionExceptionLostPacketsThreshold,
raqmonSessionExceptionRowStatus,
raqmonConfigPduTransport,
raqmonConfigRaqmonPdus,
raqmonConfigRDSTimeout}
STATUS current
DESCRIPTION
"Objects used in RAQMON by a collector."
::= { raqmonGroups 1 }
raqmonCollectorNotificationsGroup NOTIFICATION-GROUP
NOTIFICATIONS { raqmonSessionAlarm }
STATUS current
DESCRIPTION
"Notifications emitted by a RAQMON collector."
::= { raqmonGroups 2 }
END
6. Security Considerations πβ¨
okay bestie, this part is SERIOUS, so let's get into it π. There are a bunch of management objects in this MIB module with a MAX-ACCESS of read-write. These objects might be sensitive or vulnerable in some network environments. And SET operations in a non-secure environment without proper protection can totally mess with network operations, so be careful π.
Setting raqmonRDSTimeout too low means RDS sessions get terminated sooner than they need to be π. Setting it too high means terminated sessions might keep getting managed, which wastes memory for no reason ποΈ.
Setting these objects to the wrong values can make the collectors either flood the management apps with pointless notifications, or stop sending notifications when the QoS in the network is actually getting worse π:
raqmonSessionExceptionIAJitterThreshold
raqmonSessionExceptionRTTThreshold
raqmonSessionExceptionLostPacketsThreshold
Setting raqmonConfigPort to the wrong values can stop the collector from receiving RAQMON PDUs from the data sources. Not ideal, periodt π«.
Some of the readable objects in this MIB module (the ones with a MAX-ACCESS other than not-accessible) might also be sensitive or vulnerable in some environments. These are:
raqmonParticipantTable
raqmonQoSTable
raqmonParticpantAddrTable
If unauthorized people see these, they could find out the addresses of the participants in applications, or learn about the traffic patents (yes, that's what the RFC says π) of those apps, which might be private info in certain environments π.
So it's important to control even GET and/or NOTIFY access to these objects, and maybe even encrypt their values when they're sent over the network via SNMP π.
The way the RAQMON tables are structured makes access control with the View-based Access Control Model (VACM) pretty limited π₯². For example, you couldn't set up a group that can only see performance data for a specific set of devices, because the index values for raqmonParticpantEntry can't be known ahead of time. And raqmonSessionExceptionEntries apply to every entry in the raqmonQoSTable, so no picking and choosing there either.
SNMP versions before SNMPv3 didn't have adequate security π« . Even if the network itself is secure (say, by using IPsec), there's still no control over who on that secure network gets to GET/SET (read/change/create/delete) the objects in this MIB module. Lowkey scary.
It is RECOMMENDED that implementers look at the security features in the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms for authentication and privacy πβ¨.
And deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED π¨. Instead, it is RECOMMENDED to deploy SNMPv3 and turn on cryptographic security. After that, it's the customer/operator's job to make sure the SNMP entity giving access to this MIB module is set up so only the principals (users) with legit rights can GET or SET (change/create/delete) the objects π .
7. IANA Considerations π§
No requirements from IANA are defined in this document π. The root OID of the MIB module defined here belongs to the RMON subtree, as reserved in [RFC3737] πΈ.
8. Acknowledgements π«Ά
Richard Smith created the first proprietary version of this MIB π.
The authors would also like to thank everyone who took part in the Remote Monitoring MIB Working Group, and especially Andy Bierman, Steven Waldbusser, Alan Clark, Itai Zilbershtein, and Robert Cole, for interesting discussions, ideas, comments, and direct contributions to this work π.
The authors would also like to thank Randy Presuhn for the precious technical comments, plus the laborious job of reviewing the syntax and spelling of the document π.
The authors would like to thank Bert Wijnen for reviewing the final versions of the document, and for the guidance they gave during the whole editing period πβ¨.
9. Normative References β¨
okay bestie, these are the docs you MUST have read before anything else makes sense π the "normative" ones are the stuff the spec literally depends on, so they count as part of the rules π
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
- [RFC2579] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
- [RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.
- [RFC2819] Waldbusser, S., "Remote Network Monitoring Management Information Base", STD 59, RFC 2819, May 2000.
- [RFC3411] Harrington, D., Preshun, R., and B. Wijnen, "An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, December 2002.
- [RFC4001] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwalder, "Textual Conventions for Internet Network Addresses", RFC 4001, February 2005.
- [RFC4710] Siddiqui, A., Romascanu, D., and E. Golovinsky, "Real-time Application Quality-of-Service Monitoring (RAQMON) Framework", RFC 4710, October 2006.
10. Informative References π§
these ones are the extra reading that's super helpful for context, but the spec doesn't need you to have them to know what it's saying π
- [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
- [RFC4712] Siddiqui, A., Romascanu, D., Golovinsky, E., Ramhman, M., and Y. Kim, "Transport Mappings for Real-time Application Quality-of-Service Monitoring (RAQMON) Protocol Data Unit (PDU)", RFC 4712, October 2006.
- [RFC3737] Wijnen, B. and A. Bierman, "IANA Guidelines for the Registry of Remote Monitoring (RMON) MIB modules", RFC 3737, April 2004.
Authors' Addresses π
these are the people who wrote it, so if you have questions about the vibe (or the spec) you know who to ping π¦
Anwar A. Siddiqui Avaya Labs 307 Middletown Lincroft Road Lincroft, New Jersey 07738 USA
Phone: +1 732 852-3200 Fax: +1 732 817-5922 EMail: anwars@avaya.com
Dan Romascanu Avaya Atidim Technology Park, Bldg. #3 Tel Aviv, 61131 Israel
Phone: +972 3-645-8414 EMail: dromasca@avaya.com
Eugene Golovinsky
EMail: gene@alertlogic.net
Full Copyright Statement βοΈ
Copyright (C) The Internet Society (2006).
this document falls under the rights, licenses and restrictions in BCP 78 π apart from what that says, the authors keep all their rights.
this document and the info in it are given on an "AS IS" basis, and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. no promises, no guarantees, just vibes π«
Intellectual Property π
the IETF is not picking a side on whether any IPR or other rights that someone might claim over the tech in here are valid or how far they reach, and it's not saying any license is available either. it also hasn't gone out and hunted for those rights itself π΅οΈββοΈ if you want the procedures for rights in RFC docs, check BCP 78 and BCP 79.
copies of IPR disclosures sent to the IETF Secretariat, any assurances of licenses that are supposed to be available, or the results of trying to get a general license or permission for implementers or users to use those proprietary rights, can all be found in the IETF online IPR repository at http://www.ietf.org/ipr.
the IETF also invites anyone who's interested to flag any copyrights, patents, patent applications, or other proprietary rights that might cover tech you'd need to implement this standard. send that info to the IETF at ietf-ipr@ietf.org π©
Acknowledgement πΈ
funding for the RFC Editor function comes from the IETF Administrative Support Activity (IASA) π«Ά
π¦ where this page comes from
- ietf: rfc4711 2006-10
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms