Was passiert, wenn zwei Computer gleichzeitig auf einen dritten Computer in einem Vollduplex-Switch übertragen?


14

Stellen Sie sich das folgende Szenario vor:

Ich habe 2 PCs (PC1 und PC2), die gleichzeitig in einem Vollduplex-Ethernet-Switch an PC3 übertragen möchten. Angenommen, alle Ports befinden sich im selben VLAN. Was passiert also intern im Switch? Wer überträgt zuerst auf PC3?

Ich habe zuvor gelesen, dass CSMA / CD verwendet wurde, aber nur in früheren Ethernet-Versionen, die im Halbduplex-Modus betrieben wurden, und jeder Port des Switches eine Kollisionsdomäne war und wenn 2 Computer gleichzeitig zu übertragen versuchten, eine Der Algorithmus wurde ausgeführt, um jedem Computer eine zufällige Zeit zu geben, um das Kollisionsproblem zu übertragen und zu lösen. In einem Vollduplex-Switch habe ich jedoch gelesen, dass die Möglichkeit einer Kollision ausgeschlossen ist. Was passiert also intern im Switch, wenn 2 PCs gleichzeitig versuchen zu senden? Führt der Switch einen Algorithmus aus, um zu bestimmen, wer zuerst sendet?

Antworten:


14

Der Switch lädt die eingehenden Datenrahmen von den beiden sendenden Systemen vollständig in seine Puffer. Ich bin nicht sicher, wie es bestimmt, welcher Frame zuerst in der Warteschlange für die nachfolgende Weiterleitung sein würde; aber es basiert wahrscheinlich auf der anfänglichen Empfangszeit des Beginns des Rahmens. Dann durchläuft der Switch die Sendepuffer-Warteschlange und sendet die Frames einzeln an den Zielport / das Zielsegment.

Es gibt kein Problem damit, dass Frames "ineinander laufen". Das eigentliche Problem ist, dass der ultimative Port / Segment die Frames schnell genug akzeptieren kann. (Und natürlich kann der Switch seine Puffer / Warteschlangen schnell genug verarbeiten.)


9
Ja, es wird durchgeschnitten und fragmentfrei geschaltet. Wird hauptsächlich in Hochgeschwindigkeits-Handelsumgebungen verwendet. Cut through beginnt mit der Übertragung, sobald DST MAC bekannt ist. Fragment frei Vergewissern Sie sich, dass der Frame kein Kollisionsfragment ist, sodass er vor der Übertragung 64 Byte empfangen muss.
Daniel Dib

2
Ja, ich denke, das würde von manchen als Cut-Through-Weiterleitung bezeichnet werden, im Gegensatz zu Store-and-Forward. Bei einem Cut-Through-Ansatz könnte ein Switch mit der Weiterleitung beginnen, sobald er den Ziel-MAC empfangen und nachgeschlagen hat. Es gibt jedoch hybride Ansätze, bei denen der Switch nur ein wenig länger wartet, z. B. um eine IP-Adresse zur Überprüfung einer ausgehenden ACL anzeigen zu können . (Das Feld Ethertyp gibt an, ob im Frame eine IP-Adresse vorhanden ist.)
Gerben,

1
^^^ Das. Deshalb rockt NE.
Craig Constantine

4
Da es niemand erwähnte, ist der Nachteil des Durchschneidens der seltsame Fall des Rahmenfehlers. Während das Durchschneiden die Latenz auf dem anfänglichen Frame geringfügig verringert (je größer der Frame, desto stärker wirkt sich dies aus), leitet es den Frame weiter, unabhängig davon, ob der Frame gültig ist, da es dies tut, ohne den vollständigen Frame zu empfangen und in der Lage zu sein, das FCS zu verifizieren . Speicher- und Weiterleitungsschalter empfangen den vollständigen Frame und können den FCS vor der Weiterleitung überprüfen, sodass sie ungültige Frames löschen können.
YLearn

2
Die meisten Switches sind nur für den Handel und die Weitergabe gedacht, da sie vor einigen Jahren zurückgekehrt sind, da sie leicht an die Finanzwelt verkauft werden können. Das Speichern und Weiterleiten auf 10G verursacht eine Latenz von 1,2us, dh 235m. Auch Ein- und Ausstieg können beim Durchschneiden nicht unterschiedlich schnell sein.
Ytti

6

Sehr interessante Frage, die leider keine einzige richtige Antwort hat, da die genaue Lösung von Hardware zu Hardware variiert.

Dieses Problem wird jedoch in Computernetzwerke - ein Systemgerät auf Seite 231-232 explizit erläutert .

Der Kern der Lösung für das Design mit dem Namen "Sunshine Switch" besteht darin, dass Sie Diagrammeingabe - Batcher - Trap - Selector == Banyan === Ausgänge haben und eine Verzögerungsbox vorhanden ist, die den Selector mit dem Batcher verbindet. Und ich zitiere:

Wenn mehr als 1 (ed. Größe von Banyan) -Paketen für eine einzelne Ausgabe im selben Zyklus bestimmt sind, werden sie durch die Verzögerungsbox zurückgeführt und im nächsten Zyklus erneut an den Switch gesendet.

Und weiter:

Das Trap-Netzwerk identifiziert die Pakete, die den Switch über die Banyans verlassen können (bis zu 1 davon pro Ausgangsport) und markiert den Rest für die Umwälzung.


3

Es wird immer EINIGE Unterschiede geben, wenn die beiden Computer an den dritten senden, es sei denn, Sie tun etwas Besonderes am Switch, der auf FIFO-Basis übertragen wird, sodass derjenige Frame, der zuerst eintrifft, zuerst übertragen wird.


1
Da sich der PC [23] auf eigenen Kabeln befindet, gibt es nichts, was ein genaues Eintreffen des Frames zur selben Zeit verhindert. Ich denke, es liegt am Switch-ASIC-Designer, was zu entscheiden ist in diesem Fall zu tun, aber ich würde vermuten, dass es Frames der Ports in Round-Robin-Mode lesen wird.
Ytti

2
Gut, ich meinte eher, dass die Wahrscheinlichkeit, dass zwei Frames genau zur selben Zeit eintreffen , ziemlich gering war. Wie Sie bereits erwähnt haben, wird es wahrscheinlich am ASIC-Design liegen, und ich bin mir ziemlich sicher, dass es nirgendwo dokumentiert wird, wenn Sie nicht mit Ihrem Account-Team durch eine Reihe von Ringen springen.
David Rothera

Wer zuerst unterbricht, gewinnt, wenn alle anderen gleich sind.
Generalnetworkerror

0

Schaltet ein Paket nach dem anderen weiter, wenn sie den Switch betreten, sodass keine Kollisionen auftreten. Dann verarbeitet PC3 Pakete von PC1 und PC2, wobei die CPU-Zeit geteilt wird. Durch Fensterung und Pufferung wird der Kommunikationsfluss gesteuert.

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.