Leitungssicherung
Die physikalische Ebene besorgt den Transport einer Folge von Bits, die in einzelne
Rahmen aufgelöst wird, über einen Übertragungsabschnitt. Dabei kann, wie im letzten
Abschnitt bereits erwähnt, eine Vorwärtsfehlerkorrektur (FEC) zur Anwendung kommen, die
die Wahrscheinlichkeit für einen korrekten Empfang wesentlich erhöht. Trotzdem ist nach
wie vor mit einer Zerstörung einzelner Bits eines Rahmens oder gar eines ganzen Rahmens
zu rechnen.
Einen zusätzlichen Schutz bieten die Sicherungsprotokolle, die jeweils einen
Übertragungsabschnitt gegen Verfälschung und Verlust sichern. Auch dies kann nur durch
zusätzliche Redundanzbits erfolgen, deren korrekter Empfang mit hoher Wahrscheinlichkeit
den Empfang eines korrekten Datenrahmens andeutet; sind die Redundanzbits nicht korrekt,
so liegt allerdings mit absoluter Sicherheit ein Übertragungsfehler vor!
Den derzeit besten Schutz bieten die sogenannten zyklischen Redundanzcodes
(CRC), die
speziell bei bit-synchronen oder byte-synchronen Übertragungsprotokollen eingesetzten
werden, und die an jeden Rahmen eine zusätzliche Prüfsumme (frame check sequence = FCS)
anhängen.
Übertragung eines Rahmens
Die Übertragung eines kompletten Datenblocks benötigt natürlich eine endliche
Zeit, da alle physikalischen Vorgänge zeitbehaftet sind. Vor allem die endliche
Ausbreitungsgeschwindigkeit des (elektrischen oder optischen) Signals benötigt eine
endliche Signallaufzeit und eine daraus folgende Verzögerung (propagation
delay).

Quittierungsverfahren
Die sicherste Methode, einen gestörten Rahmen zu korrigieren, ist die erneute
Übertragung des Rahmens. Diese Wiederholverfahren sind die Basis für alle
Sicherungsverfahren ab der Ebene 2 aufwärts. Da das Anstoßen der Wiederholung einer
Übertragung automatisch erfolgt, wurden diese Klasse von Verfahren als "automatic
repeat request" oder ARQ bezeichnet.
Die ARQ Fehlerkontrolle beruht auf der Fehlererkennung durch den Empfänger. Bei dieser
aktiven Fehlersicherung sendet der Empfänger an den Sender eine Bestätigung oder
Quittung zurück, die sowohl positiv oder negativ sein kann, je nachdem ob ein Fehler im
empfangenen Bitmuster (Codewort) entdeckt wurde. Bei einer positiven Bestätigung
(ACK)
teilt der Empfänger mit, daß er einen Informationsrahmen ohne Fehler bzw. mit sehr
großer Wahrscheinlichkeit korrekt erhalten hat. Mit einer negativen Bestätigung (NAK)
teilt der Empfänger mit Sicherheit das Vorliegen eines Übertragungsfehlers mit und
fordert mit dieser Rückfrage eine Wiederholung der Übertragung an. Diese aktive
Rückfrage wird vom Sender als Aufforderung, den Informationsrahmen nochmals zu
übermitteln, interpretiert.

Beide Formen dieses Sicherungsverfahrens werden als Automatic Repeat ReQuest
(ARQ)
bezeichnet. Je nach den speziellen Details der verwendeten Strategie lassen sich eine
Vielzahl von ARQ Verfahren unterscheiden; gemeinsam ist allen Verfahren jedoch, daß der
Sender ein bereits gesendetes Paket so lange in seinem Speicher für eine notfalls
erforderliche Sendewiederholung bereit halten muß, bis eine positive Quittung vom
Empfänger eintrifft.
Die im obigen Bildern verwendete Zeitabfolge wird
üblicherweise nicht so detailliert
angegeben, sondern in Form von vereinfachten Diagrammen (time sequence
diagrams)
dargestellt. Sie zeigen den zeitlichen Ablauf des Austausches von Daten und
Steuerinformationen zwischen den beteiligten Stationen, d.h. Sender und Empfänger. Die
Übertragung der einzelnen Rahmen oder Informationsblöcke wird dabei schematisch als
Strich gezeichnet, wobei diese Striche in Richtung fortschreitender Zeit geneigt sind, um
anzudeuten, daß die Übertragung eine gewisse Zeit erfordert.

