RFC 2959

Real-Time Transport Protocol Management Information Base

๐Ÿ“… published October 2000, from ietf

RFC 2959: Real-Time Transport Protocol Management Information Base ๐ŸŽ€

Okay bestie, let's get into this one ๐Ÿ’– It's a Standards Track doc from the Network Working Group, dated October 2000. The authors are M. Baugher and B. Strahm from Intel Corp., plus I. Suconick from VideoServer Corp. โœจ The title block doesn't say it obsoletes or updates anything, so it's a fresh start ๐ŸŒธ

Status of this Memo ๐Ÿงš

This doc is an Internet standards track protocol spec for the Internet community, and it's basically asking for your thoughts and suggestions to make it better ๐Ÿซถ For the official standardization state and status, check the current edition of "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited ๐Ÿฆ‹

Copyright (C) The Internet Society (2000). All Rights Reserved.

Abstract โœจ

This memo defines a chunk of the Management Information Base (MIB) for use with network management protocols across the Internet community. It's specifically about objects for managing Real-Time Transport Protocol (RTP) systems (RFC1889) ๐ŸŽ€

Table of Contents ๐ŸŒˆ

   1. The Network Management Framework .............................  2
   2. Overview .....................................................  3
   2.1 Components ..................................................  3
   2.2 Applicability of the MIB to RTP System Implementations ......  4
   2.3 The Structure of the RTP MIB ................................  4
   3 Definitions ...................................................  5
   4. Security Considerations ...................................... 26
   5. Acknowledgements ............................................. 27
   6. Intellectual Property ........................................ 27
   7. References ................................................... 28
   8. Authors' Addresses ........................................... 30
   9. Full Copyright Statement ..................................... 31

1. The SNMP Management Framework ๐Ÿ’…

The SNMP Management Framework is currently made up of five major components ๐Ÿ‘‘

A more detailed intro to the current SNMP Management Framework lives in RFC 2570 [RFC2570] ๐Ÿ“š

Managed objects are accessed through a virtual information store called the Management Information Base, or MIB ๐Ÿง  Objects in the MIB are defined using the mechanisms in the SMI.

This memo specifies a MIB module that is compliant to SMIv2 ๐ŸŽ€ A MIB that conforms to SMIv1 can be produced through the appropriate translations. The resulting translated MIB must be semantically equivalent, except where objects or events are omitted because no translation is possible (use of Counter64). Some machine readable information in SMIv2 gets turned into textual descriptions in SMIv1 during translation. However, losing that machine readable information is not considered to change the semantics of the MIB ๐Ÿ™ˆ

2. Overview ๐Ÿฆ‹

An "RTP System" can be a host end-system that runs an application program sending or receiving RTP data packets, or it can be an intermediate-system that forwards RTP packets ๐Ÿ’– RTP Control Protocol (RTCP) packets are sent by senders and receivers to convey information about RTP packet transmission and reception [RFC1889]. RTP monitors may collect RTCP information on senders and receivers to and from an RTP host or intermediate-system ๐Ÿ‘€

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 RFC 2119 ๐Ÿ”ฅ

2.1 Components ๐ŸŒธ

The RTP MIB is built around three conceptual abstractions: "Session," "Receiver" and "Sender" ๐Ÿงš

2.1.1 An "RTP Session" is the "...association of participants communicating with RTP. For each participant, the session is defined by a particular pair of destination transport addresses (one network address plus a port pair for RTP and RTCP). The destination transport addresses may be common for all participants, as in the case of IP multicast, or may be different for each, as in the case of individual unicast addresses plus a common port pair," as defined in section 3 of [RFC1889]. Main character energy ๐Ÿ‘‘

2.1.2 A "Sender" is identified within an RTP session by a 32-bit numeric "Synchronization Source," or "SSRC", value, and is "...the source of a stream of RTP packets" as defined in section 3 of [RFC1889]. The sender is also a source of RTCP Sender Report packets as specified in section 6 of [RFC1889] ๐Ÿ’…

2.1.3 A "Receiver" of a "stream of RTP packets" can be a unicast or multicast Receiver as described in 2.1.1, above. An RTP Receiver has an SSRC value that is unique to the session. An RTP Receiver is also a source of RTCP Receiver Reports as specified in section 6 of [RFC1889] ๐Ÿซถ

2.2 Applicability of the MIB to RTP System Implementations ๐ŸŒˆ

The RTP MIB may be used in two types of RTP implementations: RTP Host Systems (end systems) and RTP Monitors, see section 3 of [RFC1889]. Using the RTP MIB for RTP Translators and Mixers, as defined in section 7 of [RFC1889], is for further study ๐Ÿ”ฎ

2.2.1 RTP host Systems are end-systems that may use the RTP MIB to collect RTP session and stream data that the host is sending or receiving. A network manager can use this data to detect and diagnose faults that happen over the lifetime of an RTP session, like a "help-desk" scenario ๐ŸŽ€

2.2.2 RTP Monitors of multicast RTP sessions may be third-party or may be located in the RTP host. RTP Monitors may use the RTP MIB to collect RTP session and stream statistical data, and a network manager can use that for capacity planning and other network-management purposes. An RTP Monitor may also use the RTP MIB to collect data so a network manager can detect and diagnose faults in RTP sessions, or configure its operation โญ

2.2.3 Lots of host systems will want to keep track of streams beyond what they're sending and receiving. In a host monitor system, a host agent uses RTP data from the host to maintain data about the streams it sends and receives, and RTCP data to collect data about other hosts in the session. For example, an agent for an RTP host that is sending a stream would use data from its RTP system to maintain the rtpSenderTable, but it may want to maintain an rtpRcvrTable for endpoints receiving its stream. To do this, the RTP agent collects RTCP data from the receivers of its stream to build the rtpRcvrTable. A host monitor system MUST set the rtpSessionMonitor object to 'true(1)', but it does not have to accept management operations that create and destroy rows in its rtpSessionTable ๐Ÿงš

2.3 The Structure of the RTP MIB ๐Ÿ’–

