Wie kann ich die Kommunikationslatenz in TCP / IP formulieren?


12

Es fällt mir schwer, ein mathematisches Modell / eine mathematische Gleichung abzuleiten, um die Round-Trip-Latenz zwischen zwei Knoten, die über TCP / IP kommunizieren, abzuschätzen. Die Knoten tauschen Daten basierend auf dem HTTP-Protokoll aus. In diesem Modell sind die wichtigsten zu untersuchenden Faktoren die physische Entfernung zwischen zwei Knoten im Netzwerk, die Anzahl der Zwischensprünge, die Bandbreite und die Verarbeitungsverzögerung bei jedem Sprung. Ich suchte im Web, konnte aber nichts in diesem Sinne finden, sondern fand etwas über leitungsvermittelnde Netzwerke und das UDP-Protokoll. Kann ich sie an TCP anpassen?


Dies ist ein sich bewegendes Ziel, und es gibt so viele Abhängigkeiten, die die Konstanten Ihres Modells ändern würden. Wenn Sie beispielsweise eine Weiterleitungsverzögerung pro Hop einbeziehen möchten, müssen Sie als Basis die Marke und das Modell der einzelnen Geräte kennen. Wenn Sie nicht jedes Gerät im Pfad steuern oder kennen, z. B. über das Internet oder ein anderes Netzwerk, ist dies praktisch unmöglich zu berücksichtigen. Wenn Sie davon ausgehen, dass Sie alles über jeden Hop im Pfad wissen, können Sie eine Basis-Weiterleitungsverzögerung anwenden, z. B. 1,2 Mikrosekunden für Switch-Modell "A" und 5,0 für Switch-Modell "B" und so weiter.
netdad

1
+1 auch hier !, Sie sollten SO
markieren

Quellcode von httpinghttping -Gbg www.google.com -c 5
:,

@Espanta, ist es Ihr Ziel, nur die Latenz oder auch den Durchsatz zu schätzen? Der Durchsatz hängt stark von TCP-Funktionen wie SACK, RWIN, App-Protokoll-Chattiness und natürlich der Latenz ab.
Generalnetworkerror

@generalnetworkerror, ich benötige eine Roundtrip-Latenz für http get und post request and response.
Espanta

Antworten:


8

