Network Working Group                                Aldri L. dos Santos
Expires July 01, 2002                      Federal University of Parana'
Internet Draft                                       Elias P. Duarte Jr.
                                           Federal University of Parana'
                                                         Glenn Mansfield
                                                   Cyber Solutions, inc.

       A Clustering Architecture for Replicating Managed Objects

             <draft-aldri-disman-replication-mib-01.txt>

Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC 2026.  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

   Distribution of this document is unlimited. Please send comments to
   Federal University at Parana .

Copyright Notice

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

Abstract

   This memo defines a portion of the Management Information Base (MIB)
   for replicating managed objects. In particular, it describes a set of
   objects that are used for supporting object replication based on an
   clustering architecture.

Aldri, Elias & Glenn                                            [Page 1]


Internet-Draft               Replication MIB                January 2002

Table of Contents

   1.  Introduction .................................................. 3
   2.  The SNMP Management Framework ................................. 3
   3.  A Clustering Architecture for Replicating Managed Objects ..... 4
   3.1. The Architecture ............................................. 4
   3.2. Usage Example ................................................ 5
   4.  Definitions ...................................................10
   5.  Security Considerations .......................................25
   6.  Intellectual Property .........................................26
   7.  References ....................................................27
   8.  Authors's Address .............................................30
   9.  Full Copyright Statement ......................................31

Aldri, Elias & Glenn                                            [Page 2]


Internet-Draft               Replication MIB                January 2002

1.  Introduction

   This memo defines a portion of the Management Information Base (MIB)
   for replicating managed objects. In particular, it describes a set of
   objects that are used for supporting object replication based on an
   clustering architecture.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [1].

2.  The SNMP Management Framework

   The SNMP Management Framework presently consists of five major
   components:

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

   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 [3], STD 16, RFC 1212 [4] and RFC
       1215 [5].  The second version, called SMIv2, is described
       in STD 58, RFC 2578 [6], STD 58, RFC 2579 [7] and
       STD 58, RFC 2580 [8].

   o   Message protocols for transferring management information. The
       first version of the SNMP message protocol is called SNMPv1 and
       described in STD 15, RFC 1157 [9]. A second version of the
       SNMP message protocol, which is not an Internet standards track
       protocol, is called SNMPv2c and described in RFC 1901 [10]
       and RFC 1906 [11]. The third version of the message
       protocol is called SNMPv3 and described in RFC 1906 [11],
       RFC 2572 [12] and RFC 2574 [13].

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

   o   A set of fundamental applications described in RFC 2573
       [15] and the view-based access control mechanism described
       in RFC 2575 [16].

   A more detailed introduction to the current SNMP Management Framework
   can be found in RFC 2570 [17].

Aldri, Elias & Glenn                                            [Page 3]


Internet-Draft               Replication MIB                January 2002

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  Objects in the MIB are
   defined using the mechanisms defined in the 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 is possible (use of Counter64). Some machine readable
   information in SMIv2 will be converted into textual descriptions in
   SMIv1 during the translation process. However, this loss of machine
   readable information is not considered to change the semantics of the
   MIB.

3.  A Clustering Architecture for Replicating Managed Objects

   The goal of this document is to define a replication architecture
   which supports the replication of objects in order to keep
   managed objects available in critical situations in which the
   network entities are unreachable [18].

   Replication [19] is a useful tool which has been applied to introduce
   fault tolerance in both distributed systems and databases, where it
   also aims at improving performance [20]. Replication is the process
   of making a replica (a copy) of resources, processes or data. Although
   it is an intuitive concept, replication requires sophisticated
   techniques for successful implementation in a distributed system [21].

   The replication technique used in this architecture is known as
   semi-active replication [20, 22], which is a hybrid approach involving
   characteristics of both active and passive replication [23]. In this
   technique, replicated data can be accessed through any replica
   member. However, only the original replica owner, known as the leader,
   determines the order in which the replica is updated.

3.1. The Architecture

   The proposed architecture is structured in three layers, as shown in
   figure 1 and described below. The three layers are called the cluster
   member layer, the cluster layer and the manager layer, respectively.
   The clustering approach is similar to the one introduced in [24].

   o  The lower layer keeps management entities called cluster members.
      Those entities have their managed objects monitored and replicated
      in a cluster, as defined below.

Aldri, Elias & Glenn                                            [Page 4]