There are six tables in the RTP MIB. The rtpSessionTable holds objects describing active sessions at the host or monitor. The rtpSenderTable holds information about senders to the RTP session. The rtpRcvrTable holds information about receivers of RTP session data. The rtpSessionInverseTable, rtpSenderInverseTable, and rtpRcvrInverseTable hold information for efficiently finding indexes into the rtpSessionTable, rtpSenderTable, and rtpRcvrTable, respectively ๐Ÿฆ‹

The reverse lookup tables (rtpSessionInverseTable, rtpSenderInverseTable, and rtpRcvrInverseTable) are optional tables that help management applications access conceptual rows in other tables efficiently. Implementors of this MIB SHOULD implement these tables for multicast RTP sessions when table indexes (rtpSessionIndex of rtpSessionTable, rtpSenderSSRC of rtpSenderTable, and the SSRC pair in the rtpRcvrTable) are not available from other MIBs. Otherwise, the management application may be forced to do expensive tree walks through large numbers of sessions, senders, or receivers ๐Ÿ™ˆ

For any particular RTP session, the rtpSessionMonitor object indicates whether remote senders or receivers to the RTP session are to be monitored. If rtpSessionMonitor is true(1), then senders and receivers to the session MUST be monitored with entries in the rtpSenderTable and rtpRcvrTable. RTP sessions are monitored by the RTP agent, which updates rtpSenderTable and rtpRcvrTable objects with information from RTCP reports from remote senders or remote receivers respectively ๐ŸŒˆ

rtpSessionNewIndex is a global object that lets a network-management application get a unique index for conceptual row creation in the rtpSessionTable. This way, the SNMP Set operation MAY be used to configure a monitor ๐Ÿ”ฅ

3. Definitions ๐ŸŽ€

The MIB module begins with the imports below, which pull in definitions from other modules ๐Ÿ’…

RTP-MIB DEFINITIONS ::= BEGIN
IMPORTS
       Counter32, Counter64, Gauge32, mib-2, Integer32,
       MODULE-IDENTITY,
       OBJECT-TYPE, Unsigned32                     FROM SNMPv2-SMI
       RowStatus, TAddress,
       TDomain, TestAndIncr,
       TimeStamp, TruthValue                       FROM SNMPv2-TC
       OBJECT-GROUP, MODULE-COMPLIANCE             FROM SNMPv2-CONF
       Utf8String                                  FROM SYSAPPL-MIB
       InterfaceIndex                              FROM IF-MIB;

okay bestie, the MIB module info is here ๐Ÿ’– It's basically the ID card for the whole thing ๐Ÿชช

rtpMIB MODULE-IDENTITY
    LAST-UPDATED "200010020000Z"  -- 2 October 2000
    ORGANIZATION
                 "IETF AVT Working Group
    Email:   rem-conf@es.net"
    CONTACT-INFO
            "Mark Baugher
    Postal: Intel Corporation
            2111 NE 25th Avenue
            Hillsboro, OR   97124
            United States
    Tel:    +1 503 466 8406
    Email:  mbaugher@passedge.com

            Bill Strahm
    Postal: Intel Corporation
            2111 NE 25th Avenue
            Hillsboro, OR   97124
            United States
    Tel:    +1 503 264 4632
    Email:  bill.strahm@intel.com

            Irina Suconick
    Postal: Ennovate Networks
            60 Codman Hill Rd.,
            Boxboro, Ma 01719
    Tel:    +1 781-505-2155
    Email:  irina@ennovatenetworks.com"

        DESCRIPTION
        "The managed objects of RTP systems.  The MIB is
        structured around three types of information.
        1. General information about RTP sessions such
           as the session address.
        2. Information about RTP streams being sent to
           an RTP session by a particular sender.
        3. Information about RTP streams received on an
           RTP session by a particular receiver from a
           particular sender.
         There are two types of RTP Systems, RTP hosts and
         RTP monitors.  As described below, certain objects
         are unique to a particular type of RTP System.   An
         RTP host may also function as an RTP monitor.
         Refer to RFC 1889, 'RTP: A Transport Protocol for
         Real-Time Applications,' section 3.0, for definitions."
   REVISION     "200010020000Z"  -- 2 October 2000
   DESCRIPTION  "Initial version of this MIB.
                 Published as RFC 2959."

::= { mib-2 87 }

--
-- OBJECTS
--
rtpMIBObjects OBJECT IDENTIFIER ::= { rtpMIB 1 }
rtpConformance OBJECT IDENTIFIER ::= { rtpMIB 2 }

--
-- SESSION NEW INDEX
--
rtpSessionNewIndex OBJECT-TYPE
    SYNTAX          TestAndIncr
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
      "This  object  is  used  to  assign  values  to rtpSessionIndex
       as described in 'Textual Conventions  for  SMIv2'.  For an RTP
       system that supports the creation of rows, the  network manager
       would read the  object,  and  then write the value back in
       the Set that creates a new instance  of rtpSessionEntry.   If
       the  Set  fails with the code 'inconsistentValue,' then the
       process must be repeated; If the Set succeeds, then the object
       is incremented, and the  new  instance  is created according to
       the manager's directions.  However, if the RTP agent is not
       acting as a monitor, only the RTP agent may create conceptual
       rows in the RTP session table."
    ::= { rtpMIBObjects 1 }

--
-- SESSION INVERSE TABLE
--
rtpSessionInverseTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF RtpSessionInverseEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Maps rtpSessionDomain, rtpSessionRemAddr, and rtpSessionLocAddr
       TAddress pairs to one or more rtpSessionIndex values, each
       describing a row in the rtpSessionTable.  This makes it possible
       to retrieve the row(s) in the rtpSessionTable corresponding to a
       given session without having to walk the entire (potentially
       large) table."
    ::= { rtpMIBObjects 2 }

rtpSessionInverseEntry OBJECT-TYPE
    SYNTAX          RtpSessionInverseEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Each entry corresponds to exactly one entry in the
       rtpSessionTable - the entry containing the tuple,
       rtpSessionDomain, rtpSessionRemAddr, rtpSessionLocAddr
       and rtpSessionIndex."
    INDEX { rtpSessionDomain, rtpSessionRemAddr, rtpSessionLocAddr,
            rtpSessionIndex }
    ::= { rtpSessionInverseTable 1 }

