Network Working Group                                          J. Barnes
Request for Comments: 1696                                Xylogics, Inc.
Category: Standards Track                                       L. Brown
                                                                Motorola
                                                              R. Royston
                                                       US Robotics, Inc.
                                                           S. Waldbusser
                                              Carnegie Mellon University
                                                             August 1994
Page 1

Modem Management Information Base (MIB) using SMIv2

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

Table of Contents

1 Introduction
2 The SNMPv2 Network Management Framework
2.1 Object Definitions
3 Definitions
4 Acknowledgements
5. Security Considerations
6. Authors' Addresses

1. Introduction

This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects used for managing dial-up modems and similar dial-up devices. This MIB module provides a set of objects that are the minimum necessary to provide the ability to monitor and control those devices, and is consistent with the SNMP framework and existing SNMP standards.


Page 2

2. The SNMPv2 Network Management Framework

The SNMPv2 Network Management Framework consists of four major components. They are:

  • RFC 1442 which defines the SMI, the mechanisms used for describing and naming objects for the purpose of management.

  • STD 17, RFC 1213 defines MIB-II, the core set of managed objects for the Internet suite of protocols.

  • RFC 1445 which defines the administrative and other architectural aspects of the framework.

  • RFC 1448 which defines the protocol used for network access to managed objects.

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

2.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 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 refer to the object type.

3. Definitions

Modem-MIB DEFINITIONS ::= BEGIN

IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY,
Counter32, Integer32 FROM SNMPv2-SMI
DisplayString FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
mib-2 FROM RFC1213-MIB;

mdmMIB MODULE-IDENTITY
LAST-UPDATED "9406120000Z"
ORGANIZATION "IETF Modem Management Working Group"


Page 3

CONTACT-INFO

            "        Steven Waldbusser
             Postal: Carnegie Mellon University
                     5000 Forbes Ave
                     Pittsburgh, PA, 15213
                     US

Tel: +1 412 268 6628
Fax: +1 412 268 4987
E-mail: waldbusser@cmu.edu"
DESCRIPTION
"The MIB module for management of dial-up modems."

    ::= { mdmMIB 1 }

mdmMib OBJECT IDENTIFIER ::= { mib-2 38 }

mdmMIBObjects OBJECT IDENTIFIER ::= { mdmMIB 1 }

-- conformance information

mdmConformance OBJECT IDENTIFIER ::= { mdmMIB 2 }

mdmCompliances OBJECT IDENTIFIER ::= { mdmConformance 1 }
mdmGroups OBJECT IDENTIFIER ::= { mdmConformance 2 }

-- units of conformance

mdmIDGroup OBJECT-GROUP
    OBJECTS   { mdmIDManufacturerOID, mdmIDProductDetails }
    STATUS    current
    DESCRIPTION
            "A collection of objects that identify the manufacturer and
            model information for a modem."
    ::= { mdmGroups 1 }

mdmLineInterfaceGroup OBJECT-GROUP
OBJECTS { mdmLineCarrierLossTime,
mdmLineState, mdmLineCapabilitiesID,
mdmLineCapabilitiesEnableRequested,
mdmLineCapabilitiesEnableGranted }
STATUS current
DESCRIPTION
"A collection of objects that describe the configuration and state of the modem's line interface."
    ::= { mdmGroups 2 }

mdmDTEInterfaceGroup OBJECT-GROUP


Page 4

OBJECTS { mdmDTEActionDTROnToOff, mdmDTEActionDTROffToOn, mdmDTESyncTimingSource, mdmDTESyncAsyncMode, mdmDTEInactivityTimeout }

    STATUS      current
    DESCRIPTION
            "A collection of objects that describe the configuration and
            state of the modem's DTE interface."
    ::= { mdmGroups 3 }

mdmCallControlGroup OBJECT-GROUP
OBJECTS { mdmCCRingsBeforeAnswer,
mdmCCCallSetUpFailTimer, mdmCCResultCodeEnable,
mdmCCEscapeAction, mdmCCCallDuration,
mdmCCConnectionFailReason, mdmCCStoredDialString }
STATUS current
DESCRIPTION
"A collection of objects that describe the configuration of call control capabilities on the modem and the status of calls placed with this modem."
    ::= { mdmGroups 4 }

mdmErrorControlGroup OBJECT-GROUP
OBJECTS { mdmECErrorControlUsed }
STATUS current
DESCRIPTION
"A collection of objects that describe the configuration and state of error control on a modem."
    ::= { mdmGroups 5 }

mdmDataCompressionGroup OBJECT-GROUP
OBJECTS { mdmDCCompressionTypeUsed }
STATUS current
DESCRIPTION
"A collection of objects that describe the configuration and state of data compression on a modem."
    ::= { mdmGroups 6 }

