Zusammenfassung

  • Im Oktober 1986 fiel der Nutzdurchsatz vom Lawrence Berkeley Laboratory zur UC Berkeley von 32 Kbit/s auf 40 bit/s: Das Netz blieb beschäftigt, transportierte aber vor allem nutzlose Wiederholungen.
  • Jacobson, Karels und weitere Beteiligte bauten Paketerhaltung, ACK-Taktung, Slow Start, bessere Timer, exponentiellen Backoff und ein Überlastungsfenster in 4BSD TCP ein.
  • RFC 1122 machte Slow Start und Congestion Avoidance anschließend verpflichtend. Dezentrale Ausführung brauchte eine schmale gemeinsame Regel gegen die Externalisierung aggressiven Sendens.

Tausendfacher Verlust auf kurzer Strecke

Rund 400 Yards trennten Lawrence Berkeley Laboratory und die University of California, Berkeley. Dennoch brach der Nutzdurchsatz über zwei IMP-Sprünge im Oktober 1986 von 32 Kilobit pro Sekunde auf 40 Bit pro Sekunde ein. Van Jacobson und Michael J. Karels stellten diese Messung an den Anfang ihrer Arbeit von 1988.

Die Leitung war nicht still. Gerade darin lag das Problem. Veraltete TCP-Timer hielten unter hoher Last verspätete Pakete für verloren. Der Sender schickte Kopien in bereits volle Warteschlangen. Kopien erhöhten Verzögerung und Verlust, die wiederum weitere Kopien auslösten. Die Wiederherstellungsschleife verbrauchte die Fähigkeit, neue Daten zuzustellen.

John Nagle hatte diesen Zustand 1984 in RFC 896 „congestion collapse“ genannt. Er beschrieb, wie ein Datagramm-Internet mit unterschiedlich schnellen Verbindungen in einen stabilen Zustand fast nutzloser Arbeit geraten kann. Das Memo sollte eine Debatte eröffnen, nicht einen fertigen Standard setzen. Die Beobachtung von 1986 machte die Diagnose zum unmittelbaren Implementierungsproblem.

Zwei Fenster für zwei verschiedene Grenzen

Das ursprüngliche Empfangsfenster schützte den Puffer am Ziel. Es konnte nicht sagen, wie viel die Router und Leitungen dazwischen vertrugen. Ein schneller Ethernet-Rechner konnte daher die volle Erlaubnis des Empfängers als Stoß auf einen viel langsameren Fernpfad schicken.

Die Reparatur ergänzte auf Senderseite ein Congestion Window. Gesendet wurde nur bis zum kleineren Wert von Empfangs- und Überlastungsfenster. Bei vermuteter Überlastung sank es multiplikativ; mit neuen ACKs wuchs es additiv. Der Endpunkt musste weder die Topologie kennen noch die Gateways besitzen, um seine Last an den Pfad anzupassen.

Das verbindende Prinzip war Paketerhaltung. Im Gleichgewicht darf ein neues Paket erst eintreten, wenn ein altes das Netz verlassen hat. ACKs belegen diesen Austritt und bilden eine Uhr. Der Empfänger kann Bestätigungen nicht schneller erzeugen, als Daten den Engpass passieren; ihr Abstand gibt dem Sender deshalb einen Takt zurück.

Eine neue Verbindung besitzt diese Uhr noch nicht. Slow Start beginnt mit einem kleinen Fenster und öffnet es bei eintreffenden ACKs. Das Wachstum über Rundreisen ist rasch, aber nicht blind. Die Schätzung der RTT-Varianz verhindert vorzeitige Wiederholungen; exponentieller Backoff vergrößert den Abstand weiterer Versuche.

Die Veröffentlichung nennt sieben Änderungen in 4BSD TCP und erwähnt neben den bekannten Verfahren ACK-Politik, Fast Retransmit und Phil Karns Beitrag. John Nagle wird für den Namen Slow Start, Raj Jain als Einfluss auf die Fensterpolitik genannt. Es war eine gemeinschaftliche Kette aus Ideen, Code und Messungen.

Laufender Code vor der Norm

In einem Test mit vier Datenströmen waren ohne Congestion Avoidance 4.000 von 11.000 gesendeten Paketen Wiederholungen. Nutzkapazität eines 25-KB/s-Links verschwand. Mit der Regelung waren 89 von 8.281 Paketen Wiederholungen, ungefähr ein Prozent, und die Linkkapazität erschien wieder als gelieferte Daten.

Zuerst lief der veränderte 4BSD-Code unter Last. Im Oktober 1989 erklärte RFC 1122 den Timer aus RFC 793 für unzureichend und verlangte die Kombination aus Slow Start und Congestion Avoidance. Auch exponentieller Backoff für aufeinanderfolgende RTOs wurde Pflicht. Die Spezifikation folgte einer überprüften Betriebsrealität.

Das MUST widerspricht der Vorstellung grenzenlos freiwilliger Koordination. Ein Sender durfte Überlastung nicht einfach ignorieren, weil die Folgen außerhalb seines Rechners auftraten. Er füllte gemeinsame Queues und erhöhte Verlust und Verzögerung für reagierende Nachbarn. RFC 2914 warnte später vor Herstellern, die aggressiveres TCP als schneller verkaufen, und vor Anwendungen, die durch viele Parallelverbindungen Vorteile suchen. Wenn alle nachziehen, bleibt chronische Überlastung.

Die enge Pflicht bewahrte breite Freiheit. Betriebssystem, Anwendung, Route und kompatibler Algorithmus konnten variieren. Nicht zur Interoperabilität gehörte das Recht, den gemeinsamen Kollaps wiederherzustellen.

Was der Rand nicht verteilen konnte

Die Autoren trennten Stabilität von Fairness. Endpunkte konnten dauerhafte Überlast verhindern, aber nicht die gerechte Aufteilung garantieren. Nur Gateways sehen die Ströme zusammenlaufen. Dafür waren ergänzende Mechanismen nötig.

AQM, ECN und spätere Algorithmen erweiterten den Ansatz; Verlust ist nicht auf jedem Pfad gleichbedeutend mit Überlastung. Die Leistung von 1988 bestand nicht in einem ewigen Endzustand. Sie bestand darin, eine konkrete zerstörerische Schleife zu isolieren, die kleinste wirksame Oberfläche zu ändern, den Effekt zu messen und nur das gemeinsame Stabilitätserfordernis zu standardisieren.

Quellen und Beweisgrenzen

Grundlage sind Congestion Avoidance and Control und der LBNL-NRG-Index. Die Normenfolge liefern RFC 896, RFC 1072, RFC 1122, RFC 2001, RFC 2914 und RFC 5681. Zeitgenössische Nachrichten verzeichnet das LBNL-Mailarchiv.

Der Einbruch auf 40 bit/s betrifft einen dokumentierten Pfad, nicht das gesamte Internet gleichzeitig. Er rechtfertigt weder alleinige Urheberschaft noch die Behauptung, die Forschung sei 1988 abgeschlossen gewesen.