RtpSessionInverseEntry ::= SEQUENCE {
        rtpSessionInverseStartTime     TimeStamp
        }

rtpSessionInverseStartTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The value of SysUpTime at the time that this row was
       created."
    ::= { rtpSessionInverseEntry 1 }

ok the session table is next and it's where the real drama lives ๐ŸŽ€

--
--      SESSION TABLE
--
rtpSessionTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF RtpSessionEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
          "There's one entry in rtpSessionTable for each RTP session
          on which packets are being sent, received, and/or
          monitored."
    ::= { rtpMIBObjects 3 }

rtpSessionEntry OBJECT-TYPE
    SYNTAX          RtpSessionEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Data in rtpSessionTable uniquely identify an RTP session.  A
       host RTP agent MUST create a read-only row for each session to
       which packets are being sent or received.  Rows MUST be created
       by the RTP Agent at the start of a session when one or more
       senders or receivers are observed.  Rows created by an RTP agent
       MUST be deleted when the session is over and there are no
       rtpRcvrEntry and no rtpSenderEntry for this session.  An RTP
       session SHOULD be monitored to create management information on
       all RTP streams being sent or received when the
       rtpSessionMonitor has the TruthValue of 'true(1)'.  An RTP
       monitor SHOULD permit row creation with the side effect of
       causing the RTP System to join the multicast session for the
       purposes of gathering management information  (additional
       conceptual rows are created in the rtpRcvrTable and
       rtpSenderTable).  Thus, rtpSessionTable rows SHOULD be created
       for RTP session monitoring purposes.  Rows created by a
       management application SHOULD be deleted via SNMP operations by
       management applications.  Rows created by management operations
       are deleted by management operations by setting
       rtpSessionRowStatus to 'destroy(6)'."
    INDEX { rtpSessionIndex }
    ::= { rtpSessionTable 1 }

RtpSessionEntry ::= SEQUENCE {
        rtpSessionIndex         Integer32,
        rtpSessionDomain        TDomain,
        rtpSessionRemAddr       TAddress,
        rtpSessionLocAddr       TAddress,
        rtpSessionIfIndex       InterfaceIndex,
        rtpSessionSenderJoins   Counter32,
        rtpSessionReceiverJoins Counter32,
        rtpSessionByes          Counter32,
        rtpSessionStartTime     TimeStamp,
        rtpSessionMonitor       TruthValue,
        rtpSessionRowStatus     RowStatus
        }

