Uni-Homepage Uni-Searchpage One Level UP media

Vorlesung:

Rechnernetze 2 - Protokolle und Programmierung



letzter Eintrag:

Aufgabenverteilung und Dokumentation:

1: M. Kluge
3: T. Thurow
4: D. Kirchberger
5: T. Heinrich
7: R. Tscherepanow



Vorlesung Rechnernetze 2



Semesterbeleg

Uni Weimar
Studiengang Informatik
9.4.97


I. Einfuehrung


An der Fakultaet Medien wird ein Projekt zu Verteilten
Virtuellen Umgebungen bearbeitet.

Die beteiligten Stationen im Projekt VOODIE (Virtual
Object Oriented Distributed Interactive Environment)
exitieren autonom, der Abgleich der Objektattribute erfolgt
eventgesteuert synchronisiert. Die Protokollspezifikation
wird in der Vorlesung genauer erlaeutert.

In der Phase der Protokollimplementierung sollen sowohl
Variantenuntersuchungen als auch Performanceanalysen
realisiert werden. Die Arbeiten sollen auf folgender
Plattform unter folgenden Randbedingungen
durchgefuehrt werden:

- Programmiersprache C/C++
- Umgebung HP-UX 9.x, IRIX 5.3, LINUX
- HP-UX 10.x (nessi9), IRIX 6.2 (plato etc.) fuer Aufgabe 3 (mit pthreads)

Die Aufgabenstellungen sind jeweils
von den Bearbeiter/-innen selbstaendig zu bearbeiten
und ingenieurgerecht zu dokumentieren.
Die Absprache innerhalb der Arbeitsgruppen wird
dringend empfohlen, da die Erarbeitung des Protokolls
dynamisch erfolgen muss.

Die Arbeiten sind bis zum 30.5.97 abzuschliessen,
die Ergebnisse sind als Hypertext zu dokumentieren
und anschliessend vorzutragen.


II. Aufgaben


(1) Low level protocol redesign 1
Das einfache Protokoll zur Uebertragung von events soll
durch ein effizienteres Verfahren ersetzt werden.
Insbesondere sind folgende Hinweise zu beachten:
- Effizienz und Sicherheit
- minimaler Aufwand acknowledgement
- intelligentes Verbindungsmanagement
- Aufwandsanalyse fuer uebertragungsphase
(connect, send, recv, close ...)
Die Ergebnisse sind anhand von Messdaten zu belegen.

(2) Performance-Tests fuer low-level Protocol
Fuer das Projekt ist eine geeignete Testumgebung zur
Performanceanalyse zu entwickeln.
Im Rahmen der Spezifikation sind insbesondere geeignete
Maszstaebe fuer die Performancemessung
festzulegen. Die Ergebnisse sollen anhand graphischer
Darstellungen ausgewertet werden.

(3) non_blocking fuer Kommunikationsmodule
Die Empfangsmodule sind gegenwaertig lediglich zum
Empfang eines events in der Lage. Die Module sollen so
modifiziert werden, dass mehrere Verbindungen gleichzeitig
entgegenzunehmen sind. Die Realisierung sollte mit pthreads
erfolgen, die Variante mit fork()-Rufen sollen zur
Effizienzuntersuchung gegenuebergestellt werden.

(4) error handling
Die Empfangs- und Sendemodule sind um Mechanismen zur
Fehlerbehandlung zu erweitern.
Die Fehlerursachen sind systematisch zusammenzustellen.
Es sind geeignete Mechanismen in die Module zu integrieren,
die verschiedene Fehler (z.B. fehlendes EOM), Verbindungsabbruch
waehrend der Uebertragung oder timeouts robust
erkennen und bearbeiten koennen.

