CTRON-SMARTTRUNK-MIB DEFINITIONS ::= BEGIN

--  ctron-smarttrunk-mib.txt
--  Revision: 01.00.01
--  Part Number:
--  Date: April 14, 1999

--  Cabletron Systems, Inc.
--  35 Industrial Way, P.O. Box 5005
--  Rochester, NH 03867-0505
--  (603) 332-9400
--  support@ctron.com

--  This module provides authoritative definitions for Cabletron's
--  enterprise-specific port-trunking MIB.

--
--  This module will be extended, as needed.

--  Cabletron Systems reserves the right to make changes in
--  specification and other information contained in this document
--  without prior notice.  The reader should consult Cabletron Systems
--  to determine whether any such changes have been made.
--
--  In no event shall Cabletron Systems be liable for any incidental,
--  indirect, special, or consequential damages whatsoever (including
--  but not limited to lost profits) arising out of or related to this
--  document or the information contained in it, even if Cabletron
--  Systems has been advised of, known, or should have known, the
--  possibility of such damages.
--
--  Cabletron grants vendors, end-users, and other interested parties
--  a non-exclusive license to use this Specification in connection
--  with the management of Cabletron products.

--  Copyright February 1999 Cabletron Systems

--  Note:  the design of this MIB owes much to designers of the LEC MIB.
--  Rev: 1.00.01 cleaned up some spaces to allow import into Spectrum MIB Tools. 
IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32
                  FROM SNMPv2-SMI
        TEXTUAL-CONVENTION, RowStatus, DisplayString, TruthValue
                  FROM SNMPv2-TC
       MODULE-COMPLIANCE, OBJECT-GROUP
                  FROM SNMPv2-CONF
        InterfaceIndex, ifIndex
                  FROM IF-MIB
        ctSmartTrunkBranch
                  FROM CTRON-MIB-NAMES;

ctSmartTrunk  MODULE-IDENTITY
    LAST-UPDATED "199812160000Z"
    ORGANIZATION "Cabletron Systems, Inc"
    CONTACT-INFO
    "Cabletron Systems, Inc.
     35 Industrial Way, P.O. Box 5005
     Rochester, NH 03867-0505
     (603) 332-9400
     support@cabletron.com
     http://www.ctron.com"
    DESCRIPTION
            "This mib module defines a portion of the SNMP enterprise MIBs under Cabletron
             enterprise OID pertaining to configuration of Smart TRUNK network links."
         ::= { ctSmartTrunkBranch 1 } 

ctSmartTrunkConfig    OBJECT IDENTIFIER ::= { ctSmartTrunk 1 }
ctSmartTrunkDebug     OBJECT IDENTIFIER ::= { ctSmartTrunk 2 }

-- Textual Conventions

   CTSmartTrunkProtocol ::= TEXTUAL-CONVENTION
   STATUS       current
   DESCRIPTION
           "Type of trunking protocol used. LLAP based switches should use decHuntGroup.
            noProcol applies to all other types of connections."
   SYNTAX INTEGER {
     noProtocol(1),
     decHuntGroup(2)
   }

   CTSmartTrunkIndex ::= TEXTUAL-CONVENTION
   STATUS   current
   DESCRIPTION
                "Most of the tables in this MIB are indexed in whole
                 or in part by 'ctTrunkIndex' - not by 'ifIndex'.
                 Why is there a separate index?
                 Traditionally, ifIndex values are chosen by agents,
                 and are permitted to change across restarts.  Using
                 ifIndex to index ctTrunkConfigTable could complicate
                 row creation and/or cause interoperability problems
                 (if each agent had special restrictions on ifIndex).
                 Having a separate index avoids these problems."
   SYNTAX      INTEGER ( 1..2147483647 )

   CTSmartTrunkName ::= TEXTUAL-CONVENTION
   STATUS   current
   DESCRIPTION
           "A textual description of this virtual port."
   SYNTAX DisplayString (SIZE(0..32))

   CTSmartTrunkLoadBalanceType ::= TEXTUAL-CONVENTION
   STATUS current
   DESCRIPTION
            "The algorithm in use to assign flows to each link in a Smart TRUNK."
   SYNTAX INTEGER {
        balancingUnspecified(1),
        roundRobin(2),
        linkUtilization(3)
   }

