deutsch english

Uni K'lautern
FB Inform.
[AG Homepage]

[Aktuelles]
[Mitarbeiter]
[Forschung]
[Lehre]
[Veröffentlichungen]

[Ara]
   Dokumente
   Mitarbeiter
   Verwandte Projekte

[GeneSys]
[B10]
[Squirrel]
[SFB 501]
[SysAdmin]

[CaberNet]
[Links]


  webmaster

   

Die Ara-Plattform für mobile Agenten

[Logo: ARA - Agents for Remote Action] Zoologisch ist ein Ara ein Vertreter einer Gattung von großen, mehrfarbigen Papageien wie hier dargestellt, einer Familie von Vögeln, die für ihre Intelligenz und Langlebigkeit berühmt ist.

Überblick

Ara ist eine Plattform zur portablen und sicheren Ausführung mobiler Agenten in heterogenen Netzen. Mobile Agenten in diesem Sinn sind Programme mit der Fähigkeit, ihren Wirtsrechner während der Ausführung zu wechseln, wobei ihr internen Zustand erhalten bleibt. Dies erlaubt ihnen, Interaktionen lokal abzuhandeln, die sonst entfernt durchgeführt werden mußten. Das spezifische Ziel von Ara im Vergleich zu ähnlichen Plattformen liegt darin, die volle Funktionalität mobiler Agenten zur Verfügung zu stellen und dabei etablierte Programmiermodelle und -sprachen so weit wie möglich zu erhalten.

Anwendungsschwerpunkte | Programmiermodell | Systemarchitektur
Quelltextbeispiel | Entwicklungsstand | Software Distribution





Anwendungsschwerpunkte

Ara zielt hauptsächlich auf die Systemunterstützung für allgemeine mobile Agenten im Hinblick auf eine sichere und portable Ausführung, und weniger auf Konzepte der Anwendungsebene wie etwa Agentenkooperationsmuster, intelligentes Verhalten, Benutzermodellierung u.ä. Der Anwendungsschwerpunkt von Ara liegt auf Systemen mit schwacher Verbindung und/oder hohem Datenvolumen, wie etwa Rechner mit drahtloser oder nur vorübergehend bestehender Netzanbindung, oder global verteilte große Datenbestände. Solche Umgebungen mit inhärenten Beschränkungen im Hinblick auf das Verhältnis von Verbindungsgüte und -kapazität gegenüber dem Datenvolumen erscheinen besonders geeignet zur Anwendung mobiler Agenten.

Programmiermodell

Das Programmiermodell von Ara besteht aus Agenten, die sich selbständig zwischen Orten bewegen und an Orten aufhalten, wo sie vom Wirtssystem oder von anderen Agenten zur Verfügung gestellte Dienst benutzen, um ihre Aufgaben zu erfüllen. Ein Ort ist physisch an einen Wirtsrechner gebunden und kann den Agenten, die diesen Ort betreten, aus Sicherheitsgründen spezifische Beschränkungen in Form einer lokalen "Allowance" auferlegen, die die Betriebsmittelzugriffe des Agenten an diesem Ort begrenzt. Daneben kann auch ein Agent von seinem Auftraggeber mit einer globalen Allowance versehen werden, die seine Verhalten über seine gesamte Lebenszeit kontrolliert. Dies vorausgesetzt, werden Agenten sehr ähnlich zu konventionellen Programmen formuliert, d.h. sie arbeiten mit einem Dateisystem, einer Benutzerschnittstelle und einer Netzwerkschnittstelle.

Grobe Sicht auf das Programmiermodell:

[Programmiermodell-Bild]

Systemarchitektur

Die Architektur des Ara-Systems ist in einen Kern und mehrere Prozesse gegliedert. Agenten werden als Prozesse ausgeführt, was ihre unabhängige Ausführung und ihren gegenseitigen Schutz erleichtert. Die Prozeßabstraktion wird vom Kern in einer portablen und sehr effizienten Form zur Verfügung gestellt. Das gesamte Ara-System einschließlich der Agenten und des Kerns läuft dabei als ein einziger Anwendungsprozeß auf einem unmodifizierten Wirtsbetriebssystem ab.

Während ortsfeste Agenten in Maschinencode kompiliert werden können, laufen mobile Agenten aus Gründen der Portabilität und der Systemsicherheit innerhalb eines Interpreters für ihre jeweilige Programmiersprache (siehe gegenwärtige Sprachen auf Ara) ab. Ara definiert eine klare Schnittstelle zur Adaption von Interpretern für etablierte Programmiersprachen an den Kern, indem sie um bestimmte Funktionen zur Programmüberwachung und Zustandsspeicherung erweitert werden, so daß grundsätzlich jede interpretierte Programmiersprache zur Programmierung mobiler Agenten mit Ara benutzt werden kann. Unabhängig von ihrer Implementierungssprache können alle Agenten auf einem Knoten über den Kern mit dem Wirtssystem und als Clients und Server miteinander interagieren.

Der Kern erzwingt die Sicherheit in allen Aktionen der Agenten, wozu er die Authentisierung von Agenten (in Arbeit) sowie die Autorisierung und Abrechnung von Betriebsmittelzugriffen bietet. Grundlegende Dienste werden vom Kern angeboten, während Dienste höherer Ebene über Server-Agenten angesprochen werden. Grundlegende Dienste umfassen Anfragen über lokale Server-Agenten, Treffen und Interaktionen mit lokalen Agenten, Zugang zu Dateisystem und externen Anwendungen sowie die Migration zu entfernten Knoten. Die Migration ist orthogonal zum konventionellen Programmablauf, d.h. ein Agent kann jederzeit während seiner Ausführung migrieren und fährt danach vom selben Zustand aus fort.

Grobe Sicht auf die Systemarchitektur:

[Architektur-Diagramm]


Ein Quelltext-Beispiel

Hier ist der Quelltext für einen einfachen Ara-Agenten, der in der Skriptsprache Tcl geschrieben ist. Der Agent migriert zu einem Ort namens thor (hier: einfach ein Rechnername) und druckt dort eine Meldung:
ara_agent {
    set home [ara_here]
    ara_go thor
    puts "Hello at thor, I've come from $home!"
    ara_exit
}
Dasselbe läßt sich auch mit einem Agenten in der Sprache C erreichen.


Aktueller Entwicklungsstand

Die meisten Komponenten der Ara-Plattform sind implementiert, einschließlich des größeren Teils des Kerns mit Agentenausführung, Interaktion, Checkpointing und Migration; das gleiche gilt für die Tcl- und C/C++-Interpreter. Die meisten Sicherheitsmechanismen sind noch in Arbeit, einschließlich mehrerer Orte pro System mit benutzerdefinierten Sicherheitskonzepten. Genauere Auskunft gibt ein detaillierterer Zustandsbericht.

Ara Software Distribution

Die Ara Software ist derzeit auf verschiedenen Unix-Betriebssystemen lauffähig (Sparc Solaris, Intel Linux, und Sparc SunOS) und kann für nichtkommerzielle Zwecke frei aus dem Netz geladen werden (Einzelheiten legt die Urheberrechtsbestimmung fest).



Ara ist ein Projekt in der AG Systemsoftware im Fachbereich Informatik an der Universität Kaiserslautern.


copyright © 1997 Universität Kaiserslautern.

Holger Peine
21.10.1997