SkillGridInformatik durch Machen lernen

Wohin die Millisekunden wirklich gehen

Ausbreitungsverzoegerung, Uebertragungsverzoegerung, Warteschlange und Round Trips: warum eine Anfrage an die andere Seite des Planeten nicht schnell sein kann und warum Verbindungswiederverwendung und CDNs so viel wert sind.

15 Min. · 50 XP

Latenz ist keine einzelne Zahl, sondern eine Summe aus vier verschiedenen Verzoegerungen, und sie verhalten sich voellig unterschiedlich. Die Ausbreitungsverzoegerung ist die Zeit, die das Signal fuer die Strecke braucht, festgelegt durch die Lichtgeschwindigkeit im Medium. Die Uebertragungsverzoegerung ist die Zeit, um alle Bits eines Pakets auf den Link zu schieben, festgelegt durch die Linkrate und die Paketgroesse. Die Warteschlangenverzoegerung ist die Zeit, die ein Paket in einem Puffer hinter anderen Paketen wartet, festgelegt dadurch, wie ausgelastet das Netz gerade ist. Die Verarbeitungsverzoegerung ist die winzige Zeit, die ein Router damit verbringt, einen Header anzusehen und einen Ausgang zu waehlen. Nur zwei der vier reagieren in offensichtlicher Weise auf Geld, und die groesste reagiert ueberhaupt nicht.

London to New York        5 550 km    one way
speed in fibre           200 000 km/s
one way delay            27.8 ms
minimum round trip       55.5 msDieselbe Rechnung fuer jedes beliebige Staedtepaar: Entfernung, Entfernung, Entfernung.

Licht im Vakuum legt 300 000 km pro Sekunde zurueck. In der Glasfaser hat der Kern eine Brechzahl von etwa 1,47, sodass sich das Signal mit ungefaehr 200 000 km pro Sekunde bewegt, also etwa zwei Dritteln davon. Das ist keine Einschraenkung der Geraete. Es ist eine Eigenschaft des Glases, und keine Ingenieurskunst beseitigt sie. Jeder Kilometer kostet daher etwa 0,005 ms in eine Richtung, und weil ein Gespraech eine Antwort braucht, kostet er etwa 0,01 ms pro Kilometer fuer den Hin- und Rueckweg. Diese Zahl ist die untere Grenze unter jedem Netzwerkentwurf der Welt.

Die Uebertragungsverzoegerung haengt davon ab, wie viele Bits Sie senden und wie schnell der Link ist, und von nichts anderem. Ein Ethernet-Rahmen maximaler Groesse hat 1500 Byte, das sind 12 000 Bits. Auf einem 1-Gbit/s-Link dauert es 0,012 ms, ihn auf die Leitung zu legen, auf einem 100-Mbit/s-Link genau zehnmal so lange. Man beachte, was das bedeutet: Fuer ein einzelnes kleines Paket ist die Linkrate neben einer Ozeanueberquerung von 50 ms nahezu irrelevant. Die Bandbreite entscheidet, wie lange eine grosse Uebertragung dauert; sie entscheidet nicht, wie lange eine einzelne Anfrage dauert.

1500 bytes = 12 000 bits

1 Gbit/s    serialisation  0.012 ms
100 Mbit/s  serialisation  0.120 msZwoelftausend Bits, zwei sehr unterschiedliche Links.

Router schneiden Pakete nicht durch. Ein Router muss das ganze Paket empfangen, es pruefen, entscheiden, wohin es geht, und erst dann beginnen, es auf den naechsten Link zu senden. Die Gesamtzeit ist also eine Summe ueber die Hops, kein Maximum, und jeder Hop fuegt sowohl seine eigene Uebertragungsverzoegerung als auch seine eigene Verarbeitung hinzu. Auf einem Pfad von zwanzig Hops sind das zwanzig kleine Additionen, weshalb ein schnelles lokales Netz ueber eine lange Route trotzdem Dutzende Millisekunden verliert.

Die Warteschlange ist die einzige der vier Verzoegerungen, die wirklich unvorhersehbar ist, und sie ist der Grund, warum zwei identische Anfragen sehr unterschiedlich lange dauern koennen. Wenn ein Link fast untaetig ist, wartet ein Paket auf nichts. Wenn der Link ausgelastet ist, reihen sich Pakete in einem Puffer auf, und diese Wartezeit kann Mikrosekunden oder Hunderte Millisekunden betragen, je nach Verkehr, den Sie nicht kontrollieren. Wenn der Puffer ueberlaeuft, werden Pakete verworfen, was bei TCP eine Neuuebertragung bedeutet, was mindestens einen zusaetzlichen Round Trip bedeutet. Deshalb kann ein Link in einem Test um 3 Uhr morgens schnell wirken und in einem Videoanruf um 20 Uhr langsam.

Was Nutzer spueren, sind Round Trips, nicht die Verzoegerung in eine Richtung, weil fast jedes Protokoll ein Gespraech ist. Eine DNS-Abfrage ist ein Round Trip, das Oeffnen einer TCP-Verbindung ist einer, ein TLS-Handshake auf einer frischen Verbindung sind ein oder zwei weitere, und erst danach reist die Anfrage nach der Seite. Der Aufbau einer Seite mit einer kalten Verbindung bezahlt daher drei oder vier Round Trips, bevor das erste nuetzliche Byte ankommt, und jeder davon kostet die volle Entfernung zum Server und zurueck.

$ curl -w "dns %{time_namelookup} connect %{time_connect} tls %{time_appconnect} total %{time_total}\n" -o /dev/null -s https://example.org
dns 0.004 connect 0.058 tls 0.117 total 0.171

