Internet Draft   RTP MIB                                March 24, 1997


                 Real-Time Transport Protocol
                 Management Information Base
               <draft-ietf-avt-rtp-mib-00.txt>

                        March 24, 1997

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

                    mbaugher@ibeam.intel.com


                            John Du
                       Intel Corporation
                      2111 N.E.25th Avenue
                    Hillsboro, Oregon  97124

                    John_Du@ccm.jf.intel.com


                          Stan Naudus
                  U.S. Robotics, Incorporated
                     2070 Chain Bridge Road
                        Vienna, Virginia

                       snaudus@usrva.co


1.  Status of this Memo

This document is an Internet-Draft.  Internet-Drafts are
working documents of the Internet Engineering Task Force
(IETF), its areas, and its working groups.  Note that other
groups may also distribute working documents as Internet-
Drafts.

Internet-Drafts are draft documents valid for a maximum of six
months.  Internet-Drafts may be updated, replaced, or made
obsolete by other documents at any time.  It is not
appropriate to use Internet-Drafts as reference material or to
cite them other than as a ``working draft'' or ``work in
progress.''

To learn the current status of any Internet-Draft, please
check the 1id-abstracts.txt listing contained in the Internet-
Drafts Shadow Directories on ds.internic.net, nic.nordu.net,
venera.isi.edu, or munnari.oz.au.


Baugher, Du, Naudus  Expires September 24, 1997        [Page 1]


Internet Draft   RTP MIB                                March 24, 1997



2.  Abstract

This memo defines an experimental  Management Information Base
(MIB) for use with network management protocols in
TCP/IP-based internets.  In particular, it defines objects for
managing Real-Time Transport Protocol Systems [1].  Comments
should be made to the IETF Audio/Video Transport Working Group.

This memo does not specify a standard for the Internet
community.


3.  The Network Management Framework

The SNMPv2 Network Management Framework consists of the
following major components:

RFC 1902 which defines the SMI, the mechanisms used for
describing and naming objects for the purpose of management.

RFC 1903 Textual Conventions for Version 2 of the Simple
Network Management Protocol (SNMPv2).

RFC 1904 Conformance Statements for Version 2 of the
Simple Network Management Protocol (SNMPv2).

RFC 1905 Protocol Operations for Version 2 of the
Simple Network Management Protocol (SNMPv2).

RFC 1906 Transport Mappings for Version 2 of the
Simple Network Management Protocol (SNMPv2).

RFC 1907 Management Information Base for Version 2 of
the Simple Network Management Protocol (SNMPv2).

RFC 1908 Coexistence between Version 1 and Version 2 of
the Internet-standard Network Management Framework.

The Framework permits new objects to be defined for the
purpose of experimentation and evaluation.

Managed objects are accessed via a virtual information store,
termed the Management Information Base or MIB.  Within a given
MIB module, objects are defined using the SMI's OBJECT-TYPE
macro[2].  At a minimum, each object has a name, a syntax, an
access-level, and an implementation-status.




Baugher, Du, Naudus  Expires September 24, 1997        [Page 2]


Internet Draft   RTP MIB                                March 24, 1997



The name is an object identifier, an administratively assigned
name, which specifies an object type.  The object type
together with an object instance serves to uniquely identify a
specific instantiation of the object.  For human convenience,
we often use a textual string, termed the object descriptor,
to also refer to the object type.

The syntax of an object type defines the abstract data
structure corresponding to that object type.  The ASN.1[3]
language is used for this purpose.  However, RFC 1902
purposely restricts the ASN.1 constructs which may be used.
These restrictions are made for simplicity.

The access-level of an object type defines whether it makes
"protocol sense" to read and/or write the value of an instance
of the object type.  (This access-level is independent of any
administrative authorization policy.)

The implementation-status of an object type indicates whether
the object is mandatory, optional, obsolete, or deprecated.


4. Overview

An "RTP System" is an end-system or an intermediate-system that
has one or more RTP Sessions with one or more RTP Data Streams.
Each RTP Data Stream is either being transmitted or received by
one RTP Session Participant.  An RTP Control Stream (RTCP)
which describes an RTP Data Stream that is being transmitted or
received is sent on behalf of each Participant[1].


4.1 Components

There are four component objects of the RTP MIB.

4.1.1  An "RTP Session" is defined by an IP address and a pair of
transport-layer port numbers, this is a "Session Address".  There
is one Session Address for a multicast session and two for unicast.

4.1.2 An "RTP Data Stream" is a sequence of packets sent to the
even-numbered port of the RTP Session when UDP is used to transport
the RTP data. Data streams are uniquely identified within an RTP
Session by "SSRC" attributes.

4.1.3 An RTP "Participant" is either a source or a receiver of
an RTP Data Stream, and has a session-unique "CNAME" attribute.



Baugher, Du, Naudus  Expires September 24, 1997        [Page 3]


