In che modo uno switch impara una tabella switch?


22

Supponiamo che la tabella degli interruttori sia vuota. Se il computer A invia un frame destinato al computer B, lo switch trasmetterà chiedendo chi ha l'indirizzo mac di B. Cosa succede se C invia improvvisamente un frame ad A? Qual è il meccanismo in modo che l'interruttore non pensi erroneamente che il computer C sia il computer B? Ricorda l'indirizzo mac della destinazione desiderata dal computer A, e quando C cerca di arrivare ad A contiene anche il proprio indirizzo mac e lo switch vede che non è la stessa destinazione del computer A desiderato?

Fondamentalmente sto chiedendo, quando uno switch invade un indirizzo mac sconosciuto per una richiesta inviata dall'host A, come fa a sapere che la destinazione sta rispondendo all'host A o se qualche altro host sta semplicemente trasmettendo ad A?


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 la tua risposta e accettarla.
Ron Maupin

Risposte:


34

Gli switch di livello 2 (bridge) hanno una tabella di indirizzi MAC che contiene un indirizzo MAC e un numero di porta. Gli switch seguono questo semplice algoritmo per l'inoltro dei pacchetti:

  1. Quando viene ricevuto un frame, lo switch confronta l'indirizzo MAC SOURCE con la tabella degli indirizzi MAC. Se SOURCE non è noto, lo switch lo aggiunge alla tabella insieme al numero di porta sul quale è stato ricevuto il pacchetto. In questo modo, lo switch apprende l'indirizzo MAC e la porta di ogni dispositivo di trasmissione.

  2. Lo switch quindi confronta l'indirizzo MAC DESTINATION con la tabella. Se è presente una voce, lo switch inoltra il frame alla porta associata. Se non è presente alcuna voce, lo switch invia il pacchetto su tutte le sue porte, tranne la porta su cui è stato ricevuto il frame (Flooding).

Si noti che lo switch non impara il MAC di destinazione fino a quando non riceve un frame da quel dispositivo.


Grazie @Ron per averlo spiegato meglio. Ora so che l'allagamento è. Puoi trovarlo anche su en.wikipedia.org/wiki/Unicast_flood
Damon

Questo non ha risposto alla domanda che avevo posto.
Celeritas,

5
@Celeritas Il tuo presupposto nella tua domanda è sbagliato. Lo switch non "chiede" chi ha un indirizzo mac. Se non conosce il MAC di destinazione, inonda il frame di tutte le porte. Impara i MAC di origine solo quando riceve un frame. Quindi, nella tua domanda, lo switch può dire la differenza tra B e C perché hanno indirizzi MAC di origine diversi.
Ron Trunk,

4
@Celeritas - Lo switch non sa né si preoccupa del perché un host sta inviando qualcosa all'host A. Perché dovrebbe importare se un host sta rispondendo all'host A o un altro host sta inviando qualcos'altro all'host A? Lo switch si preoccupa solo che il MAC di destinazione sia per l'host A (e quale sia il MAC di origine se non è nella tabella degli indirizzi MAC). Solo l'host A si preoccupa se il frame ricevuto è una risposta dall'host a cui è stato originariamente inviato un frame.
Ron Maupin

Ciò che Ron ha detto, questo concetto è separato dall'ARP.
Jordan Head,

4

La tua domanda presume che l'interruttore sia coinvolto o sia a conoscenza della comunicazione / conversazione tra due host (è una conversazione tra A e B o tra A e C?). Lo switch non è coinvolto nella comunicazione / conversazione tra due host. Conosce semplicemente (o impara) quale indirizzo MAC è associato a quale porta e inoltra (o passa) il traffico destinato a un determinato indirizzo MAC alla porta associata (una volta che ha appreso quale porta è associata all'indirizzo MAC), indipendentemente dal fatto che l'origine è B, o C o qualsiasi altro host collegato a qualsiasi altra porta dello switch.

Cambia lavoro al livello 2. La gestione della sessione è responsabilità dei livelli superiori.


-2

Non si chiama switch table; la sua tabella MAC. Ora considera che la tabella MAC è vuota. Quando A tenta di inviare un pacchetto a B; il pacchetto contiene l'indirizzo MAC di A e B. Lo switch aggiorna l'indirizzo MAC di A nella tabella MAC. Ora poiché non conosce la porta a cui è connessa B, trasmette il pacchetto ARP su tutte le sue porte e attende che tutti gli host rispondano.

Allo stesso tempo, se C prova a inviare un pacchetto ad A, estrae l'indirizzo MAC di C da quel pacchetto e lo memorizza nella tabella MAC. Ora poiché l'indirizzo MAC di è già presente nella tabella MAC, quindi sa a quale porta A è collegata. Ricorda che i pacchetti di dati contengono l'indirizzo MAC sia di origine che di destinazione. Quindi l'indirizzo MAC del B&C è diverso. Quindi l'interruttore non viene confuso. Ora passa in avanti il ​​pacchetto da C ad A (dato che entrambi sono presenti nella stessa VLAN).

Per inviare il pacchetto da A a B, attende che B risponda al pacchetto ARP inviato dallo switch. Quando riceve risposta da B, aggiorna l'indirizzo MAC di B nella sua tabella MAC. Quindi infine il pacchetto viene inoltrato a B.

Quindi lo switch non viene confuso poiché i pacchetti di dati (tcp / udp) contengono sia l'indirizzo MAC di origine che quello di destinazione. E il tuo switch non inoltrerà un pacchetto su un'interfaccia il cui indirizzo MAC dell'host finale non è noto per cambiare. Deve attendere che l'host finale risponda alla trasmissione ARP inviata da switch.


1
Questo non è del tutto esatto. Un interruttore, a meno che non sia un interruttore di livello 3, non ARP. L'ARP deve risolvere tra il livello 2 e il livello 3 e il parametro non conosce il livello 3. Lo switch, infatti, trasmette un frame con un MAC di destinazione sconosciuto a ogni porta dello switch. Un host ignorerà qualsiasi frame con un MAC di destinazione non proprio.
Ron Maupin

1
E un leggero chiarimento per il chiarimento di Ron ... principalmente solo una correzione terminologica. Quando uno switch invia un pacchetto a tutte le porte (tranne la porta di ingresso) perché non sa dove si trova quell'indirizzo MAC in particolare, viene generalmente chiamato "flooding".
Jeff McAdams,

@ Ron grazie per la tua correzione. Ho dimenticato di scrivere che questo è per l'interruttore di livello 3. E ho anche voluto ammettere di aver dimenticato il termine alluvione, quindi ho scritto la risposta per switch di livello 3. E Jeff grazie per avermelo detto.
Damon,

@Jeff McAdams, hai ragione, è alluvione, grazie. Era prima della mia prima tazza di caffè dopo essermi alzato presto, e intendevo trasmettere in senso linguistico, non in senso rete.
Ron Maupin

@Damon, questo è ciò che non sapevo è che ogni frame contiene l'indirizzo MAC di origine e destinazione.
Celeritas,
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.