RFC 1066

Management Information Base for network management of TCP/IP-based internets

๐Ÿ“… published August 1988, from ietf

Management Information Base for Network Management of TCP/IP-based internets โœจ

  • RFC number: 1066 ๐Ÿฆ‹
  • Series: Network Working Group ๐ŸŒธ
  • Authors: K. McCloghrie and M. Rose, both from TWG ๐Ÿ’œ
  • Date: August 1988 ๐Ÿ“…
  • Category: The title block doesn't list one. Section 1 says this memo "specifies a draft standard for the Internet community" ๐Ÿ”ฅ
  • Obsoletes / Updates: The title block doesn't list any RFCs that this one obsoletes or updates ๐Ÿงš
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 โœจ

okay so this memo gives us the first version of the Management Information Base (MIB) for network management protocols in TCP/IP-based internets ๐Ÿ’– it's a short-term thing. Together with its companion memos (one describing how management info is structured, one describing the first network management protocol), it gives us a simple, workable architecture and system for managing TCP/IP-based internets, and especially the Internet ๐ŸŒˆ

This memo specifies a draft standard for the Internet community. TCP/IP implementations in the Internet that are network manageable are expected to adopt and implement this spec ๐ŸŽ€

Distribution of this memo is unlimited ๐Ÿซถ

2. IAB POLICY STATEMENT ๐Ÿ‘‘

this MIB spec is the first edition of a document that's going to keep evolving ๐ŸŒฑ it defines the variables we need to monitor and control the different parts of the Internet. Not every group of variables is mandatory for every Internet component, though ๐Ÿ™ˆ

For example, the EGP group is mandatory for gateways that use EGP, but not for hosts, which shouldn't be running EGP anyway. Same energy with the TCP group: it's mandatory for hosts running TCP, but not for gateways that aren't running it ๐Ÿ’… What is mandatory, though, is that if you support any element of a group, you support all the variables of that group ๐Ÿ”ฅ

More MIB groups and variables are expected to be defined over time, so we can keep up with the monitoring and control needs of new or changing parts of the Internet ๐Ÿš€ The MIB working group will keep refining this spec, and they're planning a revision with new requirements in early 1989 ๐Ÿฆ‹

3. Introduction ๐ŸŒธ

so, as RFC 1052, IAB Recommendations for the Development of Internet Network Management Standards [1], reported, the Internet Activities Board told the Internet Engineering Task Force (IETF) to create two new working groups for network management ๐Ÿ’œ One group is in charge of further specifying and defining the elements that go into the Management Information Base. The other is in charge of changing the Simple Network Management Protocol (SNMP) to meet the short-term needs of network vendors and operators ๐Ÿงš The long-term needs of the Internet community are to be met using the ISO CMIS/CMIP [2,3] framework as a base. An existing IETF working group, the "NETMAN" group, is already working on using CMIS/CMIP in a TCP/IP network, and it's going to keep handling the longer-term requirements ๐Ÿซถ

The output of the MIB working group goes to both the SNMP working group and the NETMAN group, so the monitored items stay compatible across both network management frameworks ๐ŸŒˆ

The MIB working group made this memo and a companion. The companion memo [4] defines a Structure for Management Information (SMI) for the managed objects in the MIB. This memo defines the list of managed objects itself โœจ

The IAB also urged the working groups to be "extremely sensitive to the need to keep SNMP simple," and it recommends that the MIB working group use the MIB definitions in the High-Level Entity Management Systems (HEMS) RFC 1024 [5], the initial SNMP specification [6], and the CMIS/CMIP memos [7,8] as starting inputs ๐Ÿ’–

So the list of managed objects here was built by taking only the elements that are considered essential. Because they're essential, there's no need to make individual objects optional. Instead, all compliant implementations will contain all applicable objects (see below) defined in this memo ๐ŸŽ€

Taking only the essential objects is not restrictive, though, because the SMI in the companion memo gives us three extensibility mechanisms ๐Ÿฆ‹ One: adding new standard objects by defining new versions of the MIB. Two: adding widely-available but non-standard objects through the multilateral subtree. Three: adding private objects through the enterprises subtree. These extra objects can be used for vendor-specific elements, and also for experiments that help us figure out which other objects are essential ๐Ÿ”ฅ

The main criterion for being considered essential was that an object appears in all of the MIB definitions referenced above. A few other objects got included, but only if the MIB working group truly believed they were essential ๐Ÿ’… The detailed list of criteria used to consider potential inclusions in this (initial) MIB 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, called the Management Information Base or MIB ๐Ÿ’œ Objects in the MIB are defined using Abstract Syntax Notation One (ASN.1) [9] ๐ŸŒธ

The mechanisms 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 that specifies an object type. The object type together with an object instance uniquely identifies one specific instantiation of the object. For human convenience, we often use a text string, called the OBJECT DESCRIPTOR, to refer to the object type too ๐Ÿฆ‹

The syntax of an object type defines the abstract data structure that corresponds to that object type. The ASN.1 language is used for this. However, the companion memo purposely restricts which ASN.1 constructs may be used. These restrictions are made explicitly for simplicity ๐Ÿ’…

The encoding of an object type is simply how that object type is represented using the object type's syntax. Tied implicitly to an object type's syntax and encoding is how the object type is represented when it's 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's no need to let individual objects be optional. Instead, 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 way of assigning object identifiers; two, to provide a method for implementations of managed agents to know which objects they must implement ๐Ÿ”ฅ The method works like this: if the semantics of a group apply 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, called 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 ๐Ÿงš

๐Ÿงš part 1 of 11 done, bestie! section 5 (Object Definitions) is up next ๐Ÿ’œ

5. Object Definitions โœจ

okay bestie, this is where the MIB actually gets its hands dirty ๐Ÿงš first up is the module wrapper. It names the module, imports the building blocks from RFC1065-SMI, and hangs every group off the mgmt tree like little ornaments ๐ŸŽ€

               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

Implementing the System group is mandatory for every system ๐Ÿ”ฅ no exceptions, no cap.

sysDescr { system 1 } ๐Ÿ’–

Syntax: OCTET STRING

Definition: a textual description of the entity. It should include the full name and version of the system's hardware type, its software operating system, and its networking software. It is mandatory that this only contains printable ASCII characters ๐Ÿซถ

Access: read-only.

Status: mandatory.

sysObjectID { system 2 } ๐Ÿฆ‹

Syntax: OBJECT IDENTIFIER

Definition: this is the vendor's official ID for the network management subsystem inside the entity. It's allocated under the SMI enterprises subtree (1.3.6.1.4.1) and it's basically how you figure out "what kind of box" you're looking at, no guessing needed ๐Ÿ‘‘ The example is giving Flintstones, Inc. the subtree 1.3.6.1.4.1.42, so they could name their "Fred Router" 1.3.6.1.4.1.42.1.1 ๐Ÿชจ๐Ÿ˜ญ

Access: read-only.

Status: mandatory.

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

Implementing the Interfaces group is mandatory for every system too ๐Ÿ’… bestie is not optional here.

ifNumber { interfaces 1 } ๐ŸŒธ

Syntax: INTEGER

Definition: the number of network interfaces (no matter their current state) that this system can use to send or receive IP datagrams.

Access: read-only.

Status: mandatory.

5.2.1. The Interfaces Table

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.

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 holding the subnetwork-layer-and-below objects for one particular interface ๐Ÿ’œ

Access: read-write.

Status: mandatory.

We now consider the individual components of each interface entry, one slay at a time ๐Ÿ’–

ifIndex { ifEntry 1 } ๐Ÿ”ฅ

Syntax: INTEGER

Definition: a unique value for each interface, ranging from 1 up to the value of ifNumber. Each interface's value must stay constant, at least from one re-initialization of the entity's network management system to the next one โœจ

