Wie genau kommt es zu einer Ethernet-Kollision im Kabel, da Knoten unterschiedliche Stromkreise für Tx und Rx verwenden?


13

Ich versuche zu verstehen, wie eine Kollision im Ethernet auftritt, insbesondere wenn eine Duplex-Nichtübereinstimmung vorliegt oder wenn in einem älteren Ethernet-Netzwerk zwei Knoten gleichzeitig senden.

Jeder erklärt die Kollision auf einer höheren Ebene (zwei Frames kollidieren, wenn der eine gesendet und der andere empfangen wird). Die folgende Grafik zeigt jedoch, dass es für Rx und Tx unterschiedliche Schaltkreise gibt. Wie kann eine Kollision auftreten, da es dedizierte Schaltkreise zum Senden und Empfangen von Frames gibt?

Für das Senden und Empfangen werden unterschiedliche Schaltkreise verwendet

EDIT : Vielleicht verursacht das Label "Hub MDI-X" einige Verwirrung in Bezug auf den Punkt meiner Frage. Ich frage nicht, wie die Funktionalität eines Hubs eine Kollision verursachen kann. Mein Fokus liegt auf der Kommunikation zwischen zwei Knoten mit MDI- oder MDI-X-Schnittstellen (Hub und Switches verfügen über MDI-X-Schnittstellen). Wie kann in einem dieser beiden Fälle eine Kollision zwischen zwei Knoten auftreten, wenn diese eine Duplex-Fehlanpassung aufweisen, während in einer Duplex-Fehlanpassung Rx und Tx noch ihre eigenen Schaltkreise haben?


Bitte beachten Sie, dass 10Base2 oder 10Base5 dasselbe Medium, z. B. dasselbe Kabel, gemeinsam nutzen.
Patrick Terlisten

Ich habe immer noch die gleiche Frage bezüglich 100base-tx, falls wir eine Duplex-Fehlanpassung haben und der Knoten A Halbduplex und der Knoten B Vollduplex ist. Angenommen, Knoten A hat eine MDI-Schnittstelle und Knoten B eine MDI-X-Schnittstelle. Knoten B sendet von den Pins 3 und 4 und Knoten B empfängt nur von 3 und 4. Wie kann eine Kollision in Knoten A auftreten, da er nur von diesen Pins empfängt?
Christos Dalamagkas

6
Die Kollision findet in L1 statt, nicht in L2 - es sind die Bits / Träger, die kollidieren. Zwei Sender kollidieren, wenn sie versuchen, gleichzeitig (fast) zu senden.
Zac67

Antworten:


11

Um dies zu verstehen, müssen Sie den historischen Kontext verstehen.

Ursprünglich verwendete Ethernet ein gemeinsames Koaxialkabel. Es konnte immer nur ein Gerät erfolgreich senden. Wenn zwei Geräte gleichzeitig übertragen wurden, wurde dies als Kollision gewertet.

Dann kamen Repeater, um die Entfernung zu vergrößern und die Anzahl der Knoten zu erhöhen. Ein Repeater würde erkennen, welcher Port sendet, und dieses Signal an den anderen Ports wiederholen. Damit die Kollisionserkennung funktioniert, mussten Repeater über einige Funktionen verfügen, um sicherzustellen, dass alle Knoten eine Kollision erkannt haben. Die ersten Repeater hatten nur zwei Ports, aber spätere Repeater konnten mehrere Ports haben und diese wurden als Hubs bekannt, insbesondere wenn sie in Verbindung mit Twisted-Pair-Kabeln verwendet wurden. Repeater waren ziemlich blöde Geräte, sie würden die elektrischen Signale aber kaum mehr regenerieren.

Dann kam 10BASE-T, das, wie Sie bemerkt haben, dedizierte Datenkanäle für jede Richtung hat. Trotzdem musste es immer noch in das vorhandene Modell passen, sodass es standardmäßig im "Halbduplex" -Modus arbeitete und ein Koaxialkabel emulierte. Tatsächlich kollidierten die Signale nicht auf der Leitung, aber die Transceiver verhielten sich so, als ob sie dies taten, und die Repeater unternahmen dieselben Schritte wie zuvor, um sicherzustellen, dass dies im gesamten Netzwerk beobachtet wurde.

