Network Working Group                                       T. Dreibholz
Internet-Draft                              University of Duisburg-Essen
Expires: August 6, 2006
Intended status: Standards Track                                J. Mulik
Expires: March 3, 2007                                 Temple University
                                                               P. Conrad
                                                  University of Delaware
                                                           K. Pinzhoffer
                                                       Temple University
                                                       February 02,
                                                         August 30, 2006

    Reliable Server Pooling: Management Information Base using SMIv2
                     draft-ietf-rserpool-mib-02.txt
                     draft-ietf-rserpool-mib-03.txt

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   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
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on August 6, 2006. March 3, 2007.

Copyright Notice

   Copyright (C) The Internet Society (2006).

Abstract

   RSerPool [20] [2] is a framework to provide reliable server pooling.  This
   document defines a SMIv2 compliant Management Information Base (MIB)
   providing access to managed objects in an RSerPool implementation.

1.  Introduction

   This memo defines a Management Information Base (MIB) module which
   describes managed objects for RserPool implementations.  The MIB
   defined in this memo is described using the Structure of Management
   Information version 2, as defined in RFC1902 [6], RFC1903 [7], and
   RFC1904 [8].

2.  The SNMP Management Framework

   The SNMP Management Reliable Server Pooling (RSerPool) Framework presently consists of five major
   components:

   o  An overall architecture, described in RFC 2571 [12].

   o  Mechanisms for describing and naming objects and events for the
      purpose of management.  The first version of this Structure of
      Management Information (SMI) is called SMIv1 and described in STD
      16, RFC 1155 [1], STD 16, RFC 1212 [3] and RFC 1215 [4].  The
      second version, called SMIv2, is described in STD 58, RFC 2578
      [17], STD 58, RFC 2579 [18] and STD 58, RFC 2580 [19].

   o  Message protocols for transferring management information.  The
      first version

   For a detailed overview of the SNMP message protocol is called SNMPv1 and
      described in STD 15, RFC 1157 [2].  A second version of documents that describe the SNMP
      message protocol, which is not an Internet standards track
      protocol, is called SNMPv2c and described in RFC 1901 current
   Reliable Server Pooling (RSerPool) framework, please refer to [1],
   [2], [3], [4], [5] and RFC
      1906 [10].  The third version of the message protocol is called
      SNMPv3 and described in RFC 1906 [10], RFC 2572 [13] and RFC 2574
      [15].

   o  Protocol operations for accessing management information.  The
      first set of protocol operations and associated PDU formats is
      described in STD 15, RFC 1157 [2].  A second set of protocol
      operations and associated PDU formats is described in RFC 1905
      [9].

   o  A set of fundamental applications described in RFC 2573 [14] and
      the view-based access control mechanism described in RFC 2575
      [16]. [6].  A more detailed informal introduction to the current SNMP Management Framework can be
   found in at [14].

3.  The Internet-Standard Management Framework

   For a detailed overview of the documents that describe the current
   Internet-Standard Management Framework, please refer to section 7 of
   RFC 2570 [11]. 3410 [12].

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  MIB objects are generally
   accessed through the Simple Network Management Protocol (SNMP).
   Objects in the MIB are defined using the mechanisms defined in the SMI.
   Structure of Management Information (SMI).  This memo specifies a MIB
   module that is compliant to the SMIv2.  A
   MIB conforming to the 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 SMIv2, which is possible (use of Counter64).  Some machine readable
   information in SMIv2 will be converted into textual descriptions described in
   SMIv1 during the translation process.  However, this loss of machine
   readable information is not considered to change the semantics of the
   MIB.

3. STD 58,
   RFC 2578 [9], STD 58, RFC 2579 [10] and STD 58, RFC 2580 [11].