mdmSignalConvertorGroup OBJECT-GROUP
OBJECTS { mdmSCCurrentLineReceiveRate, mdmSCCurrentLineTransmitRate,
mdmSCInitialLineReceiveRate, mdmSCInitialLineTransmitRate, mdmSCModulationSchemeUsed }
STATUS current
DESCRIPTION
"A collection of objects that describe the configuration and state of error control on a modem."
    ::= { mdmGroups 7 }

mdmStatisticsGroup OBJECT-GROUP


Page 5

OBJECTS { mdmStatsRingNoAnswers,
mdmStatsIncomingConnectionFailures,
mdmStatsIncomingConnectionCompletions,
mdmStatsFailedDialAttempts,
mdmStatsOutgoingConnectionFailures,
mdmStatsOutgoingConnectionCompletions,
mdmStatsRetrains,
mdmStats2400OrLessConnections, mdmStats2400To14400Connections, mdmStatsGreaterThan14400Connections,
mdmStatsErrorControlledConnections,
mdmStatsCompressedConnections,
mdmStatsCompressionEfficiency,
mdmStatsSentOctets, mdmStatsReceivedOctets,
mdmStatsSentDataFrames, mdmStatsReceivedDataFrames,
mdmStatsResentFrames, mdmStatsErrorFrames }
STATUS current
DESCRIPTION
"A collection of objects that describe the state of calls on this modem."

    ::= { mdmGroups 8 }

mdmNumber OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of modem rows in the modem table. This value defines the maximum value of the mdmIndex object."
    ::= { mdmMIBObjects 1 }

-- The modem ID table.

mdmIDTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmIDEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The base table for the modems managed by this MIB.  The
            mdmLineTable, mdmDTEInterfaceTable, mdmCallControlTable, and
            mdmStatsTable all augment the rows defined in this table."
    ::= { mdmMIBObjects 2 }

mdmIDEntry OBJECT-TYPE
    SYNTAX      MdmIDEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Entries in this table are created only by the agent. One


Page 6

entry exists for each modem managed by the agent."

    INDEX       { mdmIndex }
    ::= { mdmIDTable 1 }

MdmIDEntry ::= SEQUENCE {
    mdmIndex                Integer32,
    mdmIDManufacturerOID    OBJECT IDENTIFIER,
    mdmIDProductDetails     DisplayString
}

mdmIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A unique number for each modem that ranges from 1 to
            mdmNumber.  The value must remain constant at least from one
            re-initialization of the network management agent to the
            next."
    ::= { mdmIDEntry 1 }

mdmIDManufacturerOID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This value is intended to identify the manufacturer, model,
            and version of this modem.  This may be used to identify the
            existance of enterprise-specific functions and behaviours."
    REFERENCE
            "V.58 attribute manufacturerID subfield ManufacturerOI"
    ::= { mdmIDEntry 2 }

mdmIDProductDetails OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..79))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "A textual description of this device, including the
            manufacturer's name, modem model name, hardware revision,
            firmware revision, and optionally, its serial number.  The
            exact format of this description is defined by the vendor.
            This description may only contain characters from the NVT
            ASCII character set."
    REFERENCE
            "V.58 attribute manufacturerID subfield productDetails"
    ::= { mdmIDEntry 3 }


Page 7

-- The modem Line Interface Table

mdmLineTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmLineEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The modem Line Table augments the modem ID table."
    ::= { mdmMIBObjects 3 }

mdmLineEntry OBJECT-TYPE
    SYNTAX      MdmLineEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Entries in this table are created only by the agent. One
            entry exists for each modem managed by the agent."
    AUGMENTS    { mdmIDEntry }
    ::= { mdmLineTable 1 }

MdmLineEntry ::= SEQUENCE {
    mdmLineCarrierLossTime          Integer32,
    mdmLineState                    INTEGER
}

