Gli adattatori di rete leggono i bit in arrivo in un singolo flusso?


9

Quando una scheda di rete Gigabit sta ricevendo dati, come sta ricevendo i bit? Lo sta vedendo tutto in un flusso di 0 e 1? O c'è in qualche modo più flussi di 0 e 1 in arrivo contemporaneamente?

Ad esempio ... diciamo che ci sono due dispositivi di invio e un dispositivo di ricezione.

I dispositivi 1 e 2 iniziano a inviare contemporaneamente i dati di rete al dispositivo 3.

La mia ipotesi è che dal punto di vista dell'adattatore di rete del dispositivo 3, tutti gli 0 e gli 1 vengano rilevati in un unico flusso di dati. Può capire quali dati provengono dal dispositivo 1 o 2, ma i dati sono ancora solo un flusso di milioni / miliardi di bit.

Sbaglio totalmente? :)


1
Intendi una connessione half-duplex o l'utilizzo di full duplex? Non ci sono mai stati dispositivi half-duplex per 1000Base-T, anche se è ancora in quello standard. Con una connessione full-duplex, non ci sarebbero frame da due dispositivi che contendono il terzo dispositivo contemporaneamente sul collegamento.
Ron Maupin

full-duplex. OK, quindi, ci sarebbe ancora un singolo flusso di 0 e 1 (es: 01010101010001010010101001010100001101011010) e dal punto di vista del Dispositivo 3 (il ricevitore), mentre i Dispositivi 1 e 2 potrebbero alternarsi su quel flusso, non avrebbero mai entrambi invio di 0 e 1 allo stesso tempo, giusto?
shihku7,

Qualche risposta ti è stata d'aiuto? In tal caso, dovresti accettare la risposta in modo che la domanda non continui a comparire per sempre, cercando una risposta. In alternativa, puoi fornire e accettare la tua risposta.
Ron Maupin

Risposte:


14

Dipende.

Mentre molti PHY Ethernet trasmettono i dati in modo puramente seriale (ad es. 100BASE-TX, 1000BASE-SX, 10GBASE-SR), alcuni dividono il flusso di dati in più corsie che vengono trasmesse in parallelo.

Più comunemente, 1000BASE-T - la comune variante gigabit-over-copper - divide il flusso di dati codificati in quattro corsie e trasmette ciascuna separatamente su una delle quattro coppie intrecciate in un cavo Cat-5. Tutte le varianti a doppino intrecciato dal gigabit verso l'alto utilizzano queste quattro corsie.

Alcuni PHY ad alta velocità (10G +) utilizzano anche corsie multiple su un massimo di sedici fibre (con fibra multimodale e corto raggio) o lunghezze d'onda (con fibra monomodale e lungo raggio).

Tuttavia, tutto viene trasmesso in frame che vengono eseguiti da una singola sorgente a una singola destinazione. I frame sono generalmente atomici, vale a dire. sono sempre trasmessi in un unico pezzo. Ogni frame trasporta solo i dati da una singola connessione / applicazione specifica. La sua intestazione contiene gli indirizzi di origine e destinazione, quindi può trovare la sua strada sulla rete.

Quando la rete riceve due frame da origini diverse per la stessa porta di destinazione contemporaneamente, è necessario mettere in coda uno dei frame fino a quando la porta dello switch verso la destinazione non ha terminato la trasmissione del primo frame.

Ciò presuppone che le fonti e la destinazione funzionino alla stessa velocità, il che non è necessariamente vero. Potresti avere un file server collegato da un collegamento da 1 Gbit / s e dieci client ciascuno che invia la massima velocità sui propri collegamenti da 100 Mbit / s senza alcuna coda (significativa). Questo si avvicina in qualche modo al suggerimento dei "flussi multipli", solo che questi flussi sono interlacciati a livello di frame, non a livello di bit.

La velocità su una porta di rete può essere di migliaia o addirittura milioni di frame in un solo secondo, quindi dal punto di vista umano è impossibile differenziare più flussi - tutto sembra "simultaneo".


Si prega di riunirsi con l'altro risponditore @jonathanjo e capire quale descrizione di 1000Base-T è corretta.
davidbak,

