INTERNET-DRAFT         System/Interface Test MIB                May 1996


                   Definitions of Managed Objects for
                      System and Interface Testing

                              May 29, 1996


                   <draft-ietf-ifmib-testmib-00.txt>

                              Maria Greene
                              Ascom Nexion
                            greene@nexen.com


                            Keith McCloghrie
                             Cisco Systems
                             kzm@cisco.com


                               Kaj Tesink
                      Bell Communications Research
                          kaj@cc.bellcore.com





Status of this Memo

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

   Internet-Drafts are draft documents valid for a maximum of six months
   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 a "work in progress".

   To learn the current status of any Internet-Draft, please check the
   "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
   Directories on ds.internic.net (US East Coast), nic.nordu.net
   (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
   Rim).








Expires December 1996                                     [Page 1]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


Abstract

   This memo defines an experimental portion of the Management
   Information Base (MIB) for use with network management protocols in
   the Internet community.  In particular, it describes objects used for
   testing systems and interfaces. This memo replaces the objects
   originally defined in the ifTestGroup of RFC1573, the IF-MIB [6],
   which have been deprecated.

   This memo specifies a MIB module in a manner that is both compliant
   to the SNMPv2 SMI, and semantically identical to the peer SNMPv1
   definitions.

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


1.  The SNMP Network Management Framework

   The SNMP Network Management Framework presently consists of three
   major components.  They are:

   o    the SMI, described in RFC 1902 [1] - the mechanisms used for
        describing and naming objects for the purpose of management.

   o    the MIB-II, STD 17, RFC 1213 [2] - the core set of managed
        objects for the Internet suite of protocols.

   o    the protocol, RFC 1157 [3] and/or RFC 1905 [4], - the protocol
        for accessing managed objects.

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



1.1.  Object Definitions

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  Objects in the MIB are
   defined using the subset of Abstract Syntax Notation One (ASN.1)
   defined in the SMI.  In particular, each object type is named by an
   OBJECT IDENTIFIER, an administratively assigned name.  The object
   type together with an object instance serves to uniquely identify a
   specific instantiation of the object.  For human convenience, we
   often use a textual string, termed the descriptor, to also refer to
   the object type.





Expires December 1996                                     [Page 2]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


2.  Experience with the Interfaces Test Group

   The ifTestGroup of objects defined in RFC1573 has not been used
   widely. Some cited problems were:


   o    Few standard tests had been defined to date.

   o    Some well known tests had already been written on a media-
        specific basis, e.g., DS1 loopback.

   o    The ifTestGroup allowed for interface testing only.

   o    A logging capability was missing.

   As a result, the ifTestGroup and associated ifTestTable have been
   deprecated. However, since renewed interest was expressed in a
   generic testing capability, specifically in the development of MIBs
   for managing Asynchronous Transfer Mode interfaces, a set of
   requirements have been defined that form the basis for the design of
   the generic Test MIB defined in this memo.


3.  Requirements for a Generic Test MIB

   This section describes the requirements that have been identified for
   a generic test MIB.

3.1.  Test Identification

   The system defined in RFC1573 to identify tests relies on OBJECT
   IDENTIFIERs. This system is flexible in that it allows additional
   tests to be defined over time and autonomously by vendors, removing
   the need to register test types in a single place. This mechanism for
   test identification has been retained.
















Expires December 1996                                     [Page 3]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


3.2.  Test Targets

   With the advent of an increasing number of non-interface related MIB
   modules it is desirable to define a test capability that allows
   testing of interfaces and non-interface physical entities. The
   following possibilities were considered:

   a)   Separate test capabilities for interface tests and other tests.

   b)   The use of a single test capability where the test target would
        be defined within the test table.

   This memo uses the latter approach and has taken advantage of the
   Entity MIB by using the entPhysicalIndex to identify test targets.
   This does require that the Entity MIB be supported in order to
   implement the Test MIB. A physical entity can be a "port", which is
   generally associated one-to-one with an interface (as indicated by
   the entAliasMappingTable) or it can be another piece of hardware such
   as a "module" or a "power supply".


