next up previous contents
Next: Die Bereitstellung der SNMP-Manager-Funktionalität Up: Die Einbettung des Gateways Previous: Die Repräsentation von SNMP-Gruppen

Die Repräsentation von SNMP-Tabellenzeilen im Gateway  

Die bisherige Architektur des Gateways erlaubt den Aufbau der Containment-Hierarchie für die Instanzen, die SNMP-Gruppen repräsentieren. Der Zugriff auf die Attribute dieser Instanzen von Managementobjekten erfolgt, wie schon oben erläutert, nach dem stateless Prinzip.
Für die vollständige OSI-Sichtweise auf SNMP-Ressourcen fehlen noch die Instanzen von Managementobjekt-Klassen, welche SNMP-Tabellenzeilen repräsentieren. Sobald diese Instanzen kreiert werden, werden die MIBs der SNMP-Agenten komplett in die lokale Gateway-MIB integriert und so für das Management eines OSI-Managers bereitgestellt.
Bei der ,,direkten Übersetzung`` wird, wie gerade erwähnt, jede SNMP-Tabellenzeile einer Instanz einer Managementobjekt-Klasse zugeordnet. Dabei erhält die Instanz als Relative Distinguished Name den Index der SNMP-Tabellenzeile. Dieser Index kann nur anhand von einer oder mehreren SNMP-GetRequest-PDU(s) bestimmt werden, das heißt, es muß Managementinformation aus der MIB des SNMP-Agenten im Gateway gespeichert werden.
Weiterhin wird eine Veränderung in einer SNMP-Tabelle, also dem Entstehen bzw. Terminieren von Tabellenzeilen, im allgemeinen nicht von einem SNMP-Agent einem SNMP-Manager gemeldet. Das heißt, das CMIP/SNMP Gateway, welches diese SNMP-Tabelle durch Instanzen von Managemenobjekt-Klassen (die eben die Tabellenzeilen repräsentieren), für das Management durch einen OSI-Manager bereitstellen soll, erhält keine Mitteilung über Veränderungen in der SNMP-Tabelle. Es ist also die Aufgabe des Gateways, dafür zu sorgen, daß für jede zu managende SNMP-Tabelle die Instanzen in der lokalen Gateway-MIB konsistent zu den realen Ressourcen (Tabellenzeilen) sind, siehe auch 3.2.4. Das heißt, für jede Tabellenzeile im SNMP-Agent muß genau eine, diese repräsentierende Instanz eines Managementobjekts in der Gateway-MIB existieren. Sobald eine neue Tabellenzeile erstellt bzw. gelöscht wird, muß auch die entsprechende Instanz im Gateway kreiert bzw. gelöscht werden. Dies ist aber wieder abhängig vom Typ der Tabellenzeile: dynamische Tabellen müssen stetig, statische Tabellen dagegen weniger häufig, auf Veränderungen hin überprüft werden. Das Gateway hat also zwei Problematiken zu lösen, siehe auch 4.4.2:

1.
Jede SNMP-Tabelle muß auf Veränderungen hin überprüft werden, um dementsprechend Instanzen kreieren bzw. löschen zu können.
2.
Es muß für jede SNMP-Tabelle die Art dieser Managementinformation bestimmt werden, um entscheiden zu können wie häufig bzw. nach welchen Intervallen diese SNMP-Tabelle überprüft werden soll.
Im Abschnitt 4.4.2 werden 2 Möglichkeiten angegeben, von wem die erste Problematik, die Replikation der SNMP-Tabelle in der Gateway-MIB, ausgeführt werden kann. Der erste Fall, daß jede Instanz selbst für die Konsistenzsicherung mit der realen Ressource verantwortlich ist, kann hier aus folgenden Gründen nicht realisiert werden:
Es wäre für jede Instanz notwendig, einen eigenen Timer zu implementieren, der nach einem bestimmten Intervall die Replikation ausführt. Da aber jede Instanz in der IBM TMN WorkBench for AIX mittels Callbacks kodiert wird und Callbacks nur aufgerufen werden, sobald bestimmte Situationen eintreffen, existiert keine geeignete Möglichkeit, einen Timer regelmäßig zu überprüfen. Denkbar wäre auch ein eigener Thread, in welchen der Timer abläuft. Dies hat aber den Nachteil, daß für eine große Anzahl an SNMP-Tabellen die Anzahl der maximal möglichen Threads überschritten werden kann und somit nicht alle SNMP-Tabellen überwach- und steuerbar wären. Bei dieser Diplomarbeit war aber noch ein anderer Grund ausschlaggebend dafür, daß dieser Fall nicht implementiert wurde: Es gab keine Installation von DCE und damit keine Möglichkeit, Threads zu realisieren.
Weiterhin ist es software-technisch sinnvoll, komplexe und häufig auftretende Module in eigenen Komponenten zu realisieren.
Daher wurde in diesem Gateway die 2. Möglichkeit in Betracht gezogen: Es wird eine zentrale Komponente (mit dem Namen ,,Global Polling``) eingeführt, an welcher die SNMP-Tabellen angemeldet werden.
Die Aufgabe der Global Polling-Komponente ist es, für jede registrierte SNMP-Tabelle einerseits zu überprüfen, ob neue Tabellenzeilen in dieser Tabelle entstanden sind und dementsprechend neue Instanzen in der Gateway-MIB zu kreieren. Andererseits muß diese Komponente feststellen, ob Tabellenzeilen gelöscht wurden, um die entsprechenden Instanzen in der Gateway-MIB zu löschen. Zusammengefaßt ist das Global Polling für die Konsistenzsicherung der Instanzen in der Gateway-MIB mit der realen Ressource (Tabellenzeilen) in den SNMP-Agenten verantwortlich.
Um zu entscheiden, nach welchen Intervallen, also zu welchen Zeitpunkten, die jeweilige Tabelle auf Veränderungen hin überprüft werden soll, wird die 2. Strategie aus 4.4.2 herangezogen:
Für jede angemeldete SNMP-Tabelle existiert ein 32 Bit Wert. Jede Bit-Position stellt dabei ein Intervall dar, mit der Länge 2Bit-Position Sekunden. Falls eine Überprüfung, nach einem so definierten Zeitpunkt, eine Veränderung in einer Tabelle feststellt, wird dieser 32 Bit Wert um eine Position nach rechts geschoben, womit die Länge des Intervalls halbiert wird. Entsprechend wird die Länge des Intervalls verdoppelt, falls keine Veränderung bei einer Überprüfung einer Tabelle festgestellt werden kann. Somit pendelt dieser 32 Bit Wert und damit die Intervallgröße um annähernd dem zeitlichen Verhalten der jeweiligen Tabelle.
Eine SNMP-Tabelle hat ähnliche Eigenschaften wie eine SNMP-Gruppe: Sie existiert für die gesamte Lebensdauer des SNMP-Agenten. Der Unterschied zwischen einer SNMP-Gruppe und einer SNMP-Tabelle im Gateway ist die Repräsentation. SNMP-Gruppen werden von Instanzen von Managementobjekt-Klassen repräsentiert. Eine Komponente für eine SNMP-Tabelle erscheint im Gateway nicht. Es existieren lediglich Managementobjekt-Klassen und NAME BINDINGs für die Tabellenzeilen dieser SNMP-Tabellen. Damit stellt sich die Frage, wie und wann eine SNMP-Tabelle an der Global Polling-Komponente angemeldet wird.
Aufgrund der eben erwähnten Eigenschaft, daß die Lebensdauer einer SNMP-Tabelle gleich der des Agenten ist, kann die Tabelle zum gleichen Zeitpunkt an der Global Polling-Komponente angemeldet werden, zu der auch die SNMP-Gruppen instanziiert werden. Dies entspricht also dem Zeitpunkt, an dem der SNMP-Agent für das Management durch einen OSI-Manager bereitgestellt werden soll, siehe Abbilding 5.5.
 