Internet Draft   RTP MIB                                March 24, 1997



4.1.4 An "RTP Control Stream" is a sequence of packets sent by
the sending host of an RTP Data Stream, or a sequence of
packets sent by the receiving host of an RTP Data Stream that
describe the RTP Data Stream attributes, state, and statistics.


4.2 Applicability of the MIB to RTP System Implementations

The RTP MIB may be used in four types of RTP Systems [1].

4.2.1 RTP host-systems are end-systems that may use the RTP MIB
to collect RTP Session and Stream data; these data may be used
by a network manager to diagnose faults that occur during or after
the commencement of an RTP Session as in a "help-desk" scenario.

4.2.2 RTP 3rd-party Monitors of multicast RTP sessions are
end-systems that may use the RTP MIB to collect RTP Session
and Stream statistical data; these data may be used by a Network
Manager for capacity planning and other network-management purposes.
An RTP Monitor may also use the RTP MIB to collect data to permit a
network manager to diagnose faults in RTP sessions, or to permit a
network manger to configure the Monitor.

4.2.3 RTP Translators are intermediate-systems that map RTP sessions
onto other RTP sessions for such purposes as address translation
and the transcoding of RTP session data.  An RTP Translator may use
the RTP MIB to collect session and stream data needed by a network
manager to diagnose faults and monitor performance.

4.2.4 RTP Mixers are specialized Translators that multiplex RTP
session data.  The RTP MIB may be used to support management
of a Mixer in ways similar to a Translator.


4.3  The Structure of the RTP MIB

There are two modules in the RTP MIB:  The RTP-SYSTEM module
is used for all RTP Systems, but the RTP-IS module is designed
for RTP Monitors and Intermediate Systems such as Translators
and Mixers.  There are two tables in RTP-SYSTEM and three tables in
RTP-IS.

RTP-SYSTEM Tables:
      rtpInTable
      rtpEgTable





Baugher, Du, Naudus  Expires September 24, 1997        [Page 4]


Internet Draft   RTP MIB                                March 24, 1997


The attribute, state and statistical information of the components
described in section 4.1 compose the column objects of the tables.
Since there are 1:N mappings between some of the components, a
more structured and efficient representation would create separate
tables for some of the components, such as a Session table, and this
would make some streams table columns redundant (i.e., obtainable
through a join).  The two-table model is proposed here for the sake
of simplicity in the management entity and management application.

rtpEgTable is the egress streams table that will contain rows of
information about streams being sent by an RTP System.  The
rtpInTable is the ingress streams table that will contain rows of
information about streams being received by an RTP System.  The
rows are uniquely identified by the incoming session address, in
the case of ingress streams, or the outgoing RTP session address
in the egress streams case, Section 4.1.1, and by the SSRC
information, Section 4.1.2.  The information in the table includes
the information from the RTCP reports, Section 4.1.4. The ingress
streams table also contains information used for loop detection[1].

In a host, Translator or Mixer, a row is maintained in the rtpInTable
for each RTP data stream that is being received, and a row is to be
maintained in the rtpEgTable for each RTP data stream that is being
sent. In a 3rd-party Monitor, the rtpEgTable contains management
information about streams being sent to the session, and the rtpInTable
contains information about streams being received for the session.  A
row is removed when the session inactive time exceeds the session
timeout value[1], as a result of an RTCP BYE message being sent for the
ingress or egress stream, or as a result of some higher-level protocol
stopping stream or session operations.  The rtpEgTable and the
rtpInTable are read-only, though one RTP-IS table, the rtpSessionTable,
does feature write access.

RTP-IS Tables:
      rtpSessionTable
      rtpSessionIndexTable
      rtpSessionMapTable

The RTP-IS tables maintain the list of RTP sessions, provide a means
to obtain an index to each RTP session in the rtpSessionTable, and
to support a trace of mapped sessions.  The network manager has write
access to the rtpSessionTable to create sessions for the purpose of
monitoring.








Baugher, Du, Naudus  Expires September 24, 1997        [Page 5]


Internet Draft   RTP MIB                                March 24, 1997



4.4  SNMP Implementations

Although an RTP System that runs either a single application or
multiple applications with a single management-entity may be a
practical configuration for monitoring, translating or mixing, for
host end-systems (i.e. the vast majority of RTP implementations),
such a "monolithic" solution may be inadequate if management of
RTP end-systems proves to be truly useful.  The RTP-SYSTEM module
described in 4.3 contains tables that may be shared among RTP
application programs that run concurrently on the same device.
Sharing occurs on a table basis, and this is a complication.  Rows
in the RTP MIB tables, however, probably do not need to be shared
among multiple RTP application programs since each row is uniquely
identified by RTP Session and SSRC pairs which are not shared among
RTP application programs, or at least by a single RTP management entity
by assumption.  Table sharing, however, is a problem for SNMP management
entities:  All SNMP management requests are sent to UDP Port 161, and
special procedures are generally needed for an SNMP Agent to support
multiple management entities that share the object name space[4].