Twisted Pair Ethernet kann auch einen "Vollduplex" -Modus unterstützen. In diesem Modus ist die gesamte kollisionsbezogene Hardware deaktiviert und beide Enden können jederzeit senden. Dieser Modus brachte jedoch einige große Nachteile mit sich.

  • Es war nicht kompatibel mit Repeater-Hubs. Ohne die Kollisionserkennungsmechanismen hätten Hubs keine Möglichkeit, zwei Geräte gleichzeitig zu senden.
  • Wenn beide Enden einer Verbindung für den gleichen Duplexmodus eingerichtet werden sollen, werden schlechte Dinge passieren, wenn dies nicht der Fall ist.

Diese Probleme führten dazu, dass 10BASE-T-Systeme in der Praxis fast immer im Halbduplexmodus betrieben wurden.

Bei 100BASE-TX hat sich die Situation dramatisch verbessert. Ethernet-Switches (technisch schnelle Multiport-Bridges) wurden so teuer, dass dumme Repeater-Hubs wegfallen konnten. Durch die automatische Aushandlung konnten Netzwerkkarten Vollduplex-Verbindungen ohne fehleranfällige manuelle Konfiguration herstellen. Wenn Sie zwei 100BASE-TX-NICs mit einem Crossover-Kabel verbinden oder eine 100BASE-TX-NIC an einen Switch anschließen und keine Schritte unternehmen, um Dinge manuell zu überschreiben, wird mit ziemlicher Sicherheit der Vollduplex-Modus ausgehandelt.

1000BASE-T hat theoretisch einen Halbduplex-Modus, der von einigen NICs unterstützt wird, und es gab eine Spezifikation für Gigabit-Multiport-Repeater, aber ich habe nie Hinweise darauf gesehen, dass jemals jemand einen verkauft hat. In der Praxis wird eine Gigabit-Verbindung mit ziemlicher Sicherheit im Vollduplexmodus ausgeführt.

Schnellere Geschwindigkeiten haben den Halbduplex-Modus vollständig aufgegeben.


Und dann kam Wireless Ethernet und Medienkollisionen wurden wieder zur Sache.
OrangeDog

@OrangeDog, wenn Sie Wi-Fi (IEEE 802.11) meinen, dann ist das kein drahtloses Ethernet (IEEE 802.3). Es ist ein völlig anderes Protokoll, das verschiedene Frames hat und CSMA / CA anstelle von CSMA / CD verwendet. Die beiden Protokolle sind sehr unterschiedlich, während das Ethernet auf den verschiedenen unterstützten Medien grundsätzlich identisch ist.
Ron Maupin

14

Ein Hub ist eigentlich nur ein Stromkabel, das jedes an einer Schnittstelle empfangene Signal mit allen anderen Schnittstellen wiederholt. Wenn zwei Geräte gleichzeitig zum Empfang der Hub-Schnittstellen senden, wiederholt der Hub beide Signale gleichzeitig zum Senden aller anderen Hub-Schnittstellen, und beide empfangenen Signale kollidieren somit beim Senden der anderen Schnittstellen Sie haben eine Kollision, bei der alle anderen Schnittstellen Müllsignale haben, da es sich um zwei Signale gleichzeitig handelt. Die Hosts, die gleichzeitig senden und ein anderes Signal hören, stellen fest, dass mehrere gleichzeitig senden, und stellen fest, dass eine Kollision vorliegt.

Stellen Sie sich das so vor, dass der Empfang jeder Hub-Schnittstelle mit dem Senden jeder anderen Schnittstelle verbunden ist. Innerhalb des Hubs sind Senden und Empfangen verbunden, auch wenn sie an der Schnittstelle getrennt sind.

Vergleichen Sie dies mit einem Switch, bei dem jede Verbindung an der Switch-Schnittstelle abgeschlossen ist und der Switch die Schnittstellen nicht miteinander verdrahtet hat. Stattdessen verfügt der Switch über eine Logik (normalerweise in die Hardware eingebettet), die festlegt, wohin Frames gesendet werden sollen, die er an einer Schnittstelle empfängt, und um Kollisionen im Switch zu vermeiden.

Ein Switch ist eine Brücke mit hoher Dichte. Die ursprünglichen Bridges waren wie PCs mit mehreren Schnittstellen. Sie würden von einem PC mit mehreren Schnittstellen keine Kollisionen erwarten, wenn er auf mehreren Schnittstellen gleichzeitig Frames empfangen würde.


Bearbeiten:

Ihre Kommentare lassen mich glauben, dass Sie immer noch nicht verstehen, was ich oben über Hubs geschrieben habe.

