RFC 1316

Definitions of Managed Objects for Character Stream Devices

πŸ“… published April 1992, from ietf

RFC 1316: Definitions of Managed Objects for Character Stream Devices πŸŽ€

okay bestie, let's get into it πŸ’– Here's the title block so you know who wrote this and what it's about:

  • RFC: 1316
  • Working group: Network Working Group
  • Author: B. Stewart, Editor, from Xyplex, Inc. ✨
  • Date: April 1992 🌸
  • Category/status: IAB standards track protocol πŸ’…
  • Obsoletes/Updates: none listed in this title block 🫢

Status of This Memo πŸ’…

Okay so this RFC is an IAB standards track protocol for the Internet community, and it's literally asking for your thoughts and suggestions for improvements πŸ™ˆ For the standardization state and status of this protocol, check the current edition of the "IAB Official Protocol Standards" (that's the source of truth, periodt πŸ‘‘). And the good news: distribution of this memo is unlimited πŸ¦‹

1. Abstract 🌸

This memo defines a chunk of the Management Information Base (MIB), which is basically the big shared list of things you can manage on a network πŸ“‹ It's meant to be used with network management protocols in TCP/IP based internets. Specifically, it defines objects for managing character stream devices ✨

2. The Network Management Framework πŸ¦‹

The Internet-standard Network Management Framework is made of three components, and they're all super connected πŸ’œ

First up, RFC 1155 defines the SMI 🧱, which is the mechanism for describing and naming objects for management purposes. RFC 1212 gives us a more concise description mechanism, and it's wholly consistent with the SMI, so no drama there 🫢

Next, RFC 1156 defines MIB-I, the core set of managed objects for the Internet suite of protocols. RFC 1213 defines MIB-II, which is an evolution of MIB-I based on implementation experience and new operational requirements. It's giving growth arc πŸ“ˆ

Then there's RFC 1157, which defines SNMP, the protocol used for network access to managed objects πŸ”₯

Also, the Framework lets people define new objects for experimentation and evaluation, so you can play around πŸ§ͺ

3. Objects 🧸

Managed objects are accessed through a virtual information store, called the Management Information Base or MIB. Each object is defined using a subset of Abstract Syntax Notation One (ASN.1) [7], as defined in the SMI. Every object has a name, a syntax, and an encoding. The name is an object identifier, which is an administratively assigned name that specifies an object type πŸ“›

The object type together with an object instance uniquely identifies one specific instantiation of the object. For human convenience, people often use a textual string called the OBJECT DESCRIPTOR to refer to the object type too πŸ™ˆ

The syntax of an object type defines the abstract data structure that goes with that object type, and ASN.1 is the language used for this. However, the SMI [3] purposely restricts which ASN.1 constructs may be used. These restrictions are made for simplicity, and honestly that's iconic πŸ’…

The encoding of an object type is just how that object type is represented using its syntax. Implicitly tied to the syntax and encoding is how the object type gets represented when it's transmitted on the network 🌈

The SMI specifies the use of the basic encoding rules of ASN.1 [8], subject to the additional requirements imposed by the SNMP 🧚

3.1. Format of Definitions πŸ“

Section 5 contains the specification of every object type in this MIB module. The object types are defined using the conventions in the SMI, as amended by the extensions specified in [9,10] ✨

4. Overview 🌈

Okay, the Character MIB is the main character here πŸ’– It applies to interface ports that carry a character stream, whether they're physical or virtual, serial or parallel, synchronous or asynchronous. The most common example is a hardware terminal port with an RS-232 interface. Another common hardware example is a parallel printer port, say with a Centronics interface. The concept also includes virtual terminal ports, like a software connection point for a remote console πŸ–₯️

The Character MIB is one of a set of MIBs designed to be used together. At this writing, the set is:

Character MIB
PPP MIB
RS-232-like MIB
Parallel-printer-like MIB

The RS-232-like MIB and the Parallel-printer-like MIB handle the physical layer and provide service to higher layers, like the Character MIB or PPP MIB. Further MIBs may show up above these 🧱

