Wie häufig werden Pakete in der Kommunikation innerhalb eines Rechenzentrums verworfen?

10

Angenommen, ich habe zwei Computer im selben Rechenzentrum, aber nicht unbedingt im selben Rack.

Wie häufig würden verworfene Pakete beim Senden mit UDP zwischen diesen beiden Computern auftreten?

Ich bin unter der Annahme , dass zu fragen , da es nur wenige Schalter höchstens zwischen den Maschinen sind , dass die Pakete werden nicht gelöscht werden , überhaupt .

Wie häufig kommt das Eintreffen von Paketen außerhalb der Reihenfolge im selben Rechenzentrum vor? Ich gehe davon aus, dass es in 99,9% der Fälle nur eine Route gibt, sodass dies nicht passieren kann.

Immer wenn ich mich dabei ertappe, absolut zu denken, weiß ich, dass mir etwas fehlen muss!

Welche Hintergrundinformationen benötige ich, um besser zu verstehen, wann verworfene Pakete zu erwarten sind und wie oft sie möglicherweise verworfen werden und für Maschinen im selben Rechenzentrum außer Betrieb sind?

Letztendlich versuche ich mich für die Verwendung von Multicast-UDP oder PGM bei der Kommunikation zwischen verschiedenen Linode VPS-Instanzen im selben Rechenzentrum zu entscheiden. Die Informationen müssen ankommen und in Ordnung sein. Klar, UDP klingt dann nicht so toll!

Wenn man jedoch eine nahezu perfekte oder perfekte Lieferung im selben Rechenzentrum erwarten kann, ist dies in Ordnung. Aber ich teste diese Annahme.

Vielen Dank.

z8000
quelle

Antworten:

11

Sie können sich nicht darauf verlassen, dass UDP Pakete in der richtigen Reihenfolge übermittelt, da die Spezifikation diese Garantien nicht bietet. Selbst wenn die idealste Situation angenommen wird, ein einzelnes Stück Ethernet-Kabel zwischen zwei Hosts, gibt es immer noch die Frage des Betriebssystems, des Netzwerkstapels, des NIC-Treibers und der libc-Implementierung, gegen die Sie schreiben.

Bei jedem Schritt in dieser Kette haben die Verfasser dieses Codes entschieden , die Bestellung von UDP-Paketen NICHT zu priorisieren, selbst wenn sie ankommen, aus dem einfachen Grund, dass sie dies nicht müssen.

Ein erfundenes Beispiel könnte die Datenstruktur sein, in die eingehende Pakete eingelesen werden, die ein Ringpuffer sein könnte. Pakete, die in der richtigen Reihenfolge ankommen, werden in der richtigen Reihenfolge in den Ringpuffer gestellt, aber es kann für den Treiberschreiber einfacher sein, sie in der Speicherreihenfolge auf die oberen Schichten des Netzwerkcodes zu übertragen , wodurch ihre Reihenfolge zufällig festgelegt wird.

Unter Berücksichtigung Ihrer Situation ist eine virtuelle Maschine, die auf einer gemeinsam genutzten Infrastruktur ausgeführt wird, die für das Volumen und nicht für die Leistung ausgeführt wird, gering. Die Wahrscheinlichkeit, die Reihenfolge vorherzusagen, in der UDP-Pakete empfangen werden, ist gering.

Kurz gesagt, wenn die Spezifikation besagt, dass Sie sich nicht auf die Bestellung von UDP-Paketen verlassen können. Sie können sich nicht darauf verlassen, und Sie können nicht versuchen, die Umgebung zu optimieren, um eine stärkere Garantie als die jemals versprochene Spezifikation zu geben.

Dave Cheney
quelle
Dies ist, was ich dachte, ich sollte denken. Danke, dass du es ziemlich gut ausgedrückt hast!
z8000
1
Wenn Sie zuverlässiges Multicasting wünschen, möglicherweise zum Streamen, besuchen Sie en.wikipedia.org/wiki/Real-time_Transport_Protocol
Dave Cheney
0

Wenn jemand experimentieren möchte, verwenden Sie einfach Wireshark. Wenn sich jemand wirklich mit langsamer Konnektivität oder verworfenen Paketen befasst, spiegeln wir einfach einen Port an einem Switch, verbinden einen Laptop mit Wireshark und werfen einen Blick darauf.

Webs
quelle
FWIW bei Linode kann eine VPS-Instanz nicht in den Promiscuous-Modus wechseln.
z8000
Sie sollten in der Lage sein, Wireshark entweder lokal auf einem Computer zu installieren, um eingehende Daten zu erfassen, oder einfach den Port eines Switch zu spiegeln und Daten auf diese Weise zu erfassen. Das Spiegeln von Ports würde schwieriger werden, wenn dies für virtuelle Systeme durchgeführt wird, die möglicherweise einige Ports gemeinsam nutzen. Aber Wireshark kann nach bestimmten Elementen wie IPs filtern, und ich denke, Hostnamen.
Webs
0

Nahezu jeder Switch führt zu einer jederzeitigen Neuordnung von zwei Paketen und wird von vielen Netzwerkprotokollen wie PGM berücksichtigt.

Zu berücksichtigen ist, dass die meisten Rechenzentren Datagramme und Multicast blockieren, um den Overhead ihrer Netzwerkinfrastruktur zu vereinfachen und zu reduzieren.

Das IP / PGM-Protokoll selbst muss nur verwendet werden, wenn Sie PGM Router Assist aktiviert haben und Netzwerkelemente zwischen Server und Clients kennen. Andernfalls bleiben Sie bei PGM, das in UDP gekapselt ist, und sparen Sie die Verwaltung von Anwendungsberechtigungen.

Wenn Sie eine Messaging-Schicht wie ØMQ verwenden, können Sie die Auswahl des IP / PGM-, UDP / PGM- oder TCP-Overlay-Netzwerks auf Bereitstellung und Integration verschieben.

Steve-o
quelle
-2

Ich habe eine einfache .net-Multicast-Anwendung geschrieben, mit der verworfene Pakete unter einem bestimmten Druck gemessen werden können.

Sie können es hier herunterladen: SimpleMulticastAnalyzer .

Genießen.

Eran Betzalel
quelle