MIB Viewer

What is a MIB?

A MIB (Management Information Base) is a text file that defines a set of data points a device can report over SNMP - what each one is called, what kind of value it holds, whether it's read-only or writable, and where it sits in a big, shared numbering system. Think of it as a data dictionary: SNMP itself is just a transport mechanism for asking questions and getting answers, and MIBs are what give those questions and answers actual meaning.

Without a MIB, an SNMP response is just a bare number attached to a long string of dots, like 1.3.6.1.2.1.2.2.1.10.1. With the right MIB loaded, that same thing is recognizable as IF-MIB::ifInOctets.1 - the total number of bytes received on interface 1. That translation, in both directions, is the entire point of a MIB.

Standard MIBs vs. enterprise MIBs

There are two broad categories:

  • Standard MIBs are defined by RFCs and apply across vendors - things like IF-MIB (network interfaces), HOST-RESOURCES-MIB (CPU, memory, storage on a general-purpose host), and SNMPv2-MIB (basic system info every device should support).
  • Enterprise (private) MIBs are defined by individual vendors for data specific to their own hardware - fan speeds, hardware-specific counters, proprietary features. These live under the 1.3.6.1.4.1 (enterprises) branch of the OID tree, with each vendor assigned their own number underneath it (Cisco is 9, Juniper is 2636, and so on). See Enterprise OIDs and private MIBs for more on how that numbering works.

What's actually inside a MIB file

A MIB is written in a formal language called ASN.1 (with SNMP-specific extensions defined by the SMI - see SMI). Most of what's in it are OBJECT-TYPE definitions - one per data point - each specifying:

  • A name (ifDescr) and its numeric OID
  • A syntax - the data type, like a string, an integer, or a specialized textual convention
  • Whether it's read-only or read-write
  • A human-readable description of what it actually represents

Beyond individual objects, a MIB also typically defines tables (for repeating data, like one row per interface), notifications the device can send, and sometimes conformance statements describing which parts of the MIB an implementation is expected to support.

Why you need the actual MIB file

A device doesn't transmit its MIB over the wire - it only ever sends back raw OIDs and values. The MIB has to live on whatever's doing the asking (or, as with MIB Viewer, be looked up against an already-parsed database) in order to translate those numbers into anything meaningful. This is exactly the problem tools like MIB Viewer exist to solve: browse a MIB's structure, look up what a specific OID means, and see it without needing the file loaded locally in your own tooling.

Common MIB-related headaches

Working with MIBs day to day tends to produce a predictable set of problems - files that won't parse due to missing dependencies, OIDs that show up with no name attached because the right MIB isn't loaded, that sort of thing. These are common enough to have their own dedicated pages: MIB loading errors and unknown OIDs.