1
Lo "stesso mezzo" di jonathanjo sta descrivendo un dominio di collisione multiporta che non esiste (praticamente) con Gigabit Ethernet ed è obsoleto anche per 10/100 Mbit.
Zac67,

2
@davidbak mi sembra tutto corretto qui - Zac di solito lo è! - solo enfasi diversa. Ho risolto alcune cose sulla mia risposta, incluso chiarire le collisioni nella pratica 1000baseT.
jonathanjo,

2
A questo devi anche aggiungere PAM16 e codifiche simili che fanno arrivare sostanzialmente più bit a uno.
PlasmaHH,

1
@PlasmaHH 1000BASE-T utilizza già quattro corsie e PAM5, quindi ci sono circa 9,3 bit grezzi in ogni fase del clock (e ovviamente 8 bit "utente" a 125 MBd per L1).
Zac67,

13

Ignoriamo la parte Gigabit per ora e concentriamoci un po 'sulla parte "2 dispositivi stanno inviando contemporaneamente".

Sui media condivisi , ciò può effettivamente accadere ed essere un problema. La maggior parte delle trasmissioni wireless sono media condivise, mentre Ethernet, in passato, era:

  • 10base2 (coassiale) utilizzava più o meno un singolo cavo con ognuno su di esso. Ovviamente, due (o più) stazioni sono state in grado di trasmettere contemporaneamente;
  • 10baseT e 100baseT (basato su doppino intrecciato), con hub (anziché switch) significavano anche che due (o più) stazioni potevano trasmettere contemporaneamente, poiché il segnale ricevuto da qualsiasi dispositivo collegato veniva semplicemente ripetuto a tutti gli altri.