rtpSessionIndex OBJECT-TYPE
    SYNTAX          Integer32 (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 are created or maintained
       sequentially."
    ::= { rtpSessionEntry 1 }

rtpSessionDomain OBJECT-TYPE
    SYNTAX          TDomain
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
      "The transport-layer protocol used for sending or receiving
       the stream of RTP data packets on this session.
       Cannot be changed if rtpSessionRowStatus is 'active'."
    ::= { rtpSessionEntry 2 }

rtpSessionRemAddr OBJECT-TYPE
    SYNTAX          TAddress
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
      "The address to which RTP packets are sent by the RTP system.
      In an IP multicast RTP session, this is the single address used
      by all senders and receivers of RTP session data.  In a unicast
      RTP session this is the unicast address of the remote RTP system.
      'The destination address pair may be common for all participants,
      as in the case of IP multicast, or may be different for each, as
      in the case of individual unicast network address pairs.'  See
      RFC 1889, 'RTP: A Transport Protocol for Real-Time Applications,'
      sec. 3.  The transport service is identified by rtpSessionDomain.
      For snmpUDPDomain, this is an IP address and even-numbered UDP
      Port with the RTCP being sent on the next higher odd-numbered
      port, see RFC 1889, sec. 5."
    ::= { rtpSessionEntry 3 }

rtpSessionLocAddr OBJECT-TYPE
    SYNTAX          TAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The local address used by the RTP system.  In an IP multicast
       RTP session, rtpSessionRemAddr will be the same IP multicast
       address as rtpSessionLocAddr.  In a unicast RTP session,
       rtpSessionRemAddr and rtpSessionLocAddr will have different
       unicast addresses.  See RFC 1889, 'RTP: A Transport Protocol for
       Real-Time Applications,' sec. 3.  The transport service is
       identified by rtpSessionDomain.  For snmpUDPDomain, this is an IP
       address and even-numbered UDP Port with the RTCP being sent on
       the next higher odd-numbered port, see RFC 1889, sec. 5."
    ::= { rtpSessionEntry 4 }

rtpSessionIfIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
     "The ifIndex value is set to the corresponding value
      from IF-MIB (See RFC 2233, 'The Interfaces Group MIB using
      SMIv2').  This is the interface that the RTP stream is being sent
      to or received from, or in the case of an RTP Monitor the
      interface that RTCP packets will be received on.  Cannot be
      changed if rtpSessionRowStatus is 'active'."
    ::= { rtpSessionEntry 5 }

rtpSessionSenderJoins OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The number of senders that have been observed to have
       joined the session since this conceptual row was created
       (rtpSessionStartTime).  A sender 'joins' an RTP
       session by sending to it.  Senders that leave and then
       re-join following an RTCP BYE (see RFC 1889, 'RTP: A
       Transport Protocol for Real-Time Applications,' sec. 6.6)
       or session timeout may be counted twice.  Every time a new
       RTP sender is detected either using RTP or RTCP, this counter
       is incremented."
    ::= { rtpSessionEntry 6 }

rtpSessionReceiverJoins OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The number of receivers that have been been observed to
       have joined this session since this conceptual row was
       created (rtpSessionStartTime).  A receiver 'joins' an RTP
       session by sending RTCP Receiver Reports to the session.
       Receivers that leave and then re-join following an RTCP BYE
       (see RFC 1889, 'RTP: A Transport Protocol for Real-Time
       Applications,' sec. 6.6) or session timeout may be counted
       twice."
    ::= { rtpSessionEntry 7 }

rtpSessionByes OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "A count of RTCP BYE (see RFC 1889, 'RTP: A Transport
       Protocol for Real-Time Applications,' sec. 6.6) messages
       received by this entity."
    ::= { rtpSessionEntry 8 }

rtpSessionStartTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The value of SysUpTime at the time that this row was
       created."
    ::= { rtpSessionEntry 9 }

okay bestie, rtpSessionMonitor is the boolean that decides whether we're also watching remote senders and receivers with RTCP, and the default depends on whether you're a monitor or a host ๐Ÿ‘€โœจ

rtpSessionMonitor OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION

      "Boolean, Set to 'true(1)' if remote senders or receivers in
       addition to the local RTP System are to be monitored using RTCP.
       RTP Monitors MUST initialize to 'true(1)' and RTP Hosts SHOULD
       initialize this 'false(2)'.  Note that because 'host monitor'
       systems are receiving RTCP from their remote participants they
       MUST set this value to 'true(1)'."
    ::= { rtpSessionEntry 10 }

rtpSessionRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
      "Value of 'active' when RTP or RTCP messages are being
       sent or received by an RTP System.  A newly-created
       conceptual row must have the all read-create objects
       initialized before becoming 'active'.
       A conceptual row that is in the 'notReady' or 'notInService'
       state MAY be removed after 5  minutes."
    ::= { rtpSessionEntry 11 }

--
-- SENDER INVERSE TABLE
--
rtpSenderInverseTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF RtpSenderInverseEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Maps rtpSenderAddr, rtpSessionIndex, to the rtpSenderSSRC
       index of the rtpSenderTable.  This table allows management
       applications to find entries sorted by rtpSenderAddr rather than
       sorted by rtpSessionIndex.  Given the rtpSessionDomain and
       rtpSenderAddr, a set of rtpSessionIndex and rtpSenderSSRC values
       can be returned from a tree walk.  When rtpSessionIndex is
       specified in the SNMP Get-Next operations, one or more
       rtpSenderSSRC values may be returned."
    ::= { rtpMIBObjects 4 }

rtpSenderInverseEntry OBJECT-TYPE
    SYNTAX          RtpSenderInverseEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Each entry corresponds to exactly one entry in the
       rtpSenderTable - the entry containing the index pair,
       rtpSessionIndex, rtpSenderSSRC."
    INDEX { rtpSessionDomain, rtpSenderAddr, rtpSessionIndex,

            rtpSenderSSRC }
    ::= { rtpSenderInverseTable 1 }

RtpSenderInverseEntry ::= SEQUENCE {
        rtpSenderInverseStartTime     TimeStamp
        }

rtpSenderInverseStartTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The value of SysUpTime at the time that this row was
       created."
    ::= { rtpSenderInverseEntry 1 }

--
--  SENDERS TABLE
--
rtpSenderTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF RtpSenderEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Table of information about a sender or senders to an RTP
       Session. RTP sending hosts MUST have an entry in this table
       for each stream being sent.  RTP receiving hosts MAY have an
       entry in this table for each sending stream being received by
       this host.  RTP monitors MUST create an entry for each observed
       sender to a multicast RTP Session as a side-effect when a
       conceptual row in the rtpSessionTable is made 'active' by a
       manager."
    ::= { rtpMIBObjects 5 }

rtpSenderEntry OBJECT-TYPE
    SYNTAX          RtpSenderEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Each entry contains information from a single RTP Sender
       Synchronization Source (SSRC, see RFC 1889 'RTP: A Transport
       Protocol for Real-Time Applications' sec.6).  The session is
       identified to the the SNMP entity by rtpSessionIndex.
       Rows are removed by the RTP agent when a BYE is received
       from the sender or when the sender times out (see RFC
       1889, Sec. 6.2.1) or when the rtpSessionEntry is deleted."
    INDEX { rtpSessionIndex, rtpSenderSSRC }
    ::= { rtpSenderTable 1 }

RtpSenderEntry ::= SEQUENCE {
        rtpSenderSSRC           Unsigned32,
        rtpSenderCNAME          Utf8String,
        rtpSenderAddr           TAddress,
        rtpSenderPackets        Counter64,
        rtpSenderOctets         Counter64,
        rtpSenderTool           Utf8String,
        rtpSenderSRs            Counter32,
        rtpSenderSRTime         TimeStamp,
        rtpSenderPT             INTEGER,
        rtpSenderStartTime      TimeStamp
        }

rtpSenderSSRC OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "The RTP SSRC, or synchronization source identifier of the
       sender.  The RTP session address plus an SSRC uniquely
       identify a sender to an RTP session (see RFC 1889, 'RTP: A
       Transport Protocol for Real-Time Applications' sec.3)."
    ::= { rtpSenderEntry 1 }

rtpSenderCNAME OBJECT-TYPE
    SYNTAX          Utf8String
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The RTP canonical name of the sender."
    ::= { rtpSenderEntry 2 }

rtpSenderAddr OBJECT-TYPE
    SYNTAX          TAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The unicast transport source address of the sender.  In the
       case of an RTP Monitor this address is the address that the
       sender is using to send its RTCP Sender Reports."
    ::= { rtpSenderEntry 3 }

rtpSenderPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "Count of RTP packets sent by this sender, or observed by

       an RTP monitor, since rtpSenderStartTime."
    ::= { rtpSenderEntry 4 }

rtpSenderOctets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "Count of non-header RTP octets sent by this sender, or observed
       by an RTP monitor, since rtpSenderStartTime."
    ::= { rtpSenderEntry 5 }

rtpSenderTool OBJECT-TYPE
    SYNTAX          Utf8String (SIZE(0..127))
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "Name of the application program source of the stream."
    ::= { rtpSenderEntry 6 }

rtpSenderSRs OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "A count of the number of RTCP Sender Reports that have
       been sent from this sender, or observed if the RTP entity
       is a monitor, since rtpSenderStartTime."
    ::= { rtpSenderEntry 7 }

rtpSenderSRTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "rtpSenderSRTime is the value of SysUpTime at the time that
       the last SR was received from this sender, in the case of a
       monitor or receiving host.  Or sent by this sender, in the
       case of a sending host."
    ::= { rtpSenderEntry 8 }

rtpSenderPT OBJECT-TYPE
    SYNTAX          INTEGER (0..127)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "Payload type from the RTP header of the most recently received
       RTP Packet (see RFC 1889, 'RTP: A Transport Protocol for
       Real-Time Applications' sec. 5)."
    ::= { rtpSenderEntry 9 }

rtpSenderStartTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The value of SysUpTime at the time that this row was
       created."
    ::= { rtpSenderEntry 10 }

--
-- RECEIVER INVERSE TABLE
--
rtpRcvrInverseTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF RtpRcvrInverseEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Maps rtpRcvrAddr and rtpSessionIndex to the rtpRcvrSRCSSRC and
       rtpRcvrSSRC indexes of the rtpRcvrTable.  This table allows
       management applications to find entries sorted by rtpRcvrAddr
       rather than by rtpSessionIndex. Given rtpSessionDomain and
       rtpRcvrAddr, a set of rtpSessionIndex, rtpRcvrSRCSSRC, and
       rtpRcvrSSRC values can be returned from a tree walk.  When
       rtpSessionIndex is specified in SNMP Get-Next operations, one or
       more rtpRcvrSRCSSRC and rtpRcvrSSRC pairs may be returned."
    ::= { rtpMIBObjects 6 }

rtpRcvrInverseEntry OBJECT-TYPE
    SYNTAX          RtpRcvrInverseEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Each entry corresponds to exactly one entry in the
       rtpRcvrTable - the entry containing the index pair,
       rtpSessionIndex, rtpRcvrSSRC."
    INDEX { rtpSessionDomain, rtpRcvrAddr,  rtpSessionIndex,
            rtpRcvrSRCSSRC, rtpRcvrSSRC }
    ::= { rtpRcvrInverseTable 1 }

RtpRcvrInverseEntry ::= SEQUENCE {
        rtpRcvrInverseStartTime     TimeStamp
        }

rtpRcvrInverseStartTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The value of SysUpTime at the time that this row was
       created."
    ::= { rtpRcvrInverseEntry 1 }

--
--  RECEIVERS TABLE
--
rtpRcvrTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF RtpRcvrEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Table of information about a receiver or receivers of RTP
       session data. RTP hosts that receive RTP session packets
       MUST create an entry in this table for that receiver/sender
       pair.  RTP hosts that send RTP session packets MAY create
       an entry in this table for each receiver to their stream
       using RTCP feedback from the RTP group.  RTP monitors
       create an entry for each observed RTP session receiver as
       a side effect when a conceptual row in the rtpSessionTable
       is made 'active' by a manager."
    ::= { rtpMIBObjects 7 }

rtpRcvrEntry OBJECT-TYPE
    SYNTAX          RtpRcvrEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
      "Each entry contains information from a single RTP
       Synchronization Source that is receiving packets from the
       sender identified by rtpRcvrSRCSSRC (SSRC, see RFC 1889,
       'RTP: A Transport Protocol for Real-Time Applications'
       sec.6).  The session is identified to the the RTP Agent entity
       by rtpSessionIndex.  Rows are removed by the RTP agent when
       a BYE is received from the sender or when the sender times
       out (see RFC 1889, Sec. 6.2.1) or when the rtpSessionEntry is
       deleted."
    INDEX { rtpSessionIndex, rtpRcvrSRCSSRC, rtpRcvrSSRC }
    ::= { rtpRcvrTable 1 }

RtpRcvrEntry ::= SEQUENCE {
        rtpRcvrSRCSSRC        Unsigned32,
        rtpRcvrSSRC           Unsigned32,
        rtpRcvrCNAME          Utf8String,
        rtpRcvrAddr           TAddress,
        rtpRcvrRTT            Gauge32,
        rtpRcvrLostPackets    Counter64,
        rtpRcvrJitter         Gauge32,
        rtpRcvrTool           Utf8String,
        rtpRcvrRRs            Counter32,
        rtpRcvrRRTime         TimeStamp,
        rtpRcvrPT             INTEGER,
        rtpRcvrPackets        Counter64,
        rtpRcvrOctets         Counter64,
        rtpRcvrStartTime      TimeStamp
        }

rtpRcvrSRCSSRC OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
      "The RTP SSRC, or synchronization source identifier of the
       sender.  The RTP session address plus an SSRC uniquely
       identify a sender or receiver of an RTP stream (see RFC
       1889, 'RTP:  A Transport Protocol for Real-Time
       Applications' sec.3)."
    ::= { rtpRcvrEntry 1 }

the sender and receiver tables are where the RTP session gets its main character energy ๐Ÿ’… we've got the inverse tables for looking things up by address, the sender table for per-stream counters, and the receiver table for who's listening ๐ŸŽ€

the big thing to remember: rtpSessionMonitor defaults depend on your role, and rows get cleaned up when a BYE shows up or the sender times out ๐Ÿงš

๐ŸŽ€ Receiver Table Bits (Part 4) ๐ŸŽ€

okay so the receiver objects are where it gets really cute, bestie ๐Ÿ’– Each one is a read-only peek at one receiver, and rtpRcvrSSRC is the key that tells you which receiver you're looking at ๐Ÿ”‘

rtpRcvrSSRC OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
      "The RTP SSRC, or synchronization source identifier of the
       receiver.  The RTP session address plus an SSRC uniquely
       identify a receiver of an RTP stream (see RFC 1889, 'RTP:
       A Transport Protocol for Real-Time Applications' sec.3)."
    ::= { rtpRcvrEntry 2 }

rtpRcvrCNAME OBJECT-TYPE
    SYNTAX       Utf8String
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
      "The RTP canonical name of the receiver."
    ::= { rtpRcvrEntry 3 }

rtpRcvrAddr OBJECT-TYPE
    SYNTAX       TAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION

      "The unicast transport address on which the receiver is
       receiving RTP packets and/or RTCP Receiver Reports."
    ::= { rtpRcvrEntry 4 }

rtpRcvrRTT OBJECT-TYPE
    SYNTAX       Gauge32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
      "The round trip time measurement taken by the source of the
       RTP stream based on the algorithm described on sec. 6 of
       RFC 1889, 'RTP: A Transport Protocol for Real-Time
       Applications.'  This algorithm can produce meaningful
       results when the RTP agent has the same clock as the stream
       sender (when the RTP monitor is also the sending host for the
       particular receiver).  Otherwise, the entity should return
       'noSuchInstance' in response to queries against rtpRcvrRTT."
    ::= { rtpRcvrEntry 5 }

rtpRcvrLostPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "A count of RTP  packets lost as observed by this receiver
       since rtpRcvrStartTime."
    ::= { rtpRcvrEntry 6 }

rtpRcvrJitter OBJECT-TYPE
    SYNTAX          Gauge32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "An estimate of delay variation as observed by this
       receiver.  (see RFC 1889, 'RTP: A Transport Protocol
       for Real-Time Applications' sec.6.3.1 and A.8)."
    ::= { rtpRcvrEntry 7 }

rtpRcvrTool OBJECT-TYPE
    SYNTAX          Utf8String (SIZE(0..127))
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "Name of the application program source of the stream."
    ::= { rtpRcvrEntry 8 }

rtpRcvrRRs OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "A count of the number of RTCP Receiver Reports that have
       been sent from this receiver, or observed if the RTP entity
       is a monitor, since rtpRcvrStartTime."
    ::= { rtpRcvrEntry 9 }

rtpRcvrRRTime OBJECT-TYPE
    SYNTAX         TimeStamp
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
      "rtpRcvrRRTime is the value of SysUpTime at the time that the
       last RTCP Receiver Report was received from this receiver, in
       the case of a monitor or RR receiver (the RTP Sender).  It is
       the  value of SysUpTime at the time that the last RR was sent by
       this receiver in the case of an RTP receiver sending the RR."
    ::= { rtpRcvrEntry 10 }

rtpRcvrPT OBJECT-TYPE
    SYNTAX          INTEGER (0..127)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "Static or dynamic payload type from the RTP header (see
       RFC 1889, 'RTP: A Transport Protocol for Real-Time
       Applications' sec. 5)."
    ::= { rtpRcvrEntry 11 }

rtpRcvrPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "Count of RTP packets received by this RTP host receiver
       since rtpRcvrStartTime."
    ::= { rtpRcvrEntry 12 }

rtpRcvrOctets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "Count of non-header RTP octets received by this receiving RTP
       host since rtpRcvrStartTime."
    ::= { rtpRcvrEntry 13 }

rtpRcvrStartTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
      "The value of SysUpTime at the time that this row was
       created."
    ::= { rtpRcvrEntry 14 }

๐Ÿงฉ MODULE GROUPS ๐Ÿงฉ

okay so this bit sorts every object into buckets, and the buckets are the vibe ๐Ÿ’… There are two kinds of RTP systems, hosts and monitors, which gives you three flavours of object: the ones both share, the ones only hosts get, and the ones only monitors get. Then there's a fourth bucket for the objects that multicast hosts and monitors should be carrying too ๐Ÿฆ‹

--
--  MODULE GROUPS
--
--
-- There are two types of RTP Systems, RTP hosts and RTP Monitors.
-- Thus there are three kinds of objects: 1) Objects common to both
-- kinds of systems, 2) Objects unique to RTP Hosts and 3) Objects
-- unique to RTP Monitors.  There is a fourth group, 4) Objects that
-- SHOULD be implemented by Multicast hosts and RTP Monitors

rtpGroups OBJECT IDENTIFIER ::= { rtpConformance 1 }
rtpSystemGroup      OBJECT-GROUP
    OBJECTS         {
                    rtpSessionDomain,
                    rtpSessionRemAddr,
                    rtpSessionIfIndex,
                    rtpSessionSenderJoins,
                    rtpSessionReceiverJoins,
                    rtpSessionStartTime,
                    rtpSessionByes,
                    rtpSessionMonitor,
                    rtpSenderCNAME,
                    rtpSenderAddr,
                    rtpSenderPackets,
                    rtpSenderOctets,
                    rtpSenderTool,
                    rtpSenderSRs,
                    rtpSenderSRTime,
                    rtpSenderStartTime,
                    rtpRcvrCNAME,
                    rtpRcvrAddr,
                    rtpRcvrLostPackets,
                    rtpRcvrJitter,
                    rtpRcvrTool,
                    rtpRcvrRRs,
                    rtpRcvrRRTime,
                    rtpRcvrStartTime
                    }
    STATUS          current
    DESCRIPTION
        "Objects available to all RTP Systems."
    ::= { rtpGroups 1 }

rtpHostGroup    OBJECT-GROUP
    OBJECTS     {
                rtpSessionLocAddr,
                rtpSenderPT,
                rtpRcvrPT,
                rtpRcvrRTT,
                rtpRcvrOctets,
                rtpRcvrPackets
                }
    STATUS      current
    DESCRIPTION
           "Objects that are available to RTP Host systems, but may not
            be available to RTP Monitor systems."
    ::= { rtpGroups 2 }

rtpMonitorGroup OBJECT-GROUP
    OBJECTS     {
                rtpSessionNewIndex,
                rtpSessionRowStatus
                }
    STATUS      current
    DESCRIPTION
        "Objects used to create rows in the RTP Session Table.  These
        objects are not needed if the system does not create rows."
    ::= { rtpGroups 3 }

rtpInverseGroup OBJECT-GROUP
    OBJECTS     {
                rtpSessionInverseStartTime,
                rtpSenderInverseStartTime,
                rtpRcvrInverseStartTime
                }
    STATUS      current
    DESCRIPTION
            "Objects used in the Inverse Lookup Tables."
    ::= { rtpGroups 4 }

๐Ÿช„ Compliance ๐Ÿช„

and now the compliance bit, which is basically the rulebook for who has to do what ๐Ÿ“œ Hosts get the strictest treatment, the optional stuff gets clearly labelled as optional, and every object that's allowed to be skipped gets its own little note explaining why ๐Ÿฅบ

--
--  Compliance
--
rtpCompliances OBJECT IDENTIFIER ::= { rtpConformance 2 }

rtpHostCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
            "Host implementations MUST comply."
    MODULE           RTP-MIB
    MANDATORY-GROUPS {
                     rtpSystemGroup,
                     rtpHostGroup
                     }
    GROUP            rtpMonitorGroup
    DESCRIPTION
        "Host systems my optionally support row creation and deletion.
         This would allow an RTP Host system to act as an RTP Monitor."
    GROUP            rtpInverseGroup
    DESCRIPTION
        "Multicast RTP Systems SHOULD implement the optional
         tables."
        OBJECT  rtpSessionNewIndex
            MIN-ACCESS not-accessible
                DESCRIPTION
                 "RTP system implementations support of
                  row creation and deletion is OPTIONAL so
                  implementation of this object is OPTIONAL."
        OBJECT  rtpSessionDomain
           MIN-ACCESS read-only
                DESCRIPTION
                 "RTP system implementation support of
                  row creation and deletion is OPTIONAL.  When
                  it is not supported so write access is
                  OPTIONAL."
        OBJECT  rtpSessionRemAddr
            MIN-ACCESS read-only
              DESCRIPTION
               "Row creation and deletion is OPTIONAL so
                read-create access to this object is OPTIONAL."
        OBJECT  rtpSessionIfIndex
            MIN-ACCESS read-only
              DESCRIPTION
               "Row creation and deletion is OPTIONAL so
                read-create access to this object is OPTIONAL."
        OBJECT  rtpSessionRowStatus
            MIN-ACCESS not-accessible
              DESCRIPTION
               "Row creation and deletion is OPTIONAL so
                read-create access to this object is OPTIONAL."
        OBJECT  rtpSessionInverseStartTime
            MIN-ACCESS not-accessible
              DESCRIPTION
               "Multicast RTP Systems SHOULD implement the optional
                tables."

        OBJECT  rtpSenderInverseStartTime
            MIN-ACCESS not-accessible
              DESCRIPTION
               "Multicast RTP Systems SHOULD implement the optional
                tables."
        OBJECT  rtpRcvrInverseStartTime
            MIN-ACCESS not-accessible
              DESCRIPTION
               "Multicast RTP Systems SHOULD implement the optional
                tables."
    ::= { rtpCompliances 1 }

That's the end of this bit, and the table is still coming up next ๐Ÿ’œ๐ŸŒธ

okay so the Monitor compliance statement is next, and it's giving "you don't have to do everything" energy ๐Ÿงšโœจ

rtpMonitorCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
          "Monitor implementations must comply.  RTP Monitors are not
          required to support creation or deletion."
    MODULE           RTP-MIB
    MANDATORY-GROUPS     {
                         rtpSystemGroup,
                         rtpMonitorGroup
                         }
    GROUP                rtpHostGroup
    DESCRIPTION
        "Monitor implementations may not have access to values in the
         rtpHostGroup."
    GROUP                rtpInverseGroup
    DESCRIPTION
        "Multicast RTP Systems SHOULD implement the optional
         tables."
        OBJECT  rtpSessionLocAddr
            MIN-ACCESS not-accessible
              DESCRIPTION
               "RTP monitor sourcing of RTP or RTCP data packets
                is OPTIONAL and implementation of this object is
                OPTIONAL."
        OBJECT  rtpRcvrPT
            MIN-ACCESS not-accessible
              DESCRIPTION
               "RTP monitor systems may not support
                retrieval of the RTP Payload Type from the RTP
                header (and may receive RTCP messages only).  When
                queried for the payload type information"
        OBJECT  rtpSenderPT
            MIN-ACCESS not-accessible
              DESCRIPTION
               "RTP monitor systems may not support
                retrieval of the RTP Payload Type from the RTP
                header (and may receive RTCP messages only).  When
                queried for the payload type information."
        OBJECT  rtpRcvrOctets
            MIN-ACCESS not-accessible
              DESCRIPTION
               "RTP monitor systems may receive only the RTCP messages
                and not the RTP messages that contain the octet count
                of the RTP message.  Thus implementation of this
                object is OPTIONAL"
        OBJECT  rtpRcvrPackets
            MIN-ACCESS not-accessible
              DESCRIPTION
               "RTP monitor systems may receive only the RTCP messages
                and not the RTP messages that contain the octet count
                of the RTP message.  Thus implementation of this
                object is OPTIONAL."
        OBJECT  rtpSessionIfIndex
            MIN-ACCESS read-only
              DESCRIPTION
               "Row creation and deletion is OPTIONAL so
                read-create access to this object is OPTIONAL."
        OBJECT  rtpSessionInverseStartTime
            MIN-ACCESS not-accessible
              DESCRIPTION
               "Multicast RTP Systems SHOULD implement the optional
                tables."
        OBJECT  rtpSenderInverseStartTime
            MIN-ACCESS not-accessible
              DESCRIPTION
               "Multicast RTP Systems SHOULD implement the optional
                tables."
        OBJECT  rtpRcvrInverseStartTime
            MIN-ACCESS not-accessible
              DESCRIPTION
               "Multicast RTP Systems SHOULD implement the optional
                tables."
    ::= { rtpCompliances 2 }
END

4. Security Considerations ๐Ÿ”’

okay bestie, this part is serious, but it's not scary if we're careful ๐Ÿ’… most of the time a MIB isn't a security risk by itself. if SNMP security is working the way it's supposed to, looking at info about a system (or changing a setting on it) is a tool, not a threat ๐Ÿ› ๏ธ

BUT there are a bunch of objects in this MIB with a MAX-ACCESS of read-write and/or read-create, and those can be sensitive or vulnerable depending on the network. doing SET operations in an unsecured environment without proper protection can seriously mess with network operations, so please don't be casual about it ๐Ÿ˜ญ

none of the read-only objects in this MIB report a password ๐Ÿ™Œ but some SDES [RFC1889] items, like the CNAME [RFC1889] (the canonical name), might count as sensitive depending on an enterprise's security policies. if access to these objects isn't limited by a good access control policy, an attacker could learn about a system's configuration and the services it's running. some companies treat their network and system configs, plus usage and performance info, as corporate assets, so they may want to lock down SNMP access to most of the objects in the MIB ๐Ÿ”

this MIB supports read-write operations on rtpSessionNewIndex, and writing to it creates an entry in the rtpSessionTable ๐Ÿ‘€ there are also five objects in rtpSessionEntry with read-create access: rtpSessionDomain, rtpSessionRemAddr, rtpSessionIfIndex, rtpSessionRowStatus, and rtpSessionIfAddr. together they identify an RTP session to be monitored on a particular interface. their values shouldn't be changed once created, and setting them up only affects monitoring of the RTP session, not how the session runs on any host end-system. because writes to rtpSessionNewIndex and those five objects affect the monitor's operation, write access to them should be subject to the appropriate access control policy ๐Ÿ’–

confidentiality of RTP and RTCP data packets is covered in section 9 of the RTP specification [RFC1889]. encryption can be applied to RTP packets, RTCP packets, or both. encrypting RTCP might cause problems for third-party monitors though. quoting the spec directly: "For RTCP, it is allowed to split a compound RTCP packet into two lower-layer packets, one to be encrypted and one to be sent in the clear. For example, SDES information might be encrypted while reception reports were sent in the clear to accommodate third-party monitors [RFC1889]."

SNMPv1 by itself is not a secure environment ๐Ÿšจ even if the network is secure (for example, by using IPSec), there's no control over who on that secure network can access and GET/SET (read/change/create/delete) the objects in this MIB. it's recommended that implementers consider the security features provided by the SNMPv3 framework. specifically, the User-based Security Model RFC 2574 [RFC2574] and the View-based Access Control Model RFC 2575 [RFC2575] are recommended. then it's a customer/user responsibility to make sure the SNMP entity giving access to an instance of this MIB is properly configured, so only principals (users) with legitimate rights can GET or SET (change/create/delete) those objects ๐Ÿซถ


5. Acknowledgements ๐Ÿซถ

big thank-you energy to Bert Wijnen and the folks from the ITU SG-16 management effort for their helpful comments ๐Ÿ’œ Alan Batie and Bill Lewis from Intel also contributed hugely to the RTP MIB by reviewing a bunch of drafts and working on an SNMP RTP Monitor implementation ๐Ÿ™Œ Stan Naudus from 3Com and John Du from Intel helped with the original RTP MIB design and co-authored the original RTP MIB draft documents, and a lot of their work is still in the current RTP MIB ๐ŸŒธ finally, Bill Fenner gave solid feedback that made the final document way better โญ

6. Intellectual Property ๐Ÿฆ‹

the IETF doesn't take a position on whether any intellectual property or other rights claimed for the technology in this document are valid or in scope, or whether any license to them is available. it also doesn't say it has tried to find any such rights. info about IETF procedures for rights in standards-track and standards-related documentation is in BCP-11 ๐Ÿ“š claims of rights made available for publication, any assurances of licenses, or the results of attempts to get a general license or permission for implementors or users can be requested from the IETF Secretariat.

the IETF also invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that might cover technology required to practice this standard. send that info to the IETF Executive Director ๐Ÿ’Œ

7. References ๐Ÿ“š

[RFC1889]   Shulzrinne, H., Casner, S., Frederick, R. and V.
            Jacobson, "RTP: A Transport Protocol for real-time
            applications," RFC 1889, January 1996.

[RFC2571]   Harrington, D., Presuhn, R. and B. Wijnen, "An
            Architecture for Describing SNMP Management Frameworks",
            RFC 2571, April 1999.

[RFC1155]   Rose, M. and K. McCloghrie, "Structure and Identification
            of Management Information for TCP/IP-based Internets",
            STD 16, RFC 1155, May 1990.

[RFC1212]   Rose, M. and K. McCloghrie, "Concise MIB Definitions",
            STD 16, RFC 1212, March 1991.

[RFC1215]   Rose, M., "A Convention for Defining Traps for use with
            the SNMP", RFC 1215, March 1991.

[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.

[RFC1157]   Case, J., Fedor, M., Schoffstall, M. and J. Davin,
            "Simple Network Management Protocol", STD 15, RFC 1157,
            May 1990.

[RFC1901]   Case, J., McCloghrie, K., Rose, M. and S. Waldbusser,
            "Introduction to Community-based SNMPv2", RFC 1901,
            January 1996.

[RFC1906]   Case, J., McCloghrie, K., Rose, M. and S. Waldbusser,
            "Transport Mappings for Version 2 of the Simple Network
            Management Protocol (SNMPv2)", RFC 1906, January 1996.

[RFC2572]   Case, J., Harrington D., Presuhn R. and B. Wijnen,
            "Message Processing and Dispatching for the Simple
            Network Management Protocol (SNMP)", RFC 2572, April
            1999.

[RFC2574]   Blumenthal, U. and B. Wijnen, "User-based Security Model
            (USM) for version 3 of the Simple Network Management
            Protocol (SNMPv3)", RFC 2574, April 1999.

[RFC1905]   Case, J., McCloghrie, K., Rose, M. and S. Waldbusser,
            "Protocol Operations for Version 2 of the Simple Network
            Management Protocol (SNMPv2)", RFC 1905, January 1996.

[RFC2573]   Levi, D., Meyer, P. and B. Stewart, "SNMPv3
            Applications", RFC 2573, April 1999.

[RFC2575]   Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based
            Access Control Model (VACM) for the Simple Network
            Management Protocol (SNMP)", RFC 2575, April 1999.

[RFC2570]   Case, J., Mundy, R., Partain, D. and B. Stewart,
            "Introduction to Version 3 of the Internet-standard
            Network
             Management Framework", RFC 2570, April 1999.

8. Authors' Addresses โœจ

Meet the squad behind this one ๐Ÿซถ Here are the three authors and where to find them:

Mark Baugher
Intel Corporation
2111 N.E.25th Avenue
Hillsboro, Oregon  97124
U.S.A.

EMail: mbaugher@passedge.com
Bill Strahm
Intel Corporation
2111 N.E.25th Avenue
Hillsboro, Oregon  97124
U.S.A.

EMail: Bill.Strahm@intel.com
Irina Suconick
Ennovate Networks
60 Codman Hill Rd.,
Boxboro, Ma 01719
U.S.A.

EMail: irina@ennovatenetworks.com

Okay, now the legal bit, and I'm keeping this one word-for-word because it's a license and changing a single word could change what it means ๐Ÿ“œ

Copyright (C) The Internet Society (2000). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS 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.


Acknowledgement ๐ŸŒธ

Last but not least, a big thank you to the people keeping the lights on ๐Ÿ’–

Funding for the RFC Editor function is currently provided by the Internet Society. ๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from