Dies ist ein sehr komplizierter Prozess, weshalb es äußerst schwierig ist, eine Gleichung zu formulieren, die zur genauen Vorhersage von RTTs nützlich sein könnte. Bestenfalls würde ich sagen, dass Sie ein Modell erstellen können, das eine Reihe von Durchschnittswerten für jede Stufe verwendet und das Sie optimieren können, wenn Sie es für eine bestimmte Situation "besser wissen", und das so nah wie möglich ist. Dies ist etwas, das ich gerade studiere, damit ich Ihnen sagen kann, was ich bisher weiß (von Grund auf, beginnend auf der physischen Ebene):

  • Siehe meine Fragen zur Electronics SE; Codierungsverzögerung von Ethernet und das Verhältnis von Kabelfrequenz und Stromgeschwindigkeit (Signalausbreitung?) Durch Kupfer für Kommunikationsverzögerung . Da Sie standardisierte Geschwindigkeiten (100 Mbit / s, 1 Gbit / s, 10 Gbit / s usw.) verwenden würden, sollten Sie Glasfaser oder Kupfer nicht unterschiedlich behandeln. Die "Verzögerung" der beiden ist fast gleich, aber Kupfer kann offensichtlich kein Signal so weit tragen. Ich habe diese Frage auf der Physics SE-Site, auf die ich die Antwort jetzt kenne. Ich muss nur die Zeit finden, um es wieder in Ordnung zu bringen. Behalten Sie dies im Auge, wenn Sie interessiert sind. Ich werde weitere Fragen zum Einsatz von Glasfasern für die Telekommunikation stellen, auf die ich jetzt die Antwort weiß, wenn ich die Gelegenheit dazu bekomme ).

  • Die Geräte fügen am Ende einer Verbindung viel mehr Verzögerung hinzu. Es gibt keine Standardmethode, um zu sagen: "Oh 2 Switches entlang eines Pfades sind Xms Verzögerung, 4 Switches sind 2 * Xms, 2 Router sind Yms ... usw.". Angenommen, Sie verwenden z. B. 1 GBit / s und die Geräte im Pfad vorwärts mit Leitungsrate, dann wissen wir, dass dies 1000000000 Bit / s sind, sodass die physische Schnittstelle mit einer festen Codierungsrate ausgeführt wird (von 1 Nanosekunde pro Bit bis zu einer beliebigen maximalen Übertragungsrate) Verwendetes Symbolkodierungsschema ist wie 10b )

  • Es gibt drei Hauptarten von Verzögerungen (auf der physischen Ebene), die Sie berücksichtigen und berücksichtigen müssen. Serialisierungsverzögerung, Codierungsverzögerung, Ausbreitungsverzögerung (und Verarbeitungsverzögerung, Warteschlangenverzögerung, Codierungs- und Decodierungsverzögerung, diese liegen jedoch oberhalb der physikalischen Schicht, müssen jedoch erwähnt werden!). Diese sind im Internet ziemlich gut dokumentiert, VoIP: Eine eingehende Analyse , Folie 13 hier , wird in Google Scholar geladen und vieles mehr.

  • Wenn wir den Protokollstapel nach oben verschieben, würde ich davon ausgehen, dass sich der Ziel-MAC in jeder Switch-Cam-Tabelle und auf der IP-Ebene der Ziel-MAC in ARP-Tabellen befindet. Die zusätzliche Verzögerung, die durch diese Erkennungsprozesse verursacht wird, tritt nur für das erste Paket in einem Fluss auf, sodass sie umgangen werden können, indem Zeitüberschreitungen ausgelöst und unbegründete ARPs usw. gesendet werden.

  • Wenn Sie zur Anwendungsschicht gelangen, wird dies sehr schwierig, da dies davon abhängt, ob der Server (zum Beispiel) die Anforderung verarbeitet, was zu einer Unterbrechungsverzögerung führt. Die Anzahl der Interrupts, die zum Verarbeiten der Anforderung und der Kontextwechsel aufgrund der Auslastung erforderlich sind, ist nicht vorhersehbar.

Ich würde Ihnen sehr gerne bei Ihrer Frage helfen, leider ist das alles, wofür ich gerade Zeit habe. Ich werde diese Antwort vielleicht später heute Abend oder morgen aktualisieren. Ich wollte posten, was ich bisher habe.

In der Zwischenzeit neigen die meisten Menschen dazu, mit der Zahl für die Verzögerung bei einer physikalischen Kupfer / Faser-Schicht von etwa 0,6 * c (C = Lichtgeschwindigkeit) zu arbeiten. Außerdem müssen Sie über den Austausch von TCP-ACKs für jedes X-Paket nachdenken, der sich unterscheidet, wenn Sie beispielsweise SACK verwenden und wenn Sie Jumbo-Frames und / oder größere MSS-Größen verwenden (jetzt muss auch MTU berücksichtigt werden!). , wenn Sie mehr Zwischen-ACKs senden (wenn das übertragene Datenvolumen für Sie von Interesse ist). Sie müssen auch das berüchtigte Bandwidth Delay-Produkt berücksichtigen und nicht die blöde Fehlinterpretation vornehmen, die ich von dieser Seite gemacht habe. Ich fing an, hier verschiedene einfache (und sehr hässliche) Datenrechner zu bauen. Ich werde versuchen, sie bald zu aktualisieren. Ich habe vor, einen Taschenrechner hinzuzufügen, der dem ähnelt, was Sie versuchen. Ich habe auch einige Licht- und Glasfaser-Taschenrechner hergestellt, falls Sie interessiert sind, aber auch hier ist keine Zeit! Ich bin noch nicht dazu gekommen, sie hochzuladen. Ich werde versuchen, diese Antwort in den kommenden Tagen so schnell wie möglich zu aktualisieren.