3.3.  Single Versus Multiple Simultaneous Tests

   The capability of allowing multiple simultaneous tests has sometimes
   been described as useful, though the requests for the feature have
   been sporadic. However, when allowing for non-interface related tests
   this need may become more apparent. Also, proxy situations may make
   the ability to run multiple simultaneous tests more desirable. A
   related question is: how long may a test run?

   This MIB module has taken a middle road approach where simultaneous
   tests on different physical entities are possible, while simultaneous
   tests on a single physical entity are excluded.  This approach avoids
   the need for more complex read-create tables. A test in progress can
   be stopped by setting the testType to 'noTest'.
















Expires December 1996                                     [Page 4]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


3.4.  Logging Results

   A logging capability of test results serves to store the test results
   for some period of time. Two mechanisms were considered:

   1)   Separate the test capability and the log.

   2)   Combine the test capability and the log in a single table.

   Note that searching criteria on the log relate to this choice as
   well.

   The log length is necessarily limited. The following choices were
   considered:

   1)   Age the entries.

   2)   Limit by the number of entries.

   3)   A system that allows either 1) or 2).

   This MIB module chooses a system where the test capability
   (testTable) has been separated from the log (testLogTable). The log
   length is limited by a read-write object (testLogMaxSize).

   This MIB module also defines a notification, testComplete, which
   contains the same information as the log entry. Therefore, an agent
   with limited resources can limit the maximum size of the log to a
   very few number of entries and rely on a management application to
   receive and log the testComplete notifications.


3.5.  Log Searching

   Efficient searching in a log is a key to its effectiveness.  The
   following possibilities were considered:

   a)   Sort on age of the entries.

   b)   Sort on test type.

   c)   Sort on entPhysicalIndex value.

   d)   Sort on combinations of the above.







Expires December 1996                                     [Page 5]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


   This MIB module chooses for the index testId, to address requests
   that are expected to be most common:

   o    What is the result of test testId?

   o    What are the results of the last n tests?

   Since the testId has been defined as monotonically increasing, this
   approach will order log entries by time, oldest to newest. The
   possibility of testId wrapping is minimized by having it restart at 0
   and the log flushed when the agent restarts. When a manager is
   interested in a specific test, a specific get-request may be issued.
   When a manager is interested in the latest n tests for the system,
   getnext/bulk starting from (testId-n) provides the approximate
   answer. Note that defining testId as a "TestAndDecr" would yield more
   precise results because the testLogTable would then be sorted with
   the most recent test first; however this was rejected because of the
   counter-intuitive behavior of the resulting index and the slight
   increase in complexity due to this new syntax. Note also that the log
   is not sorted by entPhysicalIndex, based on the assumption that a
   request for tests sorted by physical entity represents a less
   frequent need.


3.6.  Determining Agent Test Capabilities

   The testTable will only have entries for those physical entities
   represented by this agent that support tests. No capability has been
   defined to list the tests that a physical entity is capable of.
   However, if a physical entity is only capable of one test, then the
   testType columnar object for that physical entity may be initialized
   to that type, or, if it is capable of many tests, it may be
   initialized to one of the supported types.


















Expires December 1996                                     [Page 6]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


4.  Definitions

     TEST-MIB DEFINITIONS ::= BEGIN

     IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, TimeTicks,
       experimental, NOTIFICATION-TYPE, mib-2
            FROM SNMPv2-SMI
       TEXTUAL-CONVENTION, TestAndIncr, AutonomousType
            FROM SNMPv2-TC
       MODULE-COMPLIANCE, OBJECT-GROUP
            FROM SNMPv2-CONF
       entPhysicalIndex
            FROM ENTITY-MIB
       ;

     testMIB MODULE-IDENTITY
          LAST-UPDATED "9605291200Z" -- May 29, 1996
          ORGANIZATION "IETF IFMIB Working Group"
          CONTACT-INFO
             "Keith McCloghrie
              Postal:  Cisco Systems
                       170 West Tasman Drive
                       San Jose, CA 95134
                       US
              Tel:     +1 408 526 5260
              E-mail:  kzm@cisco.com

              Kaj Tesink
              Postal:  Bell Communications Research
                       331 Newman Springs Road
                       Red Bank, NJ 07701
                       US
              Tel:     +1 908 758 5254
              E-mail:  kaj@cc.bellcore.com

              Maria Greene
              Postal:  Ascom Nexion
                       289 Great Road
                       Acton, MA 01720
                       US
              Tel:     +1 508 266 4570
              E-mail:  greene@nexen.com"
          DESCRIPTION
             "This MIB module provides a generic test
              capability."
          ::= { experimental XX }