+------------------------+     +------------------------+
|     +-----------------+|     |     +-----------------+|
|     |     +----------+||     |     |     +----------+||
| APP | RTP | SUBAGENT ||| ... | APP | RTP | SUBAGENT |||
|     |     +----------+||     |     |     +----------+||
|     +-----------------+|     |     +-----------------+|
+------------------------+     +------------------------+
        --  e.g., flavors of DPI[5], AgentX[6] --
               +--------------------------+
               |                          |
               |        SNMP AGENT        |
               |                          |
               +--------------------------+
                    -- UDP Port 161 --

Figure 1:  Relationship of Application RTP Subagent to SNMP Agent

Thus, some means are needed so that operations against RTP MIB
objects in a shared name space can be properly routed and received by
the SNMP Agent.  Figure 1 shows multiple application programs having
RTP embedded in them.  Not shown is the management entity, which is
assumed to be part of the RTP System.  A "Subagent" may be embedded in







Baugher, Du, Naudus  Expires September 24, 1997        [Page 6]


Internet Draft   RTP MIB                                March 24, 1997



the application program, or linked to the application program's
management entity in a variety of ways that are not of interest to this
memo.  A straightforward implementation would embed the subagent in the
application program as shown in Figure 1.  There is one Experimental
approach, DPI[5], and some ongoing work, named "Agentx"[6], for
supporting the structure shown in Figure 1.

The agent extensions needed to support the RTP MIB in a general-purpose
operating environment may be modest if the four assumptions listed
below prove to be true.

4.4.1  The ingress and egress stream tables may be shared.  Any
RTP application program may have zero or more streams being sent
and/or received, but stream-table rows are uniquely-identified by a
combination of session and SSRC index values that are not shared across
RTP management entities.

4.4.2  Since the ingress and egress stream tables are read-only, there
are no requirements to support concurrent SNMP SET operations.

4.4.3 The session tables in RTP-IS in section 4.3, are not shared
by multiple subagents by assumption.

4.4.4 There is no need to share table indices or support intra-subagent
communication given the RTP-SYSTEM MIB described in sections 4.3 and
defined in 5.0.


4.5  Proxy Implementations

An "RTP management proxy" may map the RTP MIB onto other management
systems: A variety of management systems beyond SNMP may be make use of
the RTP MIB to support SNMP management queries. A relatively simple
definition of the RTP MIB should make it relatively easier to implement
on a variety of systems-management platforms.















Baugher, Du, Naudus  Expires September 24, 1997        [Page 7]


Internet Draft   RTP MIB                                March 24, 1997



5.  RTP MIB Definitions


5.1 RTP-SYSTEM MODULE

-- rtp.mi2 contains an experimental SMIv2 MIB for RTP (RFC 1889).
-- rtp.mi2 has two modules
--   1. RTP-SYSTEM
--   2. RTP-IS
--
-- *****************
-- RTP-SYSTEM MODULE
-- *****************
RTP-SYSTEM DEFINITIONS ::= BEGIN
        IMPORTS
                Counter32, experimental, Gauge32,MODULE-IDENTITY,
                OBJECT-IDENTITY, OBJECT-TYPE
                        FROM SNMPv2-SMI
                OBJECT-GROUP, MODULE-COMPLIANCE
                        FROM SNMPv2-CONF;

        rtpSystem MODULE-IDENTITY
                LAST-UPDATED "9703241800Z"
                ORGANIZATION "IETF AVT Working Group"
                CONTACT-INFO
                "       Mark Baugher
                Postal: Intel Corporation
                        2111 NE 25th Avenue
                        Hillsboro, OR   97124
                Tel:    +1 503 264 3849
                Email:  mbaugher@intel.com"

                DESCRIPTION
                "The MIB module that describes managed objects of
                 general use by RTP Systems.  This module has two
                 tables of information about RTP streams.
                 1. A information table about RTP streams being sent to
                    a session by a particular source.
                 2. A table of information about RTP streams received
                    by a particular SSRC."
        ::= { experimental 9999 1 }

        rtp OBJECT-IDENTITY
               STATUS         current
               DESCRIPTION
                        "The root of RTP Object-identifiers."
               ::= { experimental 9999 }



Baugher, Du, Naudus  Expires September 24, 1997        [Page 8]


Internet Draft   RTP MIB                                March 24, 1997