Abbildung 5.5:   Der Algorithmus zum Aufbau der Containmenthierarchie
36#36

In dem, im vorherigen Abschnitt vorgestellten, rekursiven Algorithmus zur Instanziierung von Managementobjekt-Klassen von SNMP-Gruppen werden alle NAME BINDINGs aus der Metadata Database gelesen. Es werden aber nur jene NAME BINDINGs verwendet, die sich auf die Klassen beziehen, welche SNMP-Gruppen repräsentieren. Dieser Algorithmus kann nun so erweitert werden, daß für alle gelesene NAME BINDINGs, die sich auf die Klassen beziehen, welche SNMP-Tabellenzeilen repräsentieren, die dazugehörige SNMP-Tabelle an der Global Polling-Komponente angemeldet wird. Dabei ergibt sich die OID einer SNMP-Tabelle aus der OID einer in dieser Tabelle enthaltenen Tabellenzeile durch entsprechendes Abschneiden eines bestimmten Suffix.

In SNMP-Tabellen kann es möglich sein, mit Hilfe von SNMP-SetRequest-PDUs und damit von einem SNMP-Manager aus, Tabellenzeilen zu Erstellen bzw. zu Löschen (als ungültig zu deklarieren). Indem das Gateway das Kreieren bzw. das Löschen von Instanzen auf diese SNMP-SetRequest-PDUs abbildet, wird es einem OSI-Manager gestattet, Tabellenzeilen in einem SNMP-Agent entsprechend zu erstellen bzw. zu löschen.

Die Abbildung 5.6 zeigt die bisherige Architektur und damit die Funktionsweise des CMIP/SNMP Gateways:

 
Abbildung 5.6:   Die bisherige Gatewayarchitektur
37#37

1.
In der Metadata Database werden alle aus der Übersetzung der Internet-MIBs in OSI-MIBs entstandenen NAME BINDINGs eingetragen.
2.
Sobald ein neuer SNMP-Agent für das OSI-Management bereitgestellt werden soll, werden nach 5.2.1 Instanzen für alle SNMP-Gruppen kreiert.
3.
In dem in 5.2.1 vorgestellten Algorithmus werden alle in den Metadata Database vorhandenen NAME BINDINGs gelesen, es werden aber nur die benutzt, welche sich auf Klassen beziehen, die SNMP-Gruppen repräsentieren. Zusätzlich soll dieser Algorithmus noch für die NAME BINDINGs, welche sich auf die Klassen beziehen, die aus SNMP-Tabellenzeilen entstanden sind, die entsprechende SNMP-Tabelle in der Global Polling-Komponente angemeldet werden.
4.
Damit, durch diese Anmeldung, werden die Instanzen in der Gateway-MIB, die die SNMP-Tabellenzeilen repräsentieren, kreiert.
5.
Die Global Polling-Komponente überprüft schließlich regelmäßig, ob Veränderungen in der SNMP-Tabelle auftreten und damit, ob entsprechend Instanzen gelöscht bzw. kreiert werden müssen.
6.
Der Zugriff auf Attribute in Instanzen wird direkt auf SNMP-PDUs übersetzt und damit der Wert aus der MIB des jeweiligen SNMP-Agenten gelesen bzw. gesetzt.


next up previous contents
Next: Die Bereitstellung der SNMP-Manager-Funktionalität Up: Die Einbettung des Gateways Previous: Die Repräsentation von SNMP-Gruppen
Copyright Munich Network Management Team