Expires December 1996                                     [Page 7]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


     testMIBObjects  OBJECT IDENTIFIER ::= { testMIB 1 }

     -- ********  NOTE TO THE RFC EDITOR  **************
     -- In case this module is put on the standards track
     --  replace the following:
     -- "testMIB MODULE-IDENTITY ::= {experimental XX}" with
     -- "testMIB MODULE-IDENTITY ::= { mib-2 YY }"


     HostName ::= TEXTUAL-CONVENTION
         DISPLAY-HINT "255a"
         STATUS       current
         DESCRIPTION
                 "This data type is used to model an administratively
                 assigned hostname of the owner of a test.  This
                 information is taken from the NVT ASCII character set.
                 It is suggested that this name contain one or more of
                 the following: ASCII form of the manager station's
                 transport address or management station name (e.g.,
                 domain name)."
        SYNTAX       OCTET STRING (SIZE(0..255))

    --    The Test Table

    testTable   OBJECT-TYPE
        SYNTAX      SEQUENCE OF TestEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
                "This table contains one entry per physical entity that
                supports testing.  It defines objects which allow a
                network manager to instruct an agent to test an physical
                entity for various faults.  Tests for a physical entity
                are defined in the media-specific MIB for that entity.
                After invoking a test, the object testResult can be read
                to determine the outcome.  If an agent can not perform
                the test, testResult is set to so indicate.  The
                testLogTable can be used to provide further test-
                specific or entity-specific (or even enterprise-
                specific) information concerning the outcome of the
                test.  Only one test can be in progress on each physical
                entity at any one time.  If one test is in progress when
                another test is invoked, the second test is rejected.
                Some agents may reject a test when a prior test is
                active on another physical entity.

                Before starting a test, a manager-station must first





Expires December 1996                                     [Page 8]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


                obtain 'ownership' of the entry in the testTable for the
                physical entity to be tested.  This is accomplished with
                the testId and testStatus objects as follows:

            try_again:
                get (testId, testStatus)
                while (testStatus != notInUse)
                    /*
                     * Loop while a test is running or some other
                     * manager is configuring a test.
                    */
                    short delay
                    get (testId, testStatus)
                }

                /*
                 * Is not being used right now -- let's compete
                 * to see who gets it.
                 */
                lock_value = testId

                if ( set (testId = lock_value, testStatus = inUse,
                         testOwner = 'my-IP-address') == FAILURE)
                    /*
                     * Another manager got the testEntry -- go
                     * try again
                     */
                    goto try_again;

                /*
                 * I have the lock
                 */
                set up any test parameters.

                /*
                 * This starts the test
                 */
                set (testType = test_to_run);

                wait for test completion by polling testResult

                when test completes, agent sets testResult
                     agent also sets testStatus = 'notInUse'

                retrieve test results from the testLog using
                   lock_value as the index





