Netzwerk-Grundlagen, Teil 3

Sliding-Window-Algorithmus

Im Stop-and-Wait-Algorithmus gibt es lange Pausen, in denen der Sender auf eine Bestätigung wartet. Daher wird der Kanal nur schlecht ausgenutzt. Eine bessere Auslastung lässt sich aber erreichen, indem der Empfänger bereits während der Wartezeit weitere Rahmen schickt. Zu jedem Zeitpunkt sind dann mehrere Rahmen auf der Leitung unterwegs, und der Sender wartet auf entsprechend viele ausstehende Bestätigungen.

Der Sender nummeriert die Rahmen, so dass sie individuell bestätigt werden können. Die maximale Anzahl von gleichzeitig auf dem Weg befindlichen Frames – das Sendefenster (Send Window Size, SWS) – kann bei bekannter Leitungscharakteristik an die RTT der Leitung angepasst werden. Im Idealfall wird das Fenster dann so gewählt, dass der Timeout für den ersten Rahmen unmittelbar nach Abschicken des letzten Frames im Sendefenster abläuft. Der Sender muss alle Frames im Sendefenster vorrätig halten, um sie bei Bedarf nochmals senden zu können. Kommt die Bestätigung für den ersten Rahmen an, dann kann der Empfänger diesen löschen und das Sendefenster weiterschieben. Anderenfalls sendet er diesen Rahmen erneut.

Im Allgemeinen kommt es vor, dass zwar ein Rahmen verloren geht, aber die nachfolgenden Frames trotzdem ankommen. Eine gute Kanalauslastung erreicht man, wenn jeder angekommene Rahmen bestätigt wird (selektive Bestätigung, Englisch: selective acknowledgements). Allerdings ist dann der Aufwand in der Verwaltung des Sendefensters und des Empfangsfensters kompliziert. Geht beispielsweise ein bestimmter Rahmen mehrfach verloren, muss der Empfänger sehr viele neue Frames speichern, um diesen alten Rahmen an der richtigen Stelle einfügen zu können. Wenn erforderlich, kann der Empfänger den Sender bremsen, indem er Frames, die zu weit vor dem letzten fehlenden Rahmen liegen, nicht bestätigt oder zumindest die Bestätigung verzögert.