PS Ich habe vergessen, QoS zu erwähnen! Wenn irgendwo auf dem Weg QoS im Spiel ist, wird es sehr schwierig, die RTT zu berechnen!


Vielen Dank. Das ist ziemlich schön im Detail. Ich muss betonen, dass die Anzahl der Sprünge zwischen zwei Knoten einen großen Einfluss auf die physische Entfernung zwischen zwei Knoten im verdrahteten Netzwerk hat. (Zumindest, weil mein richtiges Benchmarking dies zeigt.) Also werde ich alles zusammenfügen und bald mit meinem Modell kommen. Vielen Dank von all denen, die lesen, aufbessern, antworten und antworten werden.
Espanta

Die Verwendung von Glasfasern für die Telekommunikation (vorausgesetzt, das OP hat nicht nur mit Verzögerungen innerhalb eines Rechenzentrums zu tun, oder mit einer Konfiguration, bei der er die volle Kontrolle über die physische Infrastruktur hat) kann interessant werden und die Modellierung so gut wie unmöglich machen. Eine Anekdote, um das Problem hervorzuheben. Ich hatte einmal T-1 Louisville, KY <-> Lexington, KY und Louisville, KY <-> Cincinnati, OH scheitern. Rief die Telco an und sie informierten mich, dass ein Faser-Schnitt in West-Illinois schuld war. Schauen Sie sich eine Karte an und sehen Sie, warum das so verrückt ist. Verbindungen mit höherer Bandbreite sind jedoch seltener dieser Art von Telco-Wahnsinn zum Opfer gefallen.
Jeff McAdams

5

(Ich möchte darauf hinweisen, dass andere exzellente Antworten dazu gepostet haben, wie die Verzögerungen usw. funktionieren und was sie verursacht. Aber das OP fragte nach der Modellierung. Ein Grundmodell ist einfach und Sie geben einfach Beispielnummern ein. Wenn Sie wissen möchten, warum Die Verzögerungen sind, was sie sind, dann sehen Sie die Antworten aller anderen: ^)

Die Netzwerklatenz ist einfach die Laufzeit von einem Endpunkt zum anderen Endpunkt, die sich über N Hops erstreckt .

Sie haben also N Segmente (Sprünge) mit N-1 Zwischenknoten. Jeder Knoten hat eine Verzögerung (die kumulative Wirkung mehrerer Dinge auf diesen Knoten, wie Warteschlangenverzögerung, Verarbeitungsverzögerungen usw.), und jedes Segment hat eine Transitverzögerung. Insgesamt sind das 2N - 1 unabhängige Variablen. Also ist es seg1 + node1 + seg2 ... + node (N-1) + segN Ein Sprung ist nur = seg1, zwei Hoffnungen sind seg1 + node1 + seg2 usw.

Als nächstes müssen Sie definieren, was all diese Teile sind. Sie können also ein Modellnetz mit einem CATV-Netzwerk, einer Satellitenverbindung, einer Glasfaserverbindung, einem Ethernet usw. aufbauen. Für jede dieser Technologien müssen Sie Beispielinformationen nachschlagen.

Die Übertragungsverzögerungen entsprechen ungefähr der Datengröße geteilt durch die Übertragungsgeschwindigkeit des Segments. Wenn Sie ein genaueres Modell benötigen, müssen Sie die Flugzeit hinzufügen - ungefähr die Länge des Segments, geteilt durch die Geschwindigkeit des Datenflusses (ungefähr die Lichtgeschwindigkeit). Dies ist wichtig, wenn Sie eine Satellitenverbindung haben. Das Auf und Ab zum geosynchronen Satelliten ist signifikant.

Die Verzögerungen an jedem Knoten müssen Sie basierend auf der Ausrüstung, die Sie in Ihr Modell einfügen, abschätzen.