Expires December 1996                                     [Page 9]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


              A manager station first retrieves the value of the
              appropriate testId and testStatus objects,
              periodically repeating the retrieval if necessary,
              until the value of testStatus is 'notInUse'.  The
              manager station then tries to set the same testId
              object to the value it just retrieved, the same
              testStatus object to 'inUse', and the corresponding
              testOwner object to a value indicating itself.  If
              the set operation succeeds then the manager has
              obtained ownership of the testEntry, and the value of
              the testId object is incremented by the agent (per
              the semantics of TestAndIncr).  Failure of the set
              operation indicates that some other manager has
              obtained ownership of the testEntry.

              Once ownership is obtained, any test parameters can be
              setup, and then the test is initiated by setting
              testType.  On completion of the test, the agent sets
              testStatus to 'notInUse'.  Once this occurs, the
              manager can retrieve the results.  In the (rare) event
              that the invocation of tests by two network managers
              were to overlap, then there would be a possibility that
              the first test's results might be overwritten by the
              second test's results prior to the first results being
              read.  This unlikely circumstance can be detected by a
              network manager retrieving testId at the same time as
              retrieving the test results, and ensuring that the
              results are for the desired request.

              If testType is not set within an abnormally long
              period of time after ownership is obtained, the agent
              should time-out the manager, and reset the value of the
              testStatus object back to 'notInUse'.  It is
              suggested that this time-out period be 5 minutes.

              In general, a management station must not retransmit a
              request to invoke a test for which it does not receive
              a response; instead, it properly inspects an agent's
              MIB to determine if the invocation was successful.
              Only if the invocation was unsuccessful, is the
              invocation request retransmitted.

               Some tests may require the physical entity to be taken
               off- line in order to execute them, or may even require
               the agent to reboot after completion of the test.  In
               these circumstances, communication with the management
               station invoking the test may be lost until after





Expires December 1996                                    [Page 10]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


               completion of the test.  An agent is not required to
               support such tests.  However, if such tests are
               supported, then the agent should make every effort to
               transmit a response to the request which invoked the test
               prior to losing communication.  When the agent is
               restored to normal service, the results of the test are
               properly made available in the appropriate objects.  Note
               that this requires that the entPhysicalIndex value
               assigned to a physical entity must be unchanged even if
               the test causes a reboot.  An agent must reject any test
               for which it cannot, perhaps due to resource constraints,
               make available at least the minimum amount of information
               after that test completes."
      ::= { testMIBObjects 1 }

  testEntry OBJECT-TYPE
      SYNTAX       TestEntry
      MAX-ACCESS   not-accessible
      STATUS       current
      DESCRIPTION
              "An entry containing objects for invoking tests on a
              physical entity."
      INDEX  { entPhysicalIndex }
      ::= { testTable 1 }

  TestEntry ::=
      SEQUENCE {
          testId           TestAndIncr,
          testStatus       INTEGER,
          testType         AutonomousType,
          testResult       INTEGER,
          testOwner        HostName
      }

  testId         OBJECT-TYPE
      SYNTAX       TestAndIncr
      MAX-ACCESS   read-write
      STATUS       current
      DESCRIPTION
              "This object identifies the current invocation of any
              test, not just tests on the physical entity identified by
              the index of this entry. If the agent is restarted the
              value of this object shall be set to 0. If the value of
              testId ever reaches its maximum value of 2147483647, it
              will latch at that value and return the error
              'inconsistentValue' (for SNMPv2) or 'badValue' (for
              SNMPv1) if the manager attempts to set it.





Expires December 1996                                    [Page 11]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


              Note that the value the manager sets this object to when
              setting the testStatus to 'inUse(2)' is the value that
              should be used for testLogIndex to retrieve the results of
              the test. After a successful SET, all instances of testId
              for all entries in this table will be incremented.

              The reason the testId and testStatus objects are not
              outside the table is that this would limit the manager to
              only running one test at a time."
     ::= { testEntry 1 }

 testStatus     OBJECT-TYPE
     SYNTAX       INTEGER { notInUse(1), inUse(2) }
     MAX-ACCESS   read-write
     STATUS       current
     DESCRIPTION
             "This object indicates whether or not some manager
             currently has the necessary 'ownership' required to invoke
             a test on this physical entity.  A write to this object is
             only successful when it changes its value from
             'notInUse(1)' to 'inUse(2)'.  After completion of a test,
             the agent resets the value back to
    ::= { testEntry 2 }