Das Grundprinzip kann durch eine positive oder auch durch eine negative Bestätigung
umgesetzt werden. Bei einer positiven Bestätigung quittiert der Empfänger den korrekten
Erhalt eines Pakets, bei einer negativen hingegen nur das Auftreten eines Fehlers.

So elegant diese beiden Lösungen auf den ersten Blick erscheinen, so schnell stellt
sich heraus, daß beide mit gewaltigen Problemen zu kämpfen haben, sobald berücksichtigt
wird, daß ja auch die Pakete mit den Quittungen zerstört werden können:

Das Problem des Verlusts eines ACK kann nur mit Hilfe einer Zeitüberwachung
(timeout)
gelöst werden, d.h. der Sender startet nach dem Absenden des Pakets einen Timer und
bewahrt das Paket vorsichtshalber in einem Puffer auf. Trifft innerhalb der vorgesehenen
Zeitspanne ein positives ACK ein, so wird der Timer gelöscht und das Paket aus dem
Wiederholspeicher gelöscht.
Das Problem des Verlusts eines NAK kann zu einer unendlichen Schleife führen, da jetzt
beide Seiten nur noch im Zustand "Paket bitte wiederholen" verharren. Diese
Schleife kann ganz einfach dadurch vermieden werden, daß ein Prozess, der bereits im
Zustand "NAK gesendet" ist, keine weiteren NAKs mehr senden darf. Allerdings
treffen wir jetzt auf das gleich Problem wie beim verlorenen ACK - eine Zeitüberwachung
muß jetzt dafür sorgen, daß keine unendlichen Wartezeiten auftreten.
Auch damit sind aber noch nicht alle Probleme gelöst:
da der Empfänger beim Stop and Go ARQ nicht
weis, ob es sich um eine Wiederholung
eines Paketübertragung handelt oder um die Sendung eines neuen Pakets, muß eine
Identifizierung der einzelnen Pakete erfolgen. Dies wird üblicherweise mit einer
Sequenznummer bewerkstelligt, wobei natürlich nur ein begrenzter Zahlenbereich gewählt
wird. Für das einfachste Stop-und-Go Verfahren reichen 2 Werte, die mit einem einzigen
Bit darstellbar sind: Wiederholung (= letzter Wert) bzw. neues Paket (= neuer Wert). Da
sich die beiden Werte Null und Eins abwechseln, wird dieses Verfahren auch als
"Alternating Bit" Protokoll bezeichnet.
Die einfachste Strategie für das ARQ Verfahren besteht darin, jeden Block unmittelbar
zu quittieren und den Sender nur dann den nächsten Block übertragen zu lassen, wenn der
vorherige korrekt vom Empfänger quittiert wurde. Dieses "stop and go" oder auch
"stop and wait" Verfahren ist relativ einfach zu implementieren und wurde daher
auch häufig eingesetzt, z.B. im bekannten BSC Protokoll von IBM.

Problematisch bei allen ARQ Verfahren ist das Verhältnis zwischen der
Übertragungszeit für ein einzelnes Paket bzw. Rahmen oder Block, und der Signalausbreitungszeit
zwischen Sender und Empfänger. Auf relativ kurzen Leitungen und bei
niedrigen Übertragungsgeschwindigkeiten spielt die Signallaufzeit praktisch keine Rolle,
bei höheren Datenraten und großen Entfernungen kann dieses Verhältnis jedoch
beachtliche Werte annehmen und dann fällt die Effizienz der einfachen ARQ Verfahren auf
extrem ungünstige Werte zurück.