Ora, se due dispositivi inviano contemporaneamente, possono succedere due cose:

  • usi una qualche forma di multiplexing (divisione del tempo, divisione della frequenza ...) che consente "canali" separati in modo che uno possa ascoltare un canale specifico e non essere disturbato dagli altri. Questo è usato molto per le trasmissioni wireless, molto meno per le trasmissioni cablate (WDM / DWDM su fibre è un'eccezione).

  • o se due o più dispositivi stanno inviando contemporaneamente sullo stesso canale, allora ottieni quella che viene chiamata una collisione : come quando due persone parlano contemporaneamente, non puoi capire ciò che dice, i dispositivi di ricezione non lo sono in grado di decodificare i dati inviati da uno qualsiasi dei dispositivi (o più spesso, possono decodificarli, ma non ha senso e non supererà i controlli CRC).

È qui che sono arrivati schemi come CSMA-CD (Carrier-Sense Multiple Access, Collision Detection):

  • Prima di provare a trasmettere, un dispositivo controllava se qualcun altro stava inviando (senso dell'operatore)
  • Se il canale è libero, inizia la trasmissione.
  • Ma anche così, due dispositivi possono avviarsi esattamente allo stesso tempo, quindi puoi comunque avere una collisione.
  • Per evitare di perdere troppo tempo sul canale, i dispositivi rileveranno le collisioni (confrontando ciò che inviano con ciò che ricevono: se non corrisponde, significa che qualcun altro sta inviando contemporaneamente), interrompere la trasmissione, e riprovare dopo un ritardo casuale (per cercare di evitare una nuova collisione).

Questo è stato abbastanza divertente e su reti leggermente caricate ha funzionato abbastanza bene, ma non appena il traffico è diventato significativo, si finirebbe con tonnellate di collisioni, che a loro volta aumentano l'utilizzo dei media condivisi, che a sua volta si traduce in più collisioni, quindi potrebbe andare piuttosto male.

La risposta a questo è stata il passaggio a reti commutate full duplex . Gli hub hanno appena ripetuto il segnale senza pensare. I commutatori invece ricevono davvero un frame, quindi lo rispediscono sul link di destinazione (bonus aggiuntivo: il frame non viene inviato a tutti, ma solo alla destinazione nella maggior parte dei casi).

Se due dispositivi inviano allo stesso dispositivo di destinazione, lo switch metterà in coda uno dei frame, quindi i due frame inviati contemporaneamente arrivano effettivamente uno dopo l'altro a destinazione.

Oltre a ciò, a livello fisico, è del tutto possibile che i dati vengano scambiati su più coppie o anche più cavi in ​​parallelo. Il fatto che ciò avvenga a livello di bit o che vengano inviati interi frame su ciascuna coppia / cavo dipende dalla tecnologia esatta utilizzata. Ma penso che non sia stata davvero una tua domanda.


1
Questo è un punto eccellente, probabilmente la risposta più appropriata alla domanda. Potrei aggiungere che quando arrivate a velocità molto elevate (fibra) sono generalmente limitate a un singolo mittente e un singolo destinatario su una linea per evitare collisioni. Se è necessario aggiungere un altro input, questo viene acquisito su un altro canale e combinato con il flusso in entrata, quindi inviato a un flusso in uscita. Al giorno d'oggi anche Ethernet tende a essere "Switched" che evita le collisioni - il luogo principale in cui vedi le collisioni (2 dispositivi che parlano con uno come nella domanda) in questi giorni è il wifi - quasi tutto il resto è da 1 mittente a 1 destinatario
Bill K

12

Questo caso particolare è complesso.

Riguardo a 1000baseT.

Primo: quando diciamo in generale che due dispositivi stanno trasmettendo contemporaneamente, normalmente non stanno effettivamente inviando bit nello stesso istante sullo stesso supporto. Se lo fanno, c'è una collisione e tutti i dispositivi di ascolto lo risolvono (eventualmente, attraverso vari schemi di rilevamento delle collisioni). Quindi due dispositivi di trasmissione avranno accesso al mezzo in momenti leggermente diversi. Ma in 1000baseT ci sono solo due dispositivi su un dato set di coppie; normalmente un dispositivo è uno switch e l'altro è un host.

In secondo luogo, 1000baseT trasmette due bit di dati alla volta su una coppia, codificati in modo complesso a cinque livelli di tensione. Quindi è una serie di cifre base-4 sul filo, non una serie di cifre base-2.

In terzo luogo, 1000baseT può trasmettere contemporaneamente in entrambe le direzioni, sulla stessa coppia. Può separare il segnale in uscita da quello in entrata da un circuito chiamato ibrido.

Ethernet Gigabit su altri media si comporta diversamente. Le velocità più lente, ad es. 10baseT e 100baseT, hanno schemi più semplici. 10baseT su un hub ha davvero delle vere collisioni; over switch è normalmente organizzato dallo switch in modo che i frame in uscita siano messi in coda; se è full duplex non ci sono collisioni.


Si prega di stare insieme con altri answerer @ Zac67 e capire quale descrizione di 1000Base-T è corretta.
davidbak,

@jonathanjo Hai ragione sui simboli a tre bit ma ci sono solo cinque livelli PAM. All'incirca, si tratta di un simbolo da 8 bit a quattro a 3 bit più codifica criptata in cui i simboli a 3 bit sono mappati su (spostamento) livelli PAM.
Zac67,

@davidbak grazie per averlo raccolto. Ho semplificato la descrizione per coprire il punto principale (complesso e non binario) e liberarmi dell'errore. Grazie Zac per il chiarimento.
jonathanjo,

7

Supponendo qui tutti i collegamenti Ethernet cablati.

Quando due dispositivi sullo stesso segmento di rete inviano contemporaneamente, indipendentemente da chi inviano, si parla di collisione . Nessuno dei due messaggi arriva quando si verifica una collisione. Fortunatamente, i mittenti hanno la capacità di rilevare le collisioni. Quando ciò accade, ciascun mittente sceglierà ciascuno una quantità casuale di tempo (piccole frazioni di secondo) per attendere e riprovare, e ripetere il processo fino a quando alla fine è attivo solo un mittente.

Ma questo non succede quasi mai più.

Al contrario, oggi la maggior parte delle connessioni cablate viene effettuata su reti commutate , in cui ciascun dispositivo (sia mittenti che ricevitori) sono tutti collegati alla propria porta separata su uno switch. I dati sono suddivisi in pacchetti (in realtà: frame ) e lo switch assicurerà che sia attivo un solo pacchetto alla volta per porta. Se un collegamento è occupato, l'interruttore memorizzerà e inoltrerà altri frame al ricevitore quando il collegamento sarà nuovamente disponibile.

Con questo schema, l'unico modo per avere collisioni è quando c'è più di un dispositivo collegato allo switch o l'un l'altro tramite un hub non commutato (le porte su alcuni modelli di "router" wifi domestico sono ancora non commutate), o quando un il collegamento tra uno switch e un dispositivo funziona in modalità half-duplex .

Ciò di cui ci occupiamo invece è la congestione . Potremmo non avere collisioni, ma un host popolare sulla rete potrebbe avere dispositivi che desiderano inviare più dati e pacchetti di quelli che il collegamento supporterà, in modo che il buffer si riempia. Ma questo è un altro problema.


1
Nitpicking, ma a livello Ethernet, si tratterebbe di frame anziché di pacchetti .
jcaron,

1
@jcaron Nit-nit-picking: ovviamente normalmente usiamo 'pacchetto' per indicare 'pacchetto IP', che è organizzato secondo RFC 791, ed è il 'Dati client MAC' di un frame Ethernet. Ma un "pacchetto Ethernet" è definito come tutto trasmesso, incluso l'inizio del preambolo fino alla fine dei bit di estensione; e 'frame' è la porzione di indirizzo dall'indirizzo di destinazione al controllo frame. (802.3-2015 Sezione 3.1.1 "Formato pacchetto"). Avrei detto che l'interruttore assicura che venga inviato un pacchetto Ether alla volta e memorizza e inoltra i frame Ether .
jonathanjo,

5

Penso che tu debba avere una conoscenza di base di come funziona Ethernet. Ad esempio, l'host di invio invierà un preambolo di alternanti e zero per ottenere l'attenzione dell'host ricevente. Quando l'host ricevente ne vede due di seguito, sa che il frame è il prossimo. Una volta che il frame viene trasmesso, deve esserci silenzio sulla linea per 96 bit prima che venga inviato un altro frame.

Diversi standard Ethernet useranno codifiche diverse. Ad esempio, 100Base-T utilizza 4B5B che invia cinque bit per ogni quattro bit di dati.


1

(Per questa domanda presumo una rete condivisa Hub.)

Gli adattatori di rete leggono i bit in arrivo in un singolo flusso?

Sì. Indipendentemente dall'implementazione PHY, si tratta di un singolo flusso di input. Le comunicazioni da più dispositivi non possono arrivare con successo a una singola scheda NIC (indirizzo MAC) contemporaneamente.

La mia ipotesi è che dal punto di vista dell'adattatore di rete del dispositivo 3, tutti gli 0 e gli 1 si imbattono in un singolo flusso di dati "

"flusso singolo" sì, ma nel tuo esempio di invio simultaneo di due dispositivi non ci sarà flusso di dati in arrivo per ulteriore elaborazione; i "frame" di 1 e 0 si scontreranno.

Può capire quali dati provengono dal dispositivo 1 o 2, ma i dati sono ancora solo un flusso di milioni / miliardi di bit.

Non può. Quando i segnali combinano, viene rilevata una collisione e il frame viene scartato.

Sbaglio totalmente?

Il titolo della domanda è un'affermazione corretta, ma la discussione nel tuo post Q suggerisce che la tua comprensione e ipotesi erano sbagliate.

Ulteriore

  • Indipendentemente dal tipo di "Scheda di rete", ricevono solo un singolo flusso di bit.
  • I mezzi fisici per la trasmissione di un segnale potrebbero includere più substrati di dati, ma tali substrati e tale elaborazione fisica non sono considerati "Network Adapter"; quei substrati sono codipendenti, devono essere combinati per avere un senso; e, quei substreams devono provenire da una singola fonte.
  • Se non si è sicuri di questa risposta (e di altre risposte qui), è necessario conoscere i fondamenti delle reti Ethernet / IP a pacchetto commutato.

Per questa domanda presumo una rete condivisa Hub : l'OP riferito a una scheda di rete Gigabit e la modalità half-duplex non esiste (praticamente) per GbE. ;-)
Zac67

@ Zac67 Sono come uno sconosciuto generoso e disponibile. Supponevo che il PO avesse scelto arbitrariamente "Gigabit" e che non si rendessero conto che ci sarebbe stata una contraddizione. Questo mi ha permesso in ultima analisi di rispondere direttamente e semplicemente al titolo della domanda. L'OP può leggere le altre risposte per saperne di più sulla contraddizione.
Todd,
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.