Internet-Draft               Replication MIB                January 2002

   o  The middle layer keeps management entities called clusters.
      Each cluster has the task of monitoring a subset of managed objects
      of a set of management entities and replicating those objects in
      other clusters.

   o  In the upper layer keeps Management Applications (MA) which define
      management clusters, their purpose as well as other clusters that
      maintain replicas of the objects monitored by the defined clusters.

                               ___________
                              |           |
                    +-----<---|    MA     |--->----+
                    |         |___________|        |
                    |                              |
           +--------V------------------------------V-----------+
           |  +--------------+  REPLICATION  +--------------+  |
           |  | CLUSTERi(Ci) |<=============>| CLUSTERj(Cj) |  |
           |  +-----+--------+               +-----+--------+  |
           +--------|------------------------------|-----------+
                    |                              |
            +-------V-----------+        +---------V---------+
            |  [Memb1]          |        |          [Memb4]  |
            |         [Memb2]   |        |  [Memb3]          |
            +-------------------+        +-------------------+
               CLUSTER MEMBERS              CLUSTER MEMBERS

                Figure 1: The Replication Architecture.

   This architecture also allows different means of communication to be
   used to send instances of replicated objects among the clusters.
   We propose the use of a group communication protocol [25, 26, 27] for
   that purpose, due to the properties and services which can be offered
   by such a protocol (e.g. reliable multicast, group membership, etc.)

3.2. Usage Example

   This subsection presents an example of how the proposed architecture
   is used to replicate managed objects in the case shown in figure 1.
   Two clusters (Ci and Cj) are defined with the purpose of monitoring and
   replicating managed objects of their cluster members (Memb1, Memb2, Memb3
   and Memb4). In order to avoid a lenghthy description, only one specific
   object (ifInOctets) is replicated.

   The Cluster Table is defined and kept by the Management Application (MA).
   This table contains the definition of clusters, the replicated objects,
   and monitored members.  The Member Table, Replicated Object Table and
   Peer Table are used by the cluster to monitor and replicate managed

Aldri, Elias & Glenn                                            [Page 5]


