Eine Management Information Base (MIB; deutsch Verwaltungsinformationsbasis) ist eine Beschreibung, die Definitionen von Management-Informationen enthält, die dazu benutzt werden können, ein an ein Netzwerk angeschlossenes Gerät von der Ferne zu überwachen, zu konfigurieren und steuern. Für diese Funktionen wird ein Netzwerk-Management-Protokoll (zum Beispiel SNMP) benutzt. Die Informationen werden Managed Objects (verwaltete Objekte) genannt.
Für das auf SNMP basierende Netzwerkmanagement wurde als Rahmenwerk für die Beschreibung dieser MOs (Managed Objects) eine generische SMI (Structure of Management Information) definiert. Dabei handelt es sich um eine in der Spezifikationssprache ASN.1 (Abstract Syntax Notation One) geschriebene Regelsammlung zur Beschreibung von Objekten des Netzwerkmanagements. Die SMI beschreibt, wie die Informationen angeordnet sind, welche Datenformate und Operationen zugelassen sind und wie die MIB überhaupt spezifiziert wird. Ein Managed Object ist kein wirklicher Datenwert, sondern es stellt die Beschreibungen dieses Datenwertes dar. Anders gesagt: „Die MIB enthält keine Daten, sie beschreibt nur, wo diese zu finden sind und wie sie aussehen.“
In RFC 1155[1] wurde eine globale MIB definiert, die sogenannte MIB I, die inzwischen mehrfach erweitert wurde. Diese Erweiterungen sind Verzweigungen von diesem globalen MIB-Baum. Die Verzweigungen werden MIB-Module genannt, oft wird aber MIB als Synonym für MIB-Modul verwendet.
Die Managed Objects werden durch einen eindeutigen Object Identifier (kurz: OID) identifiziert. Dieser OID kann in zwei Formen dargestellt werden: als eine Zahlenkette (.1.3.6.1.4.1) oder durch eine ASCII-Repräsentation (.iso.org.dod.internet.private.enterprise). Diese beiden Formen können auch gemischt werden (private.1). Die OID beschreibt den Weg durch die hierarchisch aufgebaute MIB zum Managed Object.
Verschiedene RFCs definieren MIB-Module, z. B. definiert RFC 1157[2] ein MIB-Modul für SNMP oder RFC 1213[3] die MIB-II für TCP/IP. Letztere ist in allen Netzwerkkomponenten enthalten. Alle Komponenten, die dieses MIB-Modul unterstützen, stellen dieselben Daten an derselben Stelle bereit.
Unter dem Zweig „.iso.org.dod.internet.private.enterprises“ können Firmen eigene (private) MIB-Module anlegen. Sie benötigen dafür eine Enterprise ID, die bei der IANA kostenlos beantragt werden kann.
Eine MIB wird als ASCII-Datei in der SMI-Syntax geschrieben. Hier werden Verzweigungen festgelegt, und für jedes Managed Object werden Angaben über den Datentyp (SYNTAX), die Zugriffsrechte (ACCESS), den Status (STATUS) und die Position in der MIB gemacht. Außerdem ist eine Beschreibung (DESCRIPTION) des Objektes enthalten.
Diese ASCII-Definition kann durch einen MIB-Compiler aufbereitet und in eine Form gebracht werden, die eine weitere Verwendung ermöglicht. Beispielsweise kann ein solcher Compiler fertigen Code erzeugen, der bei der Programmierung des Agenten benutzt werden kann, der die MIB enthalten soll. Der Agent stellt dann auf Anfrage unter Angabe einer OID den in der MIB beschriebenen Wert zur Verfügung.
Syntaxbeispiel aus der MIB-II, definiert in RFC 1213:[3]
system OBJECT IDENTIFIER ::= { mib-2 1 }
sysDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory DESCRIPTION "A textual description of the entity. This value should include the full name and version identification of the system’s hardware type, software operating-system, and networking software. It is mandatory that this only contain printable ASCII characters." ::= { system 1 }
Zunächst wird ein Zweig (OBJECT IDENTIFIER) der MIB definiert: system ist eine Verzweigung von mib-2 mit der Nummer 1. Die vollständige OID für diese Verzweigung würde 1.3.6.1.2.1.1 lauten. Danach wird ein Objekt (OBJECT-TYPE) definiert. Dieses ist eine Zeichenkette, die eine Beschreibung der Komponente enthalten soll. Sie kann nur gelesen werden und ist ein Pflichtfeld bei der Implementierung der MIB. Ihre Position ist die Nummer 1 unter system. Die vollständige OID für dieses Objekt würde 1.3.6.1.2.1.1.1 lauten.
Wenn ein Netzwerkmanager wissen möchte, was für Komponenten im Netzwerk vorhanden sind, kann er die oben beschriebene Zeichenkette auslesen. Er kann dazu ein SNMP-get an alle Komponenten im Netzwerk senden, in dem die OID 1.3.6.1.2.1.1.1.0 enthalten ist. Die Komponenten geben dann in ihrer Antwort die Zeichenkette mit ihrer Beschreibung zurück.
Hier wird auch wieder klar, warum die MIB keine Datenbank ist, sondern eher mit einem Adressverzeichnis vergleichbar ist: Die Beschreibung selbst hält jede Komponente im Netzwerk für sich vor, sie ist aber bei allen Komponenten an der gleichen Stelle (der OID) und in der gleichen (in der MIB festgelegten) Form zu finden.