4.  Structure of the MIB

   The following diagram illustrates the structure of the MIB.

   Structure of MIB

   +--rserpoolMIB(12345)

    +--rserpoolMIB(????????)
    |
    +--enrpServers(1)
    |  |
    |  +-- -R-- Counter   enrpServerCount(1)
      |  |
      |  +--enrpServerTable(2)  +--enrpServerTable(1)
    |  |  |
    |  |  +--enrpServerEntry(1)
    |  |     |  Index: enrpServerIndex
    |  |     |
    |  |     +-- ---- INTEGER Unsigned  enrpServerIndex(1)
    |  |     |        Textual Convention: ENRPServerIndex
      |  |     |        Range: 1..2147483647
    |  |     +-- -R-- INTEGER   enrpServerIdentifier(2) String    enrpServerOperationScope(2)
    |  |     |        Textual Convention: ENRPServerIdentifier
      |  |     |        Range: 1..2147483647 OperationScopeType
    |  |     +-- -R-- INTEGER   enrpServerOperationScope(3) Unsigned  enrpServerIdentifier(3)
    |  |     |        Textual Convention: PoolElementIdentifier ENRPServerIdentifierType
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- TimeTicks enrpServerUptime(4)
      |  |     +-- -R-- -RW- String    enrpServerDescription(5)
      |  |     |        Textual Convention: ENRPServerDescription    enrpServerDescription(4)
    |  |     |        Size: 0..255
    |  |     +-- -R-- INTEGER   enrpPort(6) TimeTicks enrpServerUptime(5)
    |  |     +-- -R-- Unsigned  enrpServerPort(6)
    |  |     |        Range: 1..65535
    |  |     +-- -R-- Counter   enrpAddrCount(7)
      | Unsigned  enrpServerASAPAnnouncePort(7)
    |     +-- -R-- Counter   peerCount(8)  |     |     +-- -R-- Counter   poolCount(9)        Range: 1..65535
    |  |     +-- -R-- INTEGER   enrpServerASAPAnnouncePort(10) EnumVal   enrpServerASAPAnnounceAddrType(8)
    |  |     |        Range: 1..65535        Textual Convention: InetAddressType
    |  |     +-- -R-- String    enrpServerASAPAnnounceAddr(11)    enrpServerASAPAnnounceAddr(9)
    |  |     |        Textual Convention: InetAddress
    |  |     |        Size: 0..255
    |  |     +-- -R-- INTEGER   enrpServerENRPAnnouncePort(12) Unsigned  enrpServerENRPAnnouncePort(10)
    |  |     |        Range: 1..65535
    |  |     +-- -R-- EnumVal   enrpServerENRPAnnounceAddrType(11)
    |  |     |        Textual Convention: InetAddressType
    |  |     +-- -R-- String    enrpServerENRPAnnounceAddr(13)    enrpServerENRPAnnounceAddr(12)
    |  |              Textual Convention: InetAddress
    |  |              Size: 0..255
    |  |
    |  +--poolTable(3)  +--enrpServerPoolTable(3)
    |  |  |
    |  |  +--poolEntry(1)  +--enrpServerPoolEntry(1)
    |  |     |  Index: enrpServerIndex, poolIndex enrpServerPoolIndex
    |  |     |
    |  |     +-- ---- INTEGER   poolIndex(1)
      |  |     |        Textual Convention: PoolIndex Unsigned  enrpServerPoolIndex(1)
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- Counter   poolElementCount(2)
      |  |     +-- -R-- String    poolHandle(3)    enrpServerPoolHandle(2)
    |  |              Textual Convention: PoolHandle PoolHandleType
    |  |
    |  +--poolElementTable(4)  +--enrpServerPoolElementTable(4)
    |  |  |
    |  |  +--poolElementEntry(1)  +--enrpServerPoolElementEntry(1)
    |  |     |  Index: enrpServerIndex, poolIndex, poolElementIndex enrpServerPoolIndex,
    |  |     |         enrpServerPoolElementIndex
    |  |     |
    |  |     +-- ---- Unsigned  enrpServerPoolElementIndex(1)
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- INTEGER   poolElementIndex(1) Unsigned  enrpServerPoolElementIdentifier(2)
    |  |     |        Textual Convention: PoolElementIndex PoolElementIdentifierType
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- INTEGER   asapTransportPort(2) Unsigned  enrpServerASAPTransportPort(3)
    |  |     |        Range: 1..65535
    |  |     +-- -R-- Counter   asapTransportAddrCount(3)
      |  |     +-- -R-- INTEGER   userTransportProtocol(4) Unsigned  enrpServerUserTransportProtocol(4)
    |  |     |        Range: 0..255
    |  |     +-- -R-- INTEGER   userTransportPort(5) Unsigned  enrpServerUserTransportPort(5)
    |  |     |        Range: 1..65535
    |  |     +-- -R-- EnumVal   userTransportUse(6)   enrpServerUserTransportUse(6)
    |  |     |        Textual Convention: TransportUse TransportUseType
    |  |     |        Values: dataOnly(0), dataPlusControl(1)
    |  |     +-- -R-- Counter   userTransportAddrCount(7)
      |  |     +-- -R-- INTEGER   policyType(8) Unsigned  enrpServerPolicyID(7)
    |  |     |        Textual Convention: PolicyType PolicyIDType
    |  |     |        Range: 0..255
    |  |     +-- -R-- String    policyDescr(9)
      |  |     |        Textual Convention: PolicyDescription    enrpServerPolicyDescr(8)
    |  |     |        Size: 0..255
    |  |     +-- -R-- INTEGER   policyWeight(10) Unsigned  enrpServerPolicyWeight(9)
    |  |     |        Textual Convention: PolicyWeight PolicyWeightType
    |  |     |        Range: 0..16777215 0..2147483647
    |  |     +-- -R-- INTEGER   policyLoad(11) Unsigned  enrpServerPolicyLoad(10)
    |  |     |        Textual Convention: PolicyLoad PolicyLoadType
    |  |     |        Range: 0..16777215
    |  |     +-- -R-- INTEGER   policyLoadDegradation(12) Unsigned  enrpServerPolicyLoadDegradation(11)
    |  |     |        Textual Convention: PolicyLoad PolicyLoadType
    |  |     |        Range: 0..16777215
    |  |     +-- -R-- TimeTicks registrationLife(13) enrpServerRegistrationLife(12)
    |  |     +-- -R-- INTEGER   homeENRPServer(14) Unsigned  enrpServerHomeENRPServer(13)
    |  |              Textual Convention: ENRPServerIdentifier ENRPServerIdentifierType
    |  |              Range: 1..2147483647
    |  |
    |  +--asapTransportAddrListTable(5)  +--enrpServerASAPAddrTable(5)
    |  |  |
    |  |  +--asapTransportAddrListTableEntry(1)  +--enrpServerASAPAddrTableEntry(1)
    |  |     |  Index: enrpServerIndex, poolIndex, poolElementIndex, enrpServerPoolIndex,
    |  |     |         asapTransportAddrListTableIndex         enrpServerPoolElementIndex,
    |  |     |         enrpServerASAPAddrTableIndex
    |  |     |
    |  |     +-- ---- Unsigned  asapTransportAddrListTableIndex(1)  enrpServerASAPAddrTableIndex(1)
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- INTEGER   networkLayerProtocol(2) EnumVal   enrpServerASAPL3Proto(2)
    |  |     |        Range: 0..255        Textual Convention: InetAddressType
    |  |     +-- -R-- String    networkLayerAddress(3)    enrpServerASAPL3Addr(3)
    |  |              Textual Convention: InetAddress
    |  |              Size: 0..255
    |  |
    |  +--userTransportAddrListTable(6)  +--enrpServerUserAddrTable(6)
    |  |  |
    |  |  +--userTransportAddrListTableEntry(1)  +--enrpServerUserAddrTableEntry(1)
    |  |     |  Index: enrpServerIndex, poolIndex, poolElementIndex, enrpServerPoolIndex,
    |  |     |         enrpServerPoolElementIndex,
    |  |         userTransportAddrListTableIndex     |         enrpServerUserAddrTableIndex
    |  |     |
    |  |     +-- ---- Unsigned  userTransportAddrListTableIndex(1)  enrpServerUserAddrTableIndex(1)
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- INTEGER   networkLayerProtocol(2) EnumVal   enrpServerUserL3Proto(2)
    |  |     |        Range: 0..255        Textual Convention: InetAddressType
    |  |     +-- -R-- String    networkLayerAddress(3)    enrpServerUserL3Addr(3)
    |  |              Textual Convention: InetAddress
    |  |              Size: 0..255
    |  |
    |  +--enrpAddrListTable(7)  +--enrpServerENRPAddrTable(7)
    |  |  |
    |  |  +--enrpAddrListTableEntry(1)  +--enrpServerENRPAddrTableEntry(1)
    |  |     |  Index: enrpIndex, enrpAddrListTableIndex enrpServerIndex, enrpServerENRPAddrTableIndex
    |  |     |
    |  |     +-- ---- Unsigned  enrpAddrListTableIndex(1)  enrpServerENRPAddrTableIndex(1)
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- INTEGER   networkLayerProtocol(2) EnumVal   enrpServerENRPL3Proto(2)
    |  |     |        Range: 0..255        Textual Convention: InetAddressType
    |  |     +-- -R-- String    networkLayerAddress(3)    enrpServerENRPL3Addr(3)
    |  |              Textual Convention: InetAddress
    |  |              Size: 0..255
    |  |
    |  +--peerTable(8)  +--enrpServerPeerTable(8)
    |  |  |
    |  |  +--peerEntry(1)  +--enrpServerPeerEntry(1)
    |  |     |  Index: peerIndex enrpServerPeerIndex
    |  |     |
    |  |     +-- ---- Unsigned  peerIndex(1)  enrpServerPeerIndex(1)
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- Unsigned  peerIdentifier(2)  enrpServerPeerIdentifier(2)
    |  |     +-- -R-- INTEGER   peerPort(3) Unsigned  enrpServerPeerPort(3)
    |  |     |        Range: 1..65535
    |  |     +-- -R-- TimeTicks peerLastHeard(4) enrpServerPeerLastHeard(4)
    |  |     +-- -R-- TimeTicks peerAddrCount(5)
      |
    |  +--enrpServerPeerAddrTable(9)
    |  +--peerAddrListTable(9)     |
    |
      |     +--peerAddrListTableEntry(1)     +--enrpServerPeerAddrTableEntry(1)
    |        |  Index: peerIndex, peerAddrListTableIndex enrpServerPeerIndex, enrpServerPeerAddrTableIndex
    |        |
    |        +-- ---- Unsigned  peerAddrListTableIndex(1)  enrpServerPeerAddrTableIndex(1)
    |        |        Range: 1..2147483647
    |        +-- -R-- INTEGER   networkLayerProtocol(2) EnumVal   enrpServerPeerL3Proto(2)
    |        |        Range: 0..255        Textual Convention: InetAddressType
    |        +-- -R-- String    networkLayerAddress(3)    enrpServerPeerL3Addr(3)
    |                 Textual Convention: InetAddress
    |                 Size: 0..255
    |
    +--poolElements(2)

      ...
      ...
      ...

      +--poolUsers(3)

      ...
      ...
      ...

   As the figure shows, the MIB consists of three main branches:
   "enrpServers", "poolElements" and "poolUsers".  The first branch,
   "enrpServers" is used to access managed objects in the set of ENRP
   servers running on a given host.  While it is assumed that it does
   not make much sense to run multiple ENRP servers
    |  |
    |  +--poolElementTable(1)
    |  |  |
    |  |  +--poolElementEntry(1)
    |  |     |  Index: poolElementIndex
    |  |     |
    |  |     +-- ---- Unsigned  poolElementIndex(1)
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- String    poolElementOperationScope(2)
    |  |     |        Textual Convention: OperationScopeType
    |  |     +-- -R-- String    poolElementPoolHandle(3)
    |  |     |        Textual Convention: PoolHandleType
    |  |     +-- -R-- Unsigned  poolElementIdentifier(4)
    |  |     |        Textual Convention: PoolElementIdentifierType
    |  |     |        Range: 1..2147483647
    |  |     +-- -RW- String    poolElementDescription(5)
    |  |     |        Size: 0..255
    |  |     +-- -R-- TimeTicks poolElementUptime(6)
    |  |     +-- -R-- Unsigned  poolElementASAPTransportPort(7)
    |  |     |        Range: 1..65535
    |  |     +-- -R-- Unsigned  poolElementUserTransportProtocol(8)
    |  |     |        Range: 0..255
    |  |     +-- -R-- Unsigned  poolElementUserTransportPort(9)
    |  |     |        Range: 1..65535
    |  |     +-- -R-- EnumVal   poolElementUserTransportUse(10)
    |  |     |        Textual Convention: TransportUseType
    |  |     |        Values: dataOnly(0), dataPlusControl(1)
    |  |     +-- -RW- Unsigned  poolElementPolicyID(11)
    |  |     |        Textual Convention: PolicyIDType
    |  |     |        Range: 0..255
    |  |     +-- -RW- String    poolElementPolicyDescr(12)
    |  |     |        Size: 0..255
    |  |     +-- -RW- Unsigned  poolElementPolicyWeight(13)
    |  |     |        Textual Convention: PolicyWeightType
    |  |     |        Range: 0..2147483647
    |  |     +-- -R-- Unsigned  poolElementPolicyLoad(14)
    |  |     |        Textual Convention: PolicyLoadType
    |  |     |        Range: 0..16777215
    |  |     +-- -RW- Unsigned  poolElementPolicyLoadDegradation(15)
    |  |     |        Textual Convention: PolicyLoadType
    |  |     |        Range: 0..16777215
    |  |     +-- -RW- TimeTicks poolElementRegistrationLife(16)
    |  |     +-- -R-- Unsigned  poolElementHomeENRPServer(17)
    |  |              Textual Convention: ENRPServerIdentifierType
    |  |              Range: 1..2147483647
    |  |
    |  +--poolElementASAPAddrTable(2)
    |  |  |
    |  |  +--poolElementASAPAddrTableEntry(1)
    |  |     |  Index: poolElementIndex, poolElementASAPAddrTableIndex
    |  |     |
    |  |     +-- ---- Unsigned  poolElementASAPAddrTableIndex(1)
    |  |     |        Range: 1..2147483647
    |  |     +-- -R-- EnumVal   poolElementASAPL3Proto(2)
    |  |     |        Textual Convention: InetAddressType
    |  |     +-- -R-- String    poolElementASAPL3Addr(3)
    |  |              Textual Convention: InetAddress
    |  |              Size: 0..255
    |  |
    |  +--poolElementUserAddrTable(6)
    |     |
    |     +--poolElementUserAddrTableEntry(1)
    |        |  Index: poolElementIndex, poolElementUserAddrTableIndex
    |        |
    |        +-- ---- Unsigned  poolElementUserAddrTableIndex(1)
    |        |        Range: 1..2147483647
    |        +-- -R-- EnumVal   poolElementUserL3Proto(2)
    |        |        Textual Convention: InetAddressType
    |        +-- -R-- String    poolElementUserL3Addr(3)
    |                 Textual Convention: InetAddress
    |                 Size: 0..255
    |
    +--poolUsers(3)
    |  |
    |  +--poolUserTable(1)
    |     |
    |     +--poolUserEntry(1)
    |        |  Index: poolUserIndex
    |        |
    |        +-- ---- Unsigned  poolUserIndex(1)
    |        |        Range: 1..2147483647
    |        +-- -R-- String    poolUserOperationScope(2)
    |        |        Textual Convention: OperationScopeType
    |        +-- -R-- String    poolUserPoolHandle(3)
    |        |        Textual Convention: PoolHandleType
    |        +-- -RW- String    poolUserDescription(4)
    |        |        Size: 0..255
    |        +-- -R-- TimeTicks poolUserUptime(5)
    |
    +--rserpoolMIBConformance(4)
    |
    +--rserpoolMIBCompliances(1)
    |  |
    |  +--rserpoolMIBCompliance(1)
    |
    +--rserpoolMIBGroups(2)
    |
    +--enrpServerGroup(1)
    +--poolElementGroup(2)
    +--poolUserGroup(3)

   As the figure shows, the MIB consists of three main branches:
   "enrpServers", "poolElements" and "poolUsers".  The first branch,
   "enrpServers" is used to access managed objects in the set of ENRP
   servers running on a given host.  While it is assumed that it does
   not make much sense to run multiple ENRP servers for the same
   operation scope on one host, running multiple ENRP servers for
   different operation scopes is very likely when the ENRP server
   processes run on routers.  Therefore, the MIB has to be able to
   manage multiple ENRP servers on the same host. "poolElements" is used
   to access managed objects in the set of Pool Elements that are
   running on a given host and the third branch, "poolUsers" is used to
   access managed objects in the set of Pool Users that are running on a
   given host.  In fact, the structure of the three branches is very
   similar.  Because the two branches are so similar, we describe only
   the first branch in detail, and provide a summary description of the
   second and third branch.  We now proceed with a description of the
   branches.