--
--      OBJECTS
--
--      Stream Tables:
--      Egress streams are sourced by an RTP System to an RTP Session.
--      Ingress Streams are received by an SSRC from an RTP Session.
--      Egress and Ingress Streams have distinct state and attributes
--
--      EGRESS STREAMS TABLE
--      An RTP System sources zero or more Egress Streams to a Session
--
        rtpEgTable OBJECT-TYPE
                SYNTAX  SEQUENCE OF RtpEgEntry
                MAX-ACCESS not-accessible
                STATUS current
                DESCRIPTION
                "Data in rtpEgTable are associated with an RTP
                data-stream that is sourced from an RTP System.  This
                table will at least contain a row for each stream being
                sourced (egress stream) from the local RTP System."
                ::= { rtpSystem 1 }

        rtpEgEntry OBJECT-TYPE
                SYNTAX RtpEgEntry
                MAX-ACCESS not-accessible
                STATUS current
                DESCRIPTION
                "Columnar objects include Egress Stream state,
                attributes and statistics from the RTP packet header,
                RTCP SR PDU, and RTCP SDES PDU.  Table rows cannot be
                created nor deleted via SNMP operations."
                INDEX { rtpEgNetAddr, rtpEgPort, rtpEgSSRC }
                ::= { rtpEgTable 1 }

        RtpEgEntry ::= SEQUENCE {
                rtpEgNetAddr      OCTET STRING (SIZE(4..16)),
                rtpEgPort         INTEGER(1..65535),
                rtpEgSSRC         INTEGER,
                rtpEgCNAME        OCTET STRING,
                rtpEgPT           INTEGER,
                rtpEgSentPackets  Counter32,
                rtpEgSentOctets   Counter32,
                rtpEgTool         OCTET STRING,
                rtpEgInactiveTime Gauge32
                }





Baugher, Du, Naudus  Expires September 24, 1997        [Page 9]


Internet Draft   RTP MIB                                March 24, 1997



       rtpEgNetAddr            OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(4..16))
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Session destination network address attribute."
                ::= { rtpEgEntry 1}


        rtpEgPort OBJECT-TYPE
                SYNTAX          INTEGER(1..65535)
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Session destination transport address attribute."
                ::= { rtpEgEntry 2}

        rtpEgSSRC OBJECT-TYPE
                SYNTAX          INTEGER(1..4294967295)
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Attribute uniquely identifies the stream sender."
                ::= { rtpEgEntry 3}


        rtpEgCNAME OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(1..128))
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Attribute uniquely identifies the SSRC participant"
                ::= { rtpEgEntry 4}

        rtpEgPT OBJECT-TYPE
                SYNTAX          INTEGER (1..128)
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Static or dynamic Payload Type state variable from
                the RTP header."
                ::= { rtpEgEntry 5}








Baugher, Du, Naudus  Expires September 24, 1997        [Page 10]


Internet Draft   RTP MIB                                March 24, 1997


        rtpEgSentPackets OBJECT-TYPE
                SYNTAX          Counter32
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Count statistic of packets sent from this SSRC."
                ::= { rtpEgEntry 6}

        rtpEgSentOctets OBJECT-TYPE
                SYNTAX          Counter32
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Count statistic of octets sent from this SSRC."
                ::= { rtpEgEntry 7 }

        rtpEgTool OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(1..128))
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "State variable names the tool sourcing the stream."
                ::= { rtpEgEntry 8 }

        rtpEgInactiveTime   OBJECT-TYPE
                SYNTAX          Gauge32
                UNITS           "milliseconds"
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Elapsed time since last stream packet."
                ::= { rtpEgEntry 9 }



















Baugher, Du, Naudus  Expires September 24, 1997        [Page 11]


Internet Draft   RTP MIB                                March 24, 1997



--
--      INGRESS STREAMS TABLE
--      RTP System has zero or more Ingress Streams per RTP Session.
--      RTP Streams are received from multiple RTP Session senders,
--      Multiple, local participants may receive a given RTP Stream.
--      Each stream received by a Participant is an Ingress Stream row.
--      This table contains RTCP RR, RFC 1989 "loop list" information.

        rtpInTable OBJECT-TYPE
                SYNTAX           SEQUENCE OF RtpInEntry
                MAX-ACCESS       not-accessible
                STATUS           current
                DESCRIPTION
                "Data in the rtpInTable identify the stream and session,
                state and statistics, and include information needed by
                an RTP receiver to detect loops. This table will at
                least contain a row for each stream being received
                (ingress stream) by some SSRC on the local RTP System."
                ::= { rtpSystem 2 }

        rtpInEntry OBJECT-TYPE
                SYNTAX          RtpInEntry
                MAX-ACCESS      not-accessible
                STATUS          current
                DESCRIPTION
                "An rtpInTable entry uniquely identifies an RTP
                Data Stream received by an RTP receiver/Participant.
                There is an rtpInEntry for each stream received
                by the local RTP System.  Columnar objects describe
                state, attributes and statistics from the RTP packet
                header, RTCP RR PDU, and RTCP SDES PDU.  Table rows
                cannot be created nor deleted via SNMP operations."
                INDEX { rtpInNetAddr,   rtpInPort,
                        rtpInLocalSSRC, rtpInRemoteSSRC }
                ::= { rtpInTable 1 }















Baugher, Du, Naudus  Expires September 24, 1997        [Page 12]