testType       OBJECT-TYPE
    SYNTAX       AutonomousType
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
            "A control variable used to start and stop operator-
            initiated entity tests.  Most OBJECT IDENTIFIER values
            assigned to tests are defined elsewhere, in association with
            specific types of entity.  However, this memo defines the
            special meanings of the subject identifier:

                noTest  OBJECT IDENTIFIER ::= { 0 0 }

            When the value 'noTest' is written to this object, no action
            is taken unless a test is in progress, in which case the
            test is aborted.  Writing any other value to this object is
            only valid when no test is currently in progress, in which
            case the indicated test is initiated.

            When read, this object always returns the most recent value
            that testType was set to.  If it has not been set since the
            last initialization of the network management subsystem on
            the agent, either a value of or a value of one of the valid





Expires December 1996                                    [Page 12]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


            test types that can be performed on this physical entity is
            returned."
    ::= { testEntry 3 }

testResult  OBJECT-TYPE
    SYNTAX       INTEGER {
                     none(1),          -- no test yet requested
                     success(2),
                     inProgress(3),
                     notSupported(4),
                     unAbleToRun(5),   -- due to state of system
                     aborted(6),
                     failed(7)
                 }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "This object contains the result of the most recently
            requested test, or the value 'none(1)' if no tests have been
            requested since the last reset."
    ::= { testEntry 4 }

testOwner      OBJECT-TYPE
    SYNTAX       HostName
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
            "The manager which currently has the 'ownership'
            required to invoke a test on this physical entity."
    ::= { testEntry 5 }


-- Log size

testLogMaxSize OBJECT-TYPE
    SYNTAX        INTEGER (10..2147483647)
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
            "The maximum number entries in the testLogTable.  When the
            table reaches this size the oldest entries will be discarded
            when new entries are added. The table is flushed when the
            agent is reset."
        ::= { testMIBObjects 2 }







Expires December 1996                                    [Page 13]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


-- Test Logging Table

testLogTable   OBJECT-TYPE
    SYNTAX        SEQUENCE OF TestLogEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
            "This table contains the most recent test results for tests
            which completed with the testResult of either 'success(2)'
            or 'failed(7)'."
        ::= { testMIBObjects 3 }

testLogEntry    OBJECT-TYPE
    SYNTAX         TestLogEntry
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
            "Each entry in this table represents a test result."
    INDEX { testLogIndex }
    ::= { testLogTable 1 }

TestLogEntry ::=
    SEQUENCE {
        testLogIndex            INTEGER,
        testLogType             AutonomousType,
        testLogCompletionTime   TimeTicks,
        testLogSummary          INTEGER,
        testLogCode             OBJECT IDENTIFIER,
        testLogOwner            HostName,
        testLogEntPhysicalIndex INTEGER
        }

testLogIndex OBJECT-TYPE
    SYNTAX        INTEGER (1..2147483647)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
            "An integer index that uniquely identifies the entry in the
            log."
    ::= { testLogEntry 1 }

testLogType OBJECT-TYPE
    SYNTAX        AutonomousType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
            "The type of test that has completed."





Expires December 1996                                    [Page 14]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


    ::= { testLogEntry 2 }

testLogCompletionTime OBJECT-TYPE
    SYNTAX        TimeTicks
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
            "The value of sysUpTime when the test completed."
    ::= { testLogEntry 3 }

testLogSummary OBJECT-TYPE
    SYNTAX         INTEGER {
                      success(2),
                      failed(7)
                   }
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
            "The summary result of this test."
    ::= { testLogEntry 4 }

testLogCode OBJECT-TYPE
    SYNTAX         OBJECT IDENTIFIER
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
            "This object contains a code which contains more specific
            information on the test result, for example an error-code
            after a failed test.  Error codes and other values this
            object may take are specific to the type of physical entity
            and/or test.  The value may have the semantics of either the
            AutonomousType or VariablePointer textual conventions as
            defined in RFC 1903.  The identifier:

               testCodeUnknown  OBJECT IDENTIFIER ::= { 0 0 }

            is defined for use if no additional result code is
            available."
    ::= { testLogEntry 5 }

testLogOwner OBJECT-TYPE
    SYNTAX         HostName
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
            "The name of the host that owned the test."
    ::= { testLogEntry 6 }





Expires December 1996                                    [Page 15]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


testLogEntPhysicalIndex OBJECT-TYPE
    SYNTAX         INTEGER (1..2147483647)
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
            "The value of entPhysicalIndex for this test."
    ::= { testLogEntry 7 }