mdmLineCarrierLossTime OBJECT-TYPE
    SYNTAX      Integer32 (1..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Duration in 10ths of a second the modem waits after loss of
            carrier before hanging up.  If this value is set to `255',
            the modem will not hang up upon loss of carrier.  This
            allows the modem to distinguish between a momentary lapse in
            line quality and a true disconnect and can be useful to tune
            the tolerance of the modem to lines of poor quality."
    REFERENCE "V.58 lineSignalFailDisconnectTimer"
    ::= { mdmLineEntry 1 }

mdmLineState OBJECT-TYPE
    SYNTAX      INTEGER {
                    unknown(1),
                    onHook(2),
                    offHook(3),  -- and not connected
                    connected(4),
                    busiedOut(5),
                    reset(6)
                }


Page 8

MAX-ACCESS read-write

    STATUS      current
    DESCRIPTION
            "Allows the inspection and alteration of the state of the
            modem.  Management commands may change the state to `on-
            hook', `busied-out', or `reset' from any state.  No other
            alterations are permitted from the management protocol.
            When this object is set to reset, the modem shall be reset
            and the value will change to the modem's new, implementation
            dependent state."
    ::= { mdmLineEntry 2 }

mdmLineCapabilitiesTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmLineCapabilitiesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of protocol capabilities for this modem."
    ::= { mdmMIBObjects 4 }

mdmLineCapabilitiesEntry OBJECT-TYPE
    SYNTAX      MdmLineCapabilitiesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A listing of the protocol(s) that this modem is capable of.
            Entries in this table are created only by the agent.  One
            entry exists for each protocol that the modem is capable of,
            regardless of whether that protocol is enabled or not.

This table is useful for providing an inventory of the capabilities on a modem, and allowing the manager to enable or disable capabilities from the menu of available possibilities. Row creation is not required to enable or disable capabilities."

    INDEX       { mdmIndex, mdmLineCapabilitiesIndex }
    ::= { mdmLineCapabilitiesTable 1 }

MdmLineCapabilitiesEntry ::= SEQUENCE {
    mdmLineCapabilitiesIndex            Integer32,
    mdmLineCapabilitiesID               OBJECT IDENTIFIER,
    mdmLineCapabilitiesEnableRequested  INTEGER,
    mdmLineCapabilitiesEnableGranted    INTEGER
}

mdmLineCapabilitiesIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible


Page 9

    STATUS      current
    DESCRIPTION
            "A unique index for this capabilities entry."
    ::= { mdmLineCapabilitiesEntry 1 }

mdmLineCapabilitiesID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "An identifier for this capability.  Standard protocol
            capabilities will have identifiers registered in this
            document or other companion standards documents.
            Proprietary protocol capabilities will be registered by
            their respective organization.  All capabilities, standard
            or vendor-specific, shall be registered in this table."
    ::= { mdmLineCapabilitiesEntry 2 }

mdmLineCapabilitiesEnableRequested OBJECT-TYPE
    SYNTAX      INTEGER {
                    disabled(1),
                    optional(2),
                    preferred(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The requested configuration of this capability.  If this
            value is 'disabled(1)', this is a request to disable this
            protocol.  If this value is 'preferred(3)', this is a
            request to enable this protocol, and to prefer it in any
            negotiation over other appropriate protocols that have a
            value of 'optional(2)'."
    DEFVAL      { preferred }
    ::= { mdmLineCapabilitiesEntry 3 }

mdmLineCapabilitiesEnableGranted OBJECT-TYPE
    SYNTAX      INTEGER {
                    disabled(1),
                    optional(2),
                    preferred(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The actual configuration of this capability.  The agent
            shall attempt to set this as close as possible to the
            associated mdmLineCapabilitiesEnableRequested value.  The


Page 10

agent shall make this determination in an implementation- specific manner that may take into account the configuration of other capabilities or other considerations. The modem will choose in an implementation-specific manner between multiple mutually-exclusive capabilities that each have the same (non-disabled) value. However, the modem must prefer all capabilities with a value of 'preferred(3)' over all capabilities with a value of 'optional(2)'.

In other words, if there are one or more mutually-exclusive capabilities (e.g. V.32 and V.32bis) that are set to `preferred', the agent must choose one in an
implementation-specific manner. Otherwise, if there are one or more mutually-exclusive capabilities that are set to `optional', the agent must choose one in an implementation- specific manner."

    ::= { mdmLineCapabilitiesEntry 4 }

mdmLineCapabilities OBJECT IDENTIFIER ::= { mdmMIBObjects 5 }

mdmLineCapabilitiesV21 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.21"
    ::= { mdmLineCapabilities 1 }

mdmLineCapabilitiesV22 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.22"
    ::= { mdmLineCapabilities 2 }

mdmLineCapabilitiesV22bis OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.22bis"
    ::= { mdmLineCapabilities 3 }

mdmLineCapabilitiesV23CC OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.23CC"
    ::= { mdmLineCapabilities 4 }

mdmLineCapabilitiesV23SC OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.23SC"


Page 11

    ::= { mdmLineCapabilities 5 }

mdmLineCapabilitiesV25bis OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.25bis"
    ::= { mdmLineCapabilities 6 }

mdmLineCapabilitiesV26bis OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.26bis"
    ::= { mdmLineCapabilities 7 }

mdmLineCapabilitiesV26ter OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.26ter"
    ::= { mdmLineCapabilities 8 }

mdmLineCapabilitiesV27ter OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.27ter"
    ::= { mdmLineCapabilities 9 }

mdmLineCapabilitiesV32 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.32"
    ::= { mdmLineCapabilities 10 }

mdmLineCapabilitiesV32bis OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.32bis"
    ::= { mdmLineCapabilities 11 }

mdmLineCapabilitiesV32terbo OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.32terbo"
    ::= { mdmLineCapabilities 12 }

mdmLineCapabilitiesVFC OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.FC"


Page 12

    ::= { mdmLineCapabilities 13 }

mdmLineCapabilitiesV34 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.34"
    ::= { mdmLineCapabilities 14 }

mdmLineCapabilitiesV42 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.42"
    ::= { mdmLineCapabilities 15 }

mdmLineCapabilitiesV42bis OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.42bis"
    ::= { mdmLineCapabilities 16 }

mdmLineCapabilitiesMNP1 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP1"
    ::= { mdmLineCapabilities 17 }

mdmLineCapabilitiesMNP2 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP2"
    ::= { mdmLineCapabilities 18 }

mdmLineCapabilitiesMNP3 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP3"
    ::= { mdmLineCapabilities 19 }

mdmLineCapabilitiesMNP4 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP4"
    ::= { mdmLineCapabilities 20 }

mdmLineCapabilitiesMNP5 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP5"


Page 13

    ::= { mdmLineCapabilities 21 }

mdmLineCapabilitiesMNP6 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP6"
    ::= { mdmLineCapabilities 22 }

mdmLineCapabilitiesMNP7 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP7"
    ::= { mdmLineCapabilities 23 }

mdmLineCapabilitiesMNP8 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP8"
    ::= { mdmLineCapabilities 24 }

mdmLineCapabilitiesMNP9 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP9"
    ::= { mdmLineCapabilities 25 }

mdmLineCapabilitiesMNP10 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"MNP10"
    ::= { mdmLineCapabilities 26 }

mdmLineCapabilitiesV29 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.29"
    ::= { mdmLineCapabilities 27 }

mdmLineCapabilitiesV33 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"ITU V.33"
    ::= { mdmLineCapabilities 28 }

mdmLineCapabilitiesBell208 OBJECT-IDENTITY
STATUS current
DESCRIPTION
"Bell 208"


Page 14

    ::= { mdmLineCapabilities 29 }

-- DTE Interface Table

mdmDTEInterfaceTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmDTEInterfaceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The modem DTE Interface Table augments the modem ID table."
    ::= { mdmMIBObjects 6 }

mdmDTEInterfaceEntry OBJECT-TYPE
    SYNTAX      MdmDTEInterfaceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Entries in this table are created only by the agent. One
            entry exists for each modem managed by the agent."
    AUGMENTS    { mdmIDEntry }
    ::= { mdmDTEInterfaceTable 1 }

MdmDTEInterfaceEntry ::= SEQUENCE {
    mdmDTEActionDTROnToOff      INTEGER,
    mdmDTEActionDTROffToOn      INTEGER,
    mdmDTESyncTimingSource      INTEGER,
    mdmDTESyncAsyncMode         INTEGER,
    mdmDTEInactivityTimeout     Integer32
}

mdmDTEActionDTROnToOff OBJECT-TYPE
    SYNTAX      INTEGER {
                    ignore(1),
                    escapeToCommandMode(2),
                    disconnectCall(3),
                    resetModem(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Defines the action the modem will take when DTR drops.

If the value is set to ignore(1), the modem takes no action when DTR drops. Typically, mdmDTEActionDTROffToOn would also be set to ignore(1) if this object is set to ignore(1).

If the value is escapeToCommandMode(2), the modem remains


Page 15

connected and enters command mode. If the value is disconnectCall(3), the current call (if any) is terminated and the modem will not auto-answer while DTR is off. If the value is resetModem(4), the current call (if any) is terminated and the modem is reset."

    DEFVAL      { disconnectCall }
    ::= { mdmDTEInterfaceEntry 1 }

mdmDTEActionDTROffToOn OBJECT-TYPE
    SYNTAX      INTEGER {
                    ignore(1),
                    enableDial(2),
                    autoAnswerEnable(3),
                    establishConnection(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Defines the action the modem will take when DTR is raised.

If the value is set to ignore(1), the modem takes no action when DTR is raised. Typically, mdmDTEActionDTROnToOff would also be set to ignore(1) if this object is set to ignore(1).

If the value is set to enableDial(2), the modem prepares to dial an outgoing call. If the value is set to
autoAnswerEnable(3), the modem will be configured to answer any incoming call. If the value is set to
establishConnection(4), the modem dials an implementation specific number.

Immediately after any reset or power-on of the modem, if the DTR is high, the action specified here will be executed."

    DEFVAL      { autoAnswerEnable }
    ::= { mdmDTEInterfaceEntry 2 }

mdmDTESyncTimingSource OBJECT-TYPE
    SYNTAX      INTEGER {
                    internal(1),
                    external(2),
                    loopback(3),
                    network(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The clock source for synchronous transmissions.  If set to
            internal(1), the modem is the clock source and sends the


Page 16

clock signals to the DTE. If set to external(2), the transmit clock signals are provided by the DTE. If loopback(3), the modem receiver clock is used for the transmit clock. If network(4), the clock signals are supplied by the DCE interface.

If the modem is not in synchronous mode, setting this object will have no effect on the current operations of the modem."

    REFERENCE   "V.58 transmitClockSource"
    DEFVAL      { internal }
    ::= { mdmDTEInterfaceEntry 3 }

mdmDTESyncAsyncMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    async(1),
                    sync(2),
                    syncAfterDial(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The operational mode of the modem.  If the value is
            syncAfterDial(3), the modem will accept commands in
            asynchronous mode and change to synchronous mode to pass
            data after a dial sequence has been executed."
    DEFVAL      { async }
    ::= { mdmDTEInterfaceEntry 4 }

mdmDTEInactivityTimeout OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The amount of idle time in minutes that the modem will wait
            before disconnecting a connection.  When a call is connected
            and no data is transferred (continuous marking condition) on
            both circuits 103 and 104 for the specified time, the DCE
            disconnects the call. If the value is 0, no idle disconnect
            will occur.  This function applies to asynchronous dial
            operations only and is intended for administrative control
            over idle connections."
    REFERENCE   "V.58 inactivityTimerSelect"
    DEFVAL { 0 }
    ::= { mdmDTEInterfaceEntry 5 }

-- The Call Control Table


Page 17

mdmCallControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmCallControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The modem Call Control Table augments the modem ID table."
    ::= { mdmMIBObjects 7 }

mdmCallControlEntry OBJECT-TYPE
    SYNTAX      MdmCallControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Entries in this table are created only by the agent. One
            entry exists for each modem managed by the agent."
    AUGMENTS    { mdmIDEntry }
    ::= { mdmCallControlTable 1 }

MdmCallControlEntry ::= SEQUENCE {
    mdmCCRingsBeforeAnswer      Integer32,
    mdmCCCallSetUpFailTimer     Integer32,
    mdmCCResultCodeEnable       INTEGER,
    mdmCCEscapeAction           INTEGER,
    mdmCCCallDuration           Integer32,
    mdmCCConnectionFailReason   INTEGER
}

mdmCCRingsBeforeAnswer OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Determines which ring the modem will wait to answer the
            phone on.  If this value is `0', the modem will not go
            offhook and answer a call when a ring signal is detected."
    REFERENCE   "V.58 ringsBeforeAnswer"
    DEFVAL      { 1 }
    ::= { mdmCallControlEntry 1 }

mdmCCCallSetUpFailTimer OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "This parameter specifies the amount of time, in seconds,
            that the modem shall allow between either answering a call
            (automatically or manually) or completion of dialing, and
            establishment of a connection with the remote modem. If no


Page 18

connection is established during this time, the modem disconnects from the line and returns a result code indicating the cause of the disconnection. In TIA-602, this is controlled by the value in the S7 register."

    REFERENCE   "V.58 callSetUpFailTimer"
    DEFVAL      { 30 }
    ::= { mdmCallControlEntry 2 }

mdmCCResultCodeEnable OBJECT-TYPE
    SYNTAX      INTEGER {
                    disabled(1),
                    numericEnabled(2),
                    verboseEnabled(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "When disabled, the DCE shall issue no 'result codes' of any
            kind to the DTE either in response to unsolicited events
            (eg. ring signal), or commands. In TIA-602, this is
            controlled by the ATQ command.  When numericEnabled, the DCE
            shall issue result codes in numeric form.  When
            verboseEnabled, the DCE shall issue result codes in a
            verbose, textual form."
    REFERENCE   "V.58 responseModeSelect"
    DEFVAL      { verboseEnabled }
    ::= { mdmCallControlEntry 3 }

mdmCCEscapeAction OBJECT-TYPE
    SYNTAX      INTEGER {
                    ignoreEscape(1),
                    hangUp(2),
                    enterCommandMode(3)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The modem's action upon successfully recognizing the
            'escape to command mode' character sequence."
    DEFVAL { ignoreEscape }
    ::= { mdmCallControlEntry 4 }

-- Call status portion of the call control table

mdmCCCallDuration OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current


Page 19

DESCRIPTION
"Present or last completed connection time in seconds. If there have been no previous connections, this value should be -1."

    ::= { mdmCallControlEntry 5 }

mdmCCConnectionFailReason OBJECT-TYPE
    SYNTAX      INTEGER {
                -- General
                        unknown(1),
                        other(2),
                        managementCommand(3),
                        inactivityTimeout(4),
                        mnpIncompatibility(5),
                        protocolError(6),
                -- DCE
                        powerLoss(10),
                        equipmentFailure(11),
                -- DTE Interface
                        dtrDrop(20),
                -- Line Interface
                        noDialTone(30),
                        lineBusy(31),
                        noAnswer(32),
                        voiceDetected(33),
                -- Signal Converter
                        carrierLost(40),
                        trainingFailed(41),
                        faxDetected(42)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION

"Indicates the reason that the last connection or attempt failed. The meaning of each reason code is explained below.

unknown:
This code means the failure reason is unknown or there has been no previous call.

other:
This code used when no other code is applicable. Additional vendor information may be available
elsewhere.

managementCommand:


Page 20

A management command terminated the call. These commands include escaping to command mode, initiating dialing, restoring lines, and disconnecting.

inactivityTimeout:
The call was terminated because it was inactive for at the minimum duration specified.

mnpIncompatibility:
The modems are unable to resolve MNP protocol
differences.

protocolError:
An error occured in one of protocol in use. Further information is required to determine in which
protocol the error occurred, and the exact nature of the error.

powerLoss:
The modem lost power and disconnected the call.

equipmentFailure:
The modem equipment failed.

dtrDrop:
DTR has been turned off while the modem is to
disconnect on DTR drop. (Ref: V.58 cct108TurnedOff)

noDialTone:
If the modem is to monitor for call progress tones, but the modem has failed to detect dial tone while attempting to dial a number.

lineBusy:
Busy signal is detected while busy signal detection is enabled, or while the 'W' or '@' dial modifier is used. (Ref: V.58 engagedTone)

noAnswer:
The call was not answered.

voiceDetected:
A voice was detected on the call.

carrierLost:
Indicates that the modem has disconnected due to detection of loss of carrier. In TIA-602, the S10 register determines the time that loss of carrier


Page 21

must be detected before the modem disconnects.

trainingFailed:
Indicates that the modems did not successfully train and reach data mode on the previous connection.

faxDetected:
A fax was detected on the call."

    REFERENCE   "V.58 callCleared"
    ::= { mdmCallControlEntry 6 }

-- The Stored Dial String table

mdmCCStoredDialStringTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmCCStoredDialStringEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The table of stored dial strings."
    REFERENCE   "V.58 telephoneNumbers"
    ::= { mdmMIBObjects 8 }

mdmCCStoredDialStringEntry OBJECT-TYPE
    SYNTAX      MdmCCStoredDialStringEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A stored dial string."
    INDEX  { mdmIndex, mdmCCStoredDialStringIndex }
    ::= { mdmCCStoredDialStringTable 1 }

MdmCCStoredDialStringEntry ::= SEQUENCE {
    mdmCCStoredDialStringIndex     Integer32,
    mdmCCStoredDialString          DisplayString
}

mdmCCStoredDialStringIndex OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The unique index of a particular dial string."
    ::= { mdmCCStoredDialStringEntry 1 }

mdmCCStoredDialString OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..64))
    MAX-ACCESS  read-write
    STATUS      current


Page 22

DESCRIPTION
"A dial string stored in the modem."

    ::= { mdmCCStoredDialStringEntry 2 }

-- The modem Error Correcting Group

mdmECTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmECEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The modem error correcting table augments the modem ID
            table."
    ::= { mdmMIBObjects 9 }

mdmECEntry OBJECT-TYPE
    SYNTAX      MdmECEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Entries in this table are created only by the agent. One
            entry exists for each modem managed by the agent."
    AUGMENTS    { mdmIDEntry }
    ::= { mdmECTable 1 }

MdmECEntry ::= SEQUENCE {
    mdmECErrorControlUsed           OBJECT IDENTIFIER
}

mdmECErrorControlUsed OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Indicates the error control method used during the current
            or previous call.  This shall be one of the values for error
            control protocols registered in the capabilities table for
            this modem.  If no error control protocol is in use, this
            object shall have the value '{0 0}'."
    REFERENCE   "V.58 errorControlActive"
    ::= { mdmECEntry 1 }

-- The modem Data Compression Group

mdmDCTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmDCEntry
    MAX-ACCESS  not-accessible
    STATUS      current


Page 23

DESCRIPTION
"The modem data compression table augments the modem ID table."

    ::= { mdmMIBObjects 10 }

mdmDCEntry OBJECT-TYPE
    SYNTAX      MdmDCEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Entries in this table are created only by the agent. One
            entry exists for each modem managed by the agent."
    AUGMENTS    { mdmIDEntry }
    ::= { mdmDCTable 1 }

MdmDCEntry ::= SEQUENCE {
    mdmDCCompressionTypeUsed        OBJECT IDENTIFIER
}

mdmDCCompressionTypeUsed OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Indicates the data compression method used during the
            current or previous call.  This shall be one of the values
            for compression protocols registered in the capabilities
            table for this modem.  If no compression protocol is in use,
            this object shall have the value '{0 0}'."
    ::= { mdmDCEntry 1 }

-- The modem Signal Convertor Group

mdmSCTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmSCEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The modem signal convertor table augments the modem ID
            table."
    ::= { mdmMIBObjects 11 }

mdmSCEntry OBJECT-TYPE
    SYNTAX      MdmSCEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Entries in this table are created only by the agent. One


Page 24

entry exists for each modem managed by the agent."

    AUGMENTS    { mdmIDEntry }
    ::= { mdmSCTable 1 }

MdmSCEntry ::= SEQUENCE {
    mdmSCCurrentLineTransmitRate        Integer32,
    mdmSCCurrentLineReceiveRate         Integer32,
    mdmSCInitialLineTransmitRate        Integer32,
    mdmSCInitialLineReceiveRate         Integer32,
    mdmSCModulationSchemeUsed           OBJECT IDENTIFIER
}

mdmSCCurrentLineTransmitRate OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The current link transmit rate of a connection, or the last
            link transmit rate of the last connection in bits per
            second."
    REFERENCE   "V.58 transmissionSignallingRateActive"
    ::= { mdmSCEntry 1 }

mdmSCCurrentLineReceiveRate OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The current link receive rate of a connection, or the last
            link receive rate of the last connection in bits per
            second."
    REFERENCE   "V.58 transmissionSignallingRateActive"
    ::= { mdmSCEntry 2 }

mdmSCInitialLineTransmitRate OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The initial link transmit rate of the current connection,
            or the initial link transmit rate of the last connection in
            bits per second."
    ::= { mdmSCEntry 3 }

mdmSCInitialLineReceiveRate OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current


Page 25

DESCRIPTION
"The initial link receive rate of the current connection, or the initial link receive rate of the last connection in bits per second."

    ::= { mdmSCEntry 4 }

mdmSCModulationSchemeUsed OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The modulation scheme of the current or previous call.
            This shall be one of the values for modulation protocols
            registered in the capabilities table for this modem."
    REFERENCE   "V.58 gstnModulationSchemeActive"
    ::= { mdmSCEntry 5 }

-- The Modem Statistics Table

mdmStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MdmStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The modem statistics Table augments the modem ID table."
    ::= { mdmMIBObjects 12 }

mdmStatsEntry OBJECT-TYPE
    SYNTAX      MdmStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Entries in this table are created only by the agent. One
            entry exists for each modem managed by the agent."
    AUGMENTS    { mdmIDEntry }
    ::= { mdmStatsTable 1 }

MdmStatsEntry ::= SEQUENCE {
    mdmStatsRingNoAnswers                   Counter32,
    mdmStatsIncomingConnectionFailures      Counter32,
    mdmStatsIncomingConnectionCompletions   Counter32,
    mdmStatsFailedDialAttempts              Counter32,
    mdmStatsOutgoingConnectionFailures      Counter32,
    mdmStatsOutgoingConnectionCompletions   Counter32,
    mdmStatsRetrains                        Counter32,
    mdmStats2400OrLessConnections           Counter32,
    mdmStats2400To14400Connections          Counter32,
    mdmStatsGreaterThan14400Connections     Counter32,


Page 26

    mdmStatsErrorControlledConnections      Counter32,
    mdmStatsCompressedConnections           Counter32,
    mdmStatsCompressionEfficiency           Integer32,
    mdmStatsSentOctets                      Counter32,
    mdmStatsReceivedOctets                  Counter32,
    mdmStatsSentDataFrames                  Counter32,
    mdmStatsReceivedDataFrames              Counter32,
    mdmStatsResentFrames                    Counter32,
    mdmStatsErrorFrames                     Counter32
}

mdmStatsRingNoAnswers OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of events in which ringing was detected but the
            call was not answered."
    ::= { mdmStatsEntry 1 }

mdmStatsIncomingConnectionFailures OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of incoming connection requests that this modem
            answered in which it could not train with the other DCE."
    ::= { mdmStatsEntry 2 }

mdmStatsIncomingConnectionCompletions OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of incoming connection requests that this modem
            answered and successfully trained with the other DCE."
    ::= { mdmStatsEntry 3 }

mdmStatsFailedDialAttempts OBJECT-TYPE
        SYNTAX          Counter32
        MAX-ACCESS  read-only
        STATUS          current
        DESCRIPTION
                "The number of call attempts that failed because the modem
        didn't go off hook, or there was no dialtone."
        ::= { mdmStatsEntry 4 }

mdmStatsOutgoingConnectionFailures OBJECT-TYPE


Page 27

    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of outgoing calls from this modem which
            sucessfully went off hook and dialed, in which it could not
            train with the other DCE."
    ::= { mdmStatsEntry 5 }

mdmStatsOutgoingConnectionCompletions OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of outgoing calls from this modem which resulted
            in successfully training with the other DCE."
    ::= { mdmStatsEntry 6 }

mdmStatsRetrains OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of retrains experienced on connections on this
            line."
    ::= { mdmStatsEntry 7 }

-- Utilization counters

mdmStats2400OrLessConnections OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of connections initially established at a
            modulation speed of 2400 bits per second or less."
    ::= { mdmStatsEntry 8 }

mdmStats2400To14400Connections OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of connections initially established at a
            modulation speed of greater than 2400 bits per second and
            less than 14400 bits per second."


Page 28

    ::= { mdmStatsEntry 9 }

mdmStatsGreaterThan14400Connections OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of connections initially established at a
            modulation speed of greater than 14400 bits per second."
    ::= { mdmStatsEntry 10 }

mdmStatsErrorControlledConnections OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of established connections using an error
            control protocol."
    ::= { mdmStatsEntry 11 }

mdmStatsCompressedConnections OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of established connections using a compression
            protocol."
    ::= { mdmStatsEntry 12 }

mdmStatsCompressionEfficiency OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of bytes transferred into the compression
            encoder divided by the number of bytes transferred out of
            the encoder, multiplied by 100 for either the current or
            last call.  If a data compression protocol is not in use,
            this value shall be `100'."
    REFERENCE   "V.58 compressionEfficiency"
    ::= { mdmStatsEntry 13 }

mdmStatsSentOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets presented to the modem by the DTE."


Page 29

    ::= { mdmStatsEntry 14 }

mdmStatsReceivedOctets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets presented to the DTE by the modem."
    ::= { mdmStatsEntry 15 }

mdmStatsSentDataFrames OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of data frames sent on the line interface.  If
            there is no frame-oriented protocol in use on the line
            interface, this counter shall not increment."
    ::= { mdmStatsEntry 16 }

mdmStatsReceivedDataFrames OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of data frames received on the line interface.
            If there is no frame-oriented protocol in use on the line
            interface, this counter shall not increment."
    ::= { mdmStatsEntry 17 }

mdmStatsResentFrames OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times this modem retransmits frames on the
            line interface.  If there is no frame-oriented protocol in
            use on the line interface, this counter shall not
            increment."
    ::= { mdmStatsEntry 18 }

mdmStatsErrorFrames OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of block errors received on the link.  If there
            is no frame-oriented protocol in use on the line interface,


Page 30

this counter shall not increment."

    ::= { mdmStatsEntry 19 }

-- compliance statements

mdmCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMPv2 entities which implement the modem MIB."

MODULE -- this module
MANDATORY-GROUPS { mdmIDGroup, mdmLineInterfaceGroup, mdmDTEInterfaceGroup, mdmCallControlGroup,
mdmSignalConvertorGroup, mdmStatisticsGroup }

        GROUP   mdmErrorControlGroup
        DESCRIPTION
            "This group is mandatory only for those modems that
            implement an error correction protocol."

GROUP mdmDataCompressionGroup
DESCRIPTION
"This group is mandatory only for those modems that implement a data compression protocol."

    ::= { mdmCompliances 1 }

END

4. Acknowledgements

This document was produced by the Modem Management Working group.

In addition, the authors gratefully acknowledge the comments of Tom Holodnik and Mark S. Lewis.

5. Security Considerations

Security issues are not discussed in this memo.


Page 31

6. Authors' Addresses

Jim Barnes
Xylogics, Inc.
53 Third Avenue
Burlington, MA 01803
USA

Phone: 617-272-8140
Fax: 617-272-2618
EMail: barnes@xylogics.com

Les Brown
Motorola

Phone: 416-507-7200
EMail: brown_l@msm.cdx.mot.com

Rick Royston
US Robotics, Inc.
8100 N. McCormick Boulevard
Skokie, IL 60076-2999
USA

Phone: 708-933-5430
Fax: 708-982-1348
EMail: rroyston@usr.com

Steven Waldbusser
Carnegie Mellon University
Computing and Communications
Cyert Hall 130
5000 Forbes Avenue
Pittsburgh, PA 15213-3890
USA

Phone: 412-268-6628
Fax: 412-268-4987
EMail: swol@andrew.cmu.edu