Internet-Draft               Replication MIB                January 2002

   objects. The Replica Table in each cluster keeps the replicated
   instances of managed objects.

   The table below is an example of a Cluster Table in which a Management
   Application defines two clusters (Ci and Cj) each with two members
   (Memb1 and Memb2; Memb3 and Memb4, respectively). OID refers to the
   replicated object as well as Instance Index refers to instance of
   the replicated object. RepCID is the identifier of the cluster in which
   the object is replicated. Name refers to the human manager, Descr
   contains a description and Status indicates that the cluster is active.
   +----------------------------------------------------
   |Cluster Table
   +------+---+---------+-------+-----------+--------+--
   | Index| ID|  Address|  Address|   Member|  Member|
   |      |   |     Type|         |     Type|        |
   +------+---+---------+---------+---------+--------+--
   |     1| Ci|  ipv4(1)| 10.0.0.1|  ipv4(1)|     Mb1|
   |     2| Ci|  ipv4(1)| 10.0.0.1|  ipv4(1)|     Mb1|
   |     3| Ci|  ipv4(1)| 10.0.0.1|  ipv4(1)|     Mb2|
   |     4| Ci|  ipv4(1)| 10.0.0.1|  ipv4(1)|     Mb2|
   |     5| Cj|  ipv4(1)| 10.0.0.2|  ipv4(1)|     Mb3|
   |     6| Cj|  ipv4(1)| 10.0.0.2|  ipv4(1)|     Mb4|
   +------+---+---------+---------+---------+--------+--

   -------------------------------------------------------+
   Cluster Table (Cont')                                  |
   -----------+---------+-------+-----+--------+----------+
           OID| Instance| RepCID| Name|   Descr|    Status|
              |    Index|       |     |        |          |
   -----------+---------+-------+-----+--------+----------+
    ifInOctets|        1|     Cj| John| example| active(1)|
    ifInOctets|        2|     Cj| John| example| active(1)|
    ifInOctets|        1|     Cj| John| example| active(1)|
    ifInOctets|        2|     Cj| John| example| active(1)|
    ifInOctets|        1|     Ci| John| example| active(1)|
    ifInOctets|        1|     Ci| John| example| active(1)|
   -----------+---------+-------+-----+--------+----------+

   Each cluster keeps three tables: the Member Table, which keeps the
   identifiers of the cluster's members; the Replicated Object Table
   which keeps the managed objects OID's; and the Peer Table keeps the
   identifier of the peer clusters that keep managed object replicas.
   An example of the three tables in CLUSTERi is shown below.

Aldri, Elias & Glenn                                            [Page 6]


Internet-Draft               Replication MIB                January 2002

   +----------------------------------------------------------+
   |Member Table                                              |
   +------+-------------+---------------+----------+----------+
   | Index| Address Type|        Address|  Security|    Status|
   +------+-------------+---------------+----------+----------+
   |     1|      ipv4(1)| 10.0.0.3 (Mb1)| community| active(1)|
   |     2|      ipv4(1)| 10.0.0.4 (Mb2)| community| active(1)|
   +------+-------------+---------------+----------+----------+

   In the Replicated Object Table below, the Instance Index refers to
   instance of the managed object which is replicated. The Interval refers
   to the checkpointing interval which is used to replicate instances
   of the managed objects.The active State indicates that the managed
   object is being replicated. The active Status indicates that the row
   information is complete.
   +-------------------------------------------------------------------+
   |Replicated Object Table                                            |
   +------+-----------+---------------+----------+----------+----------+
   | Index|        OID| Instance Index|  Interval|     State|    Status|
   +------+-----------+---------------+----------+----------+----------+
   |     1| ifInOctets|             1 | 2 seconds| active(1)| active(1)|
   |     2| ifInOctets|             2 | 2 seconds| active(1)| active(1)|
   +------+-----------+---------------+----------+----------+----------+

   This example Peer Table indicates that cluster Cj is being used to
   replicate managed objects. ROIndex indicates which objects are being
   replicated. The Status is active when row information is complete.
   +-------------------------------------------------------+
   |Peer Table                                             |
   +------+-------------+--------------+--------+----------+
   | Index| Address Type|       Address| ROIndex|    Status|
   +------+-------------+--------------+--------+----------+
   |     1|      ipv4(1)| 10.0.0.2 (Cj)|       1| active(1)|
   |     2|      ipv4(1)| 10.0.0.2 (Cj)|       2| active(1)|
   +------+-------------+--------------+--------+----------+

   After all tables are defined, the Replica Table is created and keeps
   replicated instances of managed objects. Each row has information about
   the peer clusters which replicate the managed objects, the objects
   original member Address, the object OID, its Instance Index, Value,
   Type and respective TimeStamp, and the Status which is active
   when information has been properly updated.

Aldri, Elias & Glenn                                            [Page 7]


Internet-Draft               Replication MIB                January 2002

   +-------------------------------------------------------------------
   |Replica Table
   +------+--------+--------+--------+--------+-----------+---------+--
   | Index| Address|    Peer|  Member|  Member|   Instance| Instance|
   |      |    Type| Address|    Type| Address|        OID|    Index|
   +------+--------+--------+--------+--------+-----------+---------+--
   |     1| ipv4(1)|      Ci| ipv4(1)|     Mb1| ifInOctets|        1|
   |     2| ipv4(1)|      Ci| ipv4(1)|     Mb1| ifInOctets|        2|
   |     3| ipv4(1)|      Ci| ipv4(1)|     Mb2| ifInOctets|        1|
   |     4| ipv4(1)|      Ci| ipv4(1)|     Mb2| ifInOctets|        2|
   |     5| ipv4(1)|      Cj| ipv4(1)|     Mb3| ifInOctets|        1|
   |     6| ipv4(1)|      Cj| ipv4(1)|     Mb4| ifInOctets|        1|
   +------+--------+--------+--------+--------+-----------+---------+--

   ------------------------------------------------------+
   Replica Table (Cont')                                 |
   ------+-------------+----------------------+----------+
    Value|        Value|             TimeStamp|    Status|
         |         Type|                      |          |
   ------+-------------+----------------------+----------+
      124| counter32(4)| Timeticks: 0:00:35.24| active(1)|
      145| counter32(4)| Timeticks: 0:00:36.83| active(1)|
      120| counter32(4)| Timeticks: 0:00:37.89| active(1)|
      123| counter32(4)| Timeticks: 0:00:38.89| active(1)|
      200| counter32(4)| Timeticks: 0:00:32.17| active(1)|
      300| counter32(4)| Timeticks: 0:00:33.77| active(1)|
   ------+----------------------+-------------+----------+

   All tables kept by CLUSTERj are analogous and shown below:
   +----------------------------------------------------------+
   |Member Table                                              |
   +------+-------------++--------------+----------+----------+
   | Index| Address Type|        Address|  Security|    Status|
   +------+-------------+---------------+----------+----------+
   |     1|      ipv4(1)| 10.0.0.5 (Mb3)| community| active(1)|
   |     2|      ipv4(1)| 10.0.0.6 (Mb4)| community| active(1)|
   +------+-------------+---------------+----------+----------+

   +-------------------------------------------------------------------+
   |Replicated Object Table                                            |
   +------+-----------+---------------+----------+----------+----------+
   | Index|        OID| Instance Index|  Interval|     State|    Status|
   +------+-----------+---------------+----------+----------+----------+
   |     1| ifInOctets|              1| 5 seconds| active(1)| active(1)|
   +------+-----------+---------------+----------+----------+----------+

Aldri, Elias & Glenn                                            [Page 8]


Internet-Draft               Replication MIB                January 2002

   +-------------------------------------------------------+
   |Peer Table                                             |
   +------+-------------+--------------+--------+----------+
   | Index| Address Type|       Address| ROIndex|    Status|
   +------+-------------+--------------+--------+----------+
   |     1|      ipv4(1)| 10.0.0.1 (Ci)|       1| active(1)|
   +------+-------------+--------------+--------+----------+

   +-------------------------------------------------------------------
   |Replica Table
   +------+--------+--------+--------+--------+-----------+---------+--
   | Index| Address|    Peer|  Member|  Member|   Instance| Instance|
   |      |    Type| Address|    Type| Address|        OID|    Index|
   +------+--------+--------+--------+--------+-----------+---------+--
   |     1| ipv4(1)|      Ci| ipv4(1)|     Mb1| ifInOctets|        1|
   |     2| ipv4(1)|      Ci| ipv4(1)|     Mb1| ifInOctets|        2|
   |     3| ipv4(1)|      Ci| ipv4(1)|     Mb2| ifInOctets|        1|
   |     4| ipv4(1)|      Ci| ipv4(1)|     Mb2| ifInOctets|        2|
   |     5| ipv4(1)|      Cj| ipv4(1)|     Mb3| ifInOctets|        1|
   |     6| ipv4(1)|      Cj| ipv4(1)|     Mb4| ifInOctets|        1|
   +------+--------+--------+--------+--------+-----------+---------+--

   ------------------------------------------------------+
   Replica Table (Cont')                                 |
   ------+-------------+----------------------+----------+
    Value|        Value|             TimeStamp|    Status|
         |         Type|                      |          |
   ------+-------------+----------------------+----------+
      124| counter32(4)| Timeticks: 0:00:32.26| active(1)|
      145| counter32(4)| Timeticks: 0:00:33.83| active(1)|
      120| counter32(4)| Timeticks: 0:00:34.90| active(1)|
      123| counter32(4)| Timeticks: 0:00:35.72| active(1)|
      200| counter32(4)| Timeticks: 0:00:27.17| active(1)|
      300| counter32(4)| Timeticks: 0:00:37.78| active(1)|
   ------+----------------------+-------------+----------+

Aldri, Elias & Glenn                                            [Page 9]


Internet-Draft               Replication MIB                January 2002

4.  Definitions

   REPLIC-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE,
       Unsigned32, enterprises
           FROM SNMPv2-SMI

       RowStatus, TimeStamp
           FROM SNMPv2-TC

       MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF

       InetAddressType, InetAddress
           FROM INET-ADDRESS-MIB

       SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB;

   replicMIB MODULE-IDENTITY
       LAST-UPDATED "200111010000Z"
       ORGANIZATION "Federal University of Parana' - Dept. Informatics"
       CONTACT-INFO
           "Aldri L. Santos
            Elias P. Duarte Jr.
            Federal University of Parana'
            Dept. Informatics
            P.O. Box 19018
            Curitiba, PR 81531-990
            Brazil
            Phone: +55-41-267-5244
            Email: {aldri, elias}@inf.ufpr.br

            Glenn Mansfield
            Cyber Solutions Inc.
            ICR Bldg. 3F 6-6-3 Minami Yoshinari
            Aoba-ku Sendai-shi Miyagi
            Japan
            Phone: +81-22-303-4012
            Email: cyber@cysol.co.jp"

       DESCRIPTION
         " This MIB module defines a set of objects that supports object
           replication in a three-layer clustering architecture."

       ::= { xxx   yyy }               -- to be assigned by IANA

Aldri, Elias & Glenn                                           [Page 10]


Internet-Draft               Replication MIB                January 2002

   --
   --  The groups defined within this MIB definition:
   --

   replicObjects       OBJECT IDENTIFIER ::= { replicMIB 1 }
   replicConformance   OBJECT IDENTIFIER ::= { replicMIB 2 }

   clusterDefinition   OBJECT IDENTIFIER ::= { replicObjects 1 }
   clusterReplication  OBJECT IDENTIFIER ::= { replicObjects 2 }

   clusterTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF ClusterEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " This table allows the definition of agent clusters, which
           are used to monitor and replicate objects from other agents,
           providing alternative means of accessing information from
           those agents when they are unreachable."
       ::= { clusterDefinition 1 }

   clusterEntry OBJECT-TYPE
       SYNTAX     ClusterEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " Each entry contains the definition of an agent cluster, its
           members and replicated objects."
       INDEX { clusterID, clusterIndex }
       ::= { clusterTable 1 }

   ClusterEntry ::= SEQUENCE {
       clusterIndex           Unsigned32,
       clusterID              Unsigned32,
       clusterAddressType     InetAddressType,
       clusterAddress         InetAddress,
       clusterMemberType      InetAddressType,
       clusterMember          InetAddress,
       clusterOID             OBJECT IDENTIFIER,
       clusterInstanceIndex   OBJECT IDENTIFIER,
       clusterRepClusterID    Unsigned32,
       clusterName            SnmpAdminString,
       clusterDescr           SnmpAdminString,
       clusterStatus          RowStatus
   }

   clusterIndex OBJECT-TYPE

Aldri, Elias & Glenn                                           [Page 11]


Internet-Draft               Replication MIB                January 2002

       SYNTAX     Unsigned32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Unique value which identifies a cluster table entry."
       ::= { clusterEntry 1 }

   clusterID OBJECT-TYPE
       SYNTAX     Unsigned32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The unique identifier of a cluster that is defined for
           monitoring a subset of agents and replicating some of
           their objects."
       ::= { clusterEntry 2 }

   clusterAddressType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The type of address in clusterAddress."
       ::= { clusterEntry 3 }

   clusterAddress OBJECT-TYPE
       SYNTAX     InetAddress
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The IP address of a agent that monitors a set of agents and
           replicates their objects on its peer clusters."
       ::= { clusterEntry 4 }

   clusterMemberType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The type of address in clusterMember."
       ::= { clusterEntry 5 }

   clusterMember OBJECT-TYPE
       SYNTAX     InetAddress
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The IP address of an agent which has its objects monitored

Aldri, Elias & Glenn                                           [Page 12]


Internet-Draft               Replication MIB                January 2002

           and replicated by the cluster."
       ::= { clusterEntry 6 }

   clusterOID OBJECT-TYPE
       SYNTAX     OBJECT IDENTIFIER
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The instance identifier of a replicated managed object.
           For example:  ifInOctets "
       ::= { clusterEntry 7 }

   clusterInstanceIndex OBJECT-TYPE
       SYNTAX     OBJECT IDENTIFIER
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Unique identifier of an instance index of a replicated
           managed object."
       ::= { clusterEntry 8 }

   clusterRepClusterID OBJECT-TYPE
       SYNTAX     Unsigned32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Identifier of a peer cluster which keeps replica of managed
           objects kept by the current cluster."
       ::= { clusterEntry 9 }

   clusterName OBJECT-TYPE
       SYNTAX     SnmpAdminString
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The human manager responsible for the cluster."
       ::= { clusterEntry 10 }

   clusterDescr OBJECT-TYPE
       SYNTAX     SnmpAdminString
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Description of the purpose of the cluster."
       ::= { clusterEntry 11 }

   clusterStatus OBJECT-TYPE
       SYNTAX     RowStatus

Aldri, Elias & Glenn                                           [Page 13]


Internet-Draft               Replication MIB                January 2002

       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
         " The status of this cluster entry.

           To create a row in this table, a manager must set this
           object to either createAndGo(4) or createAndWait(5).

           This object may not be active(1) until instances of all
           other objects are appropriately configured. Its value,
           meanwhile, is notReady(2)."
       ::= { clusterEntry 12 }

   memberTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF MemberEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " This table contains information that defines the set of
           agents monitored by the cluster."
        ::={ clusterDefinition 2 }

   memberEntry OBJECT-TYPE
       SYNTAX     MemberEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " Each entry contains the definition of a cluster member."
       INDEX { cmIndex }
       ::= { memberTable 1 }

   MemberEntry ::= SEQUENCE {
       cmIndex         Unsigned32,
       cmAddressType   InetAddressType,
       cmAddress       InetAddress,
       cmSecurity      SnmpAdminString,
       cmStatus        RowStatus
   }

   cmIndex OBJECT-TYPE
       SYNTAX     Unsigned32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Unique identifier of a cluster member table entry."
       ::= { memberEntry 1 }

   cmAddressType OBJECT-TYPE

Aldri, Elias & Glenn                                           [Page 14]


Internet-Draft               Replication MIB                January 2002

       SYNTAX     InetAddressType
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The type of address in cmAddress."
       ::= { memberEntry 2 }

   cmAddress OBJECT-TYPE
       SYNTAX     InetAddress
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The IP address of a cluster member whose objects are
           monitored and replicated by the cluster."
       ::= { memberEntry 3 }

   cmSecurity OBJECT-TYPE
       SYNTAX     SnmpAdminString
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The security required to access cluster member objects."
       ::= { memberEntry 4 }

   cmStatus OBJECT-TYPE
       SYNTAX     RowStatus
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
         " The status of this cluster member entry.

           To create a row in this table, a manager must set this
           object to either createAndGo(4) or createAndWait(5).

           This object may not be active(1) until instances of all
           other objects are appropriately configured. Its value,
           meanwhile, is notReady(2)."
       ::= { memberEntry 5 }

   repObjectTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF RepObjectEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " This table allows the definition of a set of managed objects
           which are monitored and replicated by the cluster."
       ::={ clusterDefinition 3 }

Aldri, Elias & Glenn                                           [Page 15]


Internet-Draft               Replication MIB                January 2002

   repObjectEntry OBJECT-TYPE
       SYNTAX     RepObjectEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " An entry keeping information about an object that is replicated."
       INDEX { roIndex }
       ::= { repObjectTable 1 }

   RepObjectEntry ::= SEQUENCE {
       roIndex            Unsigned32,
       roOID              OBJECT IDENTIFIER,
       roInstanceIndex    OBJECT IDENTIFIER,
       roInterval         Unsigned32,
       roState            Unsigned32,
       roStatus           RowStatus
   }

   roIndex OBJECT-TYPE
       SYNTAX     Unsigned32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Unique identifier of a replicated object table entry."
       ::= { repObjectEntry 1 }

   roOID OBJECT-TYPE
       SYNTAX     OBJECT IDENTIFIER
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The instance identifier of an object which is replicated
           by the cluster."
       ::= { repObjectEntry 2 }

   roInstanceIndex OBJECT-TYPE
       SYNTAX     OBJECT IDENTIFIER
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Unique identifier of an instance index of an object
           which is replicated by the cluster."
       ::= { repObjectEntry 3 }

   roInterval OBJECT-TYPE
       SYNTAX      Unsigned32
       MAX-ACCESS  read-only
       STATUS      current

Aldri, Elias & Glenn                                           [Page 16]


Internet-Draft               Replication MIB                January 2002

       DESCRIPTION
         " The time interval in which a cluster polls replicated
           objects in cluster members."
       ::= { repObjectEntry 4 }

   roState OBJECT-TYPE
       SYNTAX     Unsigned32(0|1) -- { non-active(0), active(1)}
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The State object determines whether an object is replicated
           in a given cluster.
           Setting this value to non-active(0) requests that an object
           should not be replicated.
           Setting this value to active(1) requests that an object
           should be replicated."
       ::= { repObjectEntry 5 }

   roStatus OBJECT-TYPE
       SYNTAX     RowStatus
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
         " The status of this replicated object entry.

           To create a row in this table, a manager must set this
           object to either createAndGo(4) or createAndWait(5).

           This object may not be active(1) until instances of all
           other objects are appropriately configured. Its value,
           meanwhile, is notReady(2)."
       ::= { repObjectEntry 6 }

   peerTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF PeerEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " This table allows the definition of peer clusters of agent
           clusters which are used to maintain replicated objects."
       ::={ clusterDefinition 4 }

   peerEntry OBJECT-TYPE
       SYNTAX     PeerEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION

Aldri, Elias & Glenn                                           [Page 17]


Internet-Draft               Replication MIB                January 2002

         " Each entry contains information of a cluster that maintains
           replicated objects."
      INDEX { pcIndex }
      ::= { peerTable 1 }

   PeerEntry ::= SEQUENCE {
       pcIndex       Unsigned32,
       pcAddressType  InetAddressType,
       pcAddress     InetAddress,
       pcROTIndex    Unsigned32,
       pcStatus      RowStatus
   }

   pcIndex OBJECT-TYPE
       SYNTAX     Unsigned32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Unique value which identifies a peer cluster table entry."
       ::= { peerEntry 1 }

   pcAddressType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The type of address in pcAddress."
       ::= { peerEntry 2 }

   pcAddress OBJECT-TYPE
       SYNTAX     InetAddress
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The IP address of a peer cluster which receives and
           keeps replicated objects by the cluster."
       ::= { peerEntry 3 }

   pcROTIndex OBJECT-TYPE
       SYNTAX     Unsigned32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Index of a object in the replicated object table which is
           replicated in a given peer cluster."
       ::= { peerEntry 4 }

   pcStatus OBJECT-TYPE

Aldri, Elias & Glenn                                           [Page 18]


Internet-Draft               Replication MIB                January 2002

       SYNTAX     RowStatus
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
         " The status of this peer cluster entry.

           To create a row in this table, a manager must set this
           object to either createAndGo(4) or createAndWait(5).

           This object may not be active(1) until instances of all
           other objects are appropriately configured. Its value,
           meanwhile, is notReady(2)."
       ::= { peerEntry 5 }

   replicaTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF ReplicaEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " This table keeps the replicated instances of managed objects."
       ::={ clusterReplication 1 }

   replicaEntry OBJECT-TYPE
       SYNTAX     ReplicaEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
         " Each entry keeps an instance of a given object of a given agent."
       INDEX { repIndex }
       ::= { replicaTable 1 }

   ReplicaEntry ::= SEQUENCE {
       repIndex          Unsigned32,
       repPeerType       InetAddressType,
       repPeer           InetAddress,
       repMemberType     InetAddressType,
       repMember         InetAddress,
       repOID            OBJECT IDENTIFIER,
       repInstanceIndex  OBJECT IDENTIFIER,
       repValue          OCTET STRING,
       repValueType      INTEGER,
       repTimeStamp      TimeStamp,
       repStatus         RowStatus
   }

   repIndex OBJECT-TYPE
       SYNTAX     Unsigned32
       MAX-ACCESS read-only

Aldri, Elias & Glenn                                           [Page 19]


Internet-Draft               Replication MIB                January 2002

       STATUS     current
       DESCRIPTION
         " Unique value which identifies a replica table entry."
       ::= { replicaEntry 1 }

   repPeerType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The type of address in repPeer."
       ::= { replicaEntry 2 }

   repPeer OBJECT-TYPE
       SYNTAX     InetAddress
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The IP address of a peer cluster that monitors a set of
           agents and replicates their objects in the cluster."
       ::= { replicaEntry 3 }

   repMemberType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The type of address in repMember."
       ::= { replicaEntry 4 }

   repMember OBJECT-TYPE
       SYNTAX     IpAddress
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The IP address of an agent whose objects are replicated
           in the cluster."
       ::= { replicaEntry 5 }

   repOID OBJECT-TYPE
       SYNTAX     OBJECT IDENTIFIER
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The instance identifier of a replicated object maintained
           in the cluster."
       ::= { replicaEntry 6 }

Aldri, Elias & Glenn                                           [Page 20]


Internet-Draft               Replication MIB                January 2002

   repInstanceIndex OBJECT-TYPE
       SYNTAX     OBJECT IDENTIFIER
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Unique identifier of an instance index of a replicated
           object maintained in the cluster."
       ::= { replicaEntry 7 }

   repValue OBJECT-TYPE
       SYNTAX     OCTET STRING
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " Value of an instance of a replicated object.
           The data type of the instance is specified in the next
           managed object."
       ::= { replicaEntry 8 }

   repValueType OBJECT-TYPE
       SYNTAX     INTEGER {
                     integer(0),
                     integer32(1),
                     unsigned32(2),
                     gauge32(3),
                     counter32(4),
                     counter64(5),
                     timeTicks(6),
                     octectString(7),
                     objectIdentifier(8),
                     ipAddress(9),
                     opaque(10),
                     bits(11)
             }
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
         " The data type of an instance of a replicated object kept
           in the previous managed object."
       ::= { replicaEntry 9 }

   repTimeStamp OBJECT-TYPE
        SYNTAX      TimeStamp
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
          " The value of sysUpTime at the time of the last update
            of a value of an instance of a replicated object."

Aldri, Elias & Glenn                                           [Page 21]


Internet-Draft               Replication MIB                January 2002

        ::= { replicaEntry 10 }

   repStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
         " The status of this replica entry.
           This object may not be active(1) until instances of all
           other objects are appropriately configured. Its value,
           meanwhile, is notReady(2)."
       ::= { replicaEntry 11 }

   -- Conformance information

   replicGroups      OBJECT IDENTIFIER  ::= { replicConformance 1 }
   replicCompliances OBJECT IDENTIFIER  ::= { replicConformance 2 }

   -- Compliance statements

   replicManagerCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
          " The compliance statement for SNMP entities which
            implement the replication MIB in the manager level."
        MODULE
               MANDATORY-GROUPS { replicManagerGroup }
        ::= { replicCompliances 1 }

   replicClusterCompliance MODULE-COMPLIANCE
           STATUS  current
        DESCRIPTION
          " The compliance statement for SNMP entities which
            implement the replication MIB in the cluster level."
        MODULE
            MANDATORY-GROUPS { replicClusterGroup }
        ::= { replicCompliances 2 }

   replicFullCompliance MODULE-COMPLIANCE
        STATUS    current
        DESCRIPTION
          " The compliance statement for SNMP entities which
            implement the replication MIB in three layers."
        MODULE
            MANDATORY-GROUPS { replicManagerGroup, replicClusterGroup }
        ::= { replicCompliances 3 }

Aldri, Elias & Glenn                                           [Page 22]


Internet-Draft               Replication MIB                January 2002

   -- Units of conformance

   replicManagerGroup OBJECT-GROUP
        OBJECTS{
             clusterIndex,
             clusterID,
             clusterAddressType,
             clusterAddress,
             clusterMemberType,
             clusterMember,
             clusterOID,
             clusterInstanceIndex,
             clusterRepClusterID,
             clusterName,
             clusterDescr,
             clusterStatus
   }
        STATUS    current
        DESCRIPTION
          " The collection of objects for the definition of agents
            clusters, which are used to replicate objects."
        ::= { replicGroups 1 }

   replicClusterGroup OBJECT-GROUP
        OBJECTS{
             cmIndex,
             cmAddressType,
             cmAddress,
             cmSecurity,
             cmStatus,
             roIndex,
             roOID,
             roInstanceIndex,
             roInterval,
             roState,
             roStatus,
             pcIndex,
             pcAddressType,
             pcAddress,
             pcROTIndex,
             pcStatus,
             repIndex,
             repPeerType,
             repPeer,
             repMemberType,
             repMember,
             repOID,
             repInstanceIndex,

Aldri, Elias & Glenn                                           [Page 23]


Internet-Draft               Replication MIB                January 2002

             repValue,
             repValueType,
             repTimeStamp,
             repStatus
   }
        STATUS    current
        DESCRIPTION
          " The collection of objects used to monitor and keep
            the replicated objects."
        ::= { replicGroups 2 }

   END

Aldri, Elias & Glenn                                           [Page 24]


Internet-Draft               Replication MIB                January 2002

5.  Security Considerations

   There are a number of management objects defined in this MIB
   that have a MAX-ACCESS clause of read-write and/or read-create.
   Such objects may be considered sensitive or vulnerable in some
   network environments.  The support for SET operations in a
   non-secure environment without proper protection can have a
   negative effect on network operations.

   SNMPv1 by itself is not a secure environment.  Even if the network
   itself is secure (for example by using IPSec), even then, 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 [13] and the View-
   based Access Control Model RFC 2575 [16] 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.

Aldri, Elias & Glenn                                           [Page 25]


Internet-Draft               Replication MIB                January 2002

6.  Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   intellectual property 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; neither does it represent that it
   has made any effort to identify any such rights.  Information on the
   IETF's procedures with respect to rights in standards-track and
   standards-related documentation can be found in BCP-11.  Copies of
   claims of rights made available for publication 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 implementors or users of this specification can
   be obtained from the IETF Secretariat.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights which may cover technology that may be required to practice
   this standard.  Please address the information to the IETF Executive
   Director.

Aldri, Elias & Glenn                                           [Page 26]


Internet-Draft               Replication MIB                January 2002

7.  References

   [1]  Bradner, S., "Key words for use in RFCs to Indicate
        Requirement Levels", BCP 14, RFC 2119, March 1997.

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

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

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

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

   [6]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
        Rose, M., and S. Waldbusser, "Structure of Management
        Information Version 2 (SMIv2)", STD 58, RFC 2578, April
        1999.

   [7]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
        Rose, M., and S. Waldbusser, "Textual Conventions for
        SMIv2", STD 58, RFC 2579, April 1999.

   [8]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
        Rose, M., and S. Waldbusser, "Conformance Statements for
        SMIv2", STD 58, RFC 2580, April 1999.

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

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

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

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

Aldri, Elias & Glenn                                           [Page 27]


Internet-Draft               Replication MIB                January 2002

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

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

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

   [16] 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] Case, J., Mundy, R., Partain, D., and B. Stewart,
        "Introduction to Version 3 of the Internet-standard
        Network Management Framework", RFC 2570, April 1999.

   [18] E.P. Duarte Jr. and Aldri L. dos Santos, "Semi-Active
        Replication of SNMP Objects in Agent Groups Applied for Fault
        Management", Proceedings of the 7th IFIP/IEEE International
        Symposium on Integrated Network Management (IM'01), Seattle,
        May 2001.

   [19] R. Guerraoui and A. Schiper, "Fault-Tolerance by Replication
        in Distributed Systems", International Conference on Reliable
        softwares Technologies, Springer Verlag (LNCS), 1996.

   [20] M. Wiesmannn, F. Pedone, A. Schiper, B. Kemme and G. Alonso,
        "Understanding Replication in Databases and Distributed
        Systems", Technical Report SSC/1999/035, Ecole Polytechnique
        Federale de Lausanne, Switzerland, September, 1999.

   [21] R. Guerraoui and A. Schiper, "Software-based Replication for
        Fault Tolerance", IEEE Computer, Vol. 30, No. 4, pp. 86-74,
        April, 1997.

   [22] E.P. Duarte Jr. and Aldri L. dos Santos, "Network Fault
        Management Based on SNMP Agent Groups", Proceedings of the
        IEEE 21st International Conference on Distributed Computing
        Systems Workshops (ICDCS'2001), Workshop on Applied Reliable
        Group Communications, pp. 51-56, Mesa, Arizona, April 2001.

   [23] F. B. Schneider,"Implementating Fault-Tolerant Services
        Using The State Machine Approach: A Tutorial",
        ACM Computing Surveys, Vol. 22, No. 4, pp. 299-319,
        December, 1990.

Aldri, Elias & Glenn                                           [Page 28]


Internet-Draft               Replication MIB                January 2002

   [24] W. Chen, N. Jain, and S. Singh, "ANMP: Ad Hoc Network Management
        Protocol", IEEE Journal on Selected Areas in Communications,
        Vol. 17, No. 8, August 1999.

   [25] K. Birman, "Building Reliable and Secure Network
        Applications", Prentice-Hall, 1996.

   [26] R. V. Renesse, K. P. Birman and S. Maffeis, "Horus:
        A Flexible Group Communication System", Communications of the
        ACM, Vol. 39, No. 4, pp. 76-83, April, 1996.

   [27] M. G. Hayden, "The Ensemble System", PhD Thesis,
        Cornell University, Ithaca, Jan. 1998.

Aldri, Elias & Glenn                                           [Page 29]


Internet-Draft               Replication MIB                January 2002

8.  Author's Addresses

   Aldri Luiz dos Santos
   Federal University of Parana'
   Dept. Informatics
   P.O. Box 19018
   Curitiba, PR 81531-990
   Brazil

   Phone: +55-41-267-5244
   Email: aldri@inf.ufpr.br

   Elias Procopio Duarte Jr.
   Federal University of Parana'
   Dept. Informatics
   P.O. Box 19018
   Curitiba, PR 81531-990
   Brazil

   Phone: +55-41-267-5244
   Email: elias@inf.ufpr.br

   Glenn Mansfield
   Cyber Solutions Inc.
   ICR Bldg. 3F 6-6-3 Minami Yoshinari
   Aoba-ku Sendai-shi Miyagi
   Japan

   Phone: +81-22-303-4012
   Email: cyber@cysol.co.jp

Aldri, Elias & Glenn                                           [Page 30]


Internet-Draft               Replication MIB                January 2002

9.  Full Copyright Statement

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

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

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

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Aldri, Elias & Glenn                                           [Page 31]