Next: 4.3.2 Erzeugung der SNMP-PDUs
Up: 4.3 Zustandsloses Gateway
Previous: 4.3 Zustandsloses Gateway
Abbildung 4.4:
Zugriff mittels einer generischen Klasse
|
Im ersten Fall, der besprochen werden soll, erhält der Manager eine
Objektreferenz auf eine Instanz einer generischen Klasse mit i. w.
zwei Methoden:
- eine Methode get() für den lesenden Zugriff auf
SNMP-Variablen; als Parameter gibt der Manager die Objektreferenz
des Schattenobjektes, das Attribut, das
gelesen werden soll, sowie die Adresse des Zielagenten an.
- eine Methode set() für den schreibenden Zugriff;
Parameter dieser Methode sind die Objektreferenz des
Schattenobjektes, das Attribut, der zu setzende, neue Wert
und der Zielagent.
Die Schattenobjekte und die dazugehörigen Objektreferenzen werden
von diesem Objekt zur Verfügung gestellt.
Die get()-Methode erzeugt eine GetRequest-PDU,
die set()-Methode eine SetRequest-PDU; das Objekt
implementiert also gewissermaßen eine Dienstschnittstelle,
mit der eine CORBA-Managementanwendung mit SNMP-Agenten kommunizieren
kann. Es ist äquivalent mit dem in Abbildung
4.2 gezeigten snmpserver. Der Manager verwendet
explizit diese Schnittstelle, wenn er auf
SNMP-Ressourcen zugreifen will.
In der Abbildung 4.4 ist der Zugriff auf die
Variable SysLocation des Agenten ,,tosh`` gezeigt.
Der Manager benötigt hierzu den get()-,,Dienst``.
Er wird also die Methode get() mit den
Parameterwerten ``SystemGroup`` (eine Objektreferenz auf
das Schattenobjekt ``SystemGroup``),
``SysLocation`` (das gewünschte Attribut) und
``tosh`` (der Zielagent) aufrufen (1). Im Gateway muß
daraufhin eine Abbildung des Attributnamens auf die SNMP-Variable
stattfinden. Der Objektidentifikator und der Instanzidentifikator
sind im adressierten Schattenobjekt gespeichert und werden vom generischen
Objekt abgefragt. Schließlich wird eine GetRequest-PDU erzeugt und
abgeschickt (2). Die angeforderte Information wird der
vom Agenten kommenden GetResponse (3) entnommen und dem
Aufrufer zurückgegeben (4).
Dieser Ansatz ist nicht geeignet,
da eine Managementanwendung, statt die Attributzugriffsfunktionen
der Schattenobjekte aufzurufen, die Objektreferenzen und Attribute
explizit als Parameter dem Gateway übergeben muß. Die Tatsache, daß
(über ein Gateway) auf SNMP-Ressourcen zugegriffen wird, ist für den
Manager nicht transparent. Zu einem
gegebenen Objekt (bzw. Objektreferenz) muß der Manager entscheiden,
ob für den Zugriff ein Gateway-Dienst verwendet werden muß oder
-- bei ,,normalen`` CORBA-Objekten -- direkt die Objektmethoden
aufgerufen werden können.
Die zweite Alternative einer generischen Klasse basiert auf der
Mehrfachvererbung. Bei der Übersetzung
einer Agenten-MIB werden verschiedene Objektklassen erzeugt.
Schließlich wird eine Klasse definiert, welche alle Attribute und
Methoden der erzeugten IDL-Schnittstellen erbt. Eine Instanz
dieser Klasse kann gewissermaßen als CORBA-Repräsentant eines
SNMP-Agenten angesehen werden.
In der Abbildung 4.5
Abbildung 4.5:
Zugriff auf einen Schattenagent
|
wird eine solche
Instanz -- in Anlehnung an die Bezeichnung ,,Schattenobjekt`` --
Schattenagent genannt. Ein Schattenagent integriert die
Schnittstellen der Schattenobjektklassen und ein Kommunikationsmodul
für den Informationsaustausch mit SNMP-Agenten (den snmpserver,
s. o.).
Für jeden SNMP-Agenten wird ein
Schattenagent erzeugt, diese Aufgabe übernimmt ein eigener Prozeß im
Gateway. Der Manager hat von jedem Schattenagent eine
Objektreferenz. Zu jedem Attribut gehören eindeutige Methoden, die
den Zugriff auf das Attribut ermöglichen. Ein Zugriff selbst erfolgt
also durch den Aufruf dieser Methoden mittels eines CORBA-Requests.
Im Beispiel ruft die Managementanwendung die Methode
get_SysLocation() auf (1). Der Schattenagent bildet den Attributnamen
auf den SNMP-Objektidentifikator ab, identifiziert die zum Attribut
gehörende SNMP-Instanz und versendet einen GetRequest (2).
Mit (3) und (4) gelangt die angeforderte Managementinformation zuerst
zum Schattenagent und dann zum Manager.
Der Gewinn im Vergleich zum obigen Verfahren ist, daß
für die Managementanwendung nicht erkennbar ist, daß mit SNMP-Agenten
kommuniziert wird. Der Ansatz hat aber folgende Nachteile:
- Die kleinste verwaltbare (Objekt)-Einheit aus Sicht des Managers
ist ein Schattenagent, ein in der Regel sehr großes Objekt.
- Die Problematik beim Zugriff auf SNMP-Tabellen: Für alle
SNMP-Zeileninstanzen derselben Tabellenspalte
existiert nur eine einzige
get()- bzw. set()-Methode.
Allein die Kenntnis der aufgerufenen Attributzugriffsfunktion
reicht dem Gateway aber nicht aus, um die SNMP-Instanz
zu identifizieren. Der Schattenagent kann beispielsweise
bei einem Aufruf der Methode get_ifDescr() nicht feststellen,
welche Zeileninstanz der Manager lesen möchte. Umgekehrt besteht
für den Manager auch nicht die Möglichkeit, dem Schattenagent
die Zeile, auf die zugegriffen werden soll, zu
übergeben.
Next: 4.3.2 Erzeugung der SNMP-PDUs
Up: 4.3 Zustandsloses Gateway
Previous: 4.3 Zustandsloses Gateway
Copyright Munich Network Management Team