Access: read-only.

Status: mandatory.

ifDescr { ifEntry 2 } ๐ŸŒˆ

Syntax: OCTET STRING

Definition: a text string describing the interface. It should name the manufacturer, the product, and the version of the hardware interface. It's meant for humans to read, so it must not contain anything except printable ASCII characters ๐Ÿ™ˆ

Access: read-only.

Status: mandatory.

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, sorted by the physical, link, or network protocol(s) sitting immediately "below" IP in the protocol stack ๐Ÿ‘‘

Access: read-only.

Status: mandatory.

ifMtu { ifEntry 4 } ๐Ÿฆ‹

Syntax: INTEGER

Definition: the size of the largest IP datagram that can be sent or received on the interface, measured in octets.

Access: read-only.

Status: mandatory.

ifSpeed { ifEntry 5 } ๐Ÿ’จ

Syntax: Gauge

Definition: an estimate of the interface's current bandwidth, in bits per second. For interfaces whose bandwidth doesn't change, or where no accurate estimate is possible, this should hold the nominal bandwidth ๐ŸŽ€

Access: read-only.

Status: mandatory.

ifPhysAddress { ifEntry 6 } ๐Ÿ“

Syntax: OCTET STRING

Definition: the interface's address at the protocol layer immediately "below" IP. Interfaces without an address like that (a serial line, for example) should contain an octet string of zero length ๐Ÿงƒ

Access: read-only.

Status: mandatory.

ifAdminStatus { ifEntry 7 } ๐ŸŽ›๏ธ

Syntax:

               INTEGER {
                    up(1),       -- ready to pass packets
                    down(2),
                    testing(3)   -- in some test mode
                  }

Definition: the state you want the interface to be in. The testing(3) state means no operational packets can get through ๐Ÿšซ

Access: read-write.

Status: mandatory.

ifOperStatus { ifEntry 8 } ๐ŸŒŸ

Syntax:

               INTEGER {
                    up(1),       -- ready to pass packets
                    down(2),
                    testing(3)   -- in some test mode
               }

Definition: the state the interface is actually in right now. Same deal: testing(3) means no operational packets can be passed ๐Ÿฅน

Access: read-only.

Status: mandatory.

ifLastChange { ifEntry 9 } ๐Ÿ•ฐ๏ธ

Syntax: TimeTicks

Definition: the value of sysUpTime at the moment the interface entered its current operational state. If that state was entered before the last re-initialization of the local network management subsystem, this object holds a zero value ๐Ÿ˜ญ

Access: read-only.

Status: mandatory.

ifInOctets { ifEntry 10 } ๐Ÿ“ฅ

Syntax: Counter

Definition: the total number of octets received on the interface, framing characters included ๐Ÿ’œ

Access: read-only.

Status: mandatory.

ifInUcastPkts { ifEntry 11 } ๐Ÿ“ฆ

Syntax: Counter

Definition: the number of (subnet) unicast packets handed up to a higher-layer protocol ๐Ÿงš

Access: read-only.

Status: mandatory.

ifInNUcastPkts { ifEntry 12 } ๐Ÿ“ฌ

Syntax:

               Counter

Okay so this one counts the non-unicast packets (subnet broadcast or subnet multicast) that actually get handed up to a higher-layer protocol ๐Ÿ“ฆโœจ. It's read-only and mandatory, obviously ๐Ÿ’….

OBJECT:
-------
     ifInDiscards { ifEntry 13 }

Syntax:
     Counter

Inbound packets that got discarded on purpose even though nothing was wrong with them ๐Ÿ™ˆ. They never made it up to a higher-layer protocol, and no error caused it. One possible reason is freeing up buffer space ๐Ÿงน. Access is read-only and the status is mandatory ๐ŸŽ€.

OBJECT:
-------
     ifInErrors { ifEntry 14 }

Syntax:
     Counter

Inbound packets that came in with errors, so they couldn't be delivered to a higher-layer protocol ๐Ÿ’€. Read-only, mandatory ๐Ÿซถ.

OBJECT:
-------
     ifInUnknownProtos { ifEntry 15 }

Syntax:
     Counter

Packets received on the interface that got tossed because the protocol was unknown or not supported ๐Ÿฆ‹. Read-only, mandatory ๐Ÿ’œ.

OBJECT:
-------
     ifOutOctets { ifEntry 16 }

Syntax:
     Counter

The total number of octets sent out of the interface, framing characters included ๐ŸŒธ. Read-only, mandatory โœจ.

OBJECT:
-------
     ifOutUcastPkts { ifEntry 17 }

Syntax:
     Counter

This is every packet the higher-level protocols asked to send to a subnet-unicast address ๐ŸŽฏ. That includes the ones that got discarded or never sent at all ๐Ÿ˜ญ. Read-only, mandatory ๐Ÿ’….

OBJECT:
-------
     ifOutNUcastPkts { ifEntry 18 }

Syntax:
     Counter

Same vibe as the unicast one, but for non-unicast addresses (subnet broadcast or subnet multicast) ๐Ÿ“ฃ. Again, discarded and unsent packets count too ๐Ÿ“. Read-only, mandatory ๐ŸŒˆ.

OBJECT:
-------
     ifOutDiscards { ifEntry 19 }

Syntax:
     Counter

Outbound packets that got chosen to be discarded even though no errors were detected that would stop them from being transmitted ๐Ÿ—‘๏ธ. Same as the inbound one, one possible reason is freeing up buffer space ๐Ÿซง. Read-only, mandatory ๐Ÿ’–.

OBJECT:
-------
     ifOutErrors { ifEntry 20 }

Syntax:
     Counter

Outbound packets that couldn't go out because of errors ๐Ÿ˜ต. Read-only, mandatory โญ.

OBJECT:
-------
     ifOutQLen { ifEntry 21 }

Syntax:
     Gauge

This one measures how long the output packet queue is, in packets ๐Ÿ“. It's a Gauge, so it goes up and down, which is very relatable ๐ŸŽข. Read-only, mandatory ๐Ÿงš.

5.3. The Address Translation Group โœจ

5.3.

Implementation of the Address Translation group is mandatory for every system, no exceptions ๐Ÿซก.

Okay so this group has one table, and it's the union across all interfaces of the translation tables that turn a NetworkAddress (like an IP address) into a subnetwork-specific address ๐Ÿ—บ๏ธ. Since there isn't a better word for it, this document calls that subnetwork-specific address a "physical" address ๐Ÿฆ‹.

Some examples of these translation tables: on broadcast media where ARP is in use, the table is basically the ARP cache ๐Ÿง . Or on an X.25 network where you need non-algorithmic translation to X.121 addresses, the table holds the NetworkAddress to X.121 address equivalences ๐Ÿ’ซ.

OBJECT:
-------
     atTable { at 1 }

Syntax:
     SEQUENCE OF AtEntry

The Address Translation tables hold the NetworkAddress to "physical" address equivalences ๐ŸŽ€. Some interfaces don't use translation tables at all, because they have an algorithmic method (DDN-X.25 is one of these) ๐Ÿงฎ. If all the interfaces are that type, then the Address Translation table is empty, meaning it has zero entries ๐Ÿซฅ. Access is read-write, and it's mandatory ๐Ÿ’….

OBJECT:
-------
     atEntry { atTable 1 }

Syntax:
     AtEntry ::= SEQUENCE {
          atIfIndex

              INTEGER,
          atPhysAddress
              OCTET STRING,
          atNetAddress
              NetworkAddress
     }

Each entry is one NetworkAddress to "physical" address equivalence ๐ŸŒท. Read-write, mandatory ๐Ÿ’.

