Como um switch aprende uma tabela de switches?

22

Digamos que a tabela de comutação esteja vazia. Se o computador A enviar um quadro destinado ao computador B, o comutador transmitirá perguntando quem possui o endereço mac de B. E se C enviar repentinamente um quadro para A? Qual é o mecanismo para que o comutador não pense erroneamente que o computador C é o computador B? Será que ele se lembra do endereço mac do destino desejado pelo computador A e quando C tenta chegar a A também contém seu próprio endereço mac e o switch vê que não é o mesmo destino que o computador A queria?

Basicamente, estou perguntando, quando um comutador invade um endereço MAC desconhecido para uma solicitação enviada pelo host A, como ele sabe que o destino está respondendo ao host A ou se algum outro host está transmitindo para A?

Celeritas
fonte
Alguma resposta o ajudou? Nesse caso, você deve aceitar a resposta para que a pergunta não apareça para sempre, procurando uma resposta. Como alternativa, você pode fornecer sua própria resposta e aceitá-la.
Ron Maupin

Respostas:

34

Os switches da camada 2 (pontes) têm uma tabela de endereços MAC que contém um endereço MAC e um número de porta. Os comutadores seguem este algoritmo simples para encaminhar pacotes:

  1. Quando um quadro é recebido, o switch compara o endereço MAC da SOURCE com a tabela de endereços MAC. Se a SOURCE for desconhecida, o switch a adiciona à tabela junto com o número da porta em que o pacote foi recebido. Dessa maneira, o switch aprende o endereço MAC e a porta de todos os dispositivos transmissores.

  2. O switch então compara o endereço MAC do DESTINO com a tabela. Se houver uma entrada, o switch encaminha o quadro para a porta associada. Se não houver entrada, o switch envia o pacote para todas as suas portas, exceto a porta em que o quadro foi recebido (inundação).

Observe que o switch não aprende o MAC de destino até receber um quadro desse dispositivo.

Ron Trunk
fonte
Obrigado @Ron por explicar melhor. Agora eu sei que inundações são. O também pode ser encontrada em en.wikipedia.org/wiki/Unicast_flood
Damon
Isso não respondeu à pergunta que eu fiz.
Celeritas
5
@Celeritas Sua suposição na sua pergunta está errada. O switch não "pergunta" quem tem um endereço MAC. Se não souber o MAC de destino, ele inundará o quadro em todas as portas. Ele só aprende os MACs de origem quando recebe um quadro. Portanto, em sua pergunta, o switch pode dizer a diferença entre B e C, porque eles têm endereços MAC de origem diferentes.
Ron Trunk
4
@Celeritas - O switch não sabe, nem se importa, por que um host está enviando algo para o Host A. Por que importaria se um host estivesse respondendo ao Host A ou outro host estivesse enviando algo mais ao Host A? O comutador apenas se importa que o MAC de destino seja o Host A (e qual é o MAC de origem se não estiver na tabela de endereços MAC). Somente o Host A se importa se o quadro recebido é uma resposta do host ao qual o quadro foi enviado originalmente.
Ron Maupin
O que Ron disse, esse conceito é separado do ARP.
Jordan Head
4

Sua pergunta pressupõe que o switch esteja envolvido ou tenha conhecimento da comunicação / conversa entre dois hosts (é uma conversa entre A e B ou entre A e C?). O switch não está envolvido na comunicação / conversa entre dois hosts. Ele simplesmente sabe (ou aprende) qual endereço MAC está associado a qual porta e encaminha (ou alterna) o tráfego destinado a um endereço MAC específico para a porta associada (depois de saber qual porta está associada ao endereço MAC), independentemente de a fonte é B ou C ou qualquer outro host conectado a qualquer outra porta do switch.

Os switches funcionam na camada 2. O gerenciamento de sessões é de responsabilidade das camadas superiores.

joeqwerty
fonte
-2

Não é chamado de tabela de comutação; sua tabela MAC. Agora considere que a tabela MAC está vazia. Quando A tenta enviar um pacote para B; o pacote contém o endereço MAC de A e B. O switch atualiza o endereço MAC de A na tabela MAC. Agora, como não conhece a porta à qual B está conectado, transmite o pacote ARP em todas as portas e aguarda a resposta de todos os hosts.

Agora, ao mesmo tempo, se C tentar enviar um pacote para A, ele extrai o endereço MAC de C desse pacote e o armazena na tabela MAC. Agora, como o endereço MAC de já está presente na tabela MAC, ele sabe a qual porta A está conectada. Lembre-se de pacotes de dados contém o endereço MAC de origem e destino. Portanto, o endereço MAC de B e C é diferente. Portanto, o interruptor não fica confuso. Agora alterne o pacote de C para A (considerando que ambos estão presentes na mesma VLAN).

Para enviar o pacote de A para B, ele espera até que B responda ao pacote ARP enviado pelo switch. Quando recebe resposta de B, atualiza o endereço MAC de B em sua tabela MAC. Finalmente, o pacote é encaminhado para B.

Portanto, o switch não fica confuso, pois os pacotes de dados (tcp / udp) contêm o endereço MAC de origem e de destino. E o seu switch não encaminhará um pacote em uma interface cujo endereço MAC do host final não seja conhecido. Ele precisa esperar até que o host final responda à transmissão ARP enviada pelo switch.

Damon
fonte
1
Isso não é totalmente preciso. Um switch, a menos que seja um switch de camada 3, não possui ARP. O ARP deve resolver entre as camadas 2 e 3, e o switch não conhece a camada 3. Na verdade, o switch transmite um quadro com um MAC de destino desconhecido para todas as portas do switch. Um host ignorará qualquer quadro com um MAC de destino que não seja o seu.
Ron Maupin
1
E um leve esclarecimento ao esclarecimento de Ron ... principalmente apenas correção de terminologia. Quando um switch envia um pacote para todas as portas (exceto a porta de entrada) porque não sabe onde esse endereço MAC está localizado, geralmente é chamado de "flooding".
Jeff McAdams
@ Ron, obrigado por sua correção. Esqueci de escrever que isso é para o switch da camada 3. E eu também gostaria de admitir que esqueci o termo flooding, então escrevi a resposta para os switches da camada 3. E Jeff, obrigado por contar.
Damon
@ Jeff McAdams, você está correto, é inundação, obrigado. Foi antes da minha primeira xícara de café depois que me levantei cedo, e eu quis dizer difusão no sentido da linguagem, não no sentido da rede.
Ron Maupin
@ Damon, isso é o que eu não sabia que todos os quadros contêm o endereço MAC de origem e destino.
Celeritas