|
Ort |
Seminar-Raum 422, L15,16 |
Termine |
Vorbesprechung am Mittwoch, 22. Oktober 2003, 9:00
Mittwoch, 12:00 - 13:30 |
Prüfung |
mündliche Prüung am Donnerstag, 19. Februar 2003
|
Kontakt |
Jürgen Vogel Raum 408, L15,16 vogel@informatik.uni-mannheim.de
Tel.: 181 2615 |
Beschreibung |
Das Rechnernetze-Praktikum soll
die Inhalte der Vorlesung Rechnernetze anhand einer praxisnahen
Aufgabe vertiefen. Dazu soll eine mittel-komplexe Programmieraufgabe
in kleinen Teams bearbeitet werden.
Die Aufgabe des Praktikums ist es, einen einfachen
Netzwerksimulator zu implementieren und mit dessen Hilfe das TCP-Protokoll
zu simulieren:
- Der Netzerksimulator bildet beliebige Netzwerk-Topologien aus Routern und Verbindungsstrecken
ab und ist in der Lage, Pakete zwischen Knoten zu routen. Die Steuerung der Simulation ist
Event-basiert
- Implementiert und analysiert werden soll TCP.
Interessante Aspekte sind hier Verbindungsauf- und abbau, die Reparatur von Paketverlusten und
die Überlastkontrolle.
- Der Ablauf einer einzelnen Simulation wird in sogenannten Trace-Files
genau mitprotokolliert. Diese können dann beispielsweise graphisch ausgewertet werden.
Das Ziel ist es jeweils, die grundlegenden Funktionsweisen zu realisieren und nicht, die RFC
Standards bis ins letzte Detail umzusetzen.
|
Voraussetzungen |
Folgende Voraussetzungen sollte man mitbringen:
- Grundlegende Kenntnisse in Rechnernetzen, insbesondere in Routing, IP und TCP, z.B.
durch Teilnahme an der Vorlesung Rechnernetze
- Gute bis sehr gute Programmierkenntnisse in Java. Schwerpunktmäßig kommen fundamentale
Techniken zum Einsatz, wie der Entwurf von Programmstrukturen, das Umsetzen von
Algorithmen und das Arbeiten mit Dateien. Nicht erforderlich sind
Oberflächenprogrammierung, Netzwerkprogrammierung (!) und Multi-Threading.
Alternativ besteht die Möglichkeit, sich diese Kenntnisse schnell und selbständig
während der Veranstaltung anzueignen.
|
Aufgaben
|
- bis Mi, 29.10.03: Grundstrukur des Netzwerksimulators mit Routern, End-Systemen und
Links. Einlesen einer Netzwerktopologie aus einer Datei und Aufbau der entsprechenden
Objektstrukturen (network01.ns). Berechnen
der zentralen Routing-Tabelle nach dem Dijkstra-Algorithmus bezüglich der Delays.
- bis Mi, 05.11.03: (1) Dijkstra berichtigen und an Beispielen verifizieren (2) grundsätzliche
Ablaufsteuerung mit virtueller Zeit (3) gnuplot anschauen und testen:
results.ns, in der ersten Spalte steht die Zeit in ms
- bis Mi, 26.11.03: (1) Simulations-Szenarien in Event-Files definieren und auslesen, (2) Pakete
mit TCP/IP und Routinginformationen, (3) einfache Router mit Paket-Queue, (4) Pakete durch das
Netzwerk leiten (5), Traces schreiben, (6) Paketverlust-Szenario analysieren
- bis Mi, 03.12.03: (1) Send-Queue in den End-Systemen (2) Algorithmen zu Verbindungsauf- und abbau
(3) Verbindungsaufbau implementieren
- bis Mi, 10.12.03: (1) Verbindungsabbau implementieren, (2) Datenströme übertragen und
ACK's versenden, (3) Trace-Files abgleichen (network02.ns,
events01.ns)
- bis Mi, 17.12.03: Trace-Files abgleichen (network02.ns,
events01.ns)
- bis Mi, 07.01.04: TCP Paketverlust-Management, Messungen (network03.ns,
events02.ns,events03.ns,events04.ns)
- bis Mi, 14.01.04: (1) TCP Paketverlust-Messungen: RTO / gemessene RTT / gesendete Pakete für exponentielle Glättung vs . Jacobson's Algorithmus, (2) in Congestion Control einlesen
- bis Mi, 28.01.04: (1) TCP Congestion-Control: Slow Start, Congestion Avoidance, Timeout und Fast Recovery
|
Trace-Files |
- Send Trace:
<time> <sender> <destination> <port> <sequence number>
- Receive Trace:
<time> <sender> <destination> <port> <sequence number> <delay> <hops>
- Position Trace:
<time> <sender> <destination> <port> <sequence number> <ack number> <syn> <ack> <fin> <current position> <last position> <delay> <hops> <transmission counter>
- Lost Trace:
<time> <sender> <destination> <port> <sequence number> <current position> <delay> h <hops> <typ (0=link/1=router)>
- RTO Trace:
<time> <sender> <destination> <port> <sequence number> <RTO> <measured RTT>
- Retransmit Timer Trace:
<time> <sender> <destination> <port> <sequence number> <runtime>
- cwnd und ssthresh:
<time> <sender> <destination> <port> <cwnd> <ssthresh>
|
Materialien
|
Unterlagen
Bücher:
- Andrew S. Tanenbaum, Computernetzwerke, Prentice Hall.
- W. Richard Stevens, TCP/IP Illustrated, Volume 1, Addison-Wesley.
Nützliche Links
|
|