The following diagram shows two possible "MIB stacks," each using the RS-232-like MIB πŸ‘€

                                               .-----------------.
                    .-----------------.        |  Standard MIB   |
                    |   Telnet MIB    |        | Interface Group |
                    |-----------------|        |-----------------|
                    |  Character MIB  |        |     PPP MIB     |
                    |-----------------|        |-----------------|
                    | RS-232-like MIB |        | RS-232-like MIB |
                    `-----------------'        `-----------------'

The intent of the model is for the physical-level MIBs to represent the lowest level, no matter which higher level is using them. In turn, separate higher level MIBs represent specific applications, like a terminal (the Character MIB) or a network connection (the PPP MIB) πŸŽ€

For the most part, character ports are distinct from network interfaces, which are already covered by the Interface group. In general, character ports are attachment points for non-network devices. The exception is a character port that can support a network protocol, like SLIP or PPP. In that case there's a matching entry in the Interfaces table, with ifOperStatus set to 'off' while the port isn't running a network protocol, and 'on' if it is. The intent is that this kind of usage is exclusive of non-network character stream usage. So while the port is switched to network use, charPortOperStatus would be 'down', and Character MIB operational values like charPortInFlowState and charPortInCharacters would be inactive πŸ™…β€β™€οΈ

The Character MIB is mandatory for all systems that offer character ports. That includes things like terminal servers, general-purpose time-sharing hosts, and even a bridge with a (virtual) console port. It may or may not include character ports that don't support network sessions, depending on what the system needs πŸ’œ

The Character MIB's central abstraction is a port. Physical ports have a one-to-one correspondence with hardware ports. Virtual ports are software entities that work like physical ports, but they don't have a hardware connector πŸ”Œ

Each port supports one or more sessions. A session is a virtual connection that carries characters between the port and some partner. Sessions usually run over a stack of network protocols. A typical session, for example, uses Telnet over TCP πŸ“‘

The MIB has one base object and two tables, which are detailed in the following sections. The tables hold objects for ports and sessions πŸ—‚οΈ

The MIB intentionally doesn't distinguish between what's often called permanent and operational or volatile data bases. For this MIB, handling those distinctions is up to the implementation 🌸

5. Definitions πŸ’œ

Here's the actual MIB module, bestie. Keep it exact 🫢

                    RFC1316-MIB DEFINITIONS ::= BEGIN

                    IMPORTS
                            Counter, TimeTicks, Gauge
                                    FROM RFC1155-SMI
                            DisplayString
                                    FROM RFC1213-MIB
                            OBJECT-TYPE
                                    FROM RFC-1212;

            -- this is the MIB module for character stream devices

            char    OBJECT IDENTIFIER ::= { mib-2 19 }

            -- Textual Conventions

                AutonomousType    ::= OBJECT IDENTIFIER

            -- The object identifier is an independently extensible type
            -- identification value.  It may, for example indicate a
            -- particular sub-tree with further MIB definitions, or
            -- define something like a protocol type or type of
            -- hardware.

                InstancePointer   ::= OBJECT IDENTIFIER

            -- The object identifier is a pointer to a specific instance
            -- of a MIB object in this agent's implemented MIB.  By
            -- convention, it is the first object in the conceptual row
            -- for the instance.

            -- the generic Character group

            -- Implementation of this group is mandatory for all
            -- systems that offer character ports

            charNumber OBJECT-TYPE
                SYNTAX INTEGER
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The number of entries in charPortTable, regardless
                    of their current state."
                ::= { char 1 }


            -- the Character Port table

            charPortTable OBJECT-TYPE
                SYNTAX SEQUENCE OF CharPortEntry
                ACCESS not-accessible
                STATUS mandatory
                DESCRIPTION
                    "A list of port entries.  The number of entries is
                    given by the value of charNumber."
                ::= { char 2 }

            charPortEntry OBJECT-TYPE
                SYNTAX CharPortEntry
                ACCESS not-accessible
                STATUS mandatory
                DESCRIPTION
                    "Status and parameter values for a character port."
                INDEX { charPortIndex }
                ::= { charPortTable 1 }

            CharPortEntry ::=
                SEQUENCE {
                    charPortIndex
                        INTEGER,
                    charPortName
                        DisplayString,
                    charPortType
                        INTEGER,
                    charPortHardware
                        AutonomousType,
                    charPortReset
                        INTEGER,
                    charPortAdminStatus

                        INTEGER,
                    charPortOperStatus
                        INTEGER,
                    charPortLastChange
                        TimeTicks,
                    charPortInFlowType
                        INTEGER,
                    charPortOutFlowType
                        INTEGER,
                    charPortInFlowState
                        INTEGER,
                    charPortOutFlowState
                        INTEGER,
                    charPortInCharacters
                        Counter,
                    charPortOutCharacters
                        Counter,
                    charPortAdminOrigin
                        INTEGER,
                    charPortSessionMaximum
                        INTEGER,
                    charPortSessionNumber
                        Gauge,
                    charPortSessionIndex
                        INTEGER
                }

            charPortIndex OBJECT-TYPE
                SYNTAX INTEGER
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "A unique value for each character port.  Its value
                    ranges between 1 and the value of charNumber.  By
                    convention and if possible, hardware port numbers
                    come first, with a simple, direct mapping.  The
                    value for each port must remain constant at least
                    from one re-initialization of the network management
                    agent to the next."
                ::= { charPortEntry 1 }

            charPortName OBJECT-TYPE
                SYNTAX DisplayString (SIZE (0..32))
                ACCESS read-write
                STATUS mandatory
                DESCRIPTION
                    "An administratively assigned name for the port,
                    typically with some local significance."

                ::= { charPortEntry 2 }

