Come si verifica esattamente una collisione Ethernet nel cavo, poiché i nodi utilizzano circuiti diversi per Tx e Rx?


13

Sto cercando di capire come si verifica una collisione in Ethernet, specialmente quando esiste una mancata corrispondenza duplex o quando su una rete Ethernet legacy trasmettono due nodi contemporaneamente.

Tutti spiegano la collisione al livello superiore (due frame si scontrano quando uno viene inviato e l'altro viene ricevuto). Tuttavia, il grafico seguente mostra che ci sono circuiti diversi per Rx e Tx. Come può verificarsi una collisione in quanto esistono circuiti dedicati per l'invio e la ricezione di frame?

Diversi circuiti vengono utilizzati per la trasmissione e la ricezione

EDIT : Forse l'etichetta "Hub MDI-X" può creare confusione riguardo al punto della mia domanda. Non sto chiedendo come la funzionalità di un hub possa causare una collisione. Il mio focus è sulla comunicazione tra due nodi con interfacce MDI o MDI-X (hub e switch hanno interfacce MDI-X). In uno di questi due casi, come può verificarsi una collisione tra due nodi in caso di disadattamento duplex, mentre in disadattamento duplex Rx e Tx hanno ancora i loro circuiti dedicati?


Si noti che 10Base2 o 10Base5 condividevano lo stesso supporto, ad esempio lo stesso cavo.
Patrick Terlisten,

Ho ancora la stessa domanda riguardo a 100base-tx, nel caso in cui abbiamo una mancata corrispondenza duplex e il nodo A è half duplex e nodeB full duplex. Supponiamo che nodeA abbia un'interfaccia MDI e nodeB una MDI-X. Il nodo B trasmette dai pin 3 e 4 e il nodo B riceve solo dai 3 e 4. Come può verificarsi una collisione nel nodo A poiché riceve solo da questi pin?
Christos Dalamagkas,

6
La collisione avviene in L1, non in L2: sono i bit / portatori che si scontrano. Due mittenti si scontrano quando provano a inviare (vicino) contemporaneamente.
Zac67

Risposte:


11

Per capirlo devi capire il contesto storico.

Inizialmente Ethernet utilizzava un cavo coassiale condiviso. Solo un dispositivo può trasmettere correttamente su questo alla volta. Se due dispositivi sono stati trasmessi contemporaneamente è stato considerato una collisione.

Quindi sono arrivati ​​i ripetitori, per estendere la distanza e aumentare il numero di nodi. Un ripetitore rileverà quale porta sta trasmettendo, quindi ripeterebbe quel segnale sulle altre porte. Per mantenere funzionante il rilevamento delle collisioni, i ripetitori dovevano disporre di alcune funzionalità per garantire che tutti i nodi rilevassero una collisione. I primi ripetitori avevano solo due porte, ma in seguito i ripetitori potevano avere più porte e questi venivano conosciuti come hub, specialmente se usati in combinazione con cavi a doppino intrecciato. I ripetitori erano dispositivi piuttosto stupidi, avrebbero rigenerato i segnali elettrici ma poco di più.

Quindi è arrivato 10BASE-T, che come hai notato ha canali dati dedicati per ogni direzione. Tuttavia doveva ancora adattarsi al modello esistente, quindi per impostazione predefinita funzionava in modalità "half-duplex" dove emulava un cavo coassiale. I segnali non si sono infatti scontrati sul filo, ma i ricetrasmettitori si sono comportati come se lo fossero stati e i ripetitori avrebbero preso le stesse misure di prima per assicurarsi che ciò fosse visibile attraverso la rete.

Ethernet a doppino intrecciato può anche supportare una modalità "full duplex". In questa modalità tutto l'hardware relativo alla collisione è disabilitato ed entrambe le estremità possono trasmettere in qualsiasi momento. Tuttavia, questa modalità ha comportato alcuni aspetti negativi.

  • Era incompatibile con gli hub ripetitori. Senza i meccanismi di rilevamento delle collisioni, gli hub non avrebbero modo di gestire due dispositivi che trasmettono contemporaneamente.
  • Entrambe le estremità di un collegamento devono essere impostate per la stessa modalità duplex, se non lo sono, accadranno cose brutte.

Questi problemi significavano che nella pratica i sistemi 10BASE-T operavano quasi sempre in modalità half-duplex.

Per 100BASE-TX la situazione è notevolmente migliorata. Gli switch Ethernet (ponti multi-porta tecnicamente veloci) sono scesi di prezzo al punto da poter eliminare gli hub stupidi ripetitori. La negoziazione automatica ha consentito alle schede di rete di stabilire connessioni full duplex senza configurazione manuale soggetta a errori. Se si collegano due schede NIC 100BASE-TX insieme a un cavo crossover o si collega una scheda NIC 100BASE-TX a uno switch e non si adottano misure per sovrascrivere manualmente le cose, quasi sicuramente verranno negoziate la modalità full-duplex.

1000BASE-T ha teoricamente una modalità half-duplex che alcuni NIC sostengono di supportare e che c'era una specifica per i ripetitori multiporta gigabit, ma non ho mai visto alcuna prova che qualcuno ne abbia mai venduto uno. In pratica un collegamento gigabit sarà quasi certamente eseguito in modalità full duplex.

Velocità più elevate hanno abbandonato completamente la modalità half-duplex.


E poi è arrivata la Wireless Ethernet e le collisioni con i media diventano di nuovo una cosa.
OrangeDog,

@OrangeDog, se si intende Wi-Fi (IEEE 802.11), che non è Ethernet wireless (IEEE 802.3). È un protocollo completamente diverso che ha frame diversi e utilizza CSMA / CA anziché CSMA / CD. I due protocolli sono molto diversi, mentre Ethernet sui vari supporti che supporta sono sostanzialmente gli stessi.
Ron Maupin

14

Un hub è in realtà solo un cavo alimentato che ripete ogni segnale che riceve su un'interfaccia a tutte le altre interfacce. Se due dispositivi trasmettono contemporaneamente alla ricezione delle interfacce hub, l'hub ripete entrambi i segnali contemporaneamente alla trasmissione di tutte le altre interfacce hub, ed entrambi i segnali ricevuti si scontreranno alla trasmissione delle altre interfacce, quindi hai una collisione in cui tutte le altre interfacce hanno segnali di immondizia perché sono due segnali contemporaneamente. Gli host che inviano simultaneamente e ascoltano un altro segnale si renderanno conto che più di uno sta inviando alla volta e determineranno che c'è una collisione.

Pensala in questo modo, la ricezione di ogni interfaccia hub è cablata alla trasmissione di ogni altra interfaccia. All'interno dell'hub, la trasmissione e la ricezione sono connesse, anche se separate sull'interfaccia.

Contrastalo con uno switch, in cui ogni collegamento è terminato sull'interfaccia dello switch e allo switch non sono collegate le interfacce. Invece lo switch ha una logica (generalmente incorporata nell'hardware) per determinare dove inviare i frame che riceve su un'interfaccia e per prevenire le collisioni all'interno dello switch.

