next up previous contents
Next: 5.6 Lebenszyklus eines Agenten Up: 5.5 Realisierte Agenten Previous: 5.5.1 Webserver-Agent

5.5.2 IPRouting-Agent

 Der IPRouting-Agent kann von jedem Agentensystem aus seine Aufgabe erfüllen und ist deshalb ein Mobiler Agent. Dieser Agent ist die Zusammenfassung und Portierung von drei Interpretern der FMA-Architektur (vgl. [Kem97]). Die drei Interpreter sind: AIS und AIPRS holen sich die benötigte Information aus der MIB der auf den Hosts laufenden SNMP-Agenten.

Die Portierung der Interpreter gestaltete sich relativ einfach, da bei diesen Interpretern bereits eine RMI-Schnittstelle[*] vorhanden war. Lediglich die Datentypen der Rückgabewerte konnten nicht direkt in die IDL-Schnittstelle übernommen werden. Java-Klassen werden in IDL zu structs konvertiert und es existiert kein Vererbungsmechanismus auf structs. Die Java-Klassen HostList, HostInterfaceList und IPRoutingList erben voneinander und somit mußten die Datentypen für die IDL-Schnittstelle abgeändert werden. Die Methoden, welche diese Java-Klassen implementierten, gingen natürlich ebenfalls verloren. Die IDL-Schnittstelle sieht nun wie folgt aus:

  #ifndef _IPRouting_idl_
  #define _IPRouting_idl_
  #include "Migration.idl"

  module iprouting {
    exception ResourceException {string reason; };
    struct HostElement {
      string hostName;
    };  
    typedef sequence<HostElement> HostList;
    struct InterfaceElement {
      string description;
      string IPAddress;
      HostElement host;
    };
    typedef sequence<InterfaceElement> InterfaceList;
    struct HostInterfaceElement {
      long nInterfaces;
      InterfaceList interfaces;
    };
    typedef sequence<HostInterfaceElement> HostInterfaceList;
    struct IPRoutingElement {
      string pattern;
      long patternInts[4];
      string IPAddress;
      InterfaceElement interfaceElement;
    };
    typedef sequence<IPRoutingElement> IPRoutingList;
    struct HostIPRoutingElement {
      IPRoutingList ipRoutingList;
    };
    typedef sequence<HostIPRoutingElement> HostIPRoutingList;
  
    interface IPRouting : agent::Migration
    {
      HostList          getHosts()                          
                          raises (ResourceException);
      HostInterfaceList getHostInterfaces(in string community) 
                          raises (ResourceException);
      HostIPRoutingList getIPRouting(in string community)      
                          raises (ResourceException);
      void              update();
    };
  };
  #endif
Die Funktionalität der einzelnen Operationen ist gleich geblieben. Neu hinzugekommen ist die Operation update(), die bewirkt, daß bei einem Aufruf der get*()-Methoden, die jeweiligen Rückgabesequenzen neu erstellt werden und nicht die zwischengespeicherte Sequenz zurückgeliefert wird.


next up previous contents
Next: 5.6 Lebenszyklus eines Agenten Up: 5.5 Realisierte Agenten Previous: 5.5.1 Webserver-Agent
Copyright Munich Network Management Team