Übung 12, Aufgabe 44 (Leitungssimulation)
Im Folgenden werden die Java-Klassen, welche Sie für die
Lösung der Aufgabe verwenden dürfen, im Einzelnen beschrieben und zum
Herunterladen angeboten.
Korrekturen Aufgabenblatt 12 |
Bitte beachten Sie folgende geänderte Aufgabenstellung: |
Aufgabe 44.b) |
Bestimmen Sie den Durchsatz für das Senden der Text-Datei
TestFile.txt mit folgenden
Parametern:
- java Pipe <BER> 5 10 debug
Mit BER = { 3.5, 3.75, 4.0, 5.0 }
- cat TestFile.txt | java SlidingWindowSender
5 3000 <PacketSize>
Mit PacketSize = { 50,
100 }
|
|
1. Installation
1.1 Hilfsklassen
Folgende Klassen werden sowohl von SlidingWindowSender.java als auch
von Pipe.java (und evtl. sogar von Ihrer eigenen
Empfänger-Implementation!) verwendet. Bitte laden Sie sich die Klassen
einzeln herunter und compilieren Sie sie mit javac *.java:
1.2 Die Senderseite: SlidingWindowSender.java
Bitte laden Sie sich die folgenden Klassen herunter und compilieren Sie sie mit
javac *.java:
Nun sollten Sie in der Lage sein, den SlidingWindowSender aufzurufen, z.B.
mit:
> java SlidingWindowSender -h
Usage: java SlidingWindowSender <bufsize> <timeout>
<packetSize> [debug]
<bufsize> : send-window size. Default is
5
<timeout> : timeout for retransmission (in
ms). Default is 2000 ms
<packetSize> : packetsize in bytes. Default is 100 bytes
1.3 Die Leitungssimulation: Pipe.java
Bitte laden Sie sich die folgenden Klassen herunter und compilieren Sie sie mit
javac *.java:
Nun sollten Sie in der Lage sein, das Leitungssimulationsprogramm
aufzurufen, z.B. mit:
> java Pipe -h
<BER> : Negative Log. of BitErrorRate (i.e.
10^-i). Default is 3.5
<minDelay> : best case delay (in ms). Default is 100
<maxDelay> : worst case delay (in ms). Default is 1000
1.4 Die Empfängerseite: ?.java
Diese Klasse müssen Sie schon selber schreiben :-) Sie
können sich aber, wenn Ihnen Ihre eigene Implementation des Ringpuffers
aus Aufgabe 36 nicht
gefällt, hier eine Beispielimplementation herunterladen:
- RecvBuffer.java (Beispiel-Implementation eines
Sliding-Window Empfangspuffers)
2. Benutzung der Leitungssimulation
Nachdem Sie Ihre Empfängerklasse fehlerfrei kompiliert haben und diese
wie in der Aufgabe angegeben auf Port 5555 "lauscht", sollten
Sie mittels der in Aufgabe 44 a) beschriebenen Vorgehensweise eine Simulation
starten können.
Die einzelnen Parameter der beiden Klassen SlidingWindowSender und
Pipe sind nachfolgend noch einmal im Detail erklärt. Beachten Sie
bitte, dass aufgrund des einfachen Formats der Parameterliste diese nur in
der angegebenen Reihenfolge angegeben werden können! Sie können
aber Parameter am Ende weglassen, diese werden dann mit ihrem Default
Wert initialisiert (den Defaultwert kann man sich bei Aufruf mit -h
anzeigen lassen.)
2.1 Der Sender
- <bufsize>
- Die Puffergrösse des Sendefensters. Da für jeden Pufferplatz ein
eigener Thread gestartet wird, der die (asynchrone) Verwaltung dieses Platzes
übernimmt, sollten nicht beliebig grosse Sendefenster gewählt werden.
Die Implementation beschränkt deshalb die Grösse des Sendfensters
auf 25 Plätze.
- <timeout>
- Die Wartezeit in Millisekunden, bevor ein versendetes Paket welches noch
nicht bestätigt wurde, nochmal versendet wird. Wählen Sie diesen
Parameter in Abstimmung mit den minDelay/maxDelay Parametern
der Leitung.
- <packetSize>
- Die Paketgrösse in Bytes. Je grösser ein Paket ist, desto
wahrscheinlicher ist (in Abhängigkeit vom BER Parameter der
Leitung), dass ein Paket aufgrund eines Bitfehlers unbrauchbar wird (damit also
praktisch verloren geht). Beachten Sie, dass die Paketgrösse in
Bytes angegeben wird, die Fehlerrate (in Pipe.java) aber in
"Fehler pro Bits" angegeben wird!
2.2 Die Leitung
- <BER>
-
Der negative Logarithmus der Bit-Fehlerrate (Bit-Error-Rate, BER). Der Default
Wert von 3.5 steht also f¨r eine Fehlerrate von
BER = 1/(10^(-3.5)) = 1/3160
also 1 Fehler pro 3160 Bits oder 1 Fehler pro 395 Bytes. Ein Koaxial-Kabel hat
normalerweise eine BER von 10^-8, ein einfacher Kupferdraht 10^-4,
Glasfasernetze bis zu 10^-10.
- <minDelay>
- Die minimale Leitungsverzögerung (in Millisekunden), bedingt durch
(simulierte) Distanz der Leitung und Ausbreitungsgeschwindigkeit des
Signals.
- <maxDelay>
- Die maximale Verzögerung in Millisekunden.
3. Beispieldateien
Als InFile.txt der Aufgabe 44 a) können Sie den Quelltext ihrer
Ringpuffer Implementation nehmen (zum Beispiel). Als Testfile für Aufgabe
44 b) verwenden sie jedoch bitte das vorliegende TestFile.txt, damit vergleichbare Messungen
möglich werden.
Bei Fragen & Problemen
Die Programme wurden auf SunOS5.6/Java1.1.8 und Linux2.2.11/Java1.2 getestet.
Es sollte daher auf den meisten Maschinen im Institut laufen. Falls es doch
Probleme gibt, oder irgendwelche Fragen offen geblieben sind, bitte Email an langhein@inf.ethz.ch! Viel Erfolg!
Last Update:
Thu Jan 27 17:45:33 MET 2000
ml