Die Art und Weise, wie Kollisionen bei Verwendung von UTP erkannt werden und ein Hub von den sendenden Geräten während des Sendens ein anderes Signal empfängt. Wenn ein Gerät, das UTP verwendet, für Halbduplex konfiguriert ist, glaubt es, dass eine Kollision vorliegt, wenn es beim Senden ein Signal hört.

Wenn Sie eine Duplex-Nichtübereinstimmung haben, sendet das für Vollduplex konfigurierte Gerät problemlos, während es von dem für Halbduplex konfigurierten Gerät empfängt. Andererseits glaubt das für Halbduplex konfigurierte Gerät, dass beim Senden eine Kollision vorliegt, und hört dieses Signal von dem für Vollduplex konfigurierten Gerät. Dies verursacht alle Arten von Problemen, da das für Halbduplex konfigurierte Gerät den Frame nicht mehr sendet (was zu einem Runt führt) und ein Störsignal sendet, das das für Vollduplex konfigurierte Gerät nicht erwartet. Das für Vollduplex konfigurierte Gerät hört dann auf, seinen Frame zu senden.


3
Das ist die wahre Antwort. OP ignoriert alle Fälle mit Ausnahme von nur zwei Endpunkten mit einem gekreuzten Kabel (oder in einer modernen Umgebung mit einem beliebigen Kabel).
R .. GitHub STOP HELPING ICE

@R .., die Zeichnung in der Frage zeigt einen Hub, also habe ich für eine Hub-Verbindung geantwortet.
Ron Maupin

In dieser Antwort wird erläutert, wie die Kollision auftritt, wenn Sie einen Hub in der Topologie haben. Obwohl eine späte Kollision auftreten kann, wenn zwei Knoten vorhanden sind (z. B. ein Switch und ein PC), ist der eine Halbduplex und der andere Vollduplex. Warum kommt es in diesem Fall zu einer Kollision, obwohl es getrennte Schaltkreise für Tx und Rx gibt, wie in der Grafik meiner Frage gezeigt?
Christos Dalamagkas

Scheint, dass das Label "Hub MDI-X" in Bezug auf den Punkt meiner Frage einige Verwirrung stiftete. Ich habe entsprechend bearbeitet.
Christos Dalamagkas

3
Denn der mit Halbduplex deklariert eine Kollision, wenn er beim Senden etwas hört. Siehe obige Antwort. Wenn ein für Halbduplex konfiguriertes Gerät beim Senden ein anderes Signal hört, muss davon ausgegangen werden, dass eine Kollision vorliegt, da davon ausgegangen wird, dass es sich um Halbduplex handelt und jeweils nur ein Gerät senden kann.
Ron Maupin

8

Gute Frage.

Im Vollduplex-Modus gibt es einen dedizierten Kanal für den Verkehr von "links nach rechts" und einen dedizierten Kanal für den Verkehr von "rechts nach links":

Eigener Kanal

Daher sind Kollisionen im Vollduplexmodus nicht möglich - auch wenn beide Netzwerkkarten gleichzeitig senden.

Im Halbduplex-Modus wird für den Datenverkehr in beide Richtungen jeweils nur eine Richtung verwendet. Während es also physisch noch dedizierte Kanäle gibt, protokolliert eine Netzwerkkarte, die während der Übertragung etwas empfängt, dies als Kollision. Die Bits / Signale "kollidieren" nicht auf der Leitung - ein Kollisionszähler wird einfach inkrementiert, wenn die Netzwerkkarte gleichzeitig empfängt und sendet.


4
Die Signale kollidieren auf dem Draht, auch bei Twisted Pair. Bei drei Endknoten würden zwei gleichzeitige Signale auf dem dritten Knoten kollidieren.
Zac67

4
" Die Bits / Signale" kollidieren "nicht auf der Leitung " In einem Hub, wie in der Zeichnung in der Frage, kollidieren die Bits tatsächlich auf der Leitung und erzeugen ein Müllsignal. Die Hosts, die gleichzeitig senden und ein anderes Signal hören, senden dann ein Störsignal an alle anderen Schnittstellen des Hubs.
Ron Maupin

@ RonMaupin Sie haben natürlich Recht - ich bezog mich auf das, was passieren würde, wenn der Repeater die Kollision nicht erkennen / darauf reagieren würde.
Zac67

1
@ Zac67, ich habe nicht für dich kommentiert, du und ich haben das Gleiche im Grunde zur selben Zeit gesagt.
Ron Maupin

@ Zac67 / RonMaupin Das OP hat die Frage bearbeitet und bestätigt, dass keine Fragen zum Fall von Hubs gestellt werden.
Eddie