We now look at each piece of an Address Translation table entry, one by one ๐Ÿ‘€.

OBJECT:
-------
     atIfIndex { atEntry 1 }

Syntax:
     INTEGER

This is the interface where the equivalence is effective ๐Ÿ”Œ. The interface with a given value of this index is the same interface you'd get with that same value of ifIndex ๐Ÿชž. Read-write, mandatory ๐Ÿ’–.

OBJECT:
-------
     atPhysAddress { atEntry 2 }

Syntax:
     OCTET STRING

This is the media-dependent "physical" address ๐Ÿงฒ. Read-write, mandatory โœจ.

OBJECT:
-------
     atNetAddress { atEntry 3 }

Syntax:
     NetworkAddress

This is the NetworkAddress (like the IP address) that matches up with the media-dependent "physical" address ๐ŸŒ. Read-write, mandatory ๐Ÿ‘‘.

5.4. The IP Group โœจ

okay so the IP group is mandatory for all systems ๐Ÿ’… no exceptions, no cap. every box that speaks IP needs these counters, bestie ๐Ÿซถ

ipForwarding { ip 1 }

OBJECT:
-------
     ipForwarding { ip 1 }

Syntax:
     INTEGER {
          gateway(1),   -- entity forwards datagrams
          host(2)       -- entity does NOT forward datagrams
     }

this one tells you whether the entity is acting as an IP gateway when it comes to forwarding datagrams it got but wasn't the final destination for ๐Ÿงš gateways forward, hosts don't, except hosts that get Source-Routed through them. it's giving "are you the middle person or the endpoint" energy ๐Ÿ’œ

  • Access: read-only
  • Status: mandatory

ipDefaultTTL { ip 2 }

OBJECT:
-------
     ipDefaultTTL { ip 2 }

Syntax:
     INTEGER

this is the default value that goes into the Time-To-Live field of the IP header for datagrams this entity starts itself, but only when the transport layer protocol didn't hand over a TTL ๐ŸŒธ the fallback, basically

  • Access: read-write
  • Status: mandatory

ipInReceives { ip 3 }

OBJECT:
-------
     ipInReceives { ip 3 }

Syntax:
     Counter

the total number of input datagrams received from interfaces, and yes that includes the ones that came in with errors ๐Ÿ™ˆ every single one counts, no skipping

  • Access: read-only
  • Status: mandatory

ipInHdrErrors { ip 4 }

OBJECT:
-------
     ipInHdrErrors { ip 4 }

Syntax:
     Counter

this counts input datagrams that got tossed because of problems in their IP headers ๐Ÿ’€ we're talking bad checksums, a version number mismatch, other format errors, time-to-live exceeded, and errors found while processing their IP options, etc. the whole chaotic list ๐Ÿ˜ญ

  • Access: read-only
  • Status: mandatory

ipInAddrErrors { ip 5 }

OBJECT:
-------
     ipInAddrErrors { ip 5 }

Syntax:
     Counter

counts input datagrams that got discarded because the destination address in their IP header wasn't a valid address for this entity to receive ๐Ÿฆ‹ this includes invalid addresses like 0.0.0.0 and addresses from unsupported Classes like Class E. and for entities that aren't IP Gateways (so they don't forward), this also counts datagrams dropped because the destination wasn't a local address. main character energy for the counter that catches the weird ones โœจ

  • Access: read-only
  • Status: mandatory

ipForwDatagrams { ip 6 }

OBJECT:
-------
     ipForwDatagrams { ip 6 }

Syntax:
     Counter

this counts input datagrams where this entity wasn't the final IP destination, so it went looking for a route to forward them onward ๐Ÿ“ in entities that aren't IP Gateways, this only includes packets that were Source-Routed through this entity, and where the Source-Route option processing worked out

  • Access: read-only
  • Status: mandatory

ipInUnknownProtos { ip 7 }

OBJECT:
-------
     ipInUnknownProtos { ip 7 }

Syntax:
     Counter

the number of locally-addressed datagrams that arrived fine but got discarded because the protocol was unknown or unsupported ๐ŸŒˆ they got here, they just didn't know what to do with them lol

  • Access: read-only
  • Status: mandatory

ipInDiscards { ip 8 }

OBJECT:
-------
     ipInDiscards { ip 8 }

Syntax:
     Counter

this one counts input IP datagrams where nothing went wrong that would stop them from being processed, but they got dropped anyway, like for lack of buffer space ๐Ÿซง quick note: this counter does NOT include datagrams discarded while waiting for re-assembly

  • Access: read-only
  • Status: mandatory

ipInDelivers { ip 9 }

OBJECT:
-------
     ipInDelivers { ip 9 }

Syntax:
     Counter

the total number of input datagrams that were successfully delivered to IP user-protocols, ICMP included ๐ŸŽ€ the wins, the W's

  • Access: read-only
  • Status: mandatory

ipOutRequests { ip 10 }

OBJECT:
-------
     ipOutRequests { ip 10 }

Syntax:
     Counter

the total number of IP datagrams that local IP user-protocols (ICMP included) handed to IP asking for transmission ๐Ÿ’œ but this one does not include anything already counted in ipForwDatagrams. no double counting, periodt

  • Access: read-only
  • Status: mandatory

ipOutDiscards { ip 11 }

OBJECT:
-------
     ipOutDiscards { ip 11 }

Syntax:
     Counter

output IP datagrams where no problem stopped them from being sent to their destination, but they got discarded anyway, like for lack of buffer space ๐Ÿง this one would also include datagrams already counted in ipForwDatagrams, if any of those hit this (discretionary) discard criterion

  • Access: read-only
  • Status: mandatory

ipOutNoRoutes { ip 12 }

OBJECT:
-------
     ipOutNoRoutes { ip 12 }

Syntax:
     Counter

datagrams that got discarded because no route could be found to get them to their destination ๐Ÿ—บ๏ธ and yes, this includes any packets counted in ipForwDatagrams that meet this "no-route" criterion

  • Access: read-only
  • Status: mandatory

ipReasmTimeout { ip 13 }

OBJECT:
-------
     ipReasmTimeout { ip 13 }

Syntax:
     INTEGER

the maximum number of seconds that received fragments get held while they wait to be reassembled at this entity โณ patience, bestie

  • Access: read-only
  • Status: mandatory

ipReasmReqds { ip 14 }

OBJECT:
-------
     ipReasmReqds { ip 14 }

Syntax:
     Counter

the number of IP fragments received that needed to be reassembled at this entity ๐Ÿงฉ the puzzle pieces that showed up

  • Access: read-only
  • Status: mandatory

ipReasmOKs { ip 15 }

OBJECT:
-------
     ipReasmOKs { ip 15 }

Syntax:
     Counter

the number of IP datagrams that were successfully re-assembled โœ… the puzzle got finished, iconic

  • Access: read-only
  • Status: mandatory

ipReasmFails { ip 16 }

OBJECT:
-------
     ipReasmFails { ip 16 }

Syntax:
     Counter

the number of failures the IP re-assembly algorithm detected, for whatever reason (timed out, errors, etc) ๐Ÿ˜ฌ but heads up, this isn't always a count of discarded fragments, because some algorithms (notably RFC 815's) can lose track of how many fragments there are by combining them as they come in. it's a little messy, not gonna lie

  • Access: read-only
  • Status: mandatory

ipFragOKs { ip 17 }

OBJECT:
-------
     ipFragOKs { ip 17 }

Syntax:
    Counter

the number of IP datagrams that got successfully fragmented at this entity ๐Ÿช„ chopped up and it went perfectly

  • Access: read-only
  • Status: mandatory

ipFragFails { ip 18 }

OBJECT:
-------
     ipFragFails { ip 18 }

Syntax:
     Counter

