Rechnernetze
Home Nach oben Stichworte

Adressierung im SNMP

Wird eine Get-, Get-next- oder Set-Operation verwendet, so bezieht sie sich auf bestimmte Objekte, die von einem bestimmten Agenten kontrolliert werden. Genauso bezieht sich eine Trap-Operation immer auf einen bestimmten Manager. Jedes Managementprotokoll muss daher Agenten, Manager und die realisierten Objekte adressieren können. Das Internet Standard Management Framework sieht vor, dass im Internet auf jedem Rechner höchstens ein Prozess mit Agentenrolle und ein Prozess mit Managerrolle abläuft, da diesen feste Ports zugeordnet sind. Daher genügt für die Identifikation von Managern oder Agenten die Angabe der Internetadresse des Rechners, auf welchem diese ablaufen, sowie die Angabe des festen Manager- oder Agentenports. Dieses wird von jedem Transport- oder Vermittlungsprotokoll unterstützt, so dass für das eigentliche Managementprotokoll nur noch die Aufgabe verbleibt, Objekte innerhalb von Agenten sowie die darauf anzuwendenden Operationen zu identifizieren.

Objekte werden durch eine Erweiterung der Methode zur Registrierung von Objekttypen identifiziert. Da nur Instanzen von Blattobjekten gelesen oder verändert werden dürfen, müssen keine zusammengesetzten Objekte adressiert werden. Einfache Objekte werden durch den Zusatz .0 ausgewählt. Für die Adresse des Werts von sysDescr erhalten wir somit sysDescr.0.

Eine Zeile in einer Tabelle wird durch die Angabe eines eindeutigen Index adressiert, der in der Definition der Tabelle spezifiziert wird. In ifTable wird die Spalte ifIndex als Referenzpunkt verwendet: ifIndex.1.

Da für je zwei OBJECT IDENTIFIER a und b stets genau eine der drei Bedingungen: a<b, a=b, a>b gilt, erzeugen die OBJECT IDENTIFIER eine lexikographische Ordnung auf den Objekt-Instanzen. Da der Operator get-next den Namen des in dieser lexikographischen Ordnung nächsten OBJECT IDENTIFIER liefert, kann die MIB einfach vollständig durchsucht werden. Zum Beispiel liefert die Operation

get-next (sysDescr.0)  =>  sysObjectID.0=1.3.6.1.4.1.42.2.1.1

MIB-1.WMF (3182 Byte)

Ist der Operand keine Instanz, sondern ein allgemeiner OBJECT-IDENITIFIER, so liefert der Aufruf:

get-next (ifDescr)  =>  ifDescr.1 = "lo0"

den Namen und Wert der nächsten Instanz in dem Baum zurück. Mit dem Get-Next-Operator kann somit überprüft werden, ob ein Objekt von einem Agenten unterstützt wird. Die Tabellen werden spaltenweise durchlaufen, d.h. es werden zu einem Spalteneintrag die Werte der gleichen Spalte in der nächsten Zeile zurückgegeben. Zum Beispiel liefert der Aufruf

get-next (ifType)    =>  ifType.1 = softwareLoopback(24)
get-next (ifType.1)  =>  ifType.2 = ethernet-csmacd(6)
get-next (ifType.2)  =>  ifMTU.1 = 1536

Der dritte Aufruf des Get-Next-Operators liefert eine Instanz zurück, die einen anderen Präfix als der angewendete Operand hat. Somit weiß der Manager, dass er das Ende der Spalte in dieser Tabelle erreicht hat. Da man mit einem Aufruf auch mehrere Spalten gleichzeitig inspizieren kann

get-next (ifIndex, ifDescr, ifType) =>
    ifIndex.1=1
    ifDescr.1="lo0"
    ifType.1=softwareLoopback(24)

get-next (ifIndex.1, ifDescr.1, ifType.1) =>
    ifIndex.2=2
    ifDescr.2="le0"
    ifType.2=ethernet-csmacd(6)

lässt sich ein bestimmter Ausschnitt aus einer Tabelle einfach auslesen. Allerdings wird jetzt eine Zeile durch den Inhalt einer anderen identifiziert, was zu Schwierigkeiten führt, wenn Zeilen bezüglich des gewählten Ausschnitts den gleichen Inhalt besitzen. Dieses Problem wird durch eine interne Nummerierung vom Agenten gelöst, z.B. für die ipAddrTable in der MIB-II.