okay so the charPort objects are next, and they're giving control panel energy πŸŽ€βœ¨

            charPortType OBJECT-TYPE
                SYNTAX INTEGER { physical(1), virtual(2) }
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The port's type, 'physical' if the port represents
                    an external hardware connector, 'virtual' if it does
                    not."
                ::= { charPortEntry 3 }

            charPortHardware OBJECT-TYPE
                SYNTAX AutonomousType
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "A reference to hardware MIB definitions specific to
                    a physical port's external connector.  For example,
                    if the connector is RS-232, then the value of this
                    object refers to a MIB sub-tree defining objects
                    specific to RS-232.  If an agent is not configured
                    to have such values, the agent returns the object
                    identifier:

                        nullHardware OBJECT IDENTIFIER ::= { 0 0 }
                    "
                ::= { charPortEntry 4 }

so charPortType just tells you if the port is physical (an actual hardware connector you can plug into πŸ”Œ) or virtual (no connector, just vibes ✨). charPortHardware points to the hardware MIB stuff for that physical connector. Like if it's RS-232, it points to a sub-tree with RS-232 objects πŸ’…. If the agent isn't set up with those values, it hands back nullHardware, which is { 0 0 } 🫢

            charPortReset OBJECT-TYPE
                SYNTAX INTEGER { ready(1), execute(2) }
                ACCESS read-write
                STATUS mandatory
                DESCRIPTION
                    "A control to force the port into a clean, initial
                    state, both hardware and software, disconnecting all
                    the port's existing sessions.  In response to a
                    get-request or get-next-request, the agent always
                    returns 'ready' as the value.  Setting the value to
                    'execute' causes a reset."
                ::= { charPortEntry 5 }

            charPortAdminStatus OBJECT-TYPE
                SYNTAX INTEGER { enabled(1), disabled(2), off(3),
                                 maintenance(4) }
                ACCESS read-write
                STATUS mandatory
                DESCRIPTION

                    "The port's desired state, independent of flow
                    control.  'enabled' indicates that the port is
                    allowed to pass characters and form new sessions.
                    'disabled' indicates that the port is allowed to
                    pass characters but not form new sessions.  'off'
                    indicates that the port is not allowed to pass
                    characters or have any sessions. 'maintenance'
                    indicates a maintenance mode, exclusive of normal
                    operation, such as running a test."
                ::= { charPortEntry 6 }