datagrams that got discarded because they needed to be fragmented at this entity but couldn't be, like when their "Don't Fragment" flag was set ๐Ÿšซ the rejected ones

  • Access: read-only
  • Status: mandatory

ipFragCreates { ip 19 }

OBJECT:
-------
     ipFragCreates { ip 19 }

Syntax:
     Counter

the number of IP datagram fragments generated as a result of fragmentation at this entity ๐ŸŽ‰ all those little pieces, counted up

  • Access: read-only
  • Status: mandatory

5.4.1. The IP Address Table ๐ŸŽ€

okay bestie, this is the IP Address Table, and it's where this entity keeps its own IP addressing info all in one place โœจ it's giving organized closet energy ๐Ÿ’…

          OBJECT:
          -------
               ipAddrTable { ip 20 }

          Syntax:
               SEQUENCE OF IpAddrEntry

          Definition:
               The table of addressing information relevant to this
               entity's IP addresses.

          Access:
               read-only.

          Status:
               mandatory.

each row of the table is an ipAddrEntry, and it's the one holding all the juicy details ๐Ÿงš

          OBJECT:
          -------
               ipAddrEntry { ipAddrTable 1 }

          Syntax:
               IpAddrEntry ::= SEQUENCE {
                    ipAdEntAddr
                        IpAddress,
                    ipAdEntIfIndex
                        INTEGER,
                    ipAdEntNetMask
                        IpAddress,
                    ipAdEntBcastAddr
                        INTEGER
               }

          Definition:
               The addressing information for one of this entity's IP
               addresses.

          Access:
               read-only.

          Status:
               mandatory.

so the columns of each entry are:

          OBJECT:
          -------
               ipAdEntAddr  { ipAddrEntry 1 }

          Syntax:
               IpAddress

          Definition:
               The IP address to which this entry's addressing
               information pertains.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               ipAdEntIfIndex  { ipAddrEntry 2 }

          Syntax:
               INTEGER

          Definition:
               The index value which uniquely identifies the interface
               to which this entry is applicable.  The interface
               identified by a particular value of this index is the
                same interface as identified by the same value of
                ifIndex.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               ipAdEntNetMask  { ipAddrEntry 3 }

          Syntax:
               IpAddress

          Definition:
               The subnet mask associated with the IP address of this
               entry.  The value of the mask is an IP address with all
               the network bits set to 1 and all the hosts bits set to
               0.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               ipAdEntBcastAddr { ipAddrEntry 4 }

          Syntax:
               INTEGER

          Definition:
               The value of the least-significant bit in the IP
               broadcast address used for sending datagrams on the
               (logical) interface associated with the IP address of
               this entry.  For example, when the Internet standard
               all-ones broadcast address is used, the value will be 1.

          Access:
               read-only.

          Status:
               mandatory.

5.4.2. The IP Routing Table ๐Ÿฆ‹

the IP Routing Table is the entity's little black book of routes ๐Ÿ“– it has an entry for every route it currently knows about ๐Ÿ’– ngl, there's one bit that's totally up to the network management protocol you're using: what happens when someone asks to read an entry that doesn't exist ๐Ÿ™ˆ

          OBJECT:
          -------
               ipRoutingTable { ip 21 }

          Syntax:
               SEQUENCE OF IpRouteEntry

          Definition:
               This entity's IP Routing table.

          Access:
               read-write.

          Status:
               mandatory.

each route is an ipRouteEntry, and this is the entry shape ๐ŸŒธ

          OBJECT:
          -------
               ipRouteEntry { ipRoutingTable 1 }

          Syntax:
               IpRouteEntry ::= SEQUENCE {
                    ipRouteDest
                        IpAddress,
                    ipRouteIfIndex
                        INTEGER,
                    ipRouteMetric1
                        INTEGER,
                    ipRouteMetric2
                        INTEGER,
                    ipRouteMetric3
                        INTEGER,
                    ipRouteMetric4
                        INTEGER,
                    ipRouteNextHop
                        IpAddress,
                    ipRouteType
                        INTEGER,
                    ipRouteProto
                        INTEGER,
                    ipRouteAge
                        INTEGER
               }

          Definition:
               A route to a particular destination.

          Access:
               read-write.

          Status:
               mandatory.

okay so now let's look at each piece of a route, one by one ๐Ÿ‘‘

          OBJECT:
          -------
               ipRouteDest { ipRouteEntry 1 }

          Syntax:
               IpAddress

          Definition:
               The destination IP address of this route.  An entry with
               a value of 0.0.0.0 is considered a default route.
               Multiple such default routes can appear in the table, but
               access to such multiple entries is dependent on the
               table-access mechanisms defined by the network management
               protocol in use.

          Access:
               read-write.

          Status:
               mandatory.
          OBJECT:
          -------
               ipRouteIfIndex  { ipRouteEntry 2 }

          Syntax:
               INTEGER

          Definition:
               The index value which uniquely identifies the local
               interface through which the next hop of this route should
               be reached.  The interface identified by a particular
               value of this index is the same interface as identified
               by the same value of ifIndex.

          Access:
               read-write.

          Status:
               mandatory.
          OBJECT:
          -------
               ipRouteMetric1 { ipRouteEntry 3 }

          Syntax:
               INTEGER

          Definition:
               The primary routing metric for this route.  The semantics
               of this metric are determined by the routing-protocol
               specified in the route's ipRouteProto value.  If this
               metric is not used, its value should be set to -1.

          Access:
               read-write.

          Status:
               mandatory.
          OBJECT:
          -------
               ipRouteMetric2 { ipRouteEntry 4 }

          Syntax:
               INTEGER

          Definition:
               An alternate routing metric for this route.  The
               semantics of this metric are determined by the routing-
               protocol specified in the route's ipRouteProto value.  If
               this metric is not used, its value should be set to -1.

          Access:
               read-write.

          Status:
               mandatory.
          OBJECT:
          -------
               ipRouteMetric3 { ipRouteEntry 5 }

          Syntax:
               INTEGER

          Definition:
               An alternate routing metric for this route.  The
               semantics of this metric are determined by the routing-
               protocol specified in the route's ipRouteProto value.  If
               this metric is not used, its value should be set to -1.

           Access:
               read-write.

           Status:
               mandatory.
          OBJECT:
          -------
               ipRouteMetric4 { ipRouteEntry 6 }

          Syntax:
               INTEGER

          Definition:
               An alternate routing metric for this route.  The
               semantics of this metric are determined by the routing-
               protocol specified in the route's ipRouteProto value.  If
               this metric is not used, its value should be set to -1.

          Access:
               read-write.

          Status:
               mandatory.
          OBJECT:
          -------
               ipRouteNextHop { ipRouteEntry 7 }

          Syntax:
               IpAddress

          Definition:
               The IP address of the next hop of this route.

          Access:
               read-write.

          Status:
               mandatory.
          OBJECT:
          -------
               ipRouteType { ipRouteEntry 8 }

          Syntax:
               INTEGER {
                    other(1),        -- none of the following

                    invalid(2),      -- an invalidated route

                                     -- route to directly
                    direct(3),       -- connected (sub-)network

                                     -- route to a non-local
                    remote(4),       -- host/network/sub-network
               }

          Definition:
               The type of route.

          Access:
               read-write.

          Status:
               mandatory.
          OBJECT:
          -------
               ipRouteProto { ipRouteEntry 9 }

          Syntax:
               INTEGER {
                    other(1),       -- none of the following

                                    -- non-protocol information,
                                    -- e.g., manually configured
                    local(2),       -- entries

                                    -- set via a network management
                    netmgmt(3),     -- protocol

                                    -- obtained via ICMP,
                    icmp(4),        -- e.g., Redirect

                                    -- the remaining values are
                                    -- all gateway routing protocols
                    egp(5),
                    ggp(6),
                    hello(7),
                    rip(8),
                    is-is(9),
                    es-is(10),
                    ciscoIgrp(11),
                    bbnSpfIgp(12),
                    oigp(13)
               }

          Definition:
               The routing mechanism via which this route was learned.
               Inclusion of values for gateway routing protocols is not
               intended to imply that hosts should support those
               protocols.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               ipRouteAge { ipRouteEntry 10 }

          Syntax:
               INTEGER

          Definition:
               The number of seconds since this route was last updated
               or otherwise determined to be correct.   Note that no
               semantics of "too old" can be implied except through
               knowledge of the routing protocol by which the route was
               learned.

          Access:
               read-write.

          Status:
               mandatory.

