SNMP MIB Extension for X.25 LAPB
Extracted elements (30)
DEFVAL clauses were added for all writable objects to allow future MIB extensions to define LAPB interface creation mechanisms without needing to deprecate the existing objects for lack of defaults. The DEFVAL values are reasonable but not mandatory.
Separate transmit and receive objects were introduced for both N1 frame size and K window size (February 1992) because ISO 7776 sections 5.7.3 and 5.7.4, and ISO 8885 Table 3, explicitly provide for asymmetric values in each direction.
The document name was changed from HDLC to LAPB (February 1992 revision) because other HDLC variants—LAPD, SDLC, and raw HDLC—differ enough that this MIB would not adequately manage them; scoping to LAPB avoids misleading implementors of those other protocols.
The MIB separates configuration into a read-write lapbAdmnTable and a read-only lapbOperTable because operating parameters may diverge from configured values after XID negotiation overrides them or if lapbAdmnTable is modified while the interface is already running.
Timer units were changed to milliseconds (February 1992) to align with ISO 8885 Table 3, which specifies timer values in milliseconds. The T4 idle timer uses the sentinel value 2147483647 (PositiveInteger maximum) to indicate 'no idle timer kept' rather than introducing a separate boolean.
A system running X.25 over LAPB over a synchronous line will have at least two ifTable entries: one for LAPB (ifType lapb(16)) and one for the X.25 packet layer. The X.25 MIB object x25InfoDataLinkId references the lapbAdmnIndex of the LAPB interface below it; lapbOperPortId in turn references the RS-232-like interface below LAPB.
lapbFlowChangeReason correlates with MIB-II ifOperStatus when ifOperStatus is not 'testing': ifOperStatus is 'up' when lapbFlowChangeReason is abmEntered, abmeEntered, abmReset, or abmeReset; it is 'down' for notStarted or dmReceived through n2Timeout. No correlation exists when the value is 'other'.
MIB-II ifLastChange for a LAPB interface should reflect the last time the interface changed state; a reset is treated as an instantaneous transition to the NDM (disconnected) state and back to ABM or ABME, making it the last time lapbFlowChangeReason and lapbFlowStateChanges changed.
Since LAPB interfaces appear in the MIB-II ifTable, significant state transitions should generate standard linkUp or linkDown traps. Specifically, an interface that sends or receives a Frame Reject (FRMR) frame should send a linkDown trap; subsequent recovery should send a linkUp trap.
Support for the lapbXidTable is mandatory for all agents of systems whose LAPB implementation uses XID negotiation; agents of systems without XID negotiation support should not implement this table.
Support of the lapbAdmnTable is mandatory for all agents of systems that implement LAPB. It is a read-write table containing configurable parameters; changes may take effect immediately or upon interface restart depending on the implementation.
Support of the lapbFlowTable is mandatory for all agents of systems that implement LAPB. It is read-only and records state changes, busy defers, REJ/SREJ frames sent and received, T1 timeouts, and the most recent FRMR and XID frame information fields.
Support of the lapbOperTable is mandatory for all agents of systems that implement LAPB. This read-only table reflects parameters currently in use, which may differ from lapbAdmnTable values if XID negotiation overrode them or if the admin table was changed after interface start.
Four timer objects are defined, all in milliseconds: T1 (max wait for PDU acknowledgment, default 3000), T2 (max delay before sending an acknowledgment, default 0), T3 (wait before considering the link disconnected, default 60000; zero means disconnect upon frame exchange completion), and T4 (max idle time without frame exchange, default 2147483647 indicating disabled).
lapbAdmnActionInitiate specifies how LAPB initiates link setup: sendSABM(1), sendDISC(2), sendDM(3), none(4), or other(5); default sendSABM(1). lapbAdmnActionRecvDM specifies the response to a received DM frame: sendSABM(1), sendDISC(2), or other(3); default sendSABM(1).
lapbAdmnControlField and lapbOperControlField specify the sequence-number modulus: modulo8(1) for 3-bit numbers or modulo128(2) for 7-bit extended numbers (ISO 8885 HDLC Option 10). The configured default is modulo8(1).
lapbAdmnN2RxmitCount specifies the number of times a PDU is retransmitted after T1 expires without acknowledgment. Range is 0..65535; default is 20.
lapbAdmnStationType specifies the desired station type: dte(1), dce(2), or dxe(3), defaulting to dte(1). The corresponding lapbOperStationType reflects the currently active type and shows dxe(3) when XID negotiation has not yet determined the role.
lapbOperPortId is an OBJECT IDENTIFIER identifying an instance of the index object of the physical-interface MIB below LAPB (e.g., rs232PortIndex). If no such object is supported, agents return nullSpec OBJECT IDENTIFIER {0 0}.
lapbOperProtocolVersionId is an OBJECT IDENTIFIER identifying the LAPB protocol version in use. Three version OIDs are defined: lapbProtocolIso7776v1986, lapbProtocolCcittV1980, and lapbProtocolCcittV1984.
lapbXidTable supplies XID negotiation parameters not present in lapbAdmnTable: lapbXidAdRIdentifier (Address Resolution Identifier), lapbXidAdRAddress, lapbXidParameterUniqueIdentifier, lapbXidGroupAddress, lapbXidPortNumber, and lapbXidUserDataSubfield. All are read-write OCTET STRINGs defaulting to empty.
Separate transmit and receive K window-size objects (lapbAdmnTransmitKWindowSize, lapbAdmnReceiveKWindowSize) define the maximum number of unacknowledged sequenced PDUs outstanding at once. Range is 1..127; default is 7.
Separate transmit and receive N1 frame-size objects (lapbAdmnTransmitN1FrameSize, lapbAdmnReceiveN1FrameSize) specify the maximum frame size in bits, excluding flags and zero-bit fill for transparency. Default is 36000 bits (4500 octets, matching the 802.5 frame size).
Two textual conventions are introduced: PositiveInteger (INTEGER 0..2147483647), used for frame sizes and timers, and IfIndexType (INTEGER 1..2147483647), used as an index whose values match MIB-II ifIndex. Their introduction does not alter SMI or SNMP encoding rules.
The LAPB MIB occupies the OID lapb OBJECT IDENTIFIER ::= { transmission 16 }, with LAPB interfaces identified in MIB-II by ifType lapb(16). This document defines four tables under that arc: lapbAdmnTable, lapbOperTable, lapbFlowTable, and lapbXidTable, plus a lapbProtocolVersion sub-tree.
Security issues are not discussed in this memo.
lapbFlowChangeReason records the cause of the most recent lapbFlowStateChanges increment with 13 values: notStarted, abmEntered, abmeEntered, abmReset, abmeReset, dmReceived, dmSent, discReceived, discSent, frmrReceived, frmrSent, n2Timeout, other. A DM or DISC generated to initiate link setup does not alter this object.
lapbFlowCurrentMode defines 17 LAPB link states: disconnected, linkSetup (SABM sent), frameReject (FRMR sent), disconnectRequest (DISC sent), informationTransfer (normal operation after SABM(E)/UA exchange), rejFrameSent, waitingAcknowledgement (T1 expired, RR sent), stationBusy (RNR sent), remoteStationBusy (RNR received), bothStationsBusy, waitingAckStationBusy, waitingAckRemoteBusy, waitingAckBothBusy, rejFrameSentRemoteBusy, xidFrameSent, error, and other.
lapbFlowFrmrSent and lapbFlowFrmrReceived each hold the Information Field of the most recently sent or received FRMR frame as an OCTET STRING of SIZE(0..7). Zero length indicates no FRMR has occurred. Defined per ISO 7776 Section 4.3.9, tables 7 and 8.
lapbFlowXidReceived and lapbXidUserDataSubfield both use OCTET STRING SIZE(0..8206) to carry XID frame information. lapbXidUserDataSubfield must include both the User Data Identifier and the User Data Field as shown in ISO 8885 figures 1 and 4.