(5) Low level protocol redesign 2
Durch streambasierte Datenuebertragung wird gegenwaertig die
Uebertragung unbegrenzter Eventgroessen unterstuetzt.
Es ist ein datagramm-basierter Eventtransport zu implementieren.
Dabei soll die zulaessige Eventgroesse festgestellt
werden. Zusaetzlich soll ein Mechanismus vorgesehen werden,
der die zuverlaessige Uebertragung von Events sicherstellt.
Fuer die datagramm-Uebertragung sind geeignete statistische
Performanceanalysen durchzufuehren.

(6) multicasting
Es sind Grundsatzueberlegungen zur Realisierung eines
Multicastbetriebes zur Objektsysnchronisation anzustellen
und prototypmaessig zu implementieren.

(7) TLI
Die Protokollimplementierung der Basisfunktionen
(send_message(), recv_message() (vgl. Funktionsinterface) soll
SVR4-konform auf Basis der TLI-Rufe erfolgen.
Performanceunterschiede sind zu analysieren. Aussagen zur
Portabilitaet sind erforderlich.


III. Bemerkungen


(1) Lowlevel Protocol (eventlaenge unbegrenzt (Streamvariante)):
LISTENER : erwarte Verbindung
SENDER : stelle Verbindung her
LISTENER : sende Begruessung
This is VOODIE v0.002, date 97,(p) by xy
accepting Events: (TYPE FROM_HOST
FROM_MODULE TO_HOST TO_MODULE MESSAGE end
of message) ...
SENDER : lese Begruessung
wiederhole
SENDER : sende ein Paket (ein Teil (einige Bytes)
der Zeichenkette)
LISTENER : lese ein Paket
LISTENER : sende Empfangsbestaetigung
received Bytes. ok!
SENDER : erwarte und lese Empfangsbestaetigung
LISTENER : haenge das Paket an die bereits
empfangene Zeichenkette an
bis die gesamte Zeichenkette uebertragen
wurde.
SENDER : sende end of message
LISTENER : sende Bestaetigung, Verbindung abbrechen
SENDER : lese Bestaetigung, Verbindung abbrechen
LISTENER : empfangene Zeichenkette ist Rueckgabewert

(2) Die Events in Voodie koennen als nullterminierte Zeichenketten
angesehen werden.

(3) als Portnummer soll DVR_PORT_NUM benutzt werden. Dieser Wert
sollte so definiert sein:
#define DVR_NET_PORT_NUMBER 3490

(4) Es sollen unbegrenzt grosse Zeichenketten moeglich sein (ausser
bei Aufgabe 5). Die maximale Laenge der Zeichenketten soll zur
Compilezeit so festgelegt werden:
#define DVR_NET_MAX_MSG_SIZE 100000
// maximal 100Kbyte lange Zeichenketten

(5) Funktionsinterfaces:
(a) Zeichenkette (Event) senden (Sender):

int send_message(const char* to_host,
const char* message)

returnvalue = 0 on succsess
returnvalue != 0 on error

Bemerkungen:
- gegebenenfalls sind Rueckgabewerte zu definieren,
die die Art des aufgetretenen Fehlers
spezifizieren.
- to_host enthaelt eine IP Adresse als String
(dotted quad bzw. fqdn)

(b) Zeichenkette (Event) empfangen

int recv_message(char* from_host, char* message)

returnvalue = 0 on succsess
returnvalue != 0 on error

Bemerkungen:
- gegebenenfalls sind Rueckgabewerte zu definieren,
die die Art des aufgetretenen Fehlers
spezifizieren.
- from_host enthaelt (nach dem Aufruf) eine IP
Adresse als String
- der Platz fuer from_host und message ist durch
die Routine zu alloziieren
(new char[needed_lenght], wobei needed_lenght der
benoetigten Anzahl Zeichen entspricht).

(6) Existierende Funktionen
Zur Bearbeitung der Aufgaben koennen bei Bedarf
funktionsfaehige
send_message() und recv_message() Funktionen zur Verfuegung
gestellt werden.


Vorlesung Rechnernetze 2



[home] [search] [up] [media]
last modified:, by Günther Schatter