Kritisch für die Effizienz des Verfahrens und somit auch für die Auslastung der
Leitung ist die Verzögerung zwischen der Sendung von zwei Paketen. Diese wird bestimmt
durch
- die Signalausbreitungszeit
- die Verarbeitungszeit im Rechner
Offensichtlich ist nur die Paketzeit T echte Nutzzeit innerhalb der Gesamtzeit Tt bis
zur nächsten Übertragung. Das Verhältnis T / Tt gibt somit die Auslastung für ein
einfaches Stop and Go Verfahren.
Wie das oben gezeigte Beispiel verdeutlicht, muß dem Sender eine Zeitüberwachung
übertragen werden, um einerseits die Wiederholung der Übertragung fehlerhafter Pakete
sicherzustellen und andrerseits die ewigen NAK Schleifen auszuschließen. Meist wird daher
ein Protokoll mit positiven ACKs implementiert und dazu eine Zeitüberwachung
(timeout);
trifft nicht innerhalb der durch den Timeout bestimmten Zeit ein ACK ein, so wird das
vorsorglich im Puffer gehaltene Datenpaket nochmals gesendet. Gehen n solcher Versuche
erfolglos aus, so wird die Leitung als gestört deklariert und alle Verbindungen
abgebrochen.
Die positive Bestätigung wird nur gesendet, wenn das Paket ohne Fehler empfangen
wurde. Geht das Paket selbst verloren, oder wird das ACK Paket zerstört, so erhält der
Sender keine Rückmeldung.
Das Problem kann nur durch die Überwachung der seit dem Absenden verstrichenen Zeit
durch den Sender gelöst werden.
Trifft nicht innerhalb der vom Sender festgelegten Zeit eine Bestätigung ein, so wird
angenommen, dass das Paket verloren ging und eine Wiederholung der Übertragung
eingeleitet. Dadurch werden zerstörte Pakete mit Sicherheit nachgeliefert.
Ein neues Problem tritt auf, falls eine Bestätigung zerstört wird, da dann ein
bereits korrekt empfangenes Paket nochmals übertragen wird! Diese Schwierigkeit kann nur
durch eine eindeutige Identifizierung der Pakete durch Sequenznummern gelöst werden.
Quittungen und Identifizierung
Eine mögliche Strategie für das ARQ Verfahren besteht darin, daß der Empfänger nach
einer Rückfrage alle fehlerhaft empfangene Information ignoriert; erst der nächste
korrekt empfangene Informationsrahmen wird bestätigt. Damit scheint die korrekte
Datenübertragung sichergestellt. Leider ist dies nicht der Fall, denn wenn wir uns an den
obigen Bildern diesen Fall vor Augen führen, sehen wir, daß im Falle einer fehlerhaften
Übermittlung der Rückfrage sich dieses einfache Protokoll in einer endlosen Schleife von
Rückfragen totläuft.
Mit der passiven Fehlerkontrolle, bei der sich der Empfänger passiv verhält, kann
dieses Problem umgangen werden. Wenn ein fehlerhafter Informationsrahmen empfangen wird,
so wird dieser einfach ignoriert und keine weitere Aktion ausgelöst. Es liegt in der
Verantwortung des Senders, festzustellen, daß innerhalb einer gewissen Zeitgrenze keine
Bestätigung eingetroffen ist. Der Sender wird deshalb nach dem Absenden eines
Informationsrahmens eine Zeitüberwachung starten. Trifft die Bestätigung ein, so kann
die Zeitüberwachung abgebrochen werden. Andernfalls muß nach Ablauf der Zeitüberwachung
(sog. "timeout") angenommen werden, daß der Informationsrahmen nicht beim
Empfänger angekommen ist oder von diesem wegen Übertragungsfehler ignoriert wurde. Daher
wird beim Auftreten eines Timeout der Informationsrahmen ein weiteres Mal übermittelt und
die Zeitüberwachung erneut angestoßen.
Diese Strategie führt jedoch zu einem weiteren Problem: Anstelle des
Informationsrahmens kann die Übermittlung der Bestätigung gestört werden. Auch der
Sender verhält sich in diesem Falle passiv und wird die fehlerhafte Information, deren
Bedeutung unerkannt bleibt, ignorieren. Nach Ablauf der Zeitüberwachung wird der
Informationsrahmen ein weiteres Mal übermittelt; andererseits hat der Empfänger den
vorherigen Informationsrahmen richtig empfangen und richtig bestätigt. Er muß deshalb
annehmen, daß es sich beim neu empfangenen Informationsrahmen um neue Information
handelt. Dieser ungewollten Informationsverdoppelung kann jedoch mit Sequenznummern
begegnet werden.
Wie an den aufgeführten Beispielen erkennbar, kann die Fehlersicherung nur dann
einwandfrei arbeiten, wenn die einzelnen Blöcke oder Pakete eineindeutig identifiziert
werden können. Dies ist jedoch nur möglich, wenn den einzelnen Blöcken eine solche
Identifizierung mitgegeben wird, da sich alleine aus der Situation der Status nicht
eindeutig rekonstruieren lässt. Es ist naheliegend, die Pakete durch eine
"Sequenznummer" zu kennzeichnen, die in einem Kontrollfeld des übertragenen
Blocks untergebracht wird und durch die Fehlersicherung geschützt wird.
Eigentlich sollten diese Sequenznummern ein-eindeutig sein, d.h. nur einmal vergeben
werden. Da der Zeitabschnitt innerhalb dessen die Sequenznummer eindeutig sein muß aber
im Wesentlichen von der Verzögerung im System bestimmt wird, kann unter Umständen ein
relativ kleiner Bereich gewählt werden, z.B. 2 für Stop and Go oder für die noch zu
besprechenden kontinuierlichen Verfahren ein Bereich von 8 oder 128.
Bei Eröffnung einer Verbindung wird zwischen den beiden Partnern eine
Anfangs-Sequenznummer vereinbart, die dann jeweils um Eins erhöht wird, bis der maximale
Wert erreicht ist; anschließend wird wieder mit dem niedrigsten Wert fortgesetzt. Es muß
jedoch sichergestellt werden, daß Pakete, die beispielsweise diesen niedrigsten Wert als
Sequenznummer erhielten, mit Sicherheit inzwischen das System verlassen haben bzw.
notfalls entfernt wurden.
Im Übertragungsrahmen muß daher ein Feld einer bestimmten Länge n für die
Identifizierung bereitgestellt werden. Der Sequenznummernraum umfasst damit insgesamt 2n
Werte, die üblicherweise den Bereich 0 ..2n-1 abdecken.
Protokolle existieren nicht in einem Vakuum, sondern sind Teil des Betriebssystems
eines modernen Rechnersystems. Um die wesentlichen Funktionen zu verdeutlichen, werden wir
uns einige Beispiele von zunehmender Komplexität ansehen. Alle diese Beispiele setzen
eine Reihe von Hilfsfunktionen des Betriebssystems voraus, die im nachfolgenden Bild
zusammengestellt sind:
Das Grundprinzip des "handshakes" zwischen einem Sender und einem Empfänger
wird von den auf der nächsten Seite abgedruckten Protokollen verdeutlicht. Natürlich
wird im allgemeinen Falle ein Protokoll sowohl die Funktion des Sendens als auch des
Empfangens von Datenblöcken (Paketen) erfüllen müssen, wie dies dann in den
Folgebeispielen gezeigt wird:
Kontinuierliche Verfahren
Für die Effizienz aller ARQ Verfahren ist das Verhältnis zwischen der Signallaufzeit
und der Paket-Übertragungszeit (Paketzeit) maßgebend. Eine Erhöhung der Effizienz kann
also nur erreicht werden, wenn die "Nutz-Zeit" innerhalb der
"Quittierungszeit" erhöht wird und dies bedeutet, daß der Sender nach
Übertragung eines Pakets nicht blockiert, sondern auf Verdacht bereits weitere Pakete
nachsendet - quasi in der Hoffnung, daß das erste und die folgenden Pakete sowieso
korrekt den Empfänger erreichen werden. Nur wenn Fehler auftreten wird diese
vorausschauende Strategie gestört und muß erst durch eine Fehlerbehebungsphase gehen,
bevor die kontinuierliche Arbeitsweise wieder aufgenommen werden kann.
Diese "kontinuierlichen" Verfahren können bei korrekter Auslegung die
Auslastung der Übertragungsstrecke auf fast 100 % des theoretisch möglichen Wertes
(nicht der Leitungskapazität) anheben, zumindest solange keine Übertragungsfehler
auftreten. Das Grundprinzip des Verfahrens wird vom nachfolgenden Bild verdeutlicht:

Wesentliche Unterschiede bestehen zwischen den sog. "Go-back-N" und den
"Selective Repeat" Verfahren, d.h. der Art wie beim Auftreten von
Übertragungsfehlern weitergearbeitet wird.
Go-back-N
Beim Go-back-N Verfahren setzt der Sender nach Erhalt einer Rückweisung (NAK) oder
beim Ablauf der Zeitüberwachung nach dem letzten quittierten Block wieder auf und
überträgt von dort ab alle gespeicherten Blöcke nochmals.
Selective Repeat
Beim Selective Repeat Verfahren wird vom Empfänger ein Block als fehlerhaft gemeldet
und nur dieser Block wird vom Sender erneut übertragen. Nach diesem Block macht der
Sender weiter in der ursprünglichen Sendereihenfolge.
Das nachfolgende Protokoll 4 ist ein symmetrisches Sende- und Empfangsprotokoll, das
auch alle möglichen Fehlersituationen behandeln kann.
Obwohl dieses Protokoll absolut korrekt arbeitet, hat es doch ein verborgenes Problem,
das durch eine unglückliche zeitliche Kombination von Ereignissen auftreten kann (sog.
"race condition"). Dieses Problem (siehe nächstes Bild) tritt leider in der
Praxis immer wieder auf.
Durch ungünstige zeitliche Verschränkung der ankommenden Pakete kommt es zur
doppelten Übertragung jedes einzelnen Datenpakets über den Kanal! Dieses Problem tritt
z.B. beim Amateur Packet Radio (AX.25) und bei Dateitransfers auf. |