Un interruttore è un ponte ad alta densità. I ponti originali erano come PC con più interfacce. Non ci si aspetterebbe che un PC con più interfacce abbia collisioni se ricevesse frame simultanei su più interfacce.


Modificare:

I tuoi commenti mi portano a credere che ancora non capisci cosa ho scritto sopra sugli hub.

Il modo in cui vengono rilevate le collisioni quando si utilizza UTP e un hub è tramite i dispositivi di invio che sentono un altro segnale durante l'invio. Se un dispositivo che utilizza UTP è configurato per half duplex, crederà che ci sia una collisione quando sente un segnale durante l'invio.

In caso di mancata corrispondenza del duplex, il dispositivo configurato per il full duplex invierà felicemente durante la ricezione dal dispositivo configurato per il half duplex. D'altra parte, il dispositivo configurato per half duplex crederà che ci sia una collisione quando sta inviando e sente quel segnale dal dispositivo configurato per full duplex. Ciò causerà tutti i tipi di problemi perché il dispositivo configurato per half duplex interromperà l'invio del frame (causando uno sfregamento) e invierà un segnale di inceppamento che il dispositivo configurato per full duplex non si aspetta. Il dispositivo configurato per il full duplex smetterà quindi di inviare il suo frame.


3
Questa è la vera risposta OP ignora tutti i casi tranne due soli endpoint con un cavo crossover (o, in un'impostazione moderna, qualsiasi cavo) tra di loro.
R .. GitHub smette di aiutare ICE il

@R .., il disegno nella domanda mostra un hub, quindi ho risposto per una connessione hub.
Ron Maupin

Questa risposta spiega come si verifica la collisione quando si dispone di un hub nella topologia. Sebbene una collisione tardiva possa verificarsi quando ci sono due nodi (diciamo uno switch e un PC), uno è half-duplex e l'altro è full-duplex. Perché in questo caso si verifica una collisione, anche se ci sono circuiti separati per Tx e Rx, come mostrato nel grafico della mia domanda?
Christos Dalamagkas,

Sembra che l'etichetta "Hub MDI-X" abbia creato confusione, per quanto riguarda il punto della mia domanda. Ho modificato di conseguenza.
Christos Dalamagkas,

3
Perché quello con half duplex dichiara una collisione quando sente qualcosa durante l'invio. Vedere la risposta sopra. Se un dispositivo configurato per half-duplex sente un altro segnale durante l'invio, deve presumere che vi sia una collisione perché ritiene che sia half duplex e che solo un dispositivo alla volta può inviare.
Ron Maupin

8

Ottima domanda

In full duplex, esiste un canale dedicato per il traffico da "sinistra a destra" e un canale dedicato per il traffico da "destra a sinistra":

Canale dedicato

Pertanto, in full duplex, le collisioni sono impossibili , anche se entrambe le schede di rete vengono trasmesse contemporaneamente.

In half-duplex , tuttavia, il traffico in entrambe le direzioni deve utilizzare solo il filo, una direzione alla volta. Quindi, sebbene fisicamente, ci sono ancora canali dedicati, logicamente se una NIC riceve qualcosa mentre sta trasmettendo, la registra come una collisione. I bit / segnale in realtà non "collidono" sul filo : un contatore di collisioni viene semplicemente incrementato quando la scheda NIC sta ricevendo e trasmettendo allo stesso tempo.


4
I segnali si scontrano sul filo, anche con doppino intrecciato. Con tre nodi terminali, due segnali simultanei si scontrerebbero sul terzo nodo.
Zac67

4
" I bit / segnale in realtà non" si scontrano "sul filo " In un hub, come nel disegno nella domanda, i bit si scontrano effettivamente sul filo e producono un segnale di immondizia. Gli host che inviano simultaneamente e ascoltano un altro segnale invieranno quindi un segnale di disturbo a tutte le altre interfacce sull'hub.
Ron Maupin

@RonMaupin Naturalmente hai ragione: mi riferivo a ciò che sarebbe accaduto quando il ripetitore non avrebbe rilevato / reagito alla collisione.
Zac67

1
@ Zac67, non stavo commentando per te, io e te abbiamo detto la stessa cosa praticamente nello stesso momento.
Ron Maupin

@ Zac67 / RonMaupin L'OP ha modificato la domanda confermando che non stanno ponendo domande sul caso degli hub.
Eddie

6

Con doppino intrecciato e un hub ripetitore, l'hub non è molto più di un amplificatore digitale. Per questo rileva un corriere da un segnale in entrata su una porta e passa tutte le altre porte in modalità di uscita. In questa modalità di uscita, qualsiasi vettore aggiuntivo in arrivo è una collisione. Ciò innesca un segnale di inceppamento per propagare la collisione e impedire al mittente di trasmettere.

Questo metodo di ripetizione imita il comportamento delle precedenti varianti Ethernet di supporti condivisi (10BASE5 e 10BASE2) in cui il ripetitore veniva utilizzato solo come giunti di segmenti fisici o estensori di linea. Naturalmente hai ragione: la coppia intrecciata è un mezzo full duplex a livello del filo in cui si verifica una collisione solo sullo strato fisico superiore e non sul filo stesso.

Un ripetitore non può consentire più di un mittente contemporaneamente. Molteplici trasmissioni simultanee si mescolerebbero sulle porte di uscita e produrrebbero rumore incomprensibile. Allo stesso modo, qualsiasi nodo in modalità half-duplex assume un mezzo condiviso, incapace di trasmissione full-duplex. Qualsiasi corriere rilevato durante la trasmissione è una collisione, causando arretramenti del mittente. Non importa se il supporto è in grado di supportare il full duplex (fibra, doppino intrecciato) o meno (coassiale).

Con una mancata corrispondenza duplex, un'estremità del collegamento è in modalità half-duplex e l'altra in modalità full duplex. Ora, quando il lato half-duplex (HDX) sta trasmettendo, qualsiasi vettore sul suo ricevitore provoca il rilevamento di una collisione. Tuttavia, il lato full-duplex (FDX) potrebbe essere felicemente inviato via mentre riceve dal lato HDX ed è completamente ignaro delle collisioni che crea sul lato opposto. Il lato HDX deve interrompere la trasmissione e inviare un segnale di inceppamento. Poiché il lato FDX non è in grado di rilevare la presunta collisione, rileva un frame parziale e quindi danneggiato.

I frame a bassa frequenza e piccoli hanno una ragionevole possibilità di superare questa discrepanza duplex, quindi pingpotrebbe effettivamente funzionare. Tuttavia, non appena una trasmissione seria tenta di iniziare, la frequenza dei fotogrammi più elevata e le dimensioni maggiori faranno fallire le trasmissioni in modo affidabile.

Con gli switch non gestiti, una mancata corrispondenza duplex può essere molto difficile da rilevare, specialmente quando nemmeno le schede di rete dell'host riportano correttamente la loro modalità duplex.

Con gli switch gestiti, in genere sono presenti contatori di errori di porta. L'aumento delle collisioni su un lato (HDX) e l'aumento delle corse e degli errori FCS sull'altro lato (FDX) sono indicazioni molto forti per una mancata corrispondenza duplex.

Fondamentalmente, fare affidamento sulla negoziazione automatica è un'ottima pratica per evitare disadattamenti duplex. La configurazione manuale della velocità e della modalità duplex è generalmente soggetta alla creazione di una mancata corrispondenza, in particolare quando si sostituisce l'apparecchiatura qualche anno dopo. Fortunatamente l'intero schema half-duplex è andato via con Gigabit Ethernet e più velocemente.


3

Supponiamo che la macchina A inizi a inviare dati alla macchina B. Quando il pacchetto inizia a essere inviato, la macchina C inizia a inviare dati diversi alla macchina B. Esiste un solo percorso di segnale verso la macchina B, quindi le trasmissioni da A e C si scontrano e B non può possibilmente ricevere entrambi.

Il fatto che venga utilizzato un circuito diverso per le trasmissioni dalla macchina B, alla macchina A e alla macchina C non aiuta. Tutto ciò che sta accadendo è che A e C stanno provando a trasmettere contemporaneamente alla macchina B e c'è solo un percorso del segnale alla macchina B.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.