charPortReset is the big red button πŸ”΄. Setting it to execute forces the port into a clean, initial state, hardware and software both, and kicks off every session on it. Reading it always gives back ready, no matter what, so don't expect it to remember anything lol πŸ™ˆ

charPortAdminStatus is what you want the port to do 🎯. enabled means it can pass characters and start new sessions. disabled means it can still pass characters but can't start new sessions. off means no characters and no sessions at all. maintenance is a special testing mode that's separate from normal operation, like running a test πŸ§ͺ. It's all independent of flow control, btw.

            charPortOperStatus OBJECT-TYPE
                SYNTAX INTEGER { up(1), down(2),
                                 maintenance(3), absent(4), active(5) }
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The port's actual, operational state, independent
                    of flow control.  'up' indicates able to function
                    normally.  'down' indicates inability to function
                    for administrative or operational reasons.
                    'maintenance' indicates a maintenance mode,
                    exclusive of normal operation, such as running a
                    test.  'absent' indicates that port hardware is not
                    present.  'active' indicates up with a user present
                    (e.g. logged in)."
                ::= { charPortEntry 7 }

            charPortLastChange OBJECT-TYPE
                SYNTAX TimeTicks
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The value of sysUpTime at the time the port entered
                    its current operational state.  If the current state
                    was entered prior to the last reinitialization of
                    the local network management subsystem, then this
                    object contains a zero value."
                ::= { charPortEntry 8 }

charPortOperStatus is the port's actual state, the real tea β˜•, still independent of flow control. up means it's working normally. down means it can't function, for admin or operational reasons. maintenance is the same testing mode as before. absent means the port hardware isn't even there πŸ‘». And active means it's up and someone's using it, like logged in πŸ™‹β€β™€οΈ

charPortLastChange is a timestamp of when the port hit its current operational state, measured by sysUpTime ⏰. If that state started before the local network management subsystem was last reinitialized, this object just reads zero 🫠

            charPortInFlowType OBJECT-TYPE
                SYNTAX INTEGER { none(1), xonXoff(2), hardware(3),
                                 ctsRts(4), dsrDtr(5) }
                ACCESS read-write
                STATUS mandatory
                DESCRIPTION
                    "The port's type of input flow control.  'none'
                    indicates no flow control at this level or below.

                    'xonXoff' indicates software flow control by
                    recognizing XON and XOFF characters.  'hardware'
                    indicates flow control delegated to the lower level,
                    for example a parallel port.

                    'ctsRts' and 'dsrDtr' are specific to RS-232-like
                    ports.  Although not architecturally pure, they are
                    included here for simplicity's sake."
                ::= { charPortEntry 9 }

            charPortOutFlowType OBJECT-TYPE
                SYNTAX INTEGER { none(1), xonXoff(2), hardware(3),
                                 ctsRts(4), dsrDtr(5) }
                ACCESS read-write
                STATUS mandatory
                DESCRIPTION
                    "The port's type of output flow control.  'none'
                    indicates no flow control at this level or below.
                    'xonXoff' indicates software flow control by
                    recognizing XON and XOFF characters.  'hardware'
                    indicates flow control delegated to the lower level,
                    for example a parallel port.

                    'ctsRts' and 'dsrDtr' are specific to RS-232-like
                    ports.  Although not architecturally pure, they are
                    included here for simplicy's sake."
                ::= { charPortEntry 10 }

charPortInFlowType and charPortOutFlowType are the flow control settings, one for incoming and one for outgoing data 🌊. You get none (no flow control at this level or below), xonXoff (software flow control using XON and XOFF characters), hardware (flow control handed off to a lower level, like a parallel port), ctsRts, and dsrDtr. The last two are for RS-232-like ports. They're not architecturally pure, but they're in here for simplicity's sake, which I respect πŸ’…

            charPortInFlowState OBJECT-TYPE
                SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) }
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The current operational state of input flow control
                    on the port.  'none' indicates not applicable.
                    'unknown' indicates this level does not know.
                    'stop' indicates flow not allowed.  'go' indicates
                    flow allowed."
                ::= { charPortEntry 11 }

            charPortOutFlowState OBJECT-TYPE
                SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) }
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The current operational state of output flow
                    control on the port.  'none' indicates not
                    applicable.  'unknown' indicates this level does not
                    know.  'stop' indicates flow not allowed.  'go'
                    indicates flow allowed."
                ::= { charPortEntry 12 }