4.1.  Access to managed objects on ENRP servers

   The first branch describes managed objects at a set of ENRP servers.
   Any given ENRP server of this set will, at a certain moment in time,
   have registration information for a set of active pools.  Each of
   these pools in turn may have a list of pool elements that are
   registered under that pool.  To allow this information to be
   retrieved via SNMP, the ERNP server branch of the RSerPool MIB uses
   the table-in-table technique described in [13].  Specifically, the
   ENRP servers branch creates four levels of nesting, as indicated in
   the following diagram:

   Nesting of ENRP Server Branch

   Nesting Structure:

    Level 1: enrpServerTable

    Level 2:    enrpServerPoolTable
    Level 3:       enrpServerPoolElementTable
    Level 4:          enrpServerASAPAddrListTable
                      enrpServerUserAddrListTable

    Level 2:    enrpServerENRPAddrListTable

    Level 2:    enrpServerPeerTable
    Level 3:       enrpServerPeerAddrListTable

   The ENRP servers branch contains a table of the host's ENRP server
   instances.  Its purpose is to provide an index to an ENRP server for
   all other tables.  Each "conceptual row" in the enrpServerTable
   contains the server's ENRP Identifier, the number of pools, PEs and
   peers, the amount of ENRP endpoint addresses, the server's uptime and
   a textual description of the server.  The poolTable contains a single
   entry for each pool that is currently registered.  Each "conceptual
   row" in the enrpServerPoolTable consists of a
   enrpServerPoolTableEntry, with two elements: a enrpServerPoolIndex
   and an OCTET STRING representation of the pool handle.  The
   enrpServerPoolIndex is simply an integer that is used to index into
   the enrpServerPoolTable and the enrpServerPoolElementTable.  The
   value of this integer is between zero and (poolCount - 1).  Note that
   the same
   operation scope value of enrpServerPoolIndex is defined as "not-accessible" in
   the MAX-ACCESS clause; this is a standard technique used when
   defining a table-in-table data structure.  The third element on one host, running multiple the
   ENRP servers for
   different operation scopes branch is very likely when the enrpServerPoolElementTable.  Because the
   enrpServerPoolElementTable is the "inner" table of the table-in-table
   structure, its index consists of a pair, as indicated in the clause
   "INDEX { enrpServerIndex, enrpServerPoolIndex,
   enrpServerPoolElementIndex }".  The fourth element of the ENRP
   servers branch takes the nesting to one additional level, listing the
   various addresses associated with a particular enrpServerPoolElement
   in form of ASAP endpoint addresses and user transport addresses, and
   thus are indexed by the 4-tuples "INDEX { enrpServerIndex,
   enrpServerPoolIndex, enrpServerPoolElementIndex,
   enrpServerASAPAddrListTableIndex }" and "INDEX { enrpServerIndex,
   enrpServerPoolIndex, enrpServerPoolElementIndex,
   enrpServerUserAddrListTableIndex }".  The ENRP endpoint addresses of
   an ENRP server
   processes run on routers.  Therefore, are bound to its instance in the MIB
   enrpServerENRPAddrListTable by "INDEX { enrpServerIndex,
   enrpServerENRPAddrListTableIndex }".  Finally, an ENRP server has a
   peer table of its known peers.  They are bound to be able a server instance
   by the enrpServerPeerTable; analogously, the addresses of a peer are
   bound to
   manage multiple a peerTable's entry in the peerAddrListTable.

4.2.  Access to managed objects on Pool Elements

   The construction of the Pool Elements branch is very similar to the
   pool elements table of the ENRP servers branch.  But instead of
   grouping the pool elements into pools (which does not make sense
   here), the pool elements table is the top of the hierarchy and each
   pool element entry specifies its operation scope and pool handle.
   That is, the nesting structure is as follows:

    Level 1:    poolElementTable
    Level 2:       poolElementASAPAddrListTable
                   poolElementUserAddrListTable

   The description of the contained structures is the same as for the
   ENRP servers on branch.

   TODO: There should be the same host. "poolElements" is used
   to access managed objects in server table (ENRP servers learned by their
   announces) plus the set of Pool Elements that are
   running on a given host and multicast address the third branch, "poolUsers" is used PE expects the announces to
   be sent to.

4.3.  Access to
   access managed objects in the set of on Pool Users that are running on a
   given host.  In fact, the structure of

   For the three branches pool users branch, it is very
   similar.  Because the two branches are so similar, we describe only necessary to list the first branch in detail, pool
   users, including their operation scope and provide a summary description of pool handle.

   TODO: There should be the
   second and third branch.  We now proceed with a description of server table (ENRP servers learned by their
   announces) plus the
   branches.

3.1  Access multicast address the PE expects the announces to managed objects on ENRP servers

   The first branch describes managed objects at a set of ENRP servers.
   Any given ENRP server
   be sent to.

