Network Working Group K. McCloghrie Request For Comments: 1066 M. Rose TWG August 1988 Management Information Base for Network Management of TCP/IP-based internets Table of Contents 1. Status of this Memo ................................... 1 2. IAB POLICY STATEMENT .................................. 2 3. Introduction .......................................... 2 4. Objects ............................................... 5 4.1 Object Groups ........................................ 5 4.2 Format of Definitions ................................ 6 5. Object Definitions .................................... 7 5.1 The System Group ..................................... 8 5.2 The Interfaces Group ................................. 10 5.2.1 The Interfaces Table ............................... 10 5.3 The Address Translation Group ........................ 22 5.4 The IP Group ......................................... 25 5.4.1 The IP Address Table ............................... 33 5.4.2 The IP Routing Table ............................... 35 5.5 The ICMP Group ....................................... 42 5.6 The TCP Group ........................................ 52 5.7 The UDP Group ........................................ 61 5.8 The EGP Group ........................................ 63 5.8.1 The EGP Neighbor Table ............................. 64 6. Definitions ........................................... 67 7. Acknowledgements ...................................... 88 8. References ............................................ 89 1. Status of this Memo This memo provides the initial version of the Management Information Base (MIB) for use with network management protocols in TCP/IP-based internets in the short-term. In particular, together with its companion memos which describe the structure of management information along with the initial network management protocol, these documents provide a simple, workable architecture and system for managing TCP/IP-based internets and in particular the Internet.
This memo specifies a draft standard for the Internet community. TCP/IP implementations in the Internet which are network manageable are expected to adopt and implement this specification. Distribution of this memo is unlimited. 2. IAB POLICY STATEMENT This MIB specification is the first edition of an evolving document defining variables needed for monitoring and control of various components of the Internet. Not all groups of defined variables are mandatory for all Internet components. For example, the EGP group is mandatory for gateways using EGP but not for hosts which should not be running EGP. Similarly, the TCP group is mandatory for hosts running TCP but not for gateways which aren't running it. What IS mandatory, however, is that all variables of a group be supported if any element of the group is supported. It is expected that additional MIB groups and variables will be defined over time to accommodate the monitoring and control needs of new or changing components of the Internet. The MIB working group will continue to refine this specification and projects a revision incorporating new requirements in early 1989. 3. Introduction As reported in RFC 1052, IAB Recommendations for the Development of Internet Network Management Standards [1], the Internet Activities Board has directed the Internet Engineering Task Force (IETF) to create two new working groups in the area of network management. One group is charged with the further specification and definition of elements to be included in the Management Information Base. The other is charged with defining the modifications to the Simple Network Management Protocol (SNMP) to accommodate the short-term needs of the network vendor and operator communities. The long-term needs of the Internet community are to be met using the ISO CMIS/CMIP [2,3] framework as a basis. An existing IETF working group, the "NETMAN" group, is already engaged in defining the use of CMIS/CMIP in a TCP/IP network, and will continue with responsibility for addressing the longer-term requirements. The output of the MIB working group is to be provided to both the SNMP working group and the NETMAN group, so as to ensure compatibility of monitored items for both network management frameworks. The MIB working group has produced this memo and a companion. The
companion memo [4] defines a Structure for Management Information (SMI) for use by the managed objects contained in the MIB. This memo defines the list of managed objects. The IAB also urged the working groups to be "extremely sensitive to the need to keep SNMP simple," and recommends that the MIB working group take as its starting inputs the MIB definitions found in the High-Level Entity Management Systems (HEMS) RFC 1024 [5], the initial SNMP specification [6], and the CMIS/CMIP memos [7,8]. Thus, the list of managed objects defined here, has been derived by taking only those elements which are considered essential. Since such elements are essential, there is no need to allow the implementation of individual objects, to be optional. Rather, all compliant implementations will contain all applicable (see below) objects defined in this memo. This approach of taking only the essential objects is NOT restrictive, since the SMI defined in the companion memo provides three extensibility mechanisms: one, the addition of new standard objects through the definitions of new versions of the MIB; two, the addition of widely-available but non-standard objects through the multilateral subtree; and three, the addition of private objects through the enterprises subtree. Such additional objects can not only be used for vendor-specific elements, but also for experimentation as required to further the knowledge of which other objects are essential. The primary criterion for being considered essential was for an object to be contained in all of the above referenced MIB definitions. A few other objects have been included, but only if the MIB working group believed they are truly essential. The detailed list of criteria against which potential inclusions in this (initial) MIB were considered, was: 1) An object needed to be essential for either fault or configuration management. 2) Only weak control objects were permitted (by weak, it is meant that tampering with them can do only limited damage). This criterion reflects the fact that the current management protocols are not sufficiently secure to do more powerful control operations. 3) Evidence of current use and utility was required. 4) An attempt was made to limit the number of objects to about 100 to make it easier for vendors to fully
instrument their software. 5) To avoid redundant variables, it was required that no object be included that can be derived from others in the MIB. 6) Implementation specific objects (e.g., for BSD UNIX) were excluded. 7) It was agreed to avoid heavily instrumenting critical sections of code. The general guideline was one counter per critical section per layer.
4. Objects Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. Objects in the MIB are defined using Abstract Syntax Notation One (ASN.1) [9]. The mechanisms used for describing these objects are specified in the companion memo. In particular, each object has a name, a syntax, and an encoding. The name is an object identifier, an administratively assigned name, which specifies an object type. 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 OBJECT DESCRIPTOR, to also refer to the object type. The syntax of an object type defines the abstract data structure corresponding to that object type. The ASN.1 language is used for this purpose. However, the companion memo purposely restricts the ASN.1 constructs which may be used. These restrictions are explicitly made for simplicity. The encoding of an object type is simply how that object type is represented using the object type's syntax. Implicitly tied to the notion of an object type's syntax and encoding is how the object type is represented when being transmitted on the network. This memo specifies the use of the basic encoding rules of ASN.1 [10]. 4.1. Object Groups Since this list of managed objects contains only the essential elements, there is no need to allow individual objects to be optional. Rather, the objects are arranged into the following groups: - System - Interfaces - Address Translation - IP - ICMP - TCP - UDP - EGP There are two reasons for defining these groups: one, to provide a means of assigning object identifiers; two, to provide a method for implementations of managed agents to know which objects they must implement. This method is as follows: if the semantics of a group is applicable to an implementation, then it must implement all objects
in that group. For example, an implementation must implement the EGP group if and only if it implements the EGP protocol. 4.2. Format of Definitions The next section contains the specification of all object types contained in the MIB. Following the conventions of the companion memo, the object types are defined using the following fields: OBJECT: ------- A textual name, termed the OBJECT DESCRIPTOR, for the object type, along with its corresponding OBJECT IDENTIFIER. Syntax: The abstract syntax for the object type, presented using ASN.1. This must resolve to an instance of the ASN.1 type ObjectSyntax defined in the SMI. Definition: A textual description of the semantics of the object type. Implementations should ensure that their interpretation of the object type fulfills this definition since this MIB is intended for use in multi- vendor environments. As such it is vital that object types have consistent meaning across all machines. Access: One of read-only, read-write, write-only, or not-accessible. Status: One of mandatory, optional, or obsolete.
5. Object Definitions RFC1066-MIB { iso org(3) dod(6) internet(1) mgmt(2) 1 } DEFINITIONS ::= BEGIN IMPORTS mgmt, OBJECT-TYPE, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks FROM RFC1065-SMI; mib OBJECT IDENTIFIER ::= { mgmt 1 } system OBJECT IDENTIFIER ::= { mib 1 } interfaces OBJECT IDENTIFIER ::= { mib 2 } at OBJECT IDENTIFIER ::= { mib 3 } ip OBJECT IDENTIFIER ::= { mib 4 } icmp OBJECT IDENTIFIER ::= { mib 5 } tcp OBJECT IDENTIFIER ::= { mib 6 } udp OBJECT IDENTIFIER ::= { mib 7 } egp OBJECT IDENTIFIER ::= { mib 8 } END
5.1. The System Group Implementation of the System group is mandatory for all systems. OBJECT: ------- sysDescr { system 1 } Syntax: OCTET STRING Definition: A textual description of the entity. This value should include the full name and version identification of the system's hardware type, software operating-system, and networking software. It is mandatory that this only contain printable ASCII characters. Access: read-only. Status: mandatory. OBJECT: ------- sysObjectID { system 2 } Syntax: OBJECT IDENTIFIER Definition: The vendor's authoritative identification of the network management subsystem contained in the entity. This value is allocated within the SMI enterprises subtree (1.3.6.1.4.1) and provides an easy and unambiguous means for determining "what kind of box" is being managed. For example, if vendor "Flintstones, Inc." was assigned the subtree 1.3.6.1.4.1.42, it could assign the identifier 1.3.6.1.4.1.42.1.1 to its "Fred Router". Access: read-only. Status: mandatory.
OBJECT: ------- sysUpTime { system 3 } Syntax: TimeTicks Definition: The time (in hundredths of a second) since the network management portion of the system was last re-initialized. Access: read-only. Status: mandatory.
5.2. The Interfaces Group Implementation of the Interfaces group is mandatory for all systems. OBJECT: ------- ifNumber { interfaces 1 } Syntax: INTEGER Definition: The number of network interfaces (regardless of their current state) on which this system can send/receive IP datagrams. Access: read-only. Status: mandatory. 5.2.1. The Interfaces Table OBJECT: ------- ifTable { interfaces 2 } Syntax: SEQUENCE OF IfEntry Definition: A list of interface entries. The number of entries is given by the value of ifNumber. Access: read-write. Status: mandatory. OBJECT: ------- ifEntry { ifTable 1 } Syntax: IfEntry ::= SEQUENCE {
ifIndex INTEGER, ifDescr OCTET STRING, ifType INTEGER, ifMtu INTEGER, ifSpeed Gauge, ifPhysAddress OCTET STRING, ifAdminStatus INTEGER, ifOperStatus INTEGER, ifLastChange TimeTicks, ifInOctets Counter, ifInUcastPkts Counter, ifInNUcastPkts Counter, ifInDiscards Counter, ifInErrors Counter, ifInUnknownProtos Counter, ifOutOctets Counter, ifOutUcastPkts Counter, ifOutNUcastPkts Counter, ifOutDiscards Counter, ifOutErrors Counter, ifOutQLen Gauge } Definition: An interface entry containing objects at the subnetwork layer and below for a particular interface.
Access: read-write. Status: mandatory. We now consider the individual components of each interface entry: OBJECT: ------- ifIndex { ifEntry 1 } Syntax: INTEGER Definition: A unique value for each interface. Its value ranges between 1 and the value of ifNumber. The value for each interface must remain constant at least from one re- initialization of the entity's network management system to the next re-initialization. Access: read-only. Status: mandatory. OBJECT: ------- ifDescr { ifEntry 2 } Syntax: OCTET STRING Definition: A text string containing information about the interface. This string should include the name of the manufacturer, the product name and the version of the hardware interface. The string is intended for presentation to a human; it must not contain anything but printable ASCII characters.
Access: read-only. Status: mandatory. OBJECT: ------- ifType { ifEntry 3 } Syntax: INTEGER { other(1), -- none of the following regular1822(2), hdh1822(3), ddn-x25(4), rfc877-x25(5), ethernet-csmacd(6), iso88023-csmacd(7), iso88024-tokenBus(8), iso88025-tokenRing(9), iso88026-man(10), starLan(11), proteon-10MBit(12), proteon-80MBit(13), hyperchannel(14), fddi(15), lapb(16), sdlc(17), t1-carrier(18), cept(19), -- european equivalent of T-1 basicIsdn(20), primaryIsdn(21), -- proprietary serial propPointToPointSerial(22) } Definition: The type of interface, distinguished according to the physical/link/network protocol(s) immediately "below" IP in the protocol stack. Access: read-only. Status: mandatory.
OBJECT: ------- ifMtu { ifEntry 4 } Syntax: INTEGER Definition: The size of the largest IP datagram which can be sent/received on the interface, specified in octets. Access: read-only. Status: mandatory. OBJECT: ------- ifSpeed { ifEntry 5 } Syntax: Gauge Definition: An estimate of the interface's current bandwidth in bits per second. For interfaces which do not vary in bandwidth or for those where no accurate estimation can be made, this object should contain the nominal bandwidth. Access: read-only. Status: mandatory. OBJECT: ------- ifPhysAddress { ifEntry 6 } Syntax: OCTET STRING Definition: The interface's address at the protocol layer immediately
"below" IP in the protocol stack. For interfaces which do not have such an address (e.g., a serial line), this object should contain an octet string of zero length. Access: read-only. Status: mandatory. OBJECT: ------- ifAdminStatus { ifEntry 7 } Syntax: INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } Definition: The desired state of the interface. The testing(3) state indicates that no operational packets can be passed. Access: read-write. Status: mandatory. OBJECT: ------- ifOperStatus { ifEntry 8 } Syntax: INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } Definition: The current operational state of the interface. The testing(3) state indicates that no operational packets can be passed.
Access: read-only. Status: mandatory. OBJECT: ------- ifLastChange { ifEntry 9 } Syntax: TimeTicks Definition: The value of sysUpTime at the time the interface entered its current operational state. If the current state was entered prior to the last re-initialization of the local network management subsystem, then this object contains a zero value. Access: read-only. Status: mandatory. OBJECT: ------- ifInOctets { ifEntry 10 } Syntax: Counter Definition: The total number of octets received on the interface, including framing characters. Access: read-only. Status: mandatory.
OBJECT: ------- ifInUcastPkts { ifEntry 11 } Syntax: Counter Definition: The number of (subnet) unicast packets delivered to a higher-layer protocol. Access: read-only. Status: mandatory. OBJECT: ------- ifInNUcastPkts { ifEntry 12 } Syntax: Counter Definition: The number of non-unicast (i.e., subnet broadcast or subnet multicast) packets delivered to a higher-layer protocol. Access: read-only. Status: mandatory. OBJECT: ------- ifInDiscards { ifEntry 13 } Syntax: Counter Definition: The number of inbound packets which were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a packet could be to free up buffer space. Access: read-only. Status: mandatory. OBJECT: ------- ifInErrors { ifEntry 14 } Syntax: Counter Definition: The number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol. Access: read-only. Status: mandatory. OBJECT: ------- ifInUnknownProtos { ifEntry 15 } Syntax: Counter Definition: The number of packets received via the interface which were discarded because of an unknown or unsupported protocol. Access: read-only. Status: mandatory.
OBJECT: ------- ifOutOctets { ifEntry 16 } Syntax: Counter Definition: The total number of octets transmitted out of the interface, including framing characters. Access: read-only. Status: mandatory. OBJECT: ------- ifOutUcastPkts { ifEntry 17 } Syntax: Counter Definition: The total number of packets that higher-level protocols requested be transmitted to a subnet-unicast address, including those that were discarded or not sent. Access: read-only. Status: mandatory. OBJECT: ------- ifOutNUcastPkts { ifEntry 18 } Syntax: Counter Definition: The total number of packets that higher-level protocols requested be transmitted to a non-unicast (i.e., a subnet broadcast or subnet multicast) address, including those
that were discarded or not sent. Access: read-only. Status: mandatory. OBJECT: ------- ifOutDiscards { ifEntry 19 } Syntax: Counter Definition: The number of outbound packets which were chosen to be discarded even though no errors had been detected to prevent their being transmitted. One possible reason for discarding such a packet could be to free up buffer space. Access: read-only. Status: mandatory. OBJECT: ------- ifOutErrors { ifEntry 20 } Syntax: Counter Definition: The number of outbound packets that could not be transmitted because of errors. Access: read-only. Status: mandatory.
OBJECT: ------- ifOutQLen { ifEntry 21 } Syntax: Gauge Definition: The length of the output packet queue (in packets). Access: read-only. Status: mandatory.