-- Notifications

testMIBNotifications OBJECT IDENTIFIER ::= { testMIB 2 }

testComplete NOTIFICATION-TYPE
    OBJECTS {
        testLogIndex,
        testLogType,
        testLogSummary,
        testLogCode,
        testLogOwner,
        testLogEntPhysicalIndex
    }
    STATUS current
    DESCRIPTION
            "A testComplete trap signifies that a test has completed for
            a particular physical entity. If the testLogCode has the
            semantics of a VariablePointer, the variable it points at
            will also be included in the objects list."
    ::= { testMIBNotifications 1 }


-- Conformance Information

testMIBConformance   OBJECT IDENTIFIER ::= { testMIB 3 }

testMIBGroups        OBJECT IDENTIFIER
                 ::= { testMIBConformance 1 }

testMIBCompliances   OBJECT IDENTIFIER
                 ::= { testMIBConformance 2 }

-- Compliance Statements

testMIBCompliance   MODULE-COMPLIANCE
     STATUS         current
     DESCRIPTION
       "The compliance statement for SNMP agents which support generic
       testing capabilities."





Expires December 1996                                    [Page 16]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


     MODULE  -- this module

     MANDATORY-GROUPS  { testMIBGroup }

     OBJECT      testLogMaxSize
     MIN-ACCESS  read-only
     DESCRIPTION
       "Write access is not required."

        ::= { testMIBCompliances 1 }


-- Units of Conformance


testMIBGroup     OBJECT-GROUP
     OBJECTS {
        testId,
        testStatus,
        testType,
        testResult,
        testOwner,
        testLogType,
        testLogMaxSize,
        testLogCompletionTime,
        testLogSummary,
        testLogCode,
        testLogOwner,
        testLogEntPhysicalIndex
     }
     STATUS    current
     DESCRIPTION
       "A collection of objects providing a generic
        test capability."
   ::= { testMIBGroups 1 }


END













Expires December 1996                                    [Page 17]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


5.  Usage Examples

   The following sections show examples of interface testing and system
   testing.  These examples assume the following physical configuration
   represented using the Entity MIB [5].

   A router containing two slots.  Each slot contains a 3 port
   router/bridge module. Each port is represented in the ifTable:

     Physical entities -- entPhysicalTable:
       1 chassis:
         entPhysicalDescr.1 ==             "Acme Chassis Model 100"
         entPhysicalVendorType.1  ==       acmeProducts.chassisTypes.1
         entPhysicalContainedIn.1 ==       0
         entPhysicalClass.1 ==             chassis(3)
         entPhysicalParentRelPos.1 ==      0

       2 slots within the chassis:
         entPhysicalDescr.2 ==             "Acme Router Chassis Slot 1"
         entPhysicalVendorType.2  ==       acmeProducts.slotTypes.1
         entPhysicalContainedIn.2 ==       1
         entPhysicalClass.2 ==             container(5)
         entPhysicalParentRelPos.2 ==      1

         entPhysicalDescr.3 ==             "Acme Router Chassis Slot 2"
         entPhysicalVendorType.3  ==       acmeProducts.slotTypes.1
         entPhysicalContainedIn.3 ==       1
         entPhysicalClass.3 ==             container(5)
         entPhysicalParentRelPos.3 ==      2

       2 Field-replaceable modules:
       Slot 1 contains a module with 3 ports:
         entPhysicalDescr.4 ==             "Acme Router Module Model 10"
         entPhysicalVendorType.4  ==       acmeProducts.moduleTypes.14
         entPhysicalContainedIn.4 ==       2
         entPhysicalClass.4 ==             module(9)
         entPhysicalParentRelPos.4 ==      1

         entPhysicalDescr.5 ==             "Acme Router Ethernet Port 1"
         entPhysicalVendorType.5  ==       acmeProducts.portTypes.2
         entPhysicalContainedIn.5 ==       4
         entPhysicalClass.5 ==             port(10)
         entPhysicalParentRelPos.5 ==      1

         entPhysicalDescr.6 ==             "Acme Router Ethernet Port 2"
         entPhysicalVendorType.6  ==       acmeProducts.portTypes.2
         entPhysicalContainedIn.6 ==       4