--
-- Smart Trunk Configuration
--

    ctTrunkGlobalStatus OBJECT-TYPE
        SYNTAX  TruthValue
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
                "The state of Smart TRUNK capability for this entire managed entity. Default Value is True(1). If set to False(2)
                 all smart trunks are put into ifAdminStatus down."
        ::= { ctSmartTrunkConfig 1 }

      ctTrunkConfigTable OBJECT-TYPE
          SYNTAX       SEQUENCE OF CtTrunkConfigEntry
          MAX-ACCESS   not-accessible
          STATUS       current
          DESCRIPTION
                  "A table describing all of the trunk interfaces
                   implemented by this host.  Each trunk has a row
                   in the MIB-II/RFC 2233 Interfaces table (describing
                   the structure of the trunk interface it presents to higher
                   layers).  Each trunk interface also has a row in this and
                   other CTRON-SMARTTRUNK-MIB tables. Smart Trunks use
                   ifType propMultiplexor(54). Counters represent the aggregate of
                   all physcal links.

                   Unlike hardware ports, trunk interfaces can be created by
                   management.  However, the RFC 2233 Interfaces table
                   does not directly support row creation.  Therefore,
                   creating or deleting a row in the ctTrunkConfigTable is
                   defined to have the side effect of creating or
                   deleting corresponding rows in

                       -  the MIB-II / RFC 2233 Interfaces table,
                       -  any other dependent tables

                   New Interfaces table rows for trunk intefaces
                   always have 'ifAdminStatus' set to 'down' until the row
                   state is becomes Active. Then administration of the
                   interface uses normal ifTable ifAdminStatus to enabled it."

          ::= { ctSmartTrunkConfig 3 }

      ctTrunkConfigEntry OBJECT-TYPE
          SYNTAX       CtTrunkConfigEntry
          MAX-ACCESS   not-accessible
          STATUS       current
          DESCRIPTION
                  "Each table entry contains configuration information for one trunk interface."
          INDEX   { ctTrunkIndex }
          ::= { ctTrunkConfigTable 1 }

      CtTrunkConfigEntry ::=
          SEQUENCE {
              ctTrunkIndex                      CTSmartTrunkIndex,
              ctTrunkConfigName                 CTSmartTrunkName,
              ctTrunkConfigProtocol             CTSmartTrunkProtocol,
              ctTrunkConfigLoadBalance          CTSmartTrunkLoadBalanceType,
              ctTrunkIfIndex                    InterfaceIndex,
              ctTrunkRowStatus                  RowStatus
          }

      ctTrunkIndex OBJECT-TYPE
          SYNTAX      CTSmartTrunkIndex
          MAX-ACCESS  not-accessible
          STATUS      current
          DESCRIPTION
                  "A value which uniquely identifies this conceptual
                   row in the ctTrunkConfigTable. The Table allows sparse values.

                   If the conceptual row identified by this value of
                   ctTrunkIndex is recreated following an agent restart,
                   the same value of ctTrunkIndex must be used to identify
                   the recreated row.  (However, the Interfaces table
                   index associated with the client may change. ifAlias in ifXTable is used
                   then to reassociate ifIndexes based on ifAlias. In the case of the SSR,
                   Smart Trunks are manipulated as st.ctTrunkIndex"
          ::= { ctTrunkConfigEntry 1 }

        ctTrunkConfigName OBJECT-TYPE
          SYNTAX      CTSmartTrunkName
          MAX-ACCESS  read-create
          STATUS      current
          DESCRIPTION
                  "The Trunk's Name, just for informational purposes. It may be changed
                   regardless of the RowStatus value."

          DEFVAL { "" }
          ::= { ctTrunkConfigEntry 2 }

        ctTrunkConfigProtocol OBJECT-TYPE
          SYNTAX      CTSmartTrunkProtocol
          MAX-ACCESS  read-create
          STATUS      current
          DESCRIPTION
             "Trunking protocol in use. Once the row is active, it can not be changed."
          DEFVAL { decHuntGroup }
          ::= { ctTrunkConfigEntry 3 }

        ctTrunkConfigLoadBalance OBJECT-TYPE
          SYNTAX     CTSmartTrunkLoadBalanceType
          MAX-ACCESS  read-create
          STATUS      current
          DESCRIPTION
                  "The type of load balance algorithm applied to this trunk.
                   Once Row is active, the agent may override this value with an implmentation specific
                   default."
          DEFVAL  { balancingUnspecified }
          ::= { ctTrunkConfigEntry 4 }

       ctTrunkIfIndex OBJECT-TYPE
          SYNTAX        InterfaceIndex
          MAX-ACCESS    read-only
          STATUS        current
          DESCRIPTION
                "The ifIndex in ifTable, ifXTable that is associated with the trunk that is
                 represented by this row."
        ::= { ctTrunkConfigEntry 5 }

       ctTrunkRowStatus OBJECT-TYPE
          SYNTAX      RowStatus
          MAX-ACCESS  read-create
          STATUS      current
          DESCRIPTION
                  "This object lets network managers create and delete
                   trunk interfaces, on systems that support this
                   optional capability.

                   It does not control the activation and deactivation
                   of these interfaces; they are controlled by 'ifAdminStatus'
                   in the ifTable.  However, changing row state from active
                   to notInService. will have the side effect of changing
                   their 'ifAdminStatus' values to 'noPresent' or 'down',
                   thus causing any active trunk connections to be terminated.

                   When creating a trunk interface, it is up to the
                   management station to determine a suitable 'ctTrunkIndex'.
                   To facilitate interoperability, agents should not put
                   any restrictions on the 'ctTrunkIndex' beyond the obvious
                   ones that it be valid and unused.

                   The Managed Objects that must be set in this table
                   for a row to change from nonExistent/notReady to notInService/Active
                   is simply an index. Ports can then be added to the Smart TRUNK
                   via the ifStackTable.

                   If you create a trunk interface via this object,
                   it will initially have
                       'ifAdminStatus' = 'down'
                       'ifOperStatus' = 'down' when RowStatus is changed to active."
          ::= { ctTrunkConfigEntry 6 }

  --
  --  SmartTrunk Connection Table
  --

  ctTrunkConnectionTable OBJECT-TYPE
          SYNTAX       SEQUENCE OF CtTrunkConnectionEntry
          MAX-ACCESS   not-accessible
          STATUS       current
          DESCRIPTION
                  "This table describes how local interfaces that are
                   participating in a trunk are connected to remote
                   interfaces.

                   With this table, a management entity can determine
                   that (for example) local interfaces 3, 4, and 6 are
                   connected to remote interfaces 10, 17, and 19.

                   This table is useful to debug configuration errors
                   with remote devices. If ifAdminStatus/ifOperState is
                   up, and no corresponding row is found in this table,
                   then a management station can assume a the remote
                   end does not have the decHuntGroup protocol active.

                   Note:  this entire table is read-only.  Rows are
                   created and deleted from this table as a side
                   effect of trunks being created and deleted.

                   Note:  a managment entity could determine (for
                   example) that interface 3 was participating in
                   trunk 3 by using the ifStackTable and ctTrunkIfIndex."
          ::= { ctSmartTrunkConfig 4 }

      ctTrunkConnectionEntry OBJECT-TYPE
          SYNTAX       CtTrunkConnectionEntry
          MAX-ACCESS   not-accessible
          STATUS       current
          DESCRIPTION
                  "Each table entry contains configuration information
                   for one interface that is participating in a trunk."
          INDEX   { ifIndex }
          ::= { ctTrunkConnectionTable 1 }

      CtTrunkConnectionEntry ::=
          SEQUENCE {
                ctTrunkPortRemoteIfIndex        InterfaceIndex
          }

     ctTrunkPortRemoteIfIndex OBJECT-TYPE
         SYNTAX  InterfaceIndex
         MAX-ACCESS  read-only
         STATUS  current
         DESCRIPTION
                 "The ifIndex of the interface at the other end of
                  this part of the trunk link.  If this value is 0,
                  then for some reason there is no interface on the
                  other side of this link.  This might be a temporary
                  condition or it might represent a real problem.

                  Note:  this table is indexed by ifIndex.  So the
                  index is the local ifIndex value and
                  ctTrunkPortRemoteIfIndex is the remote ifIndex."
        ::= { ctTrunkConnectionEntry 1 }

-- END of ctTrunkConnectionTable

  ctTrunkLLAPRequirement OBJECT-TYPE
        SYNTAX  INTEGER {
                    required(1),
                    notRequired(2)
                }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                "Indicates whether this managed entity requires the
                 LLAP updates to perform the trunking function.

                 Certain families of products require LLAP (decHuntGroup Protocol)
                 order for the Smart TRUNK functionality to work.
                 A value of 1 implies that LLAP is necessary for smart-trunking
                 to work on this platform, a value of 2 indicates that it is
                 not necessary."
        ::= { ctSmartTrunkDebug 1 }

    ctTrunkMaxTrunks OBJECT-TYPE
        SYNTAX  Integer32
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                "The maximum number of trunks that can be configured
                on this managed entity."
        ::= { ctSmartTrunkDebug 2 }

       -- The Trunk-Flow Diagnostic table
       --
       -- this table is optional; it will be implemented on those devices
       -- that use "flows"
       ctTrunkFlowDiagnosticTable OBJECT-TYPE
       SYNTAX SEQUENCE OF CtTrunkFlowDiagnosticEntry
       MAX-ACCESS not-accessible
       STATUS current
       DESCRIPTION "Provide a means to programmatically evaluate the load
         balancing of a smart trunk. Assumes that load balancing is done on a
         flow by flow basis."
       ::= { ctSmartTrunkDebug 4 }

       ctTrunkFlowDiagnosticEntry OBJECT-TYPE
       SYNTAX CtTrunkFlowDiagnosticEntry
       MAX-ACCESS not-accessible
       STATUS current
       DESCRIPTION "Each row refers to a specific smart trunk and port within
         that smart trunk."
       INDEX { ctTrunkIndex,  ifIndex }
       ::= { ctTrunkFlowDiagnosticTable 1 }

       CtTrunkFlowDiagnosticEntry ::=
          SEQUENCE {
                ctTrunkFlowDiagnosticInstalledFlows     Counter32
       }

       ctTrunkFlowDiagnosticInstalledFlows OBJECT-TYPE
       SYNTAX Counter32
       MAX-ACCESS read-only
       STATUS current
       DESCRIPTION  "A counter of the flows installed on this port since it was
         first operational."
       ::= { ctTrunkFlowDiagnosticEntry 1 }

       -- END of ctTrunkFlowDiagnosticTable

   --
   -- Compliance
   --

ctTrunkConformance OBJECT IDENTIFIER ::= { ctSmartTrunk 3 }
ctTrunkCompliances OBJECT IDENTIFIER ::= { ctTrunkConformance 1 }
ctTrunkGroups OBJECT IDENTIFIER ::= { ctTrunkConformance 2 }

ctTrunkComplianceV10 MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
            "The compliance statement for the CTRON-SMARTTRUNK-MIB."
    MODULE  -- this module
    MANDATORY-GROUPS { ctTrunkConfGroupV10 }

    GROUP       ctTrunkFlowDiagnosticGroup
    DESCRIPTION
       "This group is mandatory for all network devices
        which utilize 'flows'. in order to pass packets along their
        way."

    ::= { ctTrunkCompliances 1 }

ctTrunkConfGroupV10  OBJECT-GROUP
   OBJECTS {
     ctTrunkGlobalStatus,
     ctTrunkRowStatus,
     ctTrunkConfigName,
     ctTrunkConfigProtocol,
     ctTrunkConfigLoadBalance,
     ctTrunkIfIndex,
     ctTrunkPortRemoteIfIndex,
     ctTrunkLLAPRequirement,
     ctTrunkMaxTrunks
}
 STATUS current
DESCRIPTION
  "A set of managed objects that make up version 1.0 of the CTRON-SMARTTRUNK-MIB."
   ::= { ctTrunkGroups 1 }

 ctTrunkFlowDiagnosticGroup    OBJECT-GROUP
       OBJECTS { ctTrunkFlowDiagnosticInstalledFlows }
       STATUS  current
       DESCRIPTION
               "A collection of diagnostic information related to
                interfaces participating in SmartTrunks; specifically
                to interfaces on devices that use 'flows'."
       ::= { ctTrunkGroups 2 }

END