Internet Draft   RTP MIB                                March 24, 1997



        RtpInEntry ::= SEQUENCE {
                rtpInNetAddr      OCTET STRING (SIZE(4..16)),
                rtpInPort         INTEGER(1..65535),
                rtpInLocalSSRC    INTEGER,
                rtpInRemoteSSRC   INTEGER,
                rtpInRemoteCNAME  OCTET STRING,
                rtpInPT           INTEGER,
                rtpInRemoteAddr   OCTET STRING (SIZE(4..16)),
                rtpInRemotePort   INTEGER(1..65535),
                rtpInFracLost     Gauge32,
                rtpInLostPackets  Counter32,
                rtpInOctets       Counter32,
                rtpInTool         OCTET STRING,
                rtpInInactiveTime Gauge32
                }

      rtpInNetAddr OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(4..16))
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "The Network Address of a multicast RTP Session, or
                the Network Address of this end of a unicast RTP
                Session (remote end is rtpInRemoteAddr)."
                ::= { rtpInEntry 1}


       rtpInPort  OBJECT-TYPE
                SYNTAX          INTEGER(1..65535)
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "The transport-layer port of a multicast RTP Session,
                or the transport-layer port of this end of a unicast
                RTP Session (remote is rtpInRemotePort)."
                ::= { rtpInEntry 2}

       rtpInLocalSSRC OBJECT-TYPE
                SYNTAX          INTEGER(1..4294967295)
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Identifies receiver/participant."
                ::= { rtpInEntry 3}






Baugher, Du, Naudus  Expires September 24, 1997        [Page 13]


Internet Draft   RTP MIB                                March 24, 1997



       rtpInRemoteSSRC OBJECT-TYPE
                SYNTAX          INTEGER(1.. 4294967295)
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "identifies remote sender/participant."
                ::= { rtpInEntry 4 }

       rtpInPT OBJECT-TYPE
                SYNTAX          INTEGER(1..128)
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Payload Type state variable."
                ::= { rtpInEntry 5 }

        rtpInRemoteCNAME OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(1..128))
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "attribute uniquely identifies receiver/participant."
                ::= { rtpInEntry 6 }

        rtpInRemoteAddr OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(4..16))
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "The Network Address of the stream source."
                ::= { rtpInEntry 7 }

        rtpInRemotePort OBJECT-TYPE
                SYNTAX          INTEGER(1..65535)
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "The source transport-layer port of this streams."
                ::= { rtpInEntry 8 }











Baugher, Du, Naudus  Expires September 24, 1997        [Page 14]


Internet Draft   RTP MIB                                March 24, 1997


       rtpInFracLost OBJECT-TYPE
                SYNTAX          Gauge32
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Statistic identifies the fraction of lost packets in
                the receive stream relative to the total packets."
                ::= { rtpInEntry 9 }

       rtpInLostPackets OBJECT-TYPE
                SYNTAX          Counter32
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Statistic identifies the total number of packets
                lost from the receive stream."
                ::= { rtpInEntry 10 }

       rtpInOctets OBJECT-TYPE
                SYNTAX          Counter32
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Statistic total of the number of octets received on
                the receive stream."
                ::= { rtpInEntry 11 }

       rtpInTool OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(1..128))
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "optional tool identifier state variable."
                ::= { rtpInEntry 12 }

        rtpInInactiveTime   OBJECT-TYPE
                SYNTAX          Gauge32
                UNITS           "milliseconds"
                MAX-ACCESS      read-only
                STATUS          current
                DESCRIPTION
                "Elapsed time since last stream packet."
                ::= { rtpInEntry 13 }








Baugher, Du, Naudus  Expires September 24, 1997        [Page 15]


Internet Draft   RTP MIB                                March 24, 1997


--
--      GROUPS
--
        rtpSystemGroup      OBJECT-GROUP
                OBJECTS          {
                                  rtpEgNetAddr,
                                  rtpEgPort,
                                  rtpEgSSRC,
                                  rtpEgCNAME,
                                  rtpEgPT,
                                  rtpEgSentPackets,
                                  rtpEgSentOctets,
                                  rtpEgTool,
                                  rtpEgInactiveTime,
                                  rtpInLocalSSRC,
                                  rtpInRemoteSSRC,
                                  rtpInNetAddr,
                                  rtpInPort,
                                  rtpInRemoteCNAME,
                                  rtpInPT,
                                  rtpInRemoteAddr,
                                  rtpInRemotePort,
                                  rtpInFracLost,
                                  rtpInLostPackets,
                                  rtpInOctets,
                                  rtpInTool,
                                  rtpInInactiveTime
                                  }
                STATUS           current
                DESCRIPTION
                "Objects used to define RTP streams."
        ::= { rtpSystem 9 }



















Baugher, Du, Naudus  Expires September 24, 1997        [Page 16]


