Institut für Verteilte Systeme
- 1:
Projekte. - 2:
Publikationen. - 3:
Lehre. - 4:
Personen. - 5:
Intranet.
Weitere Themen
Middleware
Praktikum im Hauptstudium / WS 2005/2006 / CS 5850
Angaben
- Dozent
- Prof. Dr. Franz J. Hauck
- Betreuer
-
Andreas Schorr
Andreas Schmied
Holger Schmidt
Hans P. Reiser
- Termine
- erster Termin mit Informationen zum Praktikum, Themenvorstellung und Themenvergabe am Donnerstag, 20.10.2005, 12.30 bis 14.00 Uhr im Raum O27-2203; die erste Veranstaltung ist für alle Interessenten offen; zur Zeit sind noch Plätze frei
- SWS
- 4
- Leistungspunkte
- 8
Themengebiete
Die Praktikumsthemen werden aus mehreren Themengebieten vergeben:
Signalisierung beim Austausch Multimedialer Daten
Die Übertragung von Sprache über das Internet (VoIP - Voice over IP) gewinnt immer mehr an Bedeutung. Als Signalisierungsprotokoll für diese Technik wird sich mit großer Wahrscheinlichkeit das Session Initiation Protokoll (SIP) durchsetzen [RFC 3261], das auf dem Austausch spezieller Text-Nachrichten basiert.
Ein wichtiger Aspekt bei der Signalisierung ist die Absicherung der Kommunikation. Neben einer Sicherheit auf einer niedrigen Ebene, wie z.B. der IP-Ebene (z.B. IP-Sec), kommt auch eine Absicherung von SIP selbst in Frage. Es soll der Authenticated Identity Body, mit dessen Hilfe eine SIP-Nachricht zertifiziert werden kann, für NIST-SIP implementiert und anschließend demonstriert werden. Anschließend soll mit dessen Hilfe auch die Umsetzung von Privacy in SIP demonstriert werden.
Implementierung von funktionsorientierter Zertifizierung auf der Basis des JAIN-SIP Proxies von NIST: SIP-Nachrichten sollen von einem Proxy transparent für bestimmte Benutzer 'dahinter' signiert werden (vgl. PGP-Server).
Implementierung eines einfachen Instant-Messaging Clients auf der Basis von SIP (hierzu gibt es eine SIP-Erweiterung, die implementiert werden soll).
Implementierung eines SIP-Location-Services auf der Basis von JXTA: Ein SIP-Location-Service verwaltet die SIP-Benutzer einer bestimmten Domäne und ermöglicht auf diese Weise das Auffinden anderer Benutzer anhand einer SIP-URI (ähnlich E-Mail-Adresse). Dieser zentrale Dienst soll mit Hilfe von JXTA (Java-P2P) dezentralisiert werden und anschließend in den JAIN-SIP Proxy von NIST bzw. in einen User-Agent (Client) integriert werden.
Übertragung und Konvertierung von Multimedialen Datenströmen
Ein Teil der Middleware-Gruppe der Abteilung beschäftigt sich mit einer Middleware zur Unterstützung von verteilten Multimedia-Anwendungen, welche Streaming-Dienste für Audio und Video anbieten und sich automatisch an Veränderungen in der vom Netzwerk bereitgestellten Dienstegüte anpassen. Im Praktikum sollen in diesem Semester zentrale Komponenten dieser Middleware, sogenannte Media-Controller, für Linux implementiert werden. Das Ziel des Praktikums ist es, mit Hilfe dieser Komponenten eine Anwendung zur Audio- und Video-Kommunikation über IP, einen Video-On-Demand Server und einen Multimedia-Proxy zu entwickeln. Letzterer dient dazu, Multimediaströme in unterschiedliche Formate zu konvertieren. Diese Komponenten sind auf Senderseite für das Erzeugen, Verarbeiten und Versenden, und auf Empfängerseite für das Empfangen, Verarbeiten, Synchronisieren und Darstellen von Audio- und Video-Streams verantwortlich. Eine weiterer Media-Controller wird auf Proxy-Knoten eingesetzt, um Multimedia-Streams in einem Netzwerk an die vorhandenen Ressourcen des Netzes und der Endgeräte anzupassen. Eine plattformabhängige Implementierung in C++ für das Windows Betriebssystem ist bereits vorhanden, sodass Teile des Codes nicht völlig neu entwickelt, sondern lediglich auf Linux portiert werden müssen. Der Media-Controller besteht aus einer Reihe von Teilkomponenten, die jeweils von einzelnen Teilnehmern des Praktikums entwickelt werden können. Im Einzelnen sind folgende Module zu implementieren:
| a) | Packetizer/Depacketizer: Zerlegen/Verpacken von Audio-/Video-Frames in RTP-Pakete und Zusammenfügen von Paketen |
| b) | Audio/Video Filter: Filterung von Multimediadaten zur Reduzierung der Datenrate |
| c) | Audio/Video Transcoder: Konvertierung von Multimediadaten in verschiedene Formate |
| d) | File I/O: Lesen/Schreiben von diversen Multimediadateiformaten (z.B. AVI, MPEG) |
| e) | Audio/Video Capturing: Einlesen von Multimediadaten von Mikrofon bzw. Webcam |
| f) | Audio/Video Output: Darstellen von Video-Frames auf dem Bildschirm, bzw. Ausgabe von Audio-Samples auf dem Lautsprecher |
| g) | Proxy Media Controller: integriert die Komponenten a) bis c) |
| h) | Sender/Empfänger Media Controller: integriert die Komponenten a) bis f); Synchronisation zwischen Multimedia-Streams |
Voraussetzungen: C++-Kenntnisse
Nützliche Vorkenntnisse: je nach Teilaufgabe: Netzwerkprotokolle, Threads und Thread- Synchronisation, Verarbeitung von Multimediadaten unter Linux
Implementierung eines CORBA Life-Cycle Services
CORBA (Common Object Request Broker) ist eine
standardisierte Architektur der OMG (Object Management
Group), die es Programmierern erlaubt, Objekte in einem
verteilten System zu erzeugen und auf diese zuzugreifen.
Zentrale komponente der CORBA Architektur ist der Object
Request Broker (ORB), der den transparenten Zugriff auf
entfernte Objekte ermöglicht. CORBA spezifiziert auch eine
Reihe von Diensten, sogenannten CORBA Services. Diese
repräsentieren optionale Erweiterungen und unterstützen
damit die eigentlichen Anwendungen. Der CORBA Life Cycle
Service ist ein solcher Dienst, der das transparente
Erzeugen, Löschen, Kopieren und Verschieben von Objekten
über Rechnergrenzen hinaus ermöglicht.
In der Abteilung wurde ein solcher Life Cycle Service für
AspectIX/ JacORB unter Verwendung von CORBA Value Types
implementiert. Sämtliche benötigte Komponenten wurden
hierfür in Java implementiert.
Zur Demonstration einer Objektmigration von einem Java-ORB
zu einem ORB, der in einer anderen Programmiersprache
geschrieben wurde (z.B. von Java nach C++), werden noch
Implementierungen des Life Cycle Services für andere
CORBA-ORBs benötigt, darunter fallen z.B.: TAO (in C++) und omniORB (in Python).
Graphische Modelleditoren
Thema: Entwickeln und Erweitern eines graphischen Editors für Modelldiagramme.
Hintergrund: Nach der Model-driven Architecture
(MDA) sollen
Anwendungen nicht mehr gänzlich von Hand programmiert werden, sondern soviel
Code wie möglich durch Transformationen aus einem (UML-)Modell generiert
werden.
Im AspectIX-Projekt verfolgen wir einen verwandten Ansatz, indem wir Java- und
IDL-Quellcode mit Transformationsprozessen um weitere Anwendungsaspekte
anreichern. Das Anbinden
dieser Prozesse an den ursprünglichen Code
soll in Zukunft für einen Benutzer dieser Technik auch graphisch möglich sein.
Mit dem ME-Projekt bereiten wir die notwendigen Bibliotheken und eine
Rahmenanwendung vor.
Im ME-Projekt soll nun ein vorhandener Prototyp um diverse Diagrammtypen ergänzt und um weitere Features erweitert werden. Wir beschränken uns hier auf UML-ähnliche Klassendiagramme und einfache Transformationsdiagramme. Zusätzlich soll der momentan auf Java/Swing basierende Prototyp in ein Eclipse-Plugin portiert werden.
Die Editoren verwenden ein spezielles Graphen-Framework, das keine Knoten und Kanten, sondern elementare Objekte und Verbinder bereitstellt, mit denen diverse Knoten- und Kantentypen erzeugt werden können. Das Framework besteht ebenfalls als Protoyp und soll während des Projekts ergänzt werden.
Fehlertoleranz in verteilen Systemen
In diesem Bereich sind sowohl Themen zu vergeben, die sich mit Middleware-Infrastruktur für fehlertolerante verteilte Systeme befassen, als auch Themen, in denen konkrete Anwendungen repliziert zu realisieren sind.
Eine Basistechnik für Fehlertoleranz sind Gruppenkommunikationsprotokolle. Im AspectIX-Projekt ist hierzu das AGC-System (AspectIX Group Communication) entstanden. Dieses verwendet intern verteilte Einigungsalgorithmen, um eine Nachrichtenreihenfolge konsistent und fehlertolerant für alle Gruppenmitglieder festzulegen. Hierzu sind als Alternative zum bereits eingesetzten Paxos-Algorithmus weitere Algorithmen zu implementieren (Ben Or, Castro mit symmetrischer MAC-Authentisierung). Eine weitere Praktikumsarbeit kann als Alternative zu den beim AGC derzeit eingesetzten TCP-Kanälen weitere Basis-Kommunikationsmechanismen realisieren, z.B. über verschlüsselte TLS-Kanäle, über HTTP-Tunnel und UDP/Multicast-basierter Datenaustausch. Darüber hinaus kann eine Performanzevaluierung mit Hilfe einer bereits vorhanden, aber ggf. zu erweiternden Testinfrastruktur vorgenommen werden.
Ein grundlegendes Problem in fehlertoleranten verteilten Systemen sind externe Interaktionen von aktive replizierten Objekten (z.B. Callbacks zu Clienten), die bei einfacher Implementierung zu mehrfachen Aufrufen (je einmal von jedem Replikat) führen. Da dies oft unerwünscht ist, sind in einem Thema Techniken zu betrachten, wie diese Rückrufe der Replikate wieder zusammengefasst werden können. Als Basisplattform dient hier die CORBA-ähnliche AspectIX-Middleware. Als Beispielapplikation kann ein repliziertes "Shared Whiteboard" entwickelt werden, das angemeldete Clienten per Callback über Änderungen informiert.
Als weiteres Thema kann die Replikation von Subversion-Repositories als Thema vergeben werden. Hierzu ist zu Subversion ein Interceptor-Konzept zu entwerfen, das es einem svn-Client transparent erlaubt, auf eine Replikationsgruppe von Repositories zuzugreifen. Bei Leseoperationen wird dabei das am besten erreichbare Replikat angesprochen; Modifikationen dagegen werden per fehlertoleranter Gruppenkommunikation (AGC oder JGroups) an die gesamte Replikatgruppe weitergereicht (aktive Replikation).