6

Mit Twisted Pair und einem Repeater-Hub ist der Hub nicht viel mehr als ein digitaler Verstärker. Dazu erkennt er einen Träger anhand eines ankommenden Signals an einem Port und schaltet alle anderen Ports in den Ausgangsmodus. In diesem Ausgabemodus ist jeder zusätzliche eingehende Träger eine Kollision. Dies löst ein Stausignal aus, um die Kollision weiterzuleiten und den Sender aufhören zu lassen, zu senden.

Diese Wiederholungsmethode ahmt das Verhalten der vorherigen Ethernet-Varianten mit gemeinsam genutzten Medien (10BASE5 und 10BASE2) nach, bei denen der Repeater nur als physische Segmentverbindungen oder Line Extender verwendet wurde. Natürlich haben Sie Recht: Twisted Pair ist ein Vollduplex-Medium auf Kabelebene, bei dem eine Kollision nur auf der oberen physischen Ebene und nicht auf dem Kabel selbst auftritt.

Ein Repeater kann nicht mehr als einen Absender gleichzeitig zulassen. Mehrere gleichzeitige Übertragungen würden sich an den Ausgangsanschlüssen mischen und unverständliches Rauschen erzeugen. Ebenso geht jeder Knoten im Halbduplexmodus von einem gemeinsam genutzten Medium aus, das nicht in der Lage ist, Vollduplex zu übertragen. Jeder Träger, der während des Sendens erfasst wird, ist eine Kollision, die dazu führt, dass sich der Absender zurückzieht. Es spielt keine Rolle, ob das Medium vollduplexfähig ist (Glasfaser, Twisted Pair) oder nicht (Koax).

Bei einer Duplexfehlanpassung befindet sich ein Verbindungsende im Halbduplexmodus und das andere im Vollduplexmodus. Wenn nun die Halbduplex-Seite (HDX) sendet, bewirkt jeder Träger auf seinem Empfänger, dass eine Kollision erkannt wird. Die Vollduplex-Seite (FDX-Seite) sendet möglicherweise problemlos, während sie von der HDX-Seite empfängt, und nimmt die Kollisionen, die sie auf der Gegenseite verursacht, nicht wahr. Die HDX-Seite muss die Übertragung abbrechen und ein Stausignal senden. Da die FDX-Seite die angebliche Kollision nicht erkennen kann, erkennt sie einen partiellen und daher beschädigten Frame.

Niedrigfrequente und kleine Frames haben eine vernünftige Chance, diese Duplexfehlanpassung zu überwinden, sodass pingsie tatsächlich funktionieren könnten. Sobald jedoch eine ernsthafte Übertragung in Gang gesetzt werden soll, werden die Übertragungen aufgrund der höheren Frame-Frequenz und der größeren Größe sehr zuverlässig ausfallen.

Bei nicht verwalteten Switches kann eine Duplex-Nichtübereinstimmung sehr schwer zu erkennen sein, insbesondere wenn nicht einmal die Host-NICs ihren Duplex-Modus ordnungsgemäß melden.

Bei verwalteten Switches verfügen Sie normalerweise über Portfehlerzähler. Zunehmende Kollisionen auf der einen Seite (HDX) und zunehmende Runts und FCS-Fehler auf der anderen Seite (FDX) sind sehr starke Anzeichen für eine Duplex-Fehlanpassung.

Grundsätzlich empfiehlt es sich, sich auf die automatische Aushandlung zu verlassen, um Duplex-Fehlanpassungen zu vermeiden. Die manuelle Konfiguration der Geschwindigkeit und des Duplexmodus kann zu Abweichungen führen, insbesondere wenn Geräte einige Jahre später ausgetauscht werden. Glücklicherweise ging das gesamte Halbduplex-Schema mit Gigabit Ethernet und schneller verloren.


3

Angenommen, Maschine A beginnt, Daten an Maschine B zu senden. Wenn das Paket zu senden beginnt, beginnt Maschine C, andere Daten an Maschine B zu senden. Es gibt nur einen Signalpfad zu Maschine B, sodass die Übertragungen von A und C kollidieren und B möglicherweise nicht kollidieren können Erhalte beide.

Die Tatsache, dass für Übertragungen von Maschine B zu Maschine A und zu Maschine C eine andere Schaltung verwendet wird, hilft nicht. Alles, was passiert, ist, dass A und C gleichzeitig versuchen, an Maschine B zu senden, und dass es nur einen Signalpfad zu Maschine B gibt.

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.