Internet Draft   RTP MIB                                March 24, 1997


        rtpSystemCompliance MODULE-COMPLIANCE
                STATUS          current
                DESCRIPTION     "All objects are mandatory with the
                                 the exceptions listed below."
                MODULE RTP-SYSTEM
                MANDATORY-GROUPS { rtpSystemGroup }
                OBJECT rtpInPT
                        MIN-ACCESS  not-accessible
                        DESCRIPTION "This object is not always
                                     obtainable, and is optional"
                OBJECT rtpInTool
                        MIN-ACCESS  not-accessible
                        DESCRIPTION "This object is not always
                                     obtainable, and is optional"
                OBJECT rtpEgPT
                        MIN-ACCESS  not-accessible
                        DESCRIPTION "This object is not always
                                     obtainable, and is optional"
                OBJECT rtpEgTool
                        MIN-ACCESS  not-accessible
                        DESCRIPTION "This object is not always
                                     obtainable, and is optional"
       ::= { rtpSystem 10 }
END



























Baugher, Du, Naudus  Expires September 24, 1997        [Page 17]


Internet Draft   RTP MIB                                March 24, 1997



--    ******
--    RTP-IS
--    ******
RTP-IS DEFINITIONS ::= BEGIN
        IMPORTS
                MODULE-IDENTITY, OBJECT-TYPE
                        FROM SNMPv2-SMI
                RowStatus
                        FROM SNMPv2-TC
                OBJECT-GROUP, MODULE-COMPLIANCE
                        FROM SNMPv2-CONF
                rtp
                        FROM RTP-SYSTEM;

        rtpIS MODULE-IDENTITY
                LAST-UPDATED "9703241800Z"
                ORGANIZATION "IETF AVT Working Group."
                CONTACT-INFO
                "       Mark Baugher
                Postal: Intel Corporation
                        2111 NE 25th Avenue
                        Hillsboro, OR   97124
                Tel:    +1 503 264 3849
                Email:  mbaugher@intel.com"
                DESCRIPTION
                "The MIB module for use by Real-Time Transport Protocol
                Intermediate-Systems, such as Translators and Mixers,
                and by RTP 3rd-party multicast monitors."
        ::= { rtp 2 }

--
--      SESSION TABLE
--      There's a row instance for each RTP Session on an RTP System
--
        rtpSessionTable OBJECT-TYPE
                SYNTAX  SEQUENCE OF RtpSessionEntry
                MAX-ACCESS not-accessible
                STATUS current
                DESCRIPTION
                "There's one entry in the SessionTable for each Session
                that has a corresponding egress or ingress stream.
                Row creation has the side effect of causing the RTP
                System to join the session for the purposes of gathering
                management information."
                ::= { rtpIS 1 }





Baugher, Du, Naudus  Expires September 24, 1997        [Page 18]


Internet Draft   RTP MIB                                March 24, 1997



        rtpSessionEntry OBJECT-TYPE
                SYNTAX RtpSessionEntry
                MAX-ACCESS not-accessible
                STATUS current
                DESCRIPTION
                "Data in rtpSessionTable either uniquely identify an RTP
                session, or are attributes, statistics, or state
                associated with an RTP session.  Rows of the
                rtpSessionTable can be created and deleted via SNMP
                operations."
                INDEX { rtpSessionIndex }
                ::= { rtpSessionTable 1 }

        RtpSessionEntry ::= SEQUENCE {
                rtpSessionIndex         INTEGER(1..65535),
                rtpSessionAddr          OCTET STRING (SIZE(4..16)),
                rtpSessionPort          INTEGER(1..65535),
                rtpSessionIf            OCTET STRING (SIZE(4..16)),
                rtpSessionOwner         OCTET STRING (SIZE(64)),
                rtpSessionRowStatus     RowStatus
                }

        rtpSessionIndex OBJECT-TYPE
                SYNTAX          INTEGER(1..65535)
                MAX-ACCESS      not-accessible
                STATUS          current
                DESCRIPTION
                "Specifies the value of the rtpSessionTable index."
                ::= { rtpSessionEntry 1}

        rtpSessionAddr OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(4..16))
                MAX-ACCESS      read-create
                STATUS          current
                DESCRIPTION
                "The destination IP address of RTP Session streams."
                ::= { rtpSessionEntry 2}

        rtpSessionPort OBJECT-TYPE
                SYNTAX          INTEGER(1..65535)
                MAX-ACCESS      read-create
                STATUS          current
                DESCRIPTION
                "The destination transport-layer port of RTP Session
                streams; this is the even port of the even-odd pair
                when UDP is used as the transport for RTP streams."
                ::= { rtpSessionEntry 3}



Baugher, Du, Naudus  Expires September 24, 1997        [Page 19]