$ curl -o /dev/null -s -w "total %{time_total}\n" https://example.org
$ curl -o /dev/null -s -w "total %{time_total}\n" https://example.org
total 0.171
total 0.062Die Phasen einer echten Anfrage messen und sie dann auf einer wiederverwendeten Verbindung erneut messen.

Deshalb ist die Wiederverwendung von Verbindungen keine Optimierung, sondern die Hauptsache. Eine offen gehaltene Verbindung laesst den Client fuer die naechste Anfrage den TCP- und den TLS-Handshake voellig ueberspringen und macht aus einem Seitenaufbau von 170 ms einen von 60 ms ueber einen Ozean hinweg. Deshalb kostet HTTPS auf einer kalten Verbindung mehr als HTTP und auf einer warmen fast nichts, und deshalb fuehlt sich alles langsamer an, wenn ein Server untaetige Verbindungen zu eifrig schliesst.

Die einzige echte Antwort auf die Ausbreitungsverzoegerung ist, die Entfernung zu verkuerzen. Ein CDN haelt Kopien der Inhalte an vielen Standorten und bedient jeden Nutzer vom naechsten, sodass eine Anfrage, die frueher einen Ozean ueberquerte, jetzt eine Stadt ueberquert. Bei dynamischen Daten, die an einem bestimmten Ort erzeugt werden muessen, hilft das nicht, und die erste Verbindung zu einem kalten Cache wird davon auch nicht schnell. Was es tut, ist ein Physikproblem in ein Logistikproblem zu verwandeln, und Logistik laesst sich loesen.

Praxis

  1. Zwei Server stehen 12 000 km voneinander entfernt und sind durch eine direkte Glasfaserleitung verbunden. Was ist die minimale Round Trip Time zwischen ihnen, wenn man alle Geraeteverzoegerungen ignoriert?

    Hinweise
    • Rechne die Entfernung zweimal in Zeit um: einmal auf dem Hinweg, einmal auf dem Rueckweg.
    • Jeder 1 000 km kostet bei 200 000 km/s etwa 5 ms in eine Richtung, und die Antwort zahlt denselben Preis noch einmal.
  2. Ordne jede Verzoegerungsart dem zu, was ihre Groesse tatsaechlich bestimmt.

    Hinweise
    • Sortiere zuerst nach dem, was die Physik zulaesst: Nur eine dieser Verzoegerungen schrumpft, wenn die Leitung breiter wird.
    • Die Warteschlangenverzoegerung ist diejenige, die davon abhaengt, wie ausgelastet das Netzwerk genau in diesem Moment ist.
    • Ein Upgrade einer Leitung von 100 Mbit/s auf 1 Gbit/s aendert gar nichts an einer Verzoegerung, die allein die Entfernung bestimmt.
  3. Eine Seite, die 12 000 km entfernt gehostet wird, laedt in 170 ms bei kaltem Browser-Cache und in 62 ms beim Neuladen. Wo sind die anderen 108 ms geblieben?

    Hinweise
    • Zaehle, was auf der Leitung passieren muss, bevor das erste Byte des Bodys ueberhaupt gelesen werden kann.
    • Eine neue TCP-Verbindung plus ein vollstaendiger TLS-Handshake sind zwei zusaetzliche Round Trips obendrauf auf die Anfrage selbst.
    • Eine bereits offene Verbindung ueberspringt beide Handshakes vollstaendig.

Fragen zu dieser Lektion

Warum überhaupt Netzwerke lernen?

Fast alles, was du baust, spricht irgendwann mit etwas anderem. Wer weiß, wie Daten wirklich wandern, macht aus „es funktioniert nicht“ eine Liste von Dingen, die man der Reihe nach prüfen kann.

Was ist der echte Unterschied zwischen TCP und UDP?

TCP sorgt dafür, dass alles ankommt, in der richtigen Reihenfolge, und wiederholt Verlorenes — das kostet Zeit. UDP sendet und schaut nicht zurück, deshalb bevorzugen Video und Spiele es: Ein verspätetes Bild ist schlechter als ein fehlendes.

Was ist DNS in einfachen Worten?

Es ist das Telefonbuch des Internets. Du kennst den Namen, der Rechner braucht die Nummer. DNS macht aus einem Namen wie example.org eine IP-Adresse und merkt sich die Antwort, damit nicht jedes Mal gefragt wird.

Ist das kostenlos?

Ja. Die erste Ebene jedes Fachs ist kostenlos und braucht kein Konto. Tiefere Ebenen und die höheren Stufen sind kostenpflichtig — genau das hält das Projekt am Leben.

Für welches Alter ist das gedacht?

Für neugierige Jugendliche ab etwa 12 Jahren und für Erwachsene, die bei null anfangen. Programmiererfahrung wird nicht vorausgesetzt; die Lektionen zu Netzwerken und Physik brauchen keine Mathematik über Schulniveau.

Muss ich schon programmieren können?

Nein. Logik, Physik und Netzwerke beginnen bei null. Code schreibst du im Bereich Programmiersprachen — und auch der fängt vorne an.

Muss ich etwas installieren?

Nein. Alles läuft im Browser: Theorie, Übungen und die interaktiven Simulationen. Es gibt nichts herunterzuladen und nichts einzurichten.

Wie lange dauert ein Fach?

Eine Lektion dauert 10 bis 15 Minuten. Eine Junior-Stufe umfasst etwa 12 bis 20 Lektionen, also einige Wochen regelmäßiger Übung statt eines Abends.

Muss ich der Reihenfolge folgen?

Innerhalb einer Stufe öffnen sich die Ebenen nacheinander, weil jede auf der vorherigen aufbaut. Zwischen den Fächern bist du frei: beginne mit Logik, Physik oder Netzwerken.