Wenn Sie die Anwendungslatenzzeit (z. B. die Verzögerung bis zum Beginn des Datenflusses einer FTP-Übertragung) festlegen möchten, ermitteln Sie, wie oft Ihre Netzwerklatenzzeit aktiv ist. Zum Beispiel erhöht ein 3-Wege-TCP-Handshake die Netzwerklatenz um das Dreifache und baut so das auf, was die Anwendung sieht.


3

Sie können die Round-Trip-Latenz abschätzen, indem Sie auf beiden Seiten eine Paketerfassung durchführen und dann die Verzögerung zwischen den vom überwachten Computer ausgehenden Anforderungen und den zurückkommenden Antworten messen. Wenn Sie beispielsweise die Zeit markieren, zu der ein SYN-Signal an den Remote-Computer gesendet wurde, und dann die Zeit markieren, zu der die SYN + ACK-Antwort einging, ergibt der Unterschied einen ziemlich guten Überblick über die TCP-Latenz auf der Hin- und Rückfahrt.

Denken Sie daran, dass dies größer ist als die tatsächliche Netzwerklatenz und wie viel größer ist, hängt davon ab, wie stark eine der beiden Maschinen ausgelastet ist.


Vielen Dank für Ihre Antwort, aber ich möchte sie nicht mit einer Kodierung oder Interpretation der Maschine messen. Ich muss sie mit einem mathematischen Modell formulieren. Zum Beispiel so etwas wie: Gesamtverzögerung = Gesamtausbreitung + Gesamtübertragung + Gesamtspeicherung und -weiterleitung + Gesamtverarbeitung. Und für jedes dieser Timings kann ich eine andere Formel haben. Es kann also mathematisch gemessen werden.
Espanta

3

Die Verzögerung zwischen zwei Hosts hängt von mehreren Faktoren ab:

  • Ausbreitungsverzögerung
  • Serialisierungsverzögerung
  • Warte- / Pufferungsverzögerung

Die Ausbreitungsverzögerung gibt an, wie lange es physisch dauert, bis die Pakete zwischen zwei Standorten übertragen werden. Die Lichtgeschwindigkeit in der Faser beträgt ungefähr 200000 km / s. Schweden, in dem ich lebe, ist ungefähr 1570 km entfernt, das wären 7,85 ms, aber in Wirklichkeit ist es mehr, weil dies die Entfernung über die Vogelperspektive ist.

Die Serialisierungsverzögerung gibt an, wie viel Zeit für die Seralisierung des Pakets über das physische Medium, dh die Schnittstellen auf dem Netzwerkgerät, erforderlich ist. Wenn Sie eine 2-Mbit-Verbindung haben und ein 1500-Byte-Paket senden, wären dies 6 ms, um das Paket zu serialisieren (12000/2000000).

Die Warte- / Pufferungsverzögerung gibt an, wie lange das Paket in einer Warteschlange / einem Puffer verbleiben muss, bevor es an die Schnittstelle gesendet wird. Abhängig von der Geschwindigkeit der Schnittstelle und der Größe der verwendeten Puffer kann dies entweder nichts oder eine erhebliche Verzögerung sein.

Dann würde es eine gewisse Verzögerung auf den Hosts geben, um die Pakete zu generieren und damit die Anwendung sie handhaben kann. Es gibt Anwendungen zum Messen der HTTP-Verzögerung. Die Leute akzeptieren keine großen Verzögerungen auf Websites, bevor sie sie aufgeben, daher ist dies ein wichtiger Faktor.


Was ist mit der Anzahl der Hopfen? und Verzögerungen bei jedem Sprung?
Espanta

Es ist schwierig, eine allgemeine Formel zu erstellen, da einige Faktoren wie Serialisierung und Warteschlangen variieren. Hier ist jemand, der darüber geschrieben hat. ccieflyer.com/pdf/2009-Mar-Oleg-Berzin.pdf - Die Mathematik übersteigt meine mathematischen Fähigkeiten :)
Daniel Dib
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.