Internet Draft   RTP MIB                                March 24, 1997



        rtpSessionIf OBJECT-TYPE
                SYNTAX          OCTET STRING (SIZE(4..16))
                MAX-ACCESS      read-create
                STATUS          current
                DESCRIPTION
                "The local interface network address where RTP
                data packets are sent and received for session."
                ::= { rtpSessionEntry 4}

        rtpSessionOwner OBJECT-TYPE
                SYNTAX          OCTET STRING(SIZE(64))
                MAX-ACCESS      read-create
                STATUS          current
                DESCRIPTION
                "This manager created the session.  Other managers
                wishing to monitor the session defined by the tuple
                <session-net-addr, session-port, interface>, cannot do
                so until this manager destroys the particular row; these
                semantics are forced by the 1:1 mapping of the row index
                to the session tuple enforced by rtpSessionIndexTable."
                ::= { rtpSessionEntry 5 }


        rtpSessionRowStatus OBJECT-TYPE
                SYNTAX          RowStatus
                MAX-ACCESS      read-create
                STATUS          current
                DESCRIPTION
                "Session entries can be created by a manager."
                ::= { rtpSessionEntry 6}
--
--    SESSION INDEX QUERY
--
      rtpSessionIndexTable  OBJECT-TYPE
               SYNTAX         SEQUENCE OF RtpSessionIndexEntry
               MAX-ACCESS       not-accessible
               STATUS         current
               DESCRIPTION
               "Management entity stores the rtpSessionIndex into
               a row of this table when an rtpSessionTable row is mapped
               to another rtpSessionTable row by some non-RTP means.
               Manager can use this index to access rtpSessionTable
               entries ordered by Session address and interface."
               ::= {rtpIS 2 }






Baugher, Du, Naudus  Expires September 24, 1997        [Page 20]


Internet Draft   RTP MIB                                March 24, 1997



       rtpSessionIndexEntry     OBJECT-TYPE
                SYNTAX        RtpSessionIndexEntry
                MAX-ACCESS    not-accessible
                STATUS        current
                DESCRIPTION
                "One column only to store the rtpSessionIndex of
                the rtpSessionTable.  Rows cannot be created, written
                nor destroyed by a manager."
                INDEX { rtpSessionAddr, rtpSessionPort, rtpSessionIf }
                ::= { rtpSessionIndexTable 1 }

       RtpSessionIndexEntry ::= SEQUENCE {
                rtpSessionIndexValue    INTEGER(1..65535)
                }

       rtpSessionIndexValue  OBJECT-TYPE
                SYNTAX        INTEGER(1..65535)
                MAX-ACCESS    read-only
                STATUS        current
                DESCRIPTION
                "Instance of rtpSessionIndex corresponds 1:1 with
                {rtpSessionAddr,rtpSessionPort,rtpSessionIf}."
                ::= { rtpSessionIndexEntry 1 }
--
--      SESSION MAP
--
       rtpSessionMapTable   OBJECT-TYPE
                SYNTAX          SEQUENCE OF RtpSessionMapEntry
                MAX-ACCESS      not-accessible
                STATUS          current
                DESCRIPTION
                "Traces the mapping of one session (the rtpSessionMapIn)
                to another (rtpSessionMapEg) where all ingress streams
                from the former are assumed to be egress streams of the
                latter."
                ::= { rtpIS 3 }














Baugher, Du, Naudus  Expires September 24, 1997        [Page 21]


Internet Draft   RTP MIB                                March 24, 1997



        rtpSessionMapEntry   OBJECT-TYPE
                 SYNTAX        RtpSessionMapEntry
                 MAX-ACCESS    not-accessible
                 STATUS        current
                 DESCRIPTION
                 "Each entry defines an association of an entry from
                 the rtpSessionTable with another entry from the
                 rtpSessionTable that is asymmetric in that streams
                 from rtpSessionMapIn session are forwarded to
                 the address,port and interface of rtpSessionMapEg.
                 Another entry is needed to define the reverse mapping."
                 INDEX         { rtpSessionMapIn, rtpSessionMapEg }
                 ::= { rtpSessionMapTable 1 }

        RtpSessionMapEntry ::= SEQUENCE {
                 rtpSessionMapIn     INTEGER(1..65535),
                 rtpSessionMapEg     INTEGER(1..65535) }

        rtpSessionMapIn  OBJECT-TYPE
                 SYNTAX       INTEGER(1..65535)
                 MAX-ACCESS   read-create
                 STATUS       current
                 DESCRIPTION
                 "Refers to rtpSessionTable entry in which all streams
                 are forwarded to <address, port, interface> that
                 corresponds to the rtpSessionMapEg entry."
                 ::= { rtpSessionMapEntry 1 }

        rtpSessionMapEg    OBJECT-TYPE
                 SYNTAX       INTEGER(1..65535)
                 MAX-ACCESS   read-create
                 STATUS       current
                 DESCRIPTION
                 "Refers to rtpSessionTable entry to which all streams
                 from rtpSessionMapIn are forwarded."
                 ::= { rtpSessionMapEntry 2 }














