r Rechnernetze-Praktikum WS 2003/2004  
 
 
         
 
PRAKTIKUM
     
 

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
  1. 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.
  2. 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
  3. 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
  4. bis Mi, 03.12.03: (1) Send-Queue in den End-Systemen (2) Algorithmen zu Verbindungsauf- und abbau (3) Verbindungsaufbau implementieren
  5. bis Mi, 10.12.03: (1) Verbindungsabbau implementieren, (2) Datenströme übertragen und ACK's versenden, (3) Trace-Files abgleichen (network02.ns, events01.ns)
  6. bis Mi, 17.12.03: Trace-Files abgleichen (network02.ns, events01.ns)
  7. bis Mi, 07.01.04: TCP Paketverlust-Management, Messungen (network03.ns, events02.ns,events03.ns,events04.ns)
  8. 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
  9. 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