5.5. The ICMP Group ๐Ÿฆ‹

okay bestie, implementing the ICMP group is mandatory for all systems, no cap ๐Ÿ’… it's not optional. ๐Ÿซถ

This group holds the ICMP input and output statistics ๐Ÿ“Š so you can see every ICMP message coming in and going out.

ngl, the individual counters for ICMP message (sub-)codes got left out of this version of the MIB, just for simplicity ๐Ÿ™ˆ

Let's start with the incoming ones, the icmpIn objects ๐Ÿ“ฅโœจ

          OBJECT:
          -------
               icmpInMsgs { icmp 1 }

          Syntax:
               Counter

          Definition:
               The total number of ICMP messages which the entity
               received.  Note that this counter includes all those
               counted by icmpInErrors.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInErrors { icmp 2 }

          Syntax:
               Counter

          Definition:
               The number of ICMP messages which the entity received but
               determined as having errors (bad ICMP checksums, bad
               length, etc.).

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
              icmpInDestUnreachs { icmp 3 }

          Syntax:
              Counter

          Definition:
               The number of ICMP Destination Unreachable messages
               received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInTimeExcds { icmp 4 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Time Exceeded messages received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInParmProbs { icmp 5 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Parameter Problem messages received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInSrcQuenchs { icmp 6 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Source Quench messages received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInRedirects { icmp 7 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Redirect messages received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInEchos { icmp 8 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Echo (request) messages received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInEchoReps { icmp 9 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Echo Reply messages received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInTimestamps { icmp 10 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Timestamp (request) messages received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInTimestampReps { icmp 11 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Timestamp Reply messages received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInAddrMasks { icmp 12 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Address Mask Request messages
               received.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpInAddrMaskReps { icmp 13 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Address Mask Reply messages received.

          Access:
               read-only.

          Status:
               mandatory.

Now the outgoing ones, the icmpOut objects ๐Ÿ“ค๐Ÿ’–

          OBJECT:
          -------
               icmpOutMsgs { icmp 14 }

          Syntax:
               Counter

          Definition:
               The total number of ICMP messages which this entity
               attempted to send.  Note that this counter includes all
               those counted by icmpOutErrors.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutErrors { icmp 15 }

          Syntax:
               Counter

          Definition:
               The number of ICMP messages which this entity did not
               send due to problems discovered within ICMP such as a
               lack of buffers.  This value should not include errors
               discovered outside the ICMP layer such as the inability
               of IP to route the resultant datagram.  In some
               implementations there may be no types of error which
               contribute to this counter's value.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutDestUnreachs { icmp 16 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Destination Unreachable messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutTimeExcds { icmp 17 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Time Exceeded messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutParmProbs { icmp 18 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Parameter Problem messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutSrcQuenchs { icmp 19 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Source Quench messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutRedirects { icmp 20 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Redirect messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutEchos { icmp 21 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Echo (request) messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutEchoReps { icmp 22 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Echo Reply messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutTimestamps { icmp 23 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Timestamp (request) messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutTimestampReps { icmp 24 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Timestamp Reply messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutAddrMasks { icmp 25 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Address Mask Request messages sent.

          Access:
               read-only.

          Status:
               mandatory.
          OBJECT:
          -------
               icmpOutAddrMaskReps { icmp 26 }

          Syntax:
               Counter

          Definition:
               The number of ICMP Address Mask Reply messages sent.

          Access:
               read-only.

          Status:
               mandatory.

5.6. The TCP Group ๐ŸŒธ

okay bestie, the TCP group is mandatory for every system that implements TCP ๐Ÿซถ no exceptions, no cap!

heads up: the objects in here that describe a specific TCP connection are transient ๐Ÿฆ‹ they only exist for as long as that connection does, so don't expect them to stick around after it's gone ๐Ÿ’€
             OBJECT:
             -------
                  tcpRtoAlgorithm { tcp 1 }

             Syntax:
                  INTEGER {
                       other(1),    -- none of the following
                       constant(2), -- a constant rto
                       rsre(3),     -- MIL-STD-1778, Appendix B
                       vanj(4)      -- Van Jacobson's algorithm [11]
                  }

             Definition:
                  The algorithm used to determine the timeout value used
                  for retransmitting unacknowledged octets.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpRtoMin { tcp 2 }

             Syntax:
                  INTEGER

             Definition:
                  The minimum value permitted by a TCP implementation
                  for the retransmission timeout, measured in
                  milliseconds.  More refined semantics for objects
                  of this type depend upon the algorithm used to
                  determine the retransmission timeout.  In particular,
                  when the timeout algorithm is rsre(3), an object
                  of this type has the semantics of the LBOUND
                  quantity described in RFC 793.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpRtoMax { tcp 3 }

             Syntax:
                  INTEGER

             Definition:
                  The maximum value permitted by a TCP implementation
                  for the retransmission timeout, measured
                  in milliseconds.  More refined semantics for objects
                  of this type depend upon the algorithm used to
                  determine the retransmission timeout.  In particular,
                  when the timeout algorithm is rsre(3), an object of
                  this type has the semantics of the UBOUND quantity
                  described in RFC 793.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpMaxConn { tcp 4 }

             Syntax:
                  INTEGER

             Definition:
                  The limit on the total number of TCP connections the
                  entity can support.  In entities where the maximum
                  number of connections is dynamic, this object should
                  contain the value "-1".

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpActiveOpens { tcp 5 }

             Syntax:
                  Counter

             Definition:
                  The number of times TCP connections have made a direct
                  transition to the SYN-SENT state from the CLOSED
                  state.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpPassiveOpens { tcp 6 }

             Syntax:
                  Counter

             Definition:
                  The number of times TCP connections have made a direct
                  transition to the SYN-RCVD state from the LISTEN
                  state.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpAttemptFails { tcp 7 }

             Syntax:
                  Counter

             Definition:
                  The number of times TCP connections have made a direct
                  transition to the CLOSED state from either the
                  SYN-SENT state or the SYN-RCVD state, plus the number
                  of times TCP connections have made a direct transition
                  to the LISTEN state from the SYN-RCVD state.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpEstabResets { tcp 8 }

             Syntax:
                  Counter

             Definition:
                  The number of times TCP connections have made a direct
                  transition to the CLOSED state from either the
                  ESTABLISHED state or the CLOSE-WAIT state.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpCurrEstab { tcp 9 }

             Syntax:
                  Gauge

             Definition:
                  The number of TCP connections for which the current
                  state is either ESTABLISHED or CLOSE-WAIT.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpInSegs { tcp 10 }

             Syntax:
                  Counter

             Definition:
                  The total number of segments received, including those
                  received in error.  This count includes segments
                  received on currently established connections.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpOutSegs { tcp 11 }

             Syntax:
                  Counter

             Definition:
                  The total number of segments sent, including those on
                  current connections but excluding those containing
                  only retransmitted octets.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpRetransSegs { tcp 12 }

             Syntax:
                  Counter

             Definition:
                  The total number of segments retransmitted - that is,
                  the number of TCP segments transmitted containing one
                  or more previously transmitted octets.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpConnTable { tcp 13 }

             Syntax:
                  SEQUENCE OF TcpConnEntry

             Definition:
                  A table containing TCP connection-specific
                  information.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpConnEntry { tcpConnTable 1 }

             Syntax:
                  TcpConnEntry ::= SEQUENCE {
                       tcpConnState
                           INTEGER,
                       tcpConnLocalAddress
                           IpAddress,
                       tcpConnLocalPort
                           INTEGER (0..65535),
                       tcpConnRemAddress
                           IpAddress,
                       tcpConnRemPort
                           INTEGER (0..65535)
                  }

             Definition:
                  Information about a particular current TCP connection.
                  An object of this type is transient, in that it ceases
                  to exist when (or soon after) the connection makes the
                  transition to the CLOSED state.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpConnState { tcpConnEntry 1 }

             Syntax:
                  INTEGER {
                       closed(1),
                       listen(2),
                       synSent(3),
                       synReceived(4),
                       established(5),
                       finWait1(6),
                       finWait2(7),
                       closeWait(8),
                       lastAck(9),
                       closing(10),
                       timeWait(11)
                  }

             Definition:
                  The state of this TCP connection.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpConnLocalAddress { tcpConnEntry 2 }

             Syntax:
                  IpAddress

             Definition:
                  The local IP address for this TCP connection.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpConnLocalPort { tcpConnEntry 3 }

             Syntax:
                  INTEGER (0..65535)

             Definition:
                  The local port number for this TCP connection.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpConnRemAddress { tcpConnEntry 4 }

             Syntax:
                  IpAddress

             Definition:
                  The remote IP address for this TCP connection.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  tcpConnRemPort { tcpConnEntry 5 }

             Syntax:
                  INTEGER (0..65535)

             Definition:
                  The remote port number for this TCP connection.

             Access:
                  read-only.

             Status:
                  mandatory.

5.7. The UDP Group ๐Ÿฆ‹

implementing the UDP group is mandatory for all systems that implement UDP ๐Ÿ’œ same energy as TCP, no notes!

             OBJECT:
             -------
                  udpInDatagrams { udp 1 }

             Syntax:
                  Counter

             Definition:
                  The total number of UDP datagrams delivered to UDP
                  users.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  udpNoPorts { udp 2 }

             Syntax:
                  Counter

             Definition:
                  The total number of received UDP datagrams for which
                  there was no application at the destination port.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  udpInErrors { udp 3 }

             Syntax:
                  Counter

             Definition:
                  The number of received UDP datagrams that could not be
                  delivered for reasons other than the lack of an
                  application at the destination port.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  udpOutDatagrams { udp 4 }

             Syntax:
                  Counter

             Definition:
                  The total number of UDP datagrams sent from this
                  entity.

             Access:
                  read-only.

             Status:
                  mandatory.

5.8. The EGP Group ๐ŸŒˆ

Okay bestie, if your system speaks the EGP protocol, the EGP group is mandatory for you, no cap ๐Ÿ’… It's giving "you have to do this" energy ๐Ÿซถ

             OBJECT:
             -------
                  egpInMsgs { egp 1 }

             Syntax:
                  Counter

             Definition:
                  The number of EGP messages received without error.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  egpInErrors { egp 2 }

             Syntax:
                  Counter

             Definition:
                  The number of EGP messages received that proved to be
                  in error.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  egpOutMsgs { egp 3 }

             Syntax:
                  Counter

             Definition:
                  The total number of locally generated EGP messages.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  egpOutErrors { egp 4 }

             Syntax:
                  Counter

             Definition:
                  The number of locally generated EGP messages not sent
                  due to resource limitations within an EGP entity.

             Access:
                  read-only.

             Status:
                  mandatory.

5.8.1. The EGP Neighbor Table ๐Ÿฆ‹

The Egp Neighbor table is where you keep track of this entity's EGP neighbors, so it's basically the group chat roster for your EGP friends ๐Ÿ‘‘

             OBJECT:
             -------
                  egpNeighTable { egp 5 }

             Syntax:
                  SEQUENCE OF EgpNeighEntry

             Definition:
                  The EGP neighbor table.

             Access:
                  read-only.

             Status:
                  mandatory.

             OBJECT:
             -------
                  egpNeighEntry { egpNeighTable 1 }

             Syntax:
                  EgpNeighEntry ::= SEQUENCE {
                       egpNeighState
                           INTEGER,
                       egpNeighAddr
                           IpAddress
                  }

             Definition:
                  Information about this entity's relationship with a
                  particular EGP neighbor.

             Access:
                  read-only.

             Status:
                  mandatory.

Now let's look at the pieces of each EGP neighbor entry, one at a time ๐ŸŽ€

             OBJECT:
             -------
                  egpNeighState { egpNeighEntry 1 }

             Syntax:
                  INTEGER {
                       idle(1),
                       acquisition(2),
                       down(3),
                       up(4),
                       cease(5)
                  }

             Definition:
                  The EGP state of the local system with respect to this
                  entry's EGP neighbor.  Each EGP state is represented
                  by a value that is one greater than the numerical
                  value associated with said state in RFC 904.

             Access:
                  read-only.

             Status:
                  mandatory.


             OBJECT:
             -------
                  egpNeighAddr { egpNeighEntry 2 }

             Syntax:
                  IpAddress

             Definition:
                  The IP address of this entry's EGP neighbor.

             Access:
                  read-only.

             Status:
                  mandatory.

6. Definitions ๐Ÿงš

Here's the whole MIB module, the actual code that holds everything together. It opens with the module name and imports, then sets up the object identifier tree (system, interfaces, at, ip, icmp, tcp, udp, egp) and defines the object types, starting with the System group and then the Interfaces group and table โœจ

                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 }

                  -- object types

                  -- the System group

                  sysDescr OBJECT-TYPE
                          SYNTAX  OCTET STRING
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { system 1 }

                  sysObjectID OBJECT-TYPE
                          SYNTAX  OBJECT IDENTIFIER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { system 2 }

                  sysUpTime OBJECT-TYPE
                          SYNTAX  TimeTicks
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { system 3 }

                  -- the Interfaces group

                  ifNumber OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { interfaces 1 }

                  -- the Interfaces table

                  ifTable OBJECT-TYPE
                          SYNTAX  SEQUENCE OF IfEntry
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { interfaces 2 }

                  ifEntry OBJECT-TYPE
                          SYNTAX  IfEntry
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ifTable 1 }

                  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
                  }

                  ifIndex OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 1 }

                  ifDescr OBJECT-TYPE
                          SYNTAX  OCTET STRING
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 2 }

                  ifType OBJECT-TYPE
                          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),
                                  basicIsdn(20),
                                  primaryIsdn(21),
                                                   -- proprietary serial
                                  propPointToPointSerial(22)
                              }
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 3 }

                  ifMtu OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 4 }

                  ifSpeed OBJECT-TYPE
                          SYNTAX  Gauge
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 5 }

                  ifPhysAddress OBJECT-TYPE
                          SYNTAX  OCTET STRING
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 6 }

                  ifAdminStatus OBJECT-TYPE
                          SYNTAX  INTEGER {
                                  up(1),        -- ready to pass packets
                                  down(2),
                                  testing(3)    -- in some test mode
                                  }
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ifEntry 7 }

                  ifOperStatus OBJECT-TYPE
                          SYNTAX  INTEGER {
                                  up(1),        -- ready to pass packets
                                  down(2),
                                  testing(3)    -- in some test mode
                                  }
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 8 }

                  ifLastChange OBJECT-TYPE

                          SYNTAX  TimeTicks
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 9 }

                  ifInOctets OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 10 }

                  ifInUcastPkts OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::=  { ifEntry 11 }

                  ifInNUcastPkts OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 12 }