charPortInFlowState and charPortOutFlowState are the live status of those flow controls 🚦. none means it doesn't apply, unknown means this level doesn't know, stop means flow isn't allowed right now, and go means flow is allowed. Same energy for both directions, just input vs output 🫢

            charPortInCharacters OBJECT-TYPE
                SYNTAX Counter
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "Total number of characters detected as input from
                    the port since system re-initialization and while
                    the port operational state was 'up', 'active', or
                    'maintenance', including, for example, framing, flow
                    control (i.e. XON and XOFF), each occurrence of a
                    BREAK condition, locally-processed input, and input
                    sent to all sessions."
                ::= { charPortEntry 13 }

            charPortOutCharacters OBJECT-TYPE
                SYNTAX Counter
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "Total number of characters detected as output to
                    the port since system re-initialization and while
                    the port operational state was 'up', 'active', or
                    'maintenance', including, for example, framing, flow
                    control (i.e. XON and XOFF), each occurrence of a
                    BREAK condition, locally-created output, and output
                    received from all sessions."
                ::= { charPortEntry 14 }

charPortInCharacters and charPortOutCharacters are the character counters πŸ”’. They count everything that goes in or out since re-initialization, but only while the port is up, active, or maintenance. Framing, XON and XOFF, each BREAK condition, and local processing all get counted too, plus input or output for every session πŸ“Š

            charPortAdminOrigin OBJECT-TYPE
                SYNTAX INTEGER { dynamic(1), network(2), local(3),
                                 none(4) }
                ACCESS read-write
                STATUS mandatory
                DESCRIPTION
                    "The administratively allowed origin for
                    establishing session on the port.  'dynamic' allows
                    'network' or 'local' session establishment. 'none'
                    disallows session establishment."
                ::= { charPortEntry 15 }

            charPortSessionMaximum OBJECT-TYPE
                SYNTAX INTEGER
                ACCESS read-write
                STATUS mandatory
                DESCRIPTION
                    "The maximum number of concurrent sessions allowed
                    on the port.  A value of -1 indicates no maximum.
                    Setting the maximum to less than the current number
                    of sessions has unspecified results."
                ::= { charPortEntry 16 }

            charPortSessionNumber OBJECT-TYPE
                SYNTAX Gauge
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The number of open sessions on the port that are in
                    the connecting, connected, or disconnecting state."
                ::= { charPortEntry 17 }

            charPortSessionIndex OBJECT-TYPE
                SYNTAX INTEGER
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The value of charSessIndex for the port's first or
                    only active session.  If the port has no active
                    session, the agent returns the value zero."
                ::= { charPortEntry 18 }

charPortAdminOrigin decides who's allowed to start sessions on the port πŸšͺ. dynamic lets in network or local sessions, and none shuts the door completely πŸ”’

charPortSessionMaximum caps how many sessions can run at once. -1 means no cap at all, which is a total vibe 🌈. Heads up though: if you set the max below how many sessions are already running, the results are unspecified, so, yeah, don't do that πŸ’€

charPortSessionNumber counts the open sessions that are connecting, connected, or disconnecting πŸ“ˆ. charPortSessionIndex points at the charSessIndex of the port's first or only active session πŸ‘‘. If there aren't any active sessions, it returns zero.