Expires December 1996                                    [Page 18]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


         entPhysicalClass.6 ==             port(10)
         entPhysicalParentRelPos.6 ==      2

         entPhysicalDescr.7 ==             "Acme Router Fddi Port 3"
         entPhysicalVendorType.7  ==       acmeProducts.portTypes.3
         entPhysicalContainedIn.7 ==       4
         entPhysicalClass.7 ==             port(10)
         entPhysicalParentRelPos.7 ==      3

      Slot 2 contains another 3-port module:
         entPhysicalDescr.8 ==             "Acme Router Module Model 11"
         entPhysicalVendorType.8  ==       acmeProducts.moduleTypes.15
         entPhysicalContainedIn.8 ==       3
         entPhysicalClass.8 ==             module(9)
         entPhysicalParentRelPos.8 ==      1

         entPhysicalDescr.9 ==             "Acme Router Fddi Port 1"
         entPhysicalVendorType.9 ==        acmeProducts.portTypes.3
         entPhysicalContainedIn.9 ==       8
         entPhysicalClass.9 ==             port(10)
         entPhysicalParentRelPos.9 ==      1

         entPhysicalDescr.10 ==            "Acme Router Ethernet Port 2"
         entPhysicalVendorType.10 ==       acmeProducts.portTypes.2
         entPhysicalContainedIn.10 ==      8
         entPhysicalClass.10 ==            port(10)
         entPhysicalParentRelPos.10 ==     2

         entPhysicalDescr.11 ==            "Acme Router Ethernet Port 3"
         entPhysicalVendorType.11 ==       acmeProducts.portTypes.2
         entPhysicalContainedIn.11 ==      8
         entPhysicalClass.11 ==            port(10)
         entPhysicalParentRelPos.11 ==     3


5.1.  Interface Test

   In this example, the network manager wishes to run a loopback test on
   the third Ethernet port on the module in slot 1. The entPhysicalIndex
   of the port is 7. The Ethernet-like Interfaces MIB [6], defines an
   OBJECT IDENTIFIER for the dot3TestLoopBack.










Expires December 1996                                    [Page 19]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


   The test would be invoked as follow:
            try_again:
                get (testId.7, testStatus.7)
                while (testStatus != notInUse)
                    /*
                     * Loop while a test is running or some other
                     * manager is configuring a test.
                    */
                    short delay
                    get (testId.7, testStatus.7)
                }

                /*
                 * Is not being used right now -- let's compete
                 * to see who gets it.
                 */
                lock_value = testId

                if ( set (testId.7 = lock_value, testStatus.7 = inUse,
                         testOwner.7 = 'my-IP-address') == FAILURE)
                    /*
                     * Another manager got the testEntry -- go
                     * try again
                     */
                    goto try_again;

                /*
                 * I have the lock
                 */
                set up any test parameters.

                /*
                 * This starts the test
                 */
                set (testType.7 = dot3TestLoopBack);

                wait for test completion by polling testResult.7

                when test completes, agent sets testResult
                     agent also sets testStatus = 'notInUse'

                retrieve any additional test results from
                   testLogTable using lock_value as the index








Expires December 1996                                    [Page 20]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


5.2.  System Test

   A system test is the same as an interface test from the perspective
   of the test table, except that the entPhysicalClass of the entity
   will not be port(10). For example, the network administrator may wish
   to run a self test on the module in slot 2.

   Let's assume such a test is defined in one of the Acme vendor's
   enterprise MIBs as follows:
             acmeModuleSelfTest OBJECT-IDENTITY
                  STATUS       current
                  DESCRIPTION
                    "Run a diagnostic self-test on an Acme hardware
                    module."
                  ::= { acmeProductsTestTypes 1 }

   The procedure of invoking the test and retrieving the results is the
   same as that described in the Interface Test example. Note that value
   of entPhysicalIndex for the module in slot 2 is 8 based on the
   earlier example configuration so the test would be started using this
   operation:
                /*
                 * This starts the test
                 */
                set(testType.8 = acmeModuleSelfTest);