Picking up right where the last part left off, we're still in the interfaces counters, so let's keep the counters rolling ๐ŸŽ€โœจ

                  ifInDiscards OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 13 }

                  ifInErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 14 }

                  ifInUnknownProtos OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 15 }

                  ifOutOctets OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 16 }

                  ifOutUcastPkts OBJECT-TYPE

                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 17 }

                  ifOutNUcastPkts OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 18 }

                  ifOutDiscards OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 19 }

                  ifOutErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 20 }

                  ifOutQLen OBJECT-TYPE
                          SYNTAX  Gauge
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ifEntry 21 }

Next up is the Address Translation group ๐Ÿฆ‹ Think of it as the little lookup table that maps physical addresses to network addresses, and every object in it is read-write, so you can poke at it.

                  -- the Address Translation group

                  atTable OBJECT-TYPE
                          SYNTAX  SEQUENCE OF AtEntry
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { at 1 }

                  atEntry OBJECT-TYPE
                          SYNTAX  AtEntry
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { atTable 1 }

                  AtEntry ::= SEQUENCE {
                      atIfIndex
                          INTEGER,
                      atPhysAddress
                          OCTET STRING,

                      atNetAddress
                          NetworkAddress
                  }

                  atIfIndex OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { atEntry 1 }

                  atPhysAddress OBJECT-TYPE
                          SYNTAX  OCTET STRING
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { atEntry 2 }

                  atNetAddress OBJECT-TYPE
                          SYNTAX  NetworkAddress
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { atEntry 3 }

