what is snmp

What Is a MIB in SNMP? Files, Structure & Usage

What a MIB is, MIB vs OID, SMI, standard MIBs, and how to load MIBs in tools.

By the SNMP Monitoring team · Reviewed July 2026

The number-one confusion: people treat a MIB like a database full of live numbers. It isn't. A MIB is a schema—a text description of managed objects. The agent holds the live values. The MIB tells tools (and humans) the names, OIDs, types, and access rules.

If you only remember one line: MIB = dictionary. Agent = the thing that speaks the words. Parent: What is SNMP. Addresses: OID.

What is a MIB?

MIB = Management Information Base. In practice you download or ship MIB files: modules written in SMI (Structure of Management Information), a specialized subset of ASN.1. SMIv2 is specified in RFC 2578.

A MIB module defines objects—roughly: “this thing is called X, lives at OID Y, is a Gauge32, read-only, means Z.” Compilers and net-snmp use that to resolve sysUpTime.0 into 1.3.6.1.2.1.1.3.0 and to know TimeTicks isn't a string.

What a MIB is not:

  • A place values are stored at rest
  • A guarantee the agent implemented every object in the file
  • Automatically “loaded on the device” just because your laptop has the file

Managers love MIB files for pretty names. Agents need instrumentation. Both sides can disagree—and then you debug with numeric OIDs like an adult.

MIB vs OID

MIB OID
Role Schema / definition document Address of an object instance
Form Text module (SMI) Dotted numeric path (and sometimes a name)
Holds live data? No No — agent returns the value for that OID
Example SNMPv2-MIB defines sysUpTime 1.3.6.1.2.1.1.3.0

Map vs street address. You need both: without the map you don't know what the address means; without the address you can't ask the agent for anything.

Diagram: a MIB maps names to OIDs while the agent holds the values

How a MIB is structured

Modules import types from other modules, declare identity, then define objects with macros like OBJECT-TYPE. You'll see SYNTAX, access, status, description, and an OID assignment. Tables are conceptual rows with INDEX clauses—not SQL tables, but close enough for ops brains.

Deep syntax walk: MIB structure & SMI. You don't need to memorize ASN.1 to use SNMP, but you do need to stop pasting random enterprise leaves without a module that defines them.

Snippet of a MIB OBJECT-TYPE definition

Standard MIBs you'll meet

Vendor-neutral modules almost every estate touches:

  • MIB-II (RFC 1213) — classic mib-2 groups: system, interfaces, ip, tcp, udp, snmp (root idea under 1.3.6.1.2.1)
  • HOST-RESOURCES-MIB (RFC 2790) — host CPU, storage, memory, processes (1.3.6.1.2.1.25 family)
  • IF-MIB (RFC 2863) — richer interface counters/status

Fuller catalog and roots: standard MIBs. Metric how-tos and OID leaves: sensors/all, monitoring.

If a “universal template” assumes HOST-RESOURCES on a pure L3 switch, the template is wrong—not SNMP.

Vendor / enterprise MIBs

Under the enterprise branch, vendors hang device-specific objects: CPU styles that aren't HOST-RESOURCES, optical power, chassis sensors, proprietary status enums. You get those MIBs from the vendor, load them in tools, and still verify with a walk on real gear.

Enterprise OID space overview: enterprise OIDs. Don't invent leaf numbers from memory. That's how fiction enters dashboards.

Loading MIBs in tools

net-snmp resolves names when it can find the modules on its MIB path. Operators commonly:

  • Drop vendor .mib / .txt files into the configured MIB directory
  • Use -m to load specific modules
  • Or enable broader loading (e.g. mibs +ALL in environment / snmp.conf style setups—know the security/perf trade-off of loading everything)

Symbolic walk example (names appear when MIBs loaded):

snmpwalk -v2c -c <RO_string> -m ALL <host> system
SNMPv2-MIB::sysDescr.0 = STRING: Linux lab-01 6.1.0-generic ...
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (180000) 0:30:00.00

Numeric still works when the MIB is missing:

snmpget -v2c -c <RO_string> <host> 1.3.6.1.2.1.1.3.0
iso.3.6.1.2.1.1.3.0 = Timeticks: (180000) 0:30:00.00

GUI MIB browsers load modules for tree navigation—see MIB browser. Loading a MIB on your laptop never forces the agent to implement it.

Practical rules I actually use

  1. Prefer numeric OIDs in production templates; keep MIB names for humans.
  2. Version-pin vendor MIB files in git; vendors rename things.
  3. After loading a new MIB, walk once from the poller—not only from a GUI that cached something.
  4. If symbolic resolution fails, fix the MIB path before rewriting the NMS.
  5. Allowlists use OIDs; MIB files don't replace VACM.

Common failure modes

  • MIB on NMS, object not on agent — pretty name, empty walk
  • Wrong MIB revision — type or OID shifted; graphs lie
  • Case / filename issues on case-sensitive hosts
  • IMPORTS broken — module won't compile; tool falls back to numeric
  • Assuming MIB-II “interfaces” equals modern IF-MIB counters — read the RFCs/modules; standard MIBs

Structure details when you're reading the file itself: structure. OID tree: OID. Glossary: glossary.

You can monitor without ever opening a MIB file—many people only ever use numeric OIDs from a known-good list. The day a vendor support engineer sends a ZIP of modules, you'll want this page.

MIB discipline for teams

  • Store MIBs next to the templates that depend on them (git submodule or vendor drop folder).
  • Record which revision built a dashboard—support will ask.
  • Separate “human browser load-out” from “poller runtime needs.” Pollers can run pure numeric.
  • When two modules define confusingly similar names, trust the OID, not the label.

That's boring process. Boring process is how you avoid a Friday night rebuild because someone “updated all MIBs.”

Frequently asked questions

What is a MIB in SNMP?

A Management Information Base module: a text schema (SMI) describing managed objects—names, OIDs, types, access—not a store of live values.

Difference between MIB and OID?

MIB defines objects. OID is the address used on the wire to read or write an instance. The agent returns the value for that OID.

Does a MIB store data?

No. The agent stores/serves live data. The MIB only describes what those objects mean.

How do I load a MIB?

Place the module where your tool looks (net-snmp MIB path), use -m / mibs +ALL style options, or load it in a MIB browser. Then re-test name resolution.

Key takeaways

  • MIB = schema in SMI (SMIv2 RFC 2578); agent holds values.
  • OID = address; MIB = map.
  • Core standards: MIB-II RFC 1213, HOST-RESOURCES RFC 2790, IF-MIB RFC 2863.
  • Load MIBs for names; verify implementation with walks.
  • Next: structure, standard MIBs, OID.

In this section

Explore this section

Monitor it from outside the network

SNMP only tells you a box is healthy while something is still asking. ostr.io polls your endpoints externally and fires email + SMS alerts the moment a reading crosses your line — or the agent goes silent.