6.  Acknowledgments

   This document is a product of the IETF's Interfaces MIB Working
   Group.

   The original ifTestTable was the work of Keith McCloghrie (Cisco) and
   Frank Kastenholz (FTP Software) and has been used almost unchanged in
   this further evolution.

   The authors would like to acknowledge the following individuals for
   their input on requirements:

       Dave Fowler (Newbridge)
       Steven Buchko (Newbridge)
       Milt Rosslinsky (ACC)










Expires December 1996                                    [Page 21]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


7.  References

[1]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Structure of Management Information for Version 2
     of the Simple Network Management Protocol (SNMPv2)", RFC1902, SNMP
     Research,Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc.,
     International Network Services, January 1996.

[2]  McCloghrie, K., and M. Rose, Editors, "Management Information Base
     for Network Management of TCP/IP-based internets: MIB-II", STD 17,
     RFC 1213, Hughes LAN Systems, Performance Systems International,
     March 1991.

[3]  Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network
     Management Protocol", RFC 1157, SNMP Research, Performance Systems
     International, Performance Systems International, MIT Laboratory
     for Computer Science, May 1990.

[4]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Protocol Operations for Version 2 of the Simple
     Network Management Protocol (SNMPv2)", RFC1905, SNMP Research,Inc.,
     Cisco Systems, Inc., Dover Beach Consulting, Inc., International
     Network Services, January 1996.

[5]  McCloghrie, K., and A. Bierman, Editors, "Entity MIB", RFC<TBD>,
     Cisco Systems, January 1996.

[6]  Kastenholz, F., "Definitions of Managed Objects for the Ethernet-
     like Interface Types using SMIv2", RFC1650, FTP Software, Inc,
     August 1994.

[6]  McCloghrie, K., Kastenholz, F., "Evolution of the Interfaces Group
     of MIB-II", RFC1573, Cisco Systems, Inc., FTP Software, January
     1994.

[7]  SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
     S. Waldbusser, "Textual Conventions for Version 2 of the Simple
     Network Management Protocol (SNMPv2)", RFC1903, SNMP Research,Inc.,
     Cisco Systems, Inc., Dover Beach Consulting, Inc., International
     Network Services, January 1996.











Expires December 1996                                    [Page 22]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


8.  Security Considerations

   Security issues are not discussed in this memo.

9.  Authors' Addresses

                  Maria Greene
                  Ascom Nexion
                  289 Great Road
                  Acton, MA 01720-4739
                  Phone: (508) 266-4570
                  EMail: greene@nexen.com

                  Keith McCloghrie
                  Cisco Systems
                  170 West Tasman Drive
                  San Jose, CA 95134
                  Phone: (408) 526-5260
                  E-mail:  kzm@cisco.com

                  Kaj Tesink
                  Bell Communications Research
                  Room 1A-427
                  331 Newman Springs Road
                  P.O. Box 7020
                  Red Bank, NJ  07701-7020
                  Phone: (908) 758-5254
                  EMail: kaj@cc.bellcore.com























Expires December 1996                                    [Page 23]


INTERNET-DRAFT         System/Interface Test MIB                May 1996


   Table of Contents


   1 The SNMP Network Management Framework ........................    2
   1.1 Object Definitions .........................................    2
   2 Experience with the Interfaces Test Group ....................    3
   3 Requirements for a Generic Test MIB ..........................    3
   3.1 Test Identification ........................................    3
   3.2 Test Targets ...............................................    4
   3.3 Single Versus Multiple Simultaneous Tests ..................    4
   3.4 Logging Results ............................................    5
   3.5 Log Searching ..............................................    5
   3.6 Determining Agent Test Capabilities ........................    6
   4 Definitions ..................................................    7
   5 Usage Examples ...............................................   18
   5.1 Interface Test .............................................   19
   5.2 System Test ................................................   21
   6 Acknowledgments ..............................................   21
   7 References ...................................................   22
   8 Security Considerations ......................................   23
   9 Authors' Addresses ...........................................   23






























Expires December 1996                                    [Page 24]