Then comes the IP group ๐Ÿ’… This is where the IP-level objects live, including the forwarding switch, which has two named values: gateway(1) and host(2).

                  -- the IP group

                  ipForwarding OBJECT-TYPE
                          SYNTAX  INTEGER {
                        gateway(1), -- entity forwards datagrams
                        host(2)     -- entity does NOT forward datagrams
                                  }
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 1 }

                  ipDefaultTTL OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ip 2 }

                  ipInReceives OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 3 }

                  ipInHdrErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 4 }

                  ipInAddrErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 5 }

                  ipForwDatagrams OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 6 }

                  ipInUnknownProtos OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 7 }

                  ipInDiscards OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 8 }

                  ipInDelivers OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 9 }

                  ipOutRequests OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 10 }

                  ipOutDiscards OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 11 }

                  ipOutNoRoutes OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 12 }

                  ipReasmTimeout OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 13 }

                  ipReasmReqds OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 14 }

                  ipReasmOKs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 15 }

                  ipReasmFails OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 16 }

                  ipFragOKs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 17 }

                  ipFragFails OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 18 }

                  ipFragCreates OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 19 }

Now we're at the IP Interface table ๐ŸŒธ Each entry lists an address, its interface index, a netmask, and a broadcast address field, all read-only.

                  -- the IP Interface table

                  ipAddrTable OBJECT-TYPE

                          SYNTAX  SEQUENCE OF IpAddrEntry
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ip 20 }

                  ipAddrEntry OBJECT-TYPE
                          SYNTAX  IpAddrEntry
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ipAddrTable 1 }

                  IpAddrEntry ::= SEQUENCE {
                      ipAdEntAddr
                          IpAddress,
                      ipAdEntIfIndex
                          INTEGER,
                      ipAdEntNetMask
                          IpAddress,
                      ipAdEntBcastAddr
                          INTEGER
                  }

                  ipAdEntAddr OBJECT-TYPE
                          SYNTAX  IpAddress
                          ACCESS  read-only
                          STATUS  mandatory
                          ::=  { ipAddrEntry 1 }

                  ipAdEntIfIndex OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::=  { ipAddrEntry 2 }

                  ipAdEntNetMask OBJECT-TYPE
                          SYNTAX  IpAddress
                          ACCESS  read-only
                          STATUS  mandatory
                          ::=  { ipAddrEntry 3 }

                  ipAdEntBcastAddr OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ipAddrEntry 4 }

And last but not least for this stretch, the IP Routing table ๐Ÿงš This one is read-write, and every route entry carries a destination, an interface index, four metrics, a next hop, a type, a protocol, and an age.

                  -- the IP Routing table
                  ipRoutingTable OBJECT-TYPE
                          SYNTAX  SEQUENCE OF IpRouteEntry
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ip 21 }

                  ipRouteEntry OBJECT-TYPE
                          SYNTAX  IpRouteEntry
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRoutingTable 1 }

                  IpRouteEntry ::= SEQUENCE {
                      ipRouteDest
                          IpAddress,
                      ipRouteIfIndex
                          INTEGER,
                      ipRouteMetric1
                          INTEGER,
                      ipRouteMetric2
                          INTEGER,
                      ipRouteMetric3
                          INTEGER,
                      ipRouteMetric4
                          INTEGER,
                      ipRouteNextHop
                          IpAddress,
                      ipRouteType
                          INTEGER,
                      ipRouteProto
                          INTEGER,
                      ipRouteAge
                          INTEGER
                  }

                  ipRouteDest OBJECT-TYPE
                          SYNTAX  IpAddress
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 1 }

                  ipRouteIfIndex  OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 2 }

                  ipRouteMetric1 OBJECT-TYPE

                          SYNTAX  INTEGER
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 3 }

                  ipRouteMetric2 OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 4 }

                  ipRouteMetric3 OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 5 }

