Cosa succede quando 2 computer trasmettono contemporaneamente a un terzo in uno switch full duplex?


14

Considera il seguente scenario:

Ho 2 PC (PC1 e PC2) che vogliono trasmettere contemporaneamente a PC3 in uno switch Ethernet full duplex. Consideriamo che tutte le porte sono nella stessa VLAN, quindi cosa succede internamente nello switch? Chi trasmette per primo a PC3?

Ho letto prima che CSMA / CD era usato, ma era usato solo nelle precedenti versioni Ethernet che funzionavano in half-duplex, e ogni porta dello switch era un dominio di collisione e se 2 macchine tentavano di trasmettere contemporaneamente, un l'algoritmo è stato eseguito per dare un tempo casuale a ciascun computer per trasmettere e risolvere il problema delle collisioni. Tuttavia, in uno switch full duplex ho letto che la possibilità di una collisione viene eliminata, quindi, se 2 PC tentano di trasmettere contemporaneamente, cosa succede internamente allo switch? Lo switch esegue un algoritmo per scegliere chi trasmette per primo?

Risposte:


14

Lo switch caricherà completamente i frame di dati in entrata, dai due sistemi di invio, nei suoi buffer. Non sono sicuro di come determini quale frame sarebbe il primo nella coda per il successivo inoltro; ma probabilmente si basa sul tempo di ricezione iniziale dell'inizio del frame. Quindi lo switch funziona attraverso la coda del buffer di trasmissione inviando i frame uno alla volta sulla porta / segmento di destinazione.

Non ci sono problemi con i frame "che si incontrano". Il vero problema è che la porta / segmento finale accetta i frame abbastanza velocemente. (E, naturalmente, lo switch può elaborare il suo buffer / code abbastanza velocemente.)


9
Sì, vi è una commutazione libera e frammentata. Utilizzato principalmente in ambienti di trading ad alta velocità. Cut through inizierà a trasmettere non appena viene conosciuto DST MAC. Senza frammenti assicurarsi che il frame non sia un frammento di collisione, quindi deve ricevere 64 byte prima di trasmettere.
Daniel Dib,

2
Sì, penso che alcuni chiamerebbero inoltro cut-through, anziché store-and-forward. In un approccio cut-through uno switch potrebbe iniziare a inoltrare non appena ha ricevuto e cercato il MAC di destinazione, ma esistono approcci ibridi in cui attende solo un po 'di più, ad esempio per essere in grado di guardare un IP per verificare un ACL in uscita . (Il campo Ethertype indica se è presente un indirizzo IP nel frame).
Gerben,

1
^^^ Questo. Questo è il motivo per cui NE oscilla.
Craig Constantine,

4
Poiché nessuno lo ha menzionato, lo svantaggio da tagliare è il caso dispari dell'errore del frame. Mentre cut through riduce leggermente la latenza sul frame iniziale (più grande è il frame più questo ha un impatto), inoltra il frame indipendentemente dal fatto che il frame sia valido perché lo fa senza ricevere il frame completo ed essere in grado di verificare l'FCS . Gli interruttori Store e Forward riceveranno il frame completo e saranno in grado di controllare l'FCS prima dell'inoltro, consentendo loro di eliminare frame non validi.
YLearn

2
La maggior parte degli switch sono solo store-and-forward, cut-through è tornato pochi anni fa, perché è facile da vendere al mondo finanziario. store-and-forward su 10G causa 1.2us di latenza, ovvero 235m. Anche l'ingresso e l'uscita non possono avere una velocità diversa al cut-through.
ytti,

6

Domanda molto interessante che purtroppo non ha una sola risposta corretta, poiché la soluzione esatta varia da hardware a hardware.

Tuttavia, questo problema viene esplicitamente discusso in Reti di computer: un approccio di sistema a pagina 231-232.

L'essenza della soluzione per il design chiamato 'Sunshine Switch' è che hai un diagramma di input - batch - trap - selector == banyan === output e c'è un box di ritardo che collega il selettore al batcher. E cito:

Quando più di 1 (ed. Dimensione di banyan) sono destinati a una singola uscita nello stesso ciclo, vengono fatti ricircolare attraverso la casella di ritardo e reinviati all'interruttore nel ciclo successivo.

E inoltre:

La rete trap identifica quei pacchetti che saranno in grado di uscire dallo switch attraverso i banyan (fino a 1 di essi per porta di uscita) e segna il resto per il ricircolo.


3

Ci sarà sempre ALCUNA differenza nel momento in cui i due computer invieranno al terzo, a meno che tu non stia facendo qualcosa di speciale sullo switch, questo verrà trasmesso su base FIFO in modo che qualunque frame arrivi per primo verrà trasmesso per primo.


1
Dato che i PC [23] sono collegati da soli, non c'è nulla che impedisca al frame di arrivare esattamente nello stesso momento per la precisione del "momento" (frequenza) in cui HW sta funzionando. Immagino che spetta al progettista ASIC decidere quale in tal caso, ma immagino che leggerà i frame delle porte in modo round robin.
ytti,

2
Bene, volevo dire che le possibilità che due fotogrammi arrivassero esattamente nello stesso momento erano piuttosto basse. Come hai detto, probabilmente dipenderà dal design ASIC e sono abbastanza sicuro che non sarà documentato da nessuna parte a meno che non salti attraverso una serie di cerchi con il tuo team di account.
David Rothera,

Chi interrompe per primo vince, assumendo che tutto il resto sia uguale.
generalnetworkerror

0

Passa in avanti di un pacchetto alla volta mentre entrano in modo da evitare collisioni. Quindi PC3 elaborerà i pacchetti da PC1 e PC2 dividendo il suo tempo di CPU. Windowing e buffering controlleranno il flusso di comunicazione.

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.