5.  Definitions

    RSERPOOL-MIB DEFINITIONS ::= BEGIN

    IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    mib-2,
    TimeTicks,
    Unsigned32
    FROM SNMPv2-SMI
    TEXTUAL-CONVENTION
    FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP
    FROM SNMPv2-CONF
    InetAddressType, InetAddress
    FROM INET-ADDRESS-MIB;

    -- ## Module definition ###########################################
    rserpoolMIB MODULE-IDENTITY
    LAST-UPDATED "200608290120Z" -- August 29, 2006
    ORGANIZATION "IEM-TdR, UNIVERSITY OF DUISBURG-ESSEN"
    CONTACT-INFO
    " THOMAS-DREIBHOLZ

    Postal:  University of this set will, at a certain moment in time,
   have registration information Duisburg-Essen
    Institute for Experimental Mathematics
    Ellernstrasse 29
    D-45326 Essen
    Germany
    Phone: +49 201-183 7637
    Email: dreibh@exp-math.uni-essen.de

    JAIWANT-MULIK
    PHILLIP-CONRAD
    KEVIN-PINZHOFFER

    Postal: 1805, N Broad St.
    Philadelphia, PA
    USA 19121
    Phones: +1 215 204 7910
    Emails: jmulik@temple.edu
    conrad@acm.org
    kpinzhof@temple.edu"
    DESCRIPTION
    "The MIB module for managing a set of active pools.  Each of
   these pools in turn may have a list of pool elements that are
   registered under that pool. RSerPool implementation"
    REVISION "200608290120Z" -- August 29, 2006
    DESCRIPTION
    "Version 03, published as draft-ietf-rserpool-mib-03.txt."
    ::= { mib-2 xxxxxxxxxx } -- To allow this information to be
   retrieved via SNMP, the ERNP server branch of the IANA Assigned!!!

    -- ## RSerPool MIB uses
   the table-in-table technique described in [24].  Specifically, the type definitions ###################################
    ENRPServerIdentifierType ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "x"
    STATUS       current
    DESCRIPTION  "The ID of an ENRP servers branch creates four levels server"
    SYNTAX       Unsigned32 (1..4294967295)

    OperationScopeType ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION  "The ID of an operation scope"
    SYNTAX       OCTET STRING

    PoolHandleType ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION  "The pool handle"
    SYNTAX       OCTET STRING

    PoolElementIdentifierType ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "x"
    STATUS       current
    DESCRIPTION  "The pool element ID"
    SYNTAX       Unsigned32 (1..4294967295)

    PolicyIDType ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "x"
    STATUS       current
    DESCRIPTION  "The ID of nesting, as indicated in the following diagram:

   Nesting pool policy"
    SYNTAX       Unsigned32 (0..255)

    PolicyLoadType ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS       current
    DESCRIPTION  "The load status of Nameserver Branch

   Nesting Structure:

    Level 1: enrpServerTable

    Level 2:    poolTable
    Level 3:       poolElementTable
    Level 4:          asapTransportAddrListTable
                      userTransportAddrListTable

    Level 2:    enrpAddrListTable

    Level 2:    peerTable
    Level 3:       peerAddrListTable

   The ENRP servers branch contains a table pool element"
    SYNTAX       Unsigned32 (0..16777215)

    PolicyWeightType ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS       current
    DESCRIPTION  "The weight of the host's ENRP server
   instances.  Its purpose is to provide an index to an ENRP server for
   all other tables.  Each "conceptual row" in the enrpServerTable
   contains the server's a pool element"
    SYNTAX       Unsigned32 (0..4294967295)
    TransportUseType ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION "The load status of a pool element"
    SYNTAX       INTEGER {
    dataOnly(0),
    dataPlusControl(1)
    }

    -- ## Top-level definitions #######################################
    enrpServers  OBJECT IDENTIFIER ::= { rserpoolMIB 1 }
    poolElements OBJECT IDENTIFIER ::= { rserpoolMIB 2 }
    poolUsers    OBJECT IDENTIFIER ::= { rserpoolMIB 3 }

    -- ################################################################
    -- #### ENRP Identifier, the number Servers Section                                   ####
    -- ################################################################

    -- ## Definition of pools, PEs and
   peers, the amount of ENRP endpoint addresses, the server's uptime and
   a textual description server table #########################
    enrpServerTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF ENRPServerEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The table listing of the server.  The poolTable contains a single ENRP servers."
    ::= { enrpServers 1 }

    enrpServerEntry OBJECT-TYPE
    SYNTAX     ENRPServerEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "An ENRP server entry for each pool that is currently registered.  Each "conceptual
   row" in the poolTable consists table listing of a poolTableEntry, with three
   elements: a poolIndex, a poolElementCount, and an ENRP
    servers."
    INDEX { enrpServerIndex }
    ::= { enrpServerTable 1 }

    ENRPServerEntry ::= SEQUENCE {
    enrpServerIndex                Unsigned32,
    enrpServerOperationScope       OperationScopeType,
    enrpServerIdentifier           ENRPServerIdentifierType,
    enrpServerDescription          OCTET STRING
   representation of the pool handle.  The poolElementCount is the
   number of pool elements registered with this pool handle.  The
   poolIndex is simply an STRING,
    enrpServerUptime               TimeTicks,
    enrpServerPort                 Unsigned32,
    enrpServerASAPAnnouncePort     Unsigned32,
    enrpServerASAPAnnounceAddrType InetAddressType,
    enrpServerASAPAnnounceAddr     InetAddress,
    enrpServerENRPAnnouncePort     Unsigned32,
    enrpServerENRPAnnounceAddrType InetAddressType,
    enrpServerENRPAnnounceAddr     InetAddress }

    enrpServerIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "An integer that is used to index into the
   poolTable and the poolElementTable.  The value uniquely identify an ENRP server."
    ::= { enrpServerEntry 1 }

    enrpServerOperationScope OBJECT-TYPE
    SYNTAX     OperationScopeType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The definition of this integer is
   between zero and (poolCount - 1).  Note that the value operation scope of poolIndex
   is defined as "not-accessible" in the this ENRP server."
    ::= { enrpServerEntry 2 }

    enrpServerIdentifier OBJECT-TYPE
    SYNTAX     ENRPServerIdentifierType
    MAX-ACCESS clause; read-only
    STATUS     current
    DESCRIPTION
    "The ENRP server identifier of this ENRP server."
    ::= { enrpServerEntry 3 }

    enrpServerDescription OBJECT-TYPE
    SYNTAX     OCTET STRING (SIZE (0..255))
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
    "A textual description of this is a
   standard technique used when defining a table-in-table data
   structure.  The third element on the ENRP servers branch is the
   poolElementTable.  Because the poolElementTable is the "inner" table server, e.g. its location
    and a contact address of the table-in-table structure, its index consists administrator."
    ::= { enrpServerEntry 4 }

    enrpServerUptime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The ENRP service uptime of a pair, as
   indicated in the clause "INDEX this ENRP server."
    ::= { enrpServerIndex, poolIndex,
   poolElementIndex }".  The fourth element enrpServerEntry 5 }

    enrpServerPort OBJECT-TYPE
    SYNTAX     Unsigned32 (1..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The SCTP port number of the ENRP servers branch
   takes the nesting to one additional level, listing the various
   addresses associated with a particular poolElement in form protocol endpoint of
    this ENRP server."
    ::= { enrpServerEntry 6 }

    enrpServerASAPAnnouncePort OBJECT-TYPE
    SYNTAX     Unsigned32 (1..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The destination UDP port number ASAP
   endpoint addresses and user transport addresses, and thus multicast announce
    messages are indexed
   by the 4-tuples "INDEX sent to."
    ::= { enrpServerIndex, poolIndex,
   poolElementIndex, asapTransportAddrListTableIndex }" and "INDEX enrpServerEntry 7 }

    enrpServerASAPAnnounceAddrType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The network-layer protocol ASAP multicast
    announce messages are sent over."
    ::= {
   enrpServerIndex, poolIndex, poolElementIndex,
   userTransportAddrListTableIndex }".  The ENRP endpoint addresses of
   an enrpServerEntry 8 }

    enrpServerASAPAnnounceAddr OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The destination multicast IP address ASAP multicast
    announce messages are sent to."
    ::= { enrpServerEntry 9 }

    enrpServerENRPAnnouncePort OBJECT-TYPE
    SYNTAX     Unsigned32 (1..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The destination UDP port number ENRP server multicast announce
    messages are bound to its instance in the enrpAddrListTable by
   "INDEX sent to."
    ::= { enrpIndex, enrpAddrListTableIndex }".  Finally, an enrpServerEntry 10 }

    enrpServerENRPAnnounceAddrType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The network-layer protocol ENRP
   server has a peer table of its known peers.  They multicast
    announce messages are sent over."
    ::= { enrpServerEntry 11 }

    enrpServerENRPAnnounceAddr OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The destination multicast IP address ENRP multicast
    announce messages are bound to a
   server instance by the peerTable; analogously, sent to."
    ::= { enrpServerEntry 12 }

    -- ## Definition of the addresses pool table ################################
    enrpServerPoolTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF ENRPServerPoolEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The table listing of a
   peer are bound to a peerTable's pools."
    ::= { enrpServers 3 }

    enrpServerPoolEntry OBJECT-TYPE
    SYNTAX     ENRPServerPoolEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The pool entry in the peerAddrListTable.

3.2  Access to managed objects on Pool Elements

   The construction table listing of the Pool Elements branch is very similar pools."
    INDEX { enrpServerIndex, enrpServerPoolIndex }
    ::= { enrpServerPoolTable 1 }

    ENRPServerPoolEntry ::= SEQUENCE {
    enrpServerPoolIndex  Unsigned32,
    enrpServerPoolHandle PoolHandleType }

    enrpServerPoolIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "An integer to the
   ENRP servers branch.  But in uniquely identify a pool."
    ::= { enrpServerPoolEntry 1 }

    enrpServerPoolHandle OBJECT-TYPE
    SYNTAX     PoolHandleType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The pool handle of this case, the nesting step pool."
    ::= { enrpServerPoolEntry 2 }

    -- ## Definition of the
   enrpServerTable can be omitted and pools and their corresponding pool
   elements be directly defined.  That is, the nesting structure is as
   follows:

    Level 1: poolTable
    Level 2:    poolElementTable
    Level 3:       asapTransportAddrListTable
                   userTransportAddrListTable

   The description element table ########################
    enrpServerPoolElementTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF ENRPServerPoolElementEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The table listing of pool elements."
    ::= { enrpServers 4 }

    enrpServerPoolElementEntry OBJECT-TYPE
    SYNTAX     ENRPServerPoolElementEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "A pool element in the contained structures is the same as for the
   ENRP servers branch.

   TODO: There should be the server table (ENRP servers learned by their
   announces) plus the multicast address the PE expects the announces to
   be sent to.

3.3  Access listing of pool elements."
    INDEX { enrpServerIndex,
    enrpServerPoolIndex,
    enrpServerPoolElementIndex }
    ::= { enrpServerPoolElementTable 1 }

    ENRPServerPoolElementEntry ::= SEQUENCE {
    enrpServerPoolElementIndex       Unsigned32,
    enrpServerPoolElementIdentifier  PoolElementIdentifierType,
    enrpServerASAPTransportPort      Unsigned32,
    enrpServerUserTransportProtocol  Unsigned32,
    enrpServerUserTransportPort      Unsigned32,
    enrpServerUserTransportUse       TransportUseType,
    enrpServerPolicyID               PolicyIDType,
    enrpServerPolicyDescr            OCTET STRING,
    enrpServerPolicyWeight           PolicyWeightType,
    enrpServerPolicyLoad             PolicyLoadType,
    enrpServerPolicyLoadDegradation  PolicyLoadType,
    enrpServerRegistrationLife       TimeTicks,
    enrpServerHomeENRPServer         ENRPServerIdentifierType }

    enrpServerPoolElementIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "An integer to managed objects on Pool Users

   The construction uniquely identify a pool element. Note,
    that uniqueness of a pool element identifier in the Pool Elements branch pool
    is analogous to the ENRP
   servers branch: multiple PU instances can run on the same host.
   Therefore, it not enforced, therefore this index is first necessary to hold a table of them.

    Level 1: poolUserTable
    ...

   TODO: How should a PU be defined?  PH, server table and required here!"
    ::={ enrpServerPoolElementEntry 1 }

    enrpServerPoolElementIdentifier OBJECT-TYPE
    SYNTAX     PoolElementIdentifierType
    MAX-ACCESS read-only
    STATUS     current
   address(es)?

4.  Definitions

   RSERPOOL-MIB DEFINITIONS ::= BEGIN

   IMPORTS
      MODULE-IDENTITY,
      OBJECT-TYPE,
      TimeTicks,
      Unsigned32
         FROM SNMPv2-SMI
      InetAddress
         FROM INET-ADDRESS-MIB;

   -- ## Module definition ###########################################
   rserpoolMIB MODULE-IDENTITY
      LAST-UPDATED "200506100820Z"
      ORGANIZATION "IEM-TdR, UNIVERSITY OF DUISBURG-ESSEN"
      CONTACT-INFO
         " THOMAS-DREIBHOLZ

         Postal:  University
    DESCRIPTION
    "The pool element identifier of Duisburg-Essen
                  Institute for Experimental Mathematics
                  Ellernstrasse 29
                  D-45326 Essen
                  Germany
         Phone: +49 201-183 7637
         Email: dreibh@exp-math.uni-essen.de

         JAIWANT-MULIK
         PHILLIP-CONRAD
         KEVIN-PINZHOFFER

         Postal: 1805, N Broad St.
                  Philadelphia, PA
                  USA 19121
         Phones: +1 215 204 7910
         Emails: jmulik@temple.edu
                  conrad@acm.org
                  kpinzhof@temple.edu" this pool element."
    ::={ enrpServerPoolElementEntry 2 }

    enrpServerASAPTransportPort OBJECT-TYPE
    SYNTAX     Unsigned32 (1..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The MIB module for managing a RSerPool implementation" SCTP port number of the ASAP endpoint of this pool
    element."
    ::= { mib-2 12345 enrpServerPoolElementEntry 3 } -- To be IANA Assigned!!!
   -- ## RSerPool type definitions ###################################
   ENRPServerIdentifier  ::= INTEGER (1..4294967295)
   ENRPServerDescription ::= OCTET STRING

    enrpServerUserTransportProtocol OBJECT-TYPE
    SYNTAX     Unsigned32 (0..255)
   OperationScope        ::= OCTET STRING

   PoolHandle
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The transport protocol number of the service endpoint
    of this pool element."
    ::= OCTET STRING

   PoolElementIdentifier { enrpServerPoolElementEntry 4 }

    enrpServerUserTransportPort OBJECT-TYPE
    SYNTAX     Unsigned32 (1..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The transport protocol's port number of the service
    endpoint of this pool element."
    ::= INTEGER (1..4294967295)
   PolicyType { enrpServerPoolElementEntry 5 }

    enrpServerUserTransportUse OBJECT-TYPE
    SYNTAX     TransportUseType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The transport use of the service endpoint of this pool
    element."
    ::= INTEGER (0..255)
   PolicyDescription { enrpServerPoolElementEntry 6 }
    enrpServerPolicyID OBJECT-TYPE
    SYNTAX     PolicyIDType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The pool policy of this pool element."
    ::= { enrpServerPoolElementEntry 7 }

    enrpServerPolicyDescr OBJECT-TYPE
    SYNTAX     OCTET STRING (0..255)
   PolicyLoad (SIZE (0..255))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The textual description of the pool policy of this pool
    element."
    ::= INTEGER (0..16777215)
   PolicyWeight { enrpServerPoolElementEntry 8 }

    enrpServerPolicyWeight OBJECT-TYPE
    SYNTAX     PolicyWeightType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The pool policy's weight parameter for this pool element."
    ::= INTEGER (0..16777215)
   TransportUse { enrpServerPoolElementEntry 9 }

    enrpServerPolicyLoad OBJECT-TYPE
    SYNTAX     PolicyLoadType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The pool policy's load status for this pool element."
    ::= INTEGER {
                                dataOnly(0),
                                dataPlusControl(1) enrpServerPoolElementEntry 10 }

   ENRPServerIndex

    enrpServerPolicyLoadDegradation OBJECT-TYPE
    SYNTAX     PolicyLoadType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The pool policy's load degradation parameter for this pool
    element."
    ::= INTEGER (1..2147483647)
   PoolIndex { enrpServerPoolElementEntry 11 }

    enrpServerRegistrationLife OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The registration life of this pool element."
    ::= INTEGER (1..2147483647)
   PoolElementIndex { enrpServerPoolElementEntry 12 }

    enrpServerHomeENRPServer OBJECT-TYPE
    SYNTAX     ENRPServerIdentifierType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The ID of the home ENRP server of this pool element."
    ::= INTEGER (1..2147483647) { enrpServerPoolElementEntry 13 }

    -- ## Top-level definitions ####################################### Definition of the ASAP transport address list table #########
    enrpServerASAPAddrTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF ENRPServerASAPAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "A table listing of all IP addresses of the ASAP transport
    endpoint."
    ::= { enrpServers  OBJECT IDENTIFIER 5 }

    enrpServerASAPAddrTableEntry  OBJECT-TYPE
    SYNTAX     ENRPServerASAPAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "An IP address of the ASAP transport endpoint."
    INDEX { enrpServerIndex,
    enrpServerPoolIndex,
    enrpServerPoolElementIndex,
    enrpServerASAPAddrTableIndex }
    ::= { rserpoolMIB enrpServerASAPAddrTable 1 }
   poolElements OBJECT IDENTIFIER

    ENRPServerASAPAddrTableEntry ::= SEQUENCE { rserpoolMIB 2
    enrpServerASAPAddrTableIndex Unsigned32,
    enrpServerASAPL3Proto            InetAddressType,
    enrpServerASAPL3Addr             InetAddress }
   poolUsers    OBJECT IDENTIFIER

    enrpServerASAPAddrTableIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "A unique identifier for the IP address of an ASAP transport
    endpoint."
    ::= { enrpServerASAPAddrTableEntry 1 }

    enrpServerASAPL3Proto OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The network-layer protocol (IPv4 or IPv6) of an IP address of
    an ASAP transport endpoint."
    ::= { rserpoolMIB 3 enrpServerASAPAddrTableEntry 2 }

   -- ## Definition of the ENRP server table #########################
   enrpServerCount

    enrpServerASAPL3Addr OBJECT-TYPE
    SYNTAX     Counter32     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The total number IP address of ENRP servers on this host" an ASAP transport endpoint."
    ::= { enrpServers 1 enrpServerASAPAddrTableEntry 3 }

   enrpServerTable

    -- ## Definition of the user transport address list table #########
    enrpServerUserAddrTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF enrpServerEntry ENRPServerUserAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                      "The conceptual
    "A table listing of all IP addresses of the ENRP servers
                      on this host" user
    transport endpoint."
    ::= { enrpServers 2 6 }
   enrpServerEntry

    enrpServerUserAddrTableEntry  OBJECT-TYPE
    SYNTAX     ENRPServerEntry     ENRPServerUserAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                      "The conceptual row in enrpServerTable"
    "An IP address of the user transport endpoint."
    INDEX { enrpServerIndex enrpServerIndex,
    enrpServerPoolIndex,
    enrpServerPoolElementIndex,
    enrpServerUserAddrTableIndex }
    ::= { enrpServerTable enrpServerUserAddrTable 1 }

   ENRPServerEntry

    ENRPServerUserAddrTableEntry ::= SEQUENCE {
                   enrpServerIndex            ENRPServerIndex,
                   enrpServerElementCount     Counter32,
                   enrpServerIdentifier       ENRPServerIdentifier,
                   enrpServerUptime           timeTicks,
                   enrpServerDescription      ENRPServerDescription,
                   enrpPort                   INTEGER,
                   enrpAddrCount              Counter32,
                   peerCount                  Counter32,
                   poolCount                  Counter32,
                   enrpServerASAPAnnouncePort INTEGER,
                   enrpServerASAPAnnounceAddr InetAddress,
                   enrpServerENRPAnnouncePort INTEGER,
                   enrpServerENRPAnnounceAddr
    enrpServerUserAddrTableIndex Unsigned32,
    enrpServerUserL3Proto  InetAddressType,
    enrpServerUserL3Addr   InetAddress }

   enrpServerIndex

    enrpServerUserAddrTableIndex OBJECT-TYPE
    SYNTAX     ENRPServerIndex     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                      "This is the index to
    "A unique identifier for the enrpServerTable" IP address of an user transport
    endpoint."
    ::= { enrpServerEntry enrpServerUserAddrTableEntry 1 }

   enrpServerIdentifier

    enrpServerUserL3Proto OBJECT-TYPE
    SYNTAX     ENRPServerIdentifier     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                    "This is the ENRP server identifier
    "The network-layer protocol (IPv4 or IPv6) of this row" an IP address of
    an user transport endpoint."
    ::= { enrpServerEntry enrpServerUserAddrTableEntry 2 }

   enrpServerOperationScope

    enrpServerUserL3Addr OBJECT-TYPE
    SYNTAX     PoolElementIdentifier     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                    "This is the operation scope
    "The IP address of this row" an user transport endpoint."
    ::= { enrpServerEntry enrpServerUserAddrTableEntry 3 }
   enrpServerUptime

    -- ## Definition of ENRP address list table #######################
    enrpServerENRPAddrTable OBJECT-TYPE
    SYNTAX     TimeTicks     SEQUENCE OF ENRPServerENRPAddrTableEntry
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
                   "This is the uptime
    "A table listing of this row" all IP addresses of the ENRP
    transport endpoint."
    ::= { enrpServerEntry 4 enrpServers 7 }

   enrpServerDescription

    enrpServerENRPAddrTableEntry  OBJECT-TYPE
    SYNTAX     ENRPServerDescription     ENRPServerENRPAddrTableEntry
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
                   "This is the description
    "An IP address of this row" the ENRP transport endpoint."
    INDEX { enrpServerIndex,
    enrpServerENRPAddrTableIndex }
    ::= { enrpServerEntry 5 enrpServerENRPAddrTable 1 }

    ENRPServerENRPAddrTableEntry ::= SEQUENCE {
    enrpServerENRPAddrTableIndex Unsigned32,
    enrpServerENRPL3Proto            InetAddressType,
    enrpServerENRPL3Addr             InetAddress }

   enrpPort
    enrpServerENRPAddrTableIndex OBJECT-TYPE
    SYNTAX     INTEGER (1..65535)     Unsigned32 (1..4294967295)
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
                      "Contains
    "A unique identifier for the IP address of an ENRP transport protocol's port
                      number of a pool element"
    endpoint."
    ::= { enrpServerEntry 6 enrpServerENRPAddrTableEntry 1 }

   enrpAddrCount

    enrpServerENRPL3Proto OBJECT-TYPE
    SYNTAX     Counter32     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The ENRP network-layer protocol (IPv4 or IPv6) of an IP address count of this row"
    an ENRP transport endpoint."
    ::= { enrpServerEntry 7 enrpServerENRPAddrTableEntry 2 }

   peerCount

    enrpServerENRPL3Addr OBJECT-TYPE
    SYNTAX     Counter32     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The total number IP address of an ENRP transport endpoint."
    ::= { enrpServerENRPAddrTableEntry 3 }

    -- ## Definition of peers peer table ####################################
    enrpServerPeerTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF ENRPServerPeerEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The table listing of this ENRP server" a peer table."
    ::= { enrpServerEntry enrpServers 8 }

   poolCount

    enrpServerPeerEntry OBJECT-TYPE
    SYNTAX     Counter32     ENRPServerPeerEntry
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
                      "The total number of pools
    "A peer entry in the table listing of this ENRP server" a peer table."
    INDEX { enrpServerPeerIndex }
    ::= { enrpServerEntry 9 enrpServerPeerTable 1 }
   enrpServerASAPAnnouncePort

    ENRPServerPeerEntry ::= SEQUENCE {
    enrpServerPeerIndex      Unsigned32,
    enrpServerPeerIdentifier Unsigned32,
    enrpServerPeerPort       Unsigned32,
    enrpServerPeerLastHeard  TimeTicks }

    enrpServerPeerIndex OBJECT-TYPE
    SYNTAX     INTEGER (1..65535)     Unsigned32 (1..4294967295)
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
                      "Contains the ASAP/UDP port number
    "A unique identifier for a peer entry in the announces
                      are sent to" table listing
    of a peer table."
    ::= { enrpServerEntry 10 enrpServerPeerEntry 1 }

   enrpServerASAPAnnounceAddr

    enrpServerPeerIdentifier OBJECT-TYPE
    SYNTAX     InetAddress     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                   "Contains the ASAP/UDP multicast address the
                   announces are sent to"
    "The ENRP identifier of this peer."
    ::= { enrpServerEntry 11 enrpServerPeerEntry 2 }

   enrpServerENRPAnnouncePort

    enrpServerPeerPort OBJECT-TYPE
    SYNTAX     INTEGER     Unsigned32 (1..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                      "Contains the ENRP/UDP
    "The SCTP port number of the announces
                      are sent to" ENRP transport endpoint of this peer."
    ::= { enrpServerEntry 12 enrpServerPeerEntry 3 }

   enrpServerENRPAnnounceAddr

    enrpServerPeerLastHeard OBJECT-TYPE
    SYNTAX     InetAddress     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                   "Contains
    "The time since the ENRP/UDP multicast address reception of the
                   announces are sent to" last ENRP Peer Presence
    message of this peer."
    ::= { enrpServerEntry 13 enrpServerPeerEntry 4 }

    -- ## Definition of the pool peer address list table ################################
   poolTable #######################
    enrpServerPeerAddrTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF poolEntry ENRPServerPeerAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                      "The conceptual
    "A table listing of the pool served
                      by this handlespace" peer endpoint addresses."
    ::= { enrpServers 3 9 }
   poolEntry

    enrpServerPeerAddrTableEntry  OBJECT-TYPE
    SYNTAX     PoolEntry     ENRPServerPeerAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                      "The conceptual row in poolTable"
    "A table listing of all IP addresses of the ENRP
    transport endpoint of a peer referenced by peerIndex."
    INDEX { enrpServerIndex poolIndex enrpServerPeerIndex,
    enrpServerPeerAddrTableIndex }
    ::= { poolTable enrpServerPeerAddrTable 1 }

   PoolEntry

    ENRPServerPeerAddrTableEntry ::= SEQUENCE {
                   poolIndex        PoolIndex,
                   poolElementCount Counter32,
                   poolHandle       PoolHandle
    enrpServerPeerAddrTableIndex Unsigned32,
    enrpServerPeerL3Proto            InetAddressType,
    enrpServerPeerL3Addr             InetAddress }

   poolIndex

    enrpServerPeerAddrTableIndex OBJECT-TYPE
    SYNTAX     PoolIndex     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                      "This is the index to
    "A unique identifier for the poolTable" IP address of a peer ENRP
    transport endpoint."
    ::= { poolEntry 1}

   poolElementCount enrpServerPeerAddrTableEntry 1 }

    enrpServerPeerL3Proto OBJECT-TYPE
    SYNTAX     Counter32     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The number network-layer protocol (IPv4 or IPv6) of pool elements that belong to this
                       pool handle" an IP address of
    a peer ENRP transport endpoint."
    ::= { poolEntry enrpServerPeerAddrTableEntry 2 }

   poolHandle

    enrpServerPeerL3Addr OBJECT-TYPE
    SYNTAX     PoolHandle     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The pool handle IP address of this row" a peer ENRP transport endpoint."
    ::= { poolEntry enrpServerPeerAddrTableEntry 3 }

    -- ################################################################
    -- #### Pool Elements Section                                  ####
    -- ################################################################

    -- ## Definition of the pool element table ########################
    poolElementTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF poolElementEntry PoolElementEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The conceptual table listing the PEs per of pool handle" elements."
    ::= { enrpServers 4 poolElements 1 }

    poolElementEntry OBJECT-TYPE
    SYNTAX     PoolELementEntry     PoolElementEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                       "The conceptual row
    "A pool element in poolElementTable. Note the
                       compound index element. We are using the
                       table-in-table idea here." table listing of pool elements."
    INDEX { enrpServerIndex, poolIndex, poolElementIndex }
    ::= { poolElementTable 1 }

    PoolElementEntry ::= SEQUENCE {
    poolElementIndex        PoolElementIndex,
                    asapTransportPort       INTEGER,
                    asapTransportAddrCount  Counter32,
                    userTransportProtocol   INTEGER,
                    userTransportPort       INTEGER,
                    userTransportUse        TransportUse,
                    userTransportAddrCount  Counter32,
                    policyType              PolicyType,
                    policyDescr             PolicyDescription,
                    polcyWeight             PolicyWeight,
                    polcyLoad               PolicyLoad,
                    polcyLoadDegradation    PolicyLoad,
                    registrationLife                 Unsigned32,
    poolElementOperationScope        OperationScopeType,
    poolElementPoolHandle            PoolHandleType,
    poolElementIdentifier            PoolElementIdentifierType,
    poolElementDescription           OCTET STRING,
    poolElementUptime                TimeTicks,
    poolElementASAPTransportPort     Unsigned32,
    poolElementUserTransportProtocol Unsigned32,
    poolElementUserTransportPort     Unsigned32,
    poolElementUserTransportUse      TransportUseType,
    poolElementPolicyID              PolicyIDType,
    poolElementPolicyDescr           OCTET STRING,
    poolElementPolicyWeight          PolicyWeightType,
    poolElementPolicyLoad            PolicyLoadType,
    poolElementPolicyLoadDegradation PolicyLoadType,
    poolElementRegistrationLife      TimeTicks,
                    homeENRPServer          ENRPServerIdentifier
    poolElementHomeENRPServer        ENRPServerIdentifierType }

    poolElementIndex OBJECT-TYPE
    SYNTAX     PoolElementIndex     Unsigned32 (1..4294967295)
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
                       "This is
    "An integer to uniquely identify a pool element. Note,
    that uniqueness of a pool element identifier in the pool
    is not enforced, therefore this index into the poolElementTable" is required here!"
    ::={ poolElementEntry 1 }

   asapTransportPort

    poolElementOperationScope OBJECT-TYPE
    SYNTAX     INTEGER (1..65535)     OperationScopeType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                       "Contains the ASAP transport protocol's port
                       number
    "The operation scope of a this pool element" element."
    ::= { poolElementEntry 2 }
   asapTransportAddrCount

    poolElementPoolHandle OBJECT-TYPE
    SYNTAX     Counter32     PoolHandleType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                       "Counts the number
    "The pool handle of ASAP network-layer
                       addresses assigned to a this pool element"
                    ::= { element."
    ::={ poolElementEntry 3 }

   userTransportProtocol

    poolElementIdentifier OBJECT-TYPE
    SYNTAX     INTEGER (0..255)     PoolElementIdentifierType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                       "Contains the user transport protocol ID
    "The pool element identifier of a this pool element"
                    ::= { element."
    ::={ poolElementEntry 4 }

   userTransportPort

    poolElementDescription OBJECT-TYPE
    SYNTAX     INTEGER (1..65535)     OCTET STRING (SIZE (0..255))
    MAX-ACCESS read-only read-write
    STATUS     current
    DESCRIPTION
                       "Contains the user transport protocol's port
                       number
    "A textual description of a this pool element" element, e.g. its location
    and a contact address of its administrator."
    ::= { poolElementEntry 5 }

   userTransportUse

    poolElementUptime OBJECT-TYPE
    SYNTAX     TransportUse     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                       "Contains the user transport use
    "The ENRP service uptime of a this pool
                       element" element."
    ::= { poolElementEntry 6 }

   userTransportAddrCount

    poolElementASAPTransportPort OBJECT-TYPE
    SYNTAX     Counter32     Unsigned32 (1..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
                       "Counts the
    "The SCTP port number of user transport
                       network-layer addresses assigned to a the ASAP endpoint of this pool element"
    element."
    ::= { poolElementEntry 7 }

   policyType
    poolElementUserTransportProtocol OBJECT-TYPE
    SYNTAX     PolicyType     Unsigned32 (0..255)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The policy type transport protocol number of the service endpoint
    of this pool element" element."
    ::= { poolElementEntry 8 }

   policyDescr

    poolElementUserTransportPort OBJECT-TYPE
    SYNTAX     PolicyDescription     Unsigned32 (1..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The policy description transport protocol's port number of the service
    endpoint of this pool element" element."
    ::= { poolElementEntry 9 }

   policyWeight

    poolElementUserTransportUse OBJECT-TYPE
    SYNTAX     PolicyWeight     TransportUseType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The policy's weight parameter transport use of the service endpoint of this pool element"
    element."
    ::= { poolElementEntry 10 }

   policyLoad

    poolElementPolicyID OBJECT-TYPE
    SYNTAX     PolicyLoad     PolicyIDType
    MAX-ACCESS read-only read-write
    STATUS     current
    DESCRIPTION
    "The policy's load parameter pool policy of this pool element" element."
    ::= { poolElementEntry 11 }

   policyLoadDegradation

    poolElementPolicyDescr OBJECT-TYPE
    SYNTAX     PolicyLoad     OCTET STRING (SIZE (0..255))
    MAX-ACCESS read-only read-write
    STATUS     current
    DESCRIPTION
    "The policy's load degradation parameter textual description of the pool policy of this pool element"
    element."
    ::= { poolElementEntry 12 }

   registrationLife

    poolElementPolicyWeight OBJECT-TYPE
    SYNTAX     TimeTicks     PolicyWeightType
    MAX-ACCESS read-only read-write
    STATUS     current
    DESCRIPTION
    "The registration life of the pool element" policy's weight parameter for this pool element.
    This field is read/write."
    ::= { poolElementEntry 13 }
   homeENRPServer

    poolElementPolicyLoad OBJECT-TYPE
    SYNTAX     ENRPServerIdentifier     PolicyLoadType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The ID of the home ENRP server of the pool element"
                ::= { poolElementEntry 14 }

   -- ## Definition of asap transport address list table #############
   asapTransportAddrListTable OBJECT-TYPE
                SYNTAX     SEQUENCE OF asapTransportAddrListTableEntry
                MAX-ACCESS not-accessible
                STATUS     current
                DESCRIPTION
                   "This table holds all the IP addresses of a
                   multi-homed host"
                ::= { enrpServers 5 }

   asapTransportAddrListTableEntry  OBJECT-TYPE
                SYNTAX     ASAPTransportAddrListTableEntry
                MAX-ACCESS not-accessible
                STATUS     current
                DESCRIPTION
                   "A row in the asapTransportAddrList table"
                INDEX { enrpServerIndex, poolIndex, poolElementIndex,
                        asapTransportAddrListTableIndex }
                ::= { asapTransportAddrListTable 1 }

   ASAPTransportAddrListTableEntry policy's load status for this pool element."
    ::= SEQUENCE {
                asapTransportAddrListTableIndex Unsigned32,
                networkLayerProtocol            INTEGER,
                networkLayerAddress             InetAddress poolElementEntry 14 }

   asapTransportAddrListTableIndex

    poolElementPolicyLoadDegradation OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)     PolicyLoadType
    MAX-ACCESS not-accessible read-write
    STATUS     current
    DESCRIPTION
                   "This is the index into the
                   asapTransportAddrListTable"
    "The pool policy's load degradation parameter for this pool
    element."
    ::= { asapTransportAddrListTableEntry 1 poolElementEntry 15 }

   networkLayerProtocol

    poolElementRegistrationLife OBJECT-TYPE
    SYNTAX     INTEGER (0..255)     TimeTicks
    MAX-ACCESS read-only read-write
    STATUS     current
    DESCRIPTION
    "The protocol column in the
                   asapTransportAddrListTable" registration life of this pool element."
    ::= { asapTransportAddrListTableEntry 2 poolElementEntry 16 }

   networkLayerAddress

    poolElementHomeENRPServer OBJECT-TYPE
    SYNTAX     InetAddress     ENRPServerIdentifierType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The address column in ID of the
                   asapTransportAddrListTable" home ENRP server of this pool element."
    ::= { asapTransportAddrListTableEntry 3 poolElementEntry 17 }

    -- ## Definition of user the ASAP transport address list table #############
   userTransportAddrListTable #########
    poolElementASAPAddrTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF userTransportAddrListTableEntry PoolElementASAPAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                   "This
    "A table holds listing of all the IP addresses of a
                   multi-homed host" the ASAP transport
    endpoint."
    ::= { enrpServers 6 poolElements 2 }

   userTransportAddrListTableEntry
    poolElementASAPAddrTableEntry  OBJECT-TYPE
    SYNTAX     UserTransportAddrListTableEntry     PoolElementASAPAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                   "A row in
    "An IP address of the userTransportAddrList table" ASAP transport endpoint."
    INDEX { enrpServerIndex, poolIndex, poolElementIndex,
                        userTransportAddrListTableIndex
    poolElementASAPAddrTableIndex }
    ::= { userTransportAddrListTable poolElementASAPAddrTable 1 }

   UserTransportAddrListTableEntry

    PoolElementASAPAddrTableEntry ::= SEQUENCE {
                userTransportAddrListTableIndex
    poolElementASAPAddrTableIndex Unsigned32,
                networkLayerProtocol            INTEGER,
                networkLayerAddress
    poolElementASAPL3Proto            InetAddressType,
    poolElementASAPL3Addr             InetAddress }

   userTransportAddrListTableIndex

    poolElementASAPAddrTableIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                   "This is the index into
    "A unique identifier for the
                   userTransportAddrListTable" IP address of an ASAP transport
    endpoint."
    ::= { userTransportAddrListTableEntry poolElementASAPAddrTableEntry 1 }
   networkLayerProtocol

    poolElementASAPL3Proto OBJECT-TYPE
    SYNTAX     INTEGER (0..255)     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The network-layer protocol column in the
                   userTransportAddrListTable" (IPv4 or IPv6) of an IP address of
    an ASAP transport endpoint."
    ::= { userTransportAddrListTableEntry poolElementASAPAddrTableEntry 2 }

   networkLayerAddress

    poolElementASAPL3Addr OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The IP address column in the
                   userTransportAddrListTable" of an ASAP transport endpoint."
    ::= { userTransportAddrListTableEntry poolElementASAPAddrTableEntry 3 }

    -- ## Definition of ENRP the user transport address list table #######################
   enrpAddrListTable #########
    poolElementUserAddrTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF enrpAddrListTableEntry PoolElementUserAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                   "This
    "A table holds listing of all the IP addresses of a
                   multi-homed host" the user
    transport endpoint."
    ::= { enrpServers 7 poolElements 6 }

   enrpAddrListTableEntry

    poolElementUserAddrTableEntry  OBJECT-TYPE
    SYNTAX     PeerAddrListTableEntry     PoolElementUserAddrTableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                   "A row in
    "An IP address of the enrpAddrList table" user transport endpoint."
    INDEX { enrpIndex, enrpAddrListTableIndex poolElementIndex,
    poolElementUserAddrTableIndex }
    ::= { enrpAddrListTable poolElementUserAddrTable 1 }

   PeerAddrListTableEntry

    PoolElementUserAddrTableEntry ::= SEQUENCE {
                enrpAddrListTableIndex
    poolElementUserAddrTableIndex Unsigned32,
                networkLayerProtocol   INTEGER,
                networkLayerAddress
    poolElementUserL3Proto            InetAddressType,
    poolElementUserL3Addr             InetAddress }

   enrpAddrListTableIndex

    poolElementUserAddrTableIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                   "This is the index into
    "A unique identifier for the enrpAddrListTable" IP address of an user transport
    endpoint."
    ::= { enrpAddrListTableEntry poolElementUserAddrTableEntry 1 }

   networkLayerProtocol

    poolElementUserL3Proto OBJECT-TYPE
    SYNTAX     INTEGER (0..255)     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The network-layer protocol column in the enrpAddrListTable" (IPv4 or IPv6) of an IP address of
    an user transport endpoint."
    ::= { enrpAddrListTableEntry poolElementUserAddrTableEntry 2 }

   networkLayerAddress

    poolElementUserL3Addr OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The IP address column in the enrpAddrListTable" of an user transport endpoint."
    ::= { enrpAddrListTableEntry poolElementUserAddrTableEntry 3 }

    -- ################################################################
    -- #### Pool Users Section                                     ####
    -- ################################################################

    -- ## Definition of peer the pool user table ####################################
   peerTable ###########################
    poolUserTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF peerEntry PoolUserEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The conceptual table listing of the peer of
                      this ENRP server" pool users."
    ::= { enrpServers 8 poolUsers 1 }

   peerEntry

    poolUserEntry OBJECT-TYPE
    SYNTAX     PeerEntry     PoolUserEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                      "The conceptual row
    "A pool user in peerTable" the table listing of pool users."
    INDEX { peerIndex poolUserIndex }
    ::= { peerTable poolUserTable 1 }

   PeerEntry

    PoolUserEntry ::= SEQUENCE {
                   peerIndex
    poolUserIndex          Unsigned32,
                   peerIdentifier
    poolUserOperationScope OperationScopeType,
    poolUserPoolHandle     PoolHandleType,
    poolUserDescription    OCTET STRING,
                   peerPort       INTEGER,
                   peerLastHeard
    poolUserUptime         TimeTicks
                   peerAddrCount  Counter32 }

   peerIndex

    poolUserIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
                      "This is the index
    "An integer to the peerTable"
                   ::= { peerEntry uniquely identify a pool user."
    ::={ poolUserEntry 1 }

   peerIdentifier

    poolUserOperationScope OBJECT-TYPE
    SYNTAX     Unsigned32     OperationScopeType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The peer ENRP identifier operation scope of this row" pool user."
    ::= { peerEntry poolUserEntry 2 }

   peerPort

    poolUserPoolHandle OBJECT-TYPE
    SYNTAX     INTEGER (1..65535)     PoolHandleType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The poort's port number"
                   ::= { peerEntry pool handle of this pool user."
    ::={ poolUserEntry 3 }

   peerLastHeard

    poolUserDescription OBJECT-TYPE
    SYNTAX     TimeTicks     OCTET STRING (SIZE (0..255))
    MAX-ACCESS read-only read-write
    STATUS     current
    DESCRIPTION
                    "The peer last heard information
    "A textual description of this row" pool user, e.g. its location
    and a contact address of its administrator."
    ::= { peerEntry poolUserEntry 4 }

   peerAddrCount

    poolUserUptime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The peer address count ENRP service uptime of this row" pool user."
    ::= { peerEntry poolUserEntry 5 }

    -- ## Definition of peer address list table #######################
   peerAddrListTable OBJECT-TYPE
                SYNTAX     SEQUENCE OF peerAddrListTableEntry
                MAX-ACCESS not-accessible
                STATUS     current
                DESCRIPTION
                   "This table holds all the IP addresses of a
                   multi-homed host" MIB conformance and compliance #############################
    rserpoolMIBConformance OBJECT IDENTIFIER ::= { enrpServers 9 rserpoolMIB 4 }

   peerAddrListTableEntry  OBJECT-TYPE
                SYNTAX     PeerAddrListTableEntry
                MAX-ACCESS not-accessible

    rserpoolMIBCompliances OBJECT IDENTIFIER ::= {
                              rserpoolMIBConformance 1
                           }
    rserpoolMIBGroups      OBJECT IDENTIFIER ::= {
                              rserpoolMIBConformance 2
                           }

    rserpoolMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
                   "A row in the peerAddrList table"
                INDEX
    "The compliance statement for SNMP entities which
    implement RSerPool."
    MODULE  -- this module
    MANDATORY-GROUPS { peerIndex, peerAddrListTableIndex enrpServerGroup,
    poolElementGroup,
    poolUserGroup }
    ::= { peerAddrListTable rserpoolMIBCompliances 1 }

   PeerAddrListTableEntry ::= SEQUENCE {
                peerAddrListTableIndex Unsigned32,
                networkLayerProtocol   INTEGER,
                networkLayerAddress    InetAddress

    enrpServerGroup OBJECT-GROUP
    OBJECTS { enrpServerOperationScope,
    enrpServerIdentifier,
    enrpServerDescription,
    enrpServerUptime,
    enrpServerPort,
    enrpServerASAPAnnouncePort,
    enrpServerASAPAnnounceAddr,
    enrpServerASAPAnnounceAddrType,
    enrpServerENRPAnnounceAddrType,
    enrpServerENRPAnnouncePort,
    enrpServerENRPAnnounceAddr,

    enrpServerPoolHandle,
    enrpServerPoolElementIdentifier,

    enrpServerASAPTransportPort,
    enrpServerUserTransportProtocol,
    enrpServerUserTransportUse,
    enrpServerUserTransportPort,
    enrpServerPolicyID,
    enrpServerPolicyDescr,
    enrpServerPolicyWeight,
    enrpServerPolicyLoad,
    enrpServerPolicyLoadDegradation,
    enrpServerRegistrationLife,
    enrpServerHomeENRPServer,

    enrpServerASAPL3Proto,
    enrpServerASAPL3Addr,

    enrpServerUserL3Proto,
    enrpServerUserL3Addr,

    enrpServerENRPL3Proto,
    enrpServerENRPL3Addr,

    enrpServerPeerIdentifier,
    enrpServerPeerPort,
    enrpServerPeerLastHeard,
    enrpServerPeerL3Proto,
    enrpServerPeerL3Addr }

   peerAddrListTableIndex OBJECT-TYPE
                SYNTAX     Unsigned32 (1..4294967295)
                MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
                   "This is the index into the peerAddrListTable" "The group of ENRP servers"
    ::= { peerAddrListTableEntry rserpoolMIBGroups 1 }

   networkLayerProtocol OBJECT-TYPE
                SYNTAX     INTEGER (0..255)
                MAX-ACCESS read-only

    poolElementGroup OBJECT-GROUP
    OBJECTS { poolElementOperationScope,
    poolElementPoolHandle,
    poolElementIdentifier,
    poolElementDescription,
    poolElementUptime,
    poolElementASAPTransportPort,
    poolElementUserTransportProtocol,
    poolElementUserTransportPort,
    poolElementUserTransportUse,
    poolElementPolicyID,
    poolElementPolicyDescr,
    poolElementPolicyWeight,
    poolElementPolicyLoad,
    poolElementPolicyLoadDegradation,
    poolElementRegistrationLife,
    poolElementHomeENRPServer,

    poolElementASAPL3Proto,
    poolElementASAPL3Addr,

    poolElementUserL3Proto,
    poolElementUserL3Addr }
    STATUS current
    DESCRIPTION "The protocol column in the peerAddrListTable" group of pool elements"
    ::= { peerAddrListTableEntry rserpoolMIBGroups 2 }

   networkLayerAddress OBJECT-TYPE
                SYNTAX     InetAddress
                MAX-ACCESS read-only

    poolUserGroup OBJECT-GROUP
    OBJECTS { poolUserOperationScope,
    poolUserPoolHandle,
    poolUserDescription,
    poolUserUptime }
    STATUS current
    DESCRIPTION "The address column in the peerAddrListTable" group of pool users"
    ::= { peerAddrListTableEntry rserpoolMIBGroups 3 }

    END

   For sake of brevity and to avoid inadvertant inconsistencies due to
   typos, we omit the full elaboration of the poolElements and poolUsers
   branch.  However, we repeat for emphasis that the semantics of the
   two branches are different, as noted earlier in this memo.

5.

6.  Security Considerations

   SNMPv1 by itself is not a secure environment.  Even if the network
   itself is secure (for example by using IPSec), there is no control as
   to who on the secure network is allowed to access and GET/SET (read/
   change/create/delete) the objects in this MIB.

   It is recommended that the implementers consider the security
   features as provided by the SNMPv3 framework.  Specifically, the use
   of the User-based Security Model RFC 2574 [15] [7] and the View-based
   Access Control Model RFC 2575 [16] [8] is recommended.

   It is then a customer/user responsibility to ensure that the SNMP
   entity giving access to an instance of this MIB, is properly
   configured to give access to the objects only to those principals
   (users) that have legitimate rights to indeed GET or SET (change/
   create/delete) them.

6.

7.  IANA Considerations

   IANA will need to assign an OID prefix for the RSerPool MIB.

7.  References

7.1  Normative References

   [1]   Rose, M. and K. McCloghrie, "Structure and identification of
         management information for TCP/IP-based internets", STD 16,
         RFC 1155, May 1990.

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

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

   [4]   Rose, M., "Convention for defining traps for use with the
         SNMP", RFC 1215, March 1991.

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

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

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

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

   [9]   Case, J., McCloghrie, K., Rose, RSerPool MIB.

8.  References

8.1.  Normative References

   [1]   Tuexen, M., Xie, Q., Stewart, R., Shore, M., Ong, L., Loughney,
         J., and S. Waldbusser,
         "Protocol Operations M. Stillman, "Requirements for Version 2 of the Simple Network
         Management Protocol (SNMPv2)", Reliable Server
         Pooling", RFC 1905, 3237, January 1996.

   [10]  Case, J., McCloghrie, K., Rose, 2002.

   [2]   Tuexen, M., and S. Waldbusser,
         "Transport Mappings "Architecture for Version 2 of the Simple Network
         Management Reliable Server Pooling",
         draft-ietf-rserpool-arch-10 (work in progress), July 2005.

   [3]   Stewart, R., "Aggregate Server Access Protocol (SNMPv2)", RFC 1906, January 1996.

   [11]  Case, J., Mundy, (ASAP)",
         draft-ietf-rserpool-asap-13 (work in progress), February 2006.

   [4]   Stewart, R., Partain, D., "Endpoint Handlespace Redundancy Protocol (ENRP)",
         draft-ietf-rserpool-enrp-13 (work in progress), February 2006.

   [5]   Tuexen, M. and B. T. Dreibholz, "Reliable Server Pooling
         Policies", draft-ietf-rserpool-policies-02 (work in progress),
         February 2006.

   [6]   Stewart, "Introduction
         to Version 3 of the Internet-standard Network Management
         Framework", RFC 2570, April 1999.

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

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

   [14]  Levi, D., Meyer, P., (ASAP) and B. Stewart, "SNMP Applications",
         RFC 2573, April 1999.

   [15]
         Endpoint Handlespace Redundancy  Protocol (ENRP) Parameters",
         draft-ietf-rserpool-common-param-10 (work in progress),
         February 2006.

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

   [16]

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

   [17]

   [9]   McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder,
         Ed., "Structure of Management Information Version 2 (SMIv2)",
         STD 58, RFC 2578, April 1999.

   [18]

   [10]  McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder,
         Ed., "Textual Conventions for SMIv2", STD 58, RFC 2579,
         April 1999.

   [19]

   [11]  McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Conformance
         Statements for SMIv2", STD 58, RFC 2580, April 1999.

   [20]  Tuexen, M., "Architecture for Reliable Server Pooling",
         draft-ietf-rserpool-arch-10 (work in progress), I-D
         Status iesg, IETF Datatracker State IESG Evaluation :: Point
         Raised - writeup needed, Intended Status Informational,
         Responsible AD Jon Peterson, July 2005.

   [21]  Stewart,

   [12]  Case, J., Mundy, R., "Aggregate Server Access Protocol (ASAP)",
         draft-ietf-rserpool-asap-12 (work in progress), I-D
         Status active, IETF Datatracker State AD is watching, Intended
         Status None, Responsible AD Jon Peterson, July 2005.

   [22] Partain, D., and B. Stewart, R., "Endpoint Handlespace Redundancy Protocol (ENRP)",
         draft-ietf-rserpool-enrp-12 (work in progress), I-D
         Status active, IETF Datatracker State AD is watching, Intended
         Status None, Responsible AD Jon Peterson, July 2005.

   [23]  Tuexen, M. "Introduction
         and T. Dreibholz, "Reliable Server Pooling
         Policies", draft-ietf-rserpool-policies-01 (work in progress),
         I-D Status expired, June 2005.

7.2 Applicability Statements for Internet-Standard Management
         Framework", RFC 3410, December 2002.

8.2.  Informative References

   [24]

   [13]  Perkins, D. and E. McGinnis, "Understanding SNMP MIBs", 1997.

   [25]

   [14]  Dreibholz, T., "Thomas Dreibholz's RSerPool Page",
         URL: http://tdrwww.exp-math.uni-essen.de/dreibholz/rserpool/.

   [26]

   [15]  Dreibholz, T., "Applicability of Reliable Server Pooling for
         Real-Time Distributed  Computing",
         draft-dreibholz-rserpool-applic-distcomp-01 (work in progress),
         February 2006.

   [27]

   [16]  Dreibholz, T. and J. Pulinthanath, "Applicability of Reliable
         Server Pooling for SCTP-Based Endpoint Mobility",
         draft-dreibholz-rserpool-applic-mobility-00 (work in progress),
         March 2006.

   [17]  Coene, L., "Reliable Server Pooling Applicability for IP Flow
         Information Exchange", draft-coene-rserpool-applic-ipfix-02
         (work in progress), February 2006.

   [18]  Dreibholz, T. and E. Rathgeb, "On the Performance of Reliable
         Server Pooling Systems", Proceedings of the 30th IEEE Local
         Computer Networks Conference, November 2005.

   [28]

   [19]  Dreibholz, T. and E. Rathgeb, "The Performance of Reliable
         Server Pooling Systems in Different Server Capacity Scenarios",
         Proceedings of the IEEE TENCON, November 2005.

   [29]

   [20]  Dreibholz, T. and E. Rathgeb, "Implementing the Reliable Server
         Pooling Framework", Proceedings of the 8th IEEE International
         Conference on Telecommunications, June 2005.

   [30]

   [21]  Dreibholz, T., Rathgeb, E., and M. Tuexen, "Load Distribution
         Performance of the Reliable Server Pooling Framework",
         Proceedings of the 4th IEEE International Conference on
         Networking, April 2005.

Authors' Addresses

   Thomas Dreibholz
   University of Duisburg-Essen, Institute for Experimental Mathematics
   Ellernstrasse 29
   45326 Essen, Nordrhein-Westfalen
   Germany

   Phone: +49-201-1837637
   Fax:   +49-201-1837673
   Email: dreibh@exp-math.uni-essen.de
   URI:   http://www.exp-math.uni-essen.de/~dreibh/

   Jaiwant Mulik
   Temple University
   CIS Department
   Room 303, Computer Building (038-24)
   1805 N. Broad St.
   Philadelphia, PA  19122
   US

   Phone: +1 215 204 3197
   Email: jmulik@temple.edu
   URI:   http://unix.temple.edu/~jmulik

   Phillip Conrad
   University of Delaware
   103 Smith Hall
   Newark  DE 19716
   USA

   Phone: +1 302 831 8622
   Email: conrad@acm.org

   Kevin Pinzhoffer
   Temple University
   CIS Department
   Room 303, Computer Building (038-24)
   1805 N. Broad St.
   Philadelphia, PA  19122
   US

   Phone: +1 215 204 3197
   Email: kpinzhof@temple.edu

Full Copyright Statement

   Copyright (C) The Internet Society (2006).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Copyright Statement

   Copyright (C) The Internet Society (2006).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.

Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society. IETF
   Administrative Support Activity (IASA).