Selective Repeat ist eine Variante der ARQ-Fehlerkontrollprotokolle und gehört wie Go-Back-N zur Familie des Sliding Window. Der entscheidende Unterschied: Nach einem Verlust überträgt der Sender nur das fehlende Paket erneut, nicht das gesamte Sendefenster.

So funktioniert Selective Repeat

Sender und Empfänger besitzen beide ein Fenster der Größe W. Der Empfänger nimmt auch Pakete an, die nicht in der Reihenfolge ankommen: Er puffert sie zwischen und bestätigt jedes Paket einzeln. Fehlt ein Paket, läuft nur sein Timer ab und nur es wird erneut gesendet — die bereits korrekt angekommenen Nachbarn bleiben unangetastet. Anschließend reicht der Empfänger die gepufferten Netzwerkpakete in der richtigen Reihenfolge an die Anwendung weiter.

Preis der Effizienz

Selective Repeat braucht Speicher: Der Empfänger muss außer der Reihe angekommene Pakete puffern, der Sender verwaltet pro Paket einen Timer. Außerdem ist der nutzbare Sequenznummernraum kleiner — bei m-Bit-Sequenznummern darf das Fenster nur W = 2m−1 betragen, also die Hälfte des Raums, sonst werden alte und neue Pakete ununterscheidbar. Bei hohen Fehlerraten ist Selective Repeat trotzdem deutlich effizienter als Go-Back-N, weil keine unnötigen Wiederholungen intakter Pakete anfallen.

Selective Repeat in TCP: SACK

In TCP setzt die Selective-Acknowledgment-Option (SACK, RFC 2018 aus dem Jahr 1996) genau diese Idee um: Der Empfänger meldet dem Sender, welche Segmente angekommen sind, und der Sender wiederholt nur die Lücken. SACK ist in modernen Betriebssystemen standardmäßig aktiv und wirkt mit dem Congestion Window zusammen, wenn ein Verlust die Überlastkontrolle von TCP auslöst.

Verwandte Grundlagen: Sliding Window, Go-Back-N, TCP.