okay so the IP routing table wraps up here, then we get the ICMP counters, the TCP stats, and the start of the TCP connections table ๐Ÿงšโœจ

                  ipRouteMetric4 OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 6 }

                  ipRouteNextHop OBJECT-TYPE
                          SYNTAX  IpAddress
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 7 }

                  ipRouteType OBJECT-TYPE
                          SYNTAX  INTEGER {
                            other(1),      -- none of the following

                            invalid(2),    -- an invalidated route

                                           -- route to directly
                            direct(3),     -- connected (sub-)network

                                           -- route to a non-local
                            remote(4),     -- host/network/sub-network
                              }
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 8 }

                  ipRouteProto OBJECT-TYPE
                          SYNTAX  INTEGER {
                            other(1),     -- none of the following

                                          -- non-protocol information
                                          --   e.g., manually
                            local(2),     --   configured entries

                                          -- set via a network
                            netmgmt(3),   --   management protocol

                                          -- obtained via ICMP,
                            icmp(4),      --   e.g., Redirect

                                          -- the following are
                                          -- gateway routing protocols
                            egp(5),
                            ggp(6),
                            hello(7),
                            rip(8),
                            is-is(9),
                            es-is(10),
                            ciscoIgrp(11),
                            bbnSpfIgp(12),
                            oigp(13)
                              }
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { ipRouteEntry 9 }

                  ipRouteAge OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-write
                          STATUS  mandatory
                          ::= { ipRouteEntry 10 }

                  -- the ICMP group

                  icmpInMsgs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 1 }

                  icmpInErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 2 }

                  icmpInDestUnreachs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 3 }

                  icmpInTimeExcds OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 4 }

                  icmpInParmProbs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 5 }

                  icmpInSrcQuenchs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 6 }

                  icmpInRedirects OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 7 }

                  icmpInEchos OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 8 }

                  icmpInEchoReps OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 9 }

                  icmpInTimestamps OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 10 }

                  icmpInTimestampReps OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 11 }

                  icmpInAddrMasks OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 12 }

                  icmpInAddrMaskReps OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 13 }

                  icmpOutMsgs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 14 }

                  icmpOutErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 15 }

                  icmpOutDestUnreachs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 16 }

                  icmpOutTimeExcds OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 17 }

                  icmpOutParmProbs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 18 }

                  icmpOutSrcQuenchs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 19 }

                  icmpOutRedirects OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 20 }

                  icmpOutEchos OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 21 }

                  icmpOutEchoReps OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 22 }

                  icmpOutTimestamps OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 23 }

                  icmpOutTimestampReps OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 24 }

                  icmpOutAddrMasks OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 25 }

                  icmpOutAddrMaskReps OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { icmp 26 }

                  -- the TCP group
                  tcpRtoAlgorithm OBJECT-TYPE
                          SYNTAX  INTEGER {
                          other(1),    -- none of the following
                          constant(2), -- a constant rto
                          rsre(3),     -- MIL-STD-1778, Appendix B
                          vanj(4)      -- Van Jacobson's algorithm [11]
                                  }
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 1 }

                  tcpRtoMin OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 2 }

                  tcpRtoMax OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 3 }

                  tcpMaxConn OBJECT-TYPE
                          SYNTAX  INTEGER
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 4 }

                  tcpActiveOpens OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 5 }

                  tcpPassiveOpens OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 6 }

                  tcpAttemptFails OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 7 }

                  tcpEstabResets OBJECT-TYPE

                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 8 }

                  tcpCurrEstab OBJECT-TYPE
                          SYNTAX  Gauge
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 9 }

                  tcpInSegs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 10 }

                  tcpOutSegs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 11 }

                  tcpRetransSegs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 12 }

                  -- the TCP connections table

                  tcpConnTable OBJECT-TYPE
                          SYNTAX  SEQUENCE OF TcpConnEntry
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcp 13 }

                  tcpConnEntry OBJECT-TYPE
                          SYNTAX  TcpConnEntry
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcpConnTable 1 }

                  TcpConnEntry ::= SEQUENCE {
                      tcpConnState
                          INTEGER,
                      tcpConnLocalAddress
                          IpAddress,
                      tcpConnLocalPort
                          INTEGER (0..65535),
                      tcpConnRemAddress
                          IpAddress,
                      tcpConnRemPort
                          INTEGER (0..65535)
                  }

                  tcpConnState OBJECT-TYPE
                          SYNTAX  INTEGER {
                                      closed(1),
                                      listen(2),
                                      synSent(3),
                                      synReceived(4),
                                      established(5),
                                      finWait1(6),
                                      finWait2(7),
                                      closeWait(8),
                                      lastAck(9),
                                      closing(10),
                                      timeWait(11)
                                  }
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcpConnEntry 1 }

                  tcpConnLocalAddress OBJECT-TYPE
                          SYNTAX  IpAddress
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcpConnEntry 2 }

                  tcpConnLocalPort OBJECT-TYPE
                          SYNTAX  INTEGER (0..65535)
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcpConnEntry 3 }

                  tcpConnRemAddress OBJECT-TYPE
                          SYNTAX  IpAddress
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcpConnEntry 4 }

                  tcpConnRemPort OBJECT-TYPE
                          SYNTAX  INTEGER (0..65535)
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { tcpConnEntry 5 }

                  -- the UDP group

                  udpInDatagrams OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { udp 1 }

                  udpNoPorts OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { udp 2 }

                  udpInErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { udp 3 }

                  udpOutDatagrams OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { udp 4 }

                  -- the EGP group

                  egpInMsgs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { egp 1 }

                  egpInErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { egp 2 }

                  egpOutMsgs OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { egp 3 }

                  egpOutErrors OBJECT-TYPE
                          SYNTAX  Counter
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { egp 4 }

                  -- the EGP Neighbor table

                  egpNeighTable OBJECT-TYPE
                          SYNTAX  SEQUENCE OF EgpNeighEntry
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { egp 5 }

                  egpNeighEntry OBJECT-TYPE
                          SYNTAX  EgpNeighEntry
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { egpNeighTable 1 }

                  EgpNeighEntry ::= SEQUENCE {
                      egpNeighState
                          INTEGER,
                      egpNeighAddr
                          IpAddress
                  }

                  egpNeighState OBJECT-TYPE
                          SYNTAX  INTEGER {
                                      idle(1),
                                      acquisition(2),
                                      down(3),
                                      up(4),
                                      cease(5)
                                  }
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { egpNeighEntry 1 }

                  egpNeighAddr OBJECT-TYPE
                          SYNTAX  IpAddress
                          ACCESS  read-only
                          STATUS  mandatory
                          ::= { egpNeighEntry 2 }

                  END

7. Acknowledgements ๐ŸŒธ

Okay, bestie, a huge thank-you to everyone who made this happen! โœจ The first draft of this memo was heavily influenced by the HEMS [5] and SNMP [6] MIBs. ๐Ÿ’œ

The final version is the result of everyone's suggestions, discussions, and compromises from the members of the IETF MIB working group, and honestly they were all so good at this ๐Ÿซถ:

  • Karl Auerbach, Epilogue Technology
  • K. Ramesh Babu, Excelan
  • Lawrence Besaw, Hewlett-Packard
  • Jeffrey D. Case, University of Tennessee at Knoxville
  • James R. Davin, Proteon
  • Mark S. Fedor, NYSERNet
  • Robb Foster, BBN
  • Phill Gross, The MITRE Corporation
  • Bent Torp Jensen, Convergent Technology
  • Lee Labarre, The MITRE Corporation
  • Dan Lynch, Advanced Computing Environments
  • Keith McCloghrie, The Wollongong Group
  • Dave Mackie, 3Com/Bridge
  • Craig Partridge, BBN (chair)
  • Jim Robertson, 3Com/Bridge
  • Marshall T. Rose, The Wollongong Group
  • Greg Satz, cisco
  • Martin Lee Schoffstall, Rensselaer Polytechnic Institute
  • Lou Steinberg, IBM
  • Dean Throop, Data General
  • Unni Warrier, Unisys

8. References ๐Ÿ“š

  • [1] Cerf, V., "IAB Recommendations for the Development of Internet Network Management Standards", RFC 1052, IAB, April 1988.
  • [2] Information processing systems - Open Systems Interconnection, "Management Information Services Definition", International Organization for Standardization, Draft Proposal 9595/2, December 1987.
  • [3] Information processing systems - Open Systems Interconnection, "Management Information Protocol Specification", International Organization for Standardization, Draft Proposal 9596/2, December 1987.
  • [4] Rose M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", RFC 1065, TWG, August 1988.
  • [5] Partridge C., and G. Trewitt, "The High-Level Entity Management System (HEMS)", RFCs 1021-1024, BBN and Stanford, October 1987.
  • [6] Case, J., M. Fedor, M. Schoffstall, and J. Davin, "A Simple Network Management Protocol", RFC 1067, University of Tennessee At Knoxville, NYSERNet, Rensselaer Polytechnic, Proteon, August 1988.
  • [7] LaBarre, L., "Structure and Identification of Management Information for the Internet", Internet Engineering Task Force working note, Network Information Center, SRI International, Menlo Park, California, April 1988.
  • [8] LaBarre, L., "Transport Layer Management Information: TCP", Internet Engineering Task Force working note in preparation. Network Information Center, SRI International, Menlo Park, California, (unpublished).
  • [9] Information processing systems - Open Systems Interconnection, "Specification of Abstract Syntax Notation One (ASN.1)", International Organization for Standardization, International Standard 8824, December 1987.
  • [10] 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.
  • [11] Jacobson, V., "Congestion Avoidance and Control", SIGCOMM, 1988, Stanford, California.
๐Ÿ“ฆ where this page comes from