Baugher, Du, Naudus  Expires September 24, 1997        [Page 22]


Internet Draft   RTP MIB                                March 24, 1997



--
--      MODULE GROUPS
--
        rtpISGroup      OBJECT-GROUP
                OBJECTS          {
                                  rtpSessionAddr,
                                  rtpSessionPort,
                                  rtpSessionIf,
                                  rtpSessionOwner,
                                  rtpSessionRowStatus,
                                  rtpSessionIndexValue,
                                  rtpSessionMapIn,
                                  rtpSessionMapEg }
                STATUS           current
                DESCRIPTION
                         "Objects used to define RTP sessions."
        ::= { rtpIS 9 }

        rtpISCompliance MODULE-COMPLIANCE
                STATUS          current
                DESCRIPTION     "All objects are mandatory with the
                                 the exceptions listed below."
                MODULE           RTP-IS
                MANDATORY-GROUPS { rtpISGroup }
                OBJECT rtpSessionAddr
                        MIN-ACCESS  read-only
                        DESCRIPTION "This is useful even if the agent
                                    chooses not support create access."
                OBJECT rtpSessionPort
                        MIN-ACCESS  read-only
                        DESCRIPTION "This is useful even if the agent
                                    chooses not support create access."
                OBJECT rtpSessionIf
                        MIN-ACCESS  read-only
                        DESCRIPTION "This is useful even if the agent
                                    chooses not support create access."
                OBJECT rtpSessionOwner
                        MIN-ACCESS  read-only
                        DESCRIPTION "This is useful even if the agent
                                    chooses not support create access."
                OBJECT rtpSessionRowStatus
                        MIN-ACCESS  not-accessible
                        DESCRIPTION "Not needed when Addr, Port, and If
                                    cannot be created by manager."
       ::= { rtpIS 10 }
END




Baugher, Du, Naudus  Expires September 24, 1997        [Page 23]


Internet Draft   RTP MIB                                March 24, 1997



6.  Possible Additions to the RTP MIB

The following additions to the RTP MIB have been considered, but not
added to this revision of the draft.


6.1  A Receivers Table for an RTP Source

An RTP source is capable of collecting various statistics from its
receivers such as loss and delay. There is no such management
information structure in this revision of the RTP MIB.  The authors
felt that this information was transient and probably not of great use
to an SNMP network manager.  This conclusion could turn out to be
wrong, especially in the case of servers.  The modular structure of the
RTP MIB, however, can accommodate the addition of an RTP-SOURCE module
that would allow a manager to view a table of information constructed
from the RTCP RR's and SDES PDU's that have been received from the
receivers.  Such a table should be optional, since a MIB that required
a source to store an entry for every receiver would not scale.


6.2  Delay or RTT

If there were a Receivers table as described in section 6.1, then it
could contain the round-trip time (RTT) computed from the RTCP RR's
and the sender's clock[1].  Alternatively, an RTP Monitor may not be
able to reliably compute RTT, but there are other means for estimating
delays between a sender and a particular receiver which can be done
by non-RTP means.  Such a delay statistic computed in the Monitor
could be added by augmenting the ingress streams table.


6.3  Various SDES Items

Name, email address, location, and many other items from the SDES PDU
do not appear in the MIB.  Since accounting was not one of the uses
that were assumed for the MIB in section 4.2 of this document, the
addition of the user-specific or site-specific objects were deemed to
be superfluous.  User tool, an optional item, is included in the
RTP-SYSTEM module.  Tool and CNAME are the only SDES items found
in the RTP MIB.  Other SDES items could be added to the column objects
of the streams table by augmenting the tables.








Baugher, Du, Naudus  Expires September 24, 1997        [Page 24]


Internet Draft   RTP MIB                                March 24, 1997



7.  Acknowledgments

The authors wish to thank Steve Casner, Karl Auerbach, Don Ryan and
Christian Maciocco for sharing their views on management, in general,
and RTP management in particular.  Bill Strahm has provided guidance
on RTP instrumentation and the RTP management entity.


8.  References

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

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

[3]  Information processing systems -- Open Systems
     Interconnection -- Specification of Basic Encoding Rules
     for Abstract Notation One (ASN.1), International
     Organization for Standardization.  International Standard
     8825, (December, 1987).

[4]  M.T.Rose, SNMP MUX Protocol and MIB, RFC 1227, May 1991.

[5]  B.Wijner, G. Carpenter, K. Curran, A. Sehgal, G. Waters,
     "Simple Network Management Protocol Distributed Protocol
     Interface Version 2.0", RFC 1592, March, 1994.

[6]  M.Daniele, B. Wijner, D. Franciso, "Agent Extensibility
     (AgentX) Protocol, Version 1", work in progress,
     <draft-ietf-agentx-pro-01.txt>,  November, 1996.

















Baugher, Du, Naudus  Expires September 24, 1997        [Page 25]