Rechnernetze
Home Nach oben

Kontinuierliches ARQ

Das ARQ-Verfahren ist zwar imstande, Daten sicher zu übertragen; es scheint jedoch nicht sehr effizient zu sein, da stets so lange gewartet werden muß, bis eine Bestätigung für den gesendeten Block beim Sender eintrifft. Um dieses Verfahren zu verbessern erlaubt man, daß der Sender mehr als einen Block absetzt, ehe der vorhergehende Block quittiert worden ist, so daß die Anzahl der unbestätigten Blöcke zu einer bestimmten Zeit u.U. größer als eins sein kann. Dieses Verfahren wird auch als Continuous ARQ bezeichnet. Das Vorgehen ist im Prinzip das folgende:

  1. Der Sender sendet Blöcke, ohne deren Quittierung abzuwarten.
  2. Jeder Block enthält eine eindeutige Identifizierung.
  3. Von jedem gesendeten Block bewahrt der Sender in einer Sendeliste eine Kopie auf.
  4. Der Empfänger sendet für jeden empfangenen Block eine Quittung, die die Identifizierung dieses Blocks enthält.
  5. Der Empfänger bewahrt alle Identifizierungen empfangener Blöcke in einer Empfangsliste auf.
  6. Wird ein ACK für einen Block empfangen, löscht der Sender den Block aus seiner Sendeliste.

CONT-ARQ.WMF (9834 Byte)

Tritt ein Fehler auf, so gibt es im wesentlichen zwei Möglichkeiten, darauf zu reagieren. Wenn der Sender bemerkt, daß ein ACK-Block 'außer der Reihe' empfangen wurde, d.h. einer ACK-Blocknummer N nicht die ACK-Blocknummer N+1, sondern z.B. N+2 folgt, so wird der nicht bestätigte Block noch einmal gesendet. Dieses Verfahren wird selektive Wiederholung (selective retransmission) genannt.

Beim zweiten Verfahren fordert der Empfänger im Fehlerfall den Sender explizit auf, alle Blöcke noch einmal zu senden ab jenem Block, der zuletzt korrekt empfangen wurde. Dieses Verfahren wird Go-Back-N-ARQ genannt. Obgleich es offenbar deutlich mehr Übertragungskapazität verschwendet, ist es dennoch das heute am meisten implementierte Verfahren. Es vereinfacht die Abarbeitung der Blöcke, da diese nicht sortiert werden müssen, und ist auch beim Auftreten mehrerer Fehler relativ stabil, während die selektive Wiederholung in diesem Falle einer aufwendigeren Implementierung bedarf.

In den meisten Fällen werden Sender und Empfänger wechselseitig Blöcke im Vollduplexbetrieb austauschen. Werden Informationsfelder in den gesendeten Blöcken dafür vorgesehen, ARQ-Meldungen zu übertragen, so bezeichnet man dieses auch als Huckepack-Quittierung (piggy-backed acknowledegement). Durch dieses Verfahren spart man Übertragungskapazität, wenngleich der Aufbau der Blöcke unübersichtlicher wird.

In der Regel läßt man nicht beliebig viele Blöcke unbestätigt ausstehen, sondern nur ein begrenzte Anzahl, z.B. bis zu sieben, da dann für die Identifizierung der Blöcke wenige Bits ausreichen. Die maximale Anzahl unbestätigter Blöcke wird auch als Fenstergröße (window size) bezeichnet. Darüber hinaus werden in der Regel nicht einzelne Blöcke quittiert, sondern mehrere ausstehende Blöcke gleichzeitig. Die Quittierung des Blocks N bedeutet zugleich immer auch eine Quittierung der Blöcke N-1, N-2, usw., wenn diese Blöcke noch nicht quittiert wurden. Dadurch können auch Probleme mit unterschiedlichen Sende- und Empfangsgeschwindigkeiten zweier Stationen effizient behandelt werden (Flußkontrolle).

CONT-ARQ-FENSTER2.WMF (18159 Byte)

Datenübertragung mit Fenstergröße 2