-- ********************************************************************** -- -- Name: 3Com SuperStack II RESILIENCE LINKS MIB -- -- Description: -- -- -- History Date Reason for Change -- -- 1.00 1997 Issued as 3Com RFC. -- 1.10 Aug 1998 Added the resPairMode object. Tidy up descriptions. -- 1.11 Dec 1998 Added the resPairName object. -- 1.12 Dec 1998 Changed resFlushTable and resPairAction to read-write. -- -- ********************************************************************** -- Copyright 3Com Technologies Limited. (1996-1998) -- ********************************************************************** A3COM0304-RESILIENTLINKS DEFINITIONS ::= BEGIN IMPORTS enterprises FROM RFC1155-SMI OBJECT-TYPE FROM RFC-1212 DisplayString FROM RFC1213-MIB TRAP-TYPE FROM RFC-1215 ; a3Com OBJECT IDENTIFIER ::= { enterprises 43 } generic OBJECT IDENTIFIER ::= { a3Com 10 } mrmResilience OBJECT IDENTIFIER ::= { generic 15 } resTable OBJECT-TYPE SYNTAX SEQUENCE OF ResTableEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "" ::= {mrmResilience 1} resTableEntry OBJECT-TYPE SYNTAX ResTableEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An device may be configured to contain a number of 'resilient pairs'. These are to point connections, e.g. UTP, that allow two repeaters/switches to be connected together in a resilient configuration. In such a configuration one of the two ports is nominated the 'main' port while the other is the 'standby' port. One of these two ports is enabled and is the current active port. The other is present in case of failure of the active port. Such a failure is detected by the device and a switch performed. In the case of repeaters, there are a couple of rules that must apply to a resilient pair definition before that definition becomes a valid resilient pair. Firstly both ports must be on the same repeater. Secondly the standby port must be configured to be 'disabled on boot'. That is it must recover from a power failure in a disabled state. This prevents loops in the network. There are two modes of operation. These are defined by the resPairMode object. See that object for a full description. Several tables control the resilient configuration for the device. This is the first. This is the main table and allows the creation and deletion of pairs and provides status control and information. The information in this table is indexed on the repeater number, the slot (or unit) and the port location of the main port. To create a new resilient pair simply write any writeable object indexed on the main port. This will create a new entry in the table which has the state invalid(1) (read resPairState). Having created the row, write to the other parameters specifying valid information. When all the parameters are valid and 'resPairModificationStatus' is set to 'stable(2)', then resPairState will become operational(2). In this state the pair will correctly operate as a resilient pair. If any of the attributes in the table change so that the pair in no linger valid this will be reflected in the resPortState parameter. To delete a resilient pair, write delete(2) to resPairAction." INDEX {resRepeater,resMainSlot,resMainPort} ::= {resTable 1} ResTableEntry ::= SEQUENCE { resRepeater INTEGER, resMainSlot INTEGER, resMainPort INTEGER, resMainState INTEGER, resStandbySlot INTEGER, resStandbyPort INTEGER, resStandbyState INTEGER, resPairState INTEGER, resPairModificationStatus INTEGER, resPairAction INTEGER, resPairEnable INTEGER, resPairMode INTEGER, resPairName DisplayString } resRepeater OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "A resilient pair must be attached to one of the repeaters in the chassis. This is part of the index value required to access this table." ::= {resTableEntry 1} resMainSlot OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "This is the second key in the index to this table. This is the slot number of the main port in this pair." ::= {resTableEntry 2} resMainPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "This is the final, key used to index entries in this table. It is the port number of the main port in the pair." ::= {resTableEntry 3} resMainState OBJECT-TYPE SYNTAX INTEGER { failed (1), ok (2), ok-and-active (3) } ACCESS read-only STATUS mandatory DESCRIPTION "Each port in a pair is constantly monitored for signs of failure. Failure information is used to automatically change the active port from main to standby or vice-versa. Each port may be in one of three states. Failed(1) indicates there is a loss of signal on this port. A port in this state cannot be active. Secondly ok(2). This state indicates that the port is capable of carrying traffic but is at the moment acting in the role of backup link. The other port in this pair will be in the Ok-and-active(3) state. Ok-and-active(3) means what it says, this port is capable of carrying traffic and is so doing at the time this parameter has been read." ::= {resTableEntry 4} resStandbySlot OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "This is the slot number of the standby port for this pair." ::= {resTableEntry 5} resStandbyPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "This is the port number of the standby port." ::= {resTableEntry 6} resStandbyState OBJECT-TYPE SYNTAX INTEGER { failed (1), ok (2), ok-and-active (3) } ACCESS read-only STATUS mandatory DESCRIPTION "Each port in a pair is constantly monitored for signs of failure. Failure information is used to automatically change the active port from main to standby or vice-versa. Each port may be in one of three states. Failed(1) indicates there is a loss of signal on this port. A port in this state cannot be active. Secondly ok(2). This state indicates that the port is capable of carrying traffic but is at the moment acting in the role of backup link. The other port in this pair will be in the Ok-and-active(3) state. Ok-and-active(3) means what it says, this port is capable of carrying traffic and is so doing at the time this parameter has been read." ::= {resTableEntry 7} resPairState OBJECT-TYPE SYNTAX INTEGER { invalid (1), operational (2) } ACCESS read-only STATUS mandatory DESCRIPTION "Each row in the table is in one of two states, invalid(1) or operational(2). If the state is invalid(1), the resilient pair represented by this row is not active. There are several reasons why this may be the case. Firstly during the row creation process, not all information necessary may have been provided. Secondly an operational pair may become invalid because the resilient pair rules are no longer met because of a change in the device configuration. If the parameters in the row are all valid then the pair becomes operational(2)." ::= {resTableEntry 8} resPairModificationStatus OBJECT-TYPE SYNTAX INTEGER { under-modification (1), stable (2) } ACCESS read-write STATUS mandatory DESCRIPTION "This parameter must be set to under-modification(1) before any changes are made to an existing configuration. Changes are not applied until this parameter is set to stable. " ::= {resTableEntry 9} resPairAction OBJECT-TYPE SYNTAX INTEGER { create (1), delete (2), togglePort (3) } ACCESS read-write STATUS mandatory DESCRIPTION "This is object allows the state of a resilient pair to be modified. The create(1) operation configures the resilient port from this table entry. The delete(2) operation removes the resilient definitions from this table and terminates operation of resilience on this pair of ports. The togglePort(3) operation allows the current active port to be changed to the other port. This second operation will only take affect if the state of the currently non- active port is ok(2)." ::= {resTableEntry 10} resPairEnable OBJECT-TYPE SYNTAX INTEGER { enable (1), disable (2) } ACCESS read-write STATUS mandatory DESCRIPTION "This parameter controls whether the resilient pair is enabled or not. In the disable(2) state , both ports of the resilient pair are disabled. The default value of this parameter is enable(1)." ::= {resTableEntry 11} resPairMode OBJECT-TYPE SYNTAX INTEGER { no-switch-back (1), switch-back-to-main (2) } ACCESS read-write STATUS mandatory DESCRIPTION "This parameter controls the rules that determine the operation of the resilient pair. The value no-switch-back(1) means that both ports are treated equally. The value switch-back-to-main(2) means that when it is operational, precedence is always given to the main port. If the main port has been stable for 1 minute, then the pair will automatically switch the active port to main. The default value of this parameter is no-switch-back(1)." ::= {resTableEntry 12} resPairName OBJECT-TYPE SYNTAX DisplayString (SIZE(0..64)) ACCESS read-write STATUS mandatory DESCRIPTION "The textual name of the interface. The value of this object should be the name of the interface as assigned by the local device and should be suitable for use in commands entered at the device's `console'. The default value of this parameter is a zero length string." ::= {resTableEntry 13} -- ********************************************************************** -- resilient standby mapping table. -- ********************************************************************** resStandbyMapTable OBJECT-TYPE SYNTAX SEQUENCE OF ResStandbyMapTableEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "" ::= {mrmResilience 2} resStandbyMapTableEntry OBJECT-TYPE SYNTAX ResStandbyMapTableEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This table is read-only. If provides shortcut information to allow for the translation of a port number to a corresponding main port number. This value can then be used to access the main resilience table. Each resilient pair has two entries in this table, one for the main port and one for the standby port. The entry for the main port returns the same port, the entry for the standby port returns the corresponding main port." INDEX {resSbRepeater,resSbSlot,resSbPort} ::= {resStandbyMapTable 1} ResStandbyMapTableEntry ::= SEQUENCE { resSbRepeater INTEGER, resSbSlot INTEGER, resSbPort INTEGER, resSbType INTEGER, resSbMainSlot INTEGER, resSbMainPort INTEGER } resSbRepeater OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The repeater index of the port being accessed. This is the first of three indices on this table." ::= {resStandbyMapTableEntry 1} resSbSlot OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Second index on this table." ::= {resStandbyMapTableEntry 2} resSbPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Third index on this table." ::= {resStandbyMapTableEntry 3} resSbType OBJECT-TYPE SYNTAX INTEGER { main (1), standby (2) } ACCESS read-only STATUS mandatory DESCRIPTION "This attribute specifies whether the port indexed is a main or standby port in the resilient pair table. If the port is neither then there will not be a row in this table indexed for that port." ::= {resStandbyMapTableEntry 4} resSbMainSlot OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "This is the slot number of the main port for the pair in which the indexed port participates. NOTE if the index port is the main port of a pair (resSbType is 'main') this value will be the same as the index." ::= {resStandbyMapTableEntry 5} resSbMainPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "This is the port number of the main port for the pair in which the indexed port participates. NOTE if the index port is the main port of a pair (resSbType is 'main') this value will be the same as the index." ::= {resStandbyMapTableEntry 6} resFlushTable OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "This parameter causes all entries in the resilience table to be flushed. Flushing the resilience table does not affect the state of any of the resilient links or ports. Once the table has been flushed , NO resilient links are configured. This parameter is used to ensure that the resilient link table is empty , before new resilient links are configured." ::= {mrmResilience 3} -- ********************************************************************** -- Some traps generated by the resilience engine. -- ********************************************************************** resResilienceSwitch TRAP-TYPE ENTERPRISE a3Com VARIABLES {resMainState, resStandbyState } DESCRIPTION "This trap is generated when a change of state of one of the ports in a resilient pair results in a switch of active port, or when there was no active port and a port has now become active." ::= 43 resStateChange TRAP-TYPE ENTERPRISE a3Com VARIABLES {resMainState, resStandbyState } DESCRIPTION "This trap is generated when a change of state of one of the ports in a resilient pair does not result in a switch of active port. If such a switch were to occur the resResilienceSwitch would be generated." ::= 44 END