Now the session table, which is where the real drama lives 🎭


            -- the Character Session table

            charSessTable OBJECT-TYPE
                SYNTAX SEQUENCE OF CharSessEntry
                ACCESS not-accessible
                STATUS mandatory
                DESCRIPTION
                    "A list of port session entries."
                ::= { char 3 }

            charSessEntry OBJECT-TYPE
                SYNTAX CharSessEntry
                ACCESS not-accessible
                STATUS mandatory
                DESCRIPTION
                    "Status and parameter values for a character port
                    session."
                INDEX { charSessPortIndex, charSessIndex }
                ::= { charSessTable 1 }

            CharSessEntry ::=
                SEQUENCE {
                    charSessPortIndex
                        INTEGER,
                    charSessIndex
                        INTEGER,
                    charSessKill
                        INTEGER,
                    charSessState
                        INTEGER,
                    charSessProtocol
                        AutonomousType,
                    charSessOperOrigin
                        INTEGER,
                    charSessInCharacters
                        Counter,
                    charSessOutCharacters
                        Counter,
                    charSessConnectionId
                        InstancePointer,
                    charSessStartTime
                        TimeTicks
                }

charSessTable is the list of all the port session entries πŸ“‹. Each charSessEntry holds the status and parameter values for one character port session, and it's indexed by charSessPortIndex and charSessIndex 🧩. The CharSessEntry sequence lists all the columns that go with each session: charSessPortIndex, charSessIndex, charSessKill, charSessState, charSessProtocol, charSessOperOrigin, charSessInCharacters, charSessOutCharacters, charSessConnectionId, and charSessStartTime ✨

            charSessPortIndex OBJECT-TYPE
                SYNTAX INTEGER
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The value of charPortIndex for the port to which
                    this session belongs."
                ::= { charSessEntry 1 }

            charSessIndex OBJECT-TYPE
                SYNTAX INTEGER
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The session index in the context of the port, a
                    non-zero positive integer.  Session indexes within a
                    port need not be sequential.  Session indexes may be
                    reused for different ports.  For example, port 1 and
                    port 3 may both have a session 2 at the same time.
                    Session indexes may have any valid integer value,
                    with any meaning convenient to the agent
                    implementation."
                ::= { charSessEntry 2 }

            charSessKill OBJECT-TYPE
                SYNTAX INTEGER { ready(1), execute(2) }
                ACCESS read-write
                STATUS mandatory
                DESCRIPTION
                    "A control to terminate the session.  In response to
                    a get-request or get-next-request, the agent always
                    returns 'ready' as the value.  Setting the value to
                    'execute' causes termination."
                ::= { charSessEntry 3 }

            charSessState OBJECT-TYPE
                SYNTAX INTEGER { connecting(1), connected(2),
                                 disconnecting(3) }
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The current operational state of the session,
                    disregarding flow control.  'connected' indicates
                    that character data could flow on the network side
                    of session.  'connecting' indicates moving from
                    nonexistent toward 'connected'.  'disconnecting'
                    indicates moving from 'connected' or 'connecting' to
                    nonexistent."
                ::= { charSessEntry 4 }

            charSessProtocol OBJECT-TYPE
                SYNTAX AutonomousType
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The network protocol over which the session is
                    running.  Other OBJECT IDENTIFIER values may be
                    defined elsewhere, in association with specific
                    protocols.  However, this document assigns those of
                    known interest as of this writing."
                ::= { charSessEntry 5 }

            wellKnownProtocols OBJECT IDENTIFIER ::= { char 4 }

            protocolOther  OBJECT IDENTIFIER ::= {wellKnownProtocols 1}
            protocolTelnet OBJECT IDENTIFIER ::= {wellKnownProtocols 2}
            protocolRlogin OBJECT IDENTIFIER ::= {wellKnownProtocols 3}
            protocolLat    OBJECT IDENTIFIER ::= {wellKnownProtocols 4}
            protocolX29    OBJECT IDENTIFIER ::= {wellKnownProtocols 5}
            protocolVtp    OBJECT IDENTIFIER ::= {wellKnownProtocols 6}
            charSessOperOrigin OBJECT-TYPE
                SYNTAX INTEGER { unknown(1), network(2), local(3) }
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The session's source of establishment."
                ::= { charSessEntry 6 }

            charSessInCharacters OBJECT-TYPE
                SYNTAX Counter
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "This session's subset of charPortInCharacters."
                ::= { charSessEntry 7 }

            charSessOutCharacters OBJECT-TYPE
                SYNTAX Counter
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "This session's subset of charPortOutCharacters."
                ::= { charSessEntry 8 }

            charSessConnectionId OBJECT-TYPE
                SYNTAX InstancePointer
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "A reference to additional local MIB information.
                    This should be the highest available related MIB,
                    corresponding to charSessProtocol, such as Telnet.
                    For example, the value for a TCP connection (in the
                    absence of a Telnet MIB) is the object identifier of
                    tcpConnState.  If an agent is not configured to have
                    such values, the agent returns the object
                    identifier:

                        nullConnectionId OBJECT IDENTIFIER ::= { 0 0 }
                    "
                ::= { charSessEntry 9 }

            charSessStartTime OBJECT-TYPE
                SYNTAX TimeTicks
                ACCESS read-only
                STATUS mandatory
                DESCRIPTION
                    "The value of sysUpTime in MIB-2 when the session
                    entered connecting state."
                ::= { charSessEntry 10 }

            END

6. Acknowledgements ✨

Okay, big shoutout time πŸ“£πŸ«Ά This document came together from several private MIBs, and it was produced by the Character MIB Working Group. Those folks are absolutely iconic πŸ‘‘

                Anne Ambler, Spider
                Charles Bazaar, Emulex
                Christopher Bucci, Datability
                Anthony Chung, Hughes LAN Systems
                George Conant, Xyplex
                John Cook, Chipcom
                James Davin, MIT-LCS
                Shawn Gallagher, DEC
                Tom Grant, Xylogics
                Frank Huang, Emulex
                David Jordan, Emulex
                Satish Joshi, SynOptics
                Frank Kastenholz, Clearpoint
                Ken Key, University of Tennessee
                Jim Kinder, Fibercom
                Rajeev Kochhar, 3Com
                John LoVerso, Xylogics
                Keith McCloghrie, Hughes LAN Systems
                Donald Merritt, BRL
                David Perkins, 3Com
                Jim Reinstedler, Ungerman-Bass
                Marshall Rose, PSI
                Ron Strich, SSDS
                Dean Throop, DG
                Bill Townsend, Xylogics
                Jesse Walker, DEC
                David Waitzman, BBN
                Bill Westfield, cisco

7. References πŸ“š

Here's the reading list, bestie. Every single one of these is cited above, so go get your learn on 🧚

  • [1] Cerf, V., "IAB Recommendations for the Development of Internet Network Management Standards", RFC 1052, NRI, April 1988.
  • [2] Cerf, V., "Report of the Second Ad Hoc Network Management Review Group", RFC 1109, NRI, August 1989.
  • [3] Rose M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", RFC 1155, Performance Systems International, Hughes LAN Systems, May 1990.
  • [4] McCloghrie K., and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1156, Hughes LAN Systems, Performance Systems International, May 1990.
  • [5] 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.
  • [6] McCloghrie K., and M. Rose, Editors, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1213, Performance Systems International, March 1991.
  • [7] Information processing systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1), International Organization for Standardization, International Standard 8824, December 1987.
  • [8] Information processing systems - Open Systems Interconnection - Specification of Basic Encoding Rules for Abstract Notation One (ASN.1), International Organization for Standardization, International Standard 8825, December 1987.
  • [9] Rose, M., and K. McCloghrie, Editors, "Concise MIB Definitions", RFC 1212, Performance Systems International, Hughes LAN Systems, March 1991.
  • [10] Rose, M., Editor, "A Convention for Defining Traps for use with the SNMP", RFC 1215, Performance Systems International, March 1991.

8. Security Considerations 😱

Security issues are not discussed in this memo. πŸ’€ So this doc doesn't cover security at all, bestie, so keep that in mind as you read. πŸ™ˆ

9. Author's Address πŸ’Œ

This one's from the author himself, the lovely Bob Stewart πŸ¦‹

   Bob Stewart
   Xyplex, Inc.
   330 Codman Hill Road
   Boxborough, MA 01719

   Phone: (508) 264-9900
   EMail: rlstewart@eng.xyplex.com

And that's the whole RFC, bestie! Period. πŸ’–βœ¨πŸŒˆ

πŸ“¦ where this page comes from