O que acontece quando dois computadores transmitem ao mesmo tempo para um terceiro em um switch full duplex?

14

Considere o seguinte cenário:

Eu tenho 2 PCs (PC1 e PC2) que desejam transmitir ao mesmo tempo para o PC3 em um switch Ethernet full duplex. Vamos considerar que todas as portas estão na mesma VLAN, então o que acontece internamente no switch? Quem transmite primeiro para o PC3?

Eu li antes que o CSMA / CD foi usado, mas somente ele foi usado nas versões Ethernet anteriores que operavam em half-duplex, e cada porta do switch era um domínio de colisão e, se duas máquinas tentassem transmitir ao mesmo tempo, um O algoritmo foi executado para fornecer um tempo aleatório a cada computador para transmitir e resolver o problema das colisões. No entanto, em um switch full duplex, li que a possibilidade de uma colisão é eliminada; portanto, se 2 PCs tentarem transmitir ao mesmo tempo, o que acontece internamente no switch? O switch executa um algoritmo para escolher quem transmite primeiro?

Juan Jose Polanco Arias
fonte

Respostas:

14

O switch carregará totalmente os quadros de dados recebidos, dos dois sistemas de envio, em seus buffers. Não tenho certeza de como ele determina qual quadro seria o primeiro da fila para o encaminhamento subsequente; mas provavelmente é baseado no tempo de recebimento inicial do início do quadro. Em seguida, o switch trabalha na fila do buffer de transmissão, enviando os quadros um a um para a porta / segmento de destino.

Não há problema com os quadros "colidindo uns com os outros". A questão real é se a porta / segmento final aceita os quadros com rapidez suficiente. (E, é claro, o switch pode processar seus buffers / filas com rapidez suficiente.)

Craig Constantine
fonte
9
Sim, há interrupção total e sem fragmentos. Usado principalmente em ambientes de negociação de alta velocidade. O corte começará a transmitir assim que o DST MAC for conhecido. Sem fragmentos, verifique se o quadro não é um fragmento de colisão; portanto, ele precisa receber 64 bytes antes de transmitir.
precisa
2
Sim, acho que isso seria chamado de encaminhamento de corte por alguns, em vez de armazenar e encaminhar. Em uma abordagem cut-through, um switch pode começar a encaminhar assim que receber e procurar o MAC de destino, mas existem abordagens híbridas onde ele espera um pouco mais, por exemplo, para poder procurar um IP para verificar uma ACL de saída . (O campo Ethertype informa se o endereço IP está presente no quadro).
Gerben
1
^^^ Isso. É por isso que o NE balança.
Craig Constantine
4
Como ninguém o mencionou, a desvantagem a ser resolvida é o caso ímpar do erro de quadro. Embora o corte reduza a latência levemente no quadro inicial (quanto maior o quadro, mais isso afeta), ele encaminha o quadro independentemente da validade do quadro, porque o faz sem receber o quadro completo e poder verificar o FCS . Os switches de armazenamento e encaminhamento receberão o quadro completo e poderão verificar o FCS antes de encaminhar, permitindo que eles descartem quadros inválidos.
YLearn
2
A maioria dos switches é apenas para armazenar e encaminhar, o cut-through retornou alguns anos atrás, porque é fácil vender para o mundo financeiro. armazenar e encaminhar em 10G causa 1.2us de latência, ou seja, 235m. Além disso, a entrada e a saída não podem ter velocidades diferentes no corte.
usar o seguinte comando
6

Pergunta muito interessante que, infelizmente, não possui uma única resposta correta, pois a solução exata varia de hardware para hardware.

No entanto, esse problema é explicitamente discutido em Redes de computadores - um sistema de sistemas na página 231-232.

A essência da solução para o projeto chamada 'Sunshine Switch' é que você tem saídas de diagrama - batcher - trap - selector == banyan === e existe uma caixa de atraso que conecta o seletor ao batcher. E cito:

Quando mais do que 1 (tamanho ed. De banyan) são destinados a uma única saída no mesmo ciclo, eles são recirculados através da caixa de atraso e reenviados ao comutador no próximo ciclo.

E mais:

A rede de interceptação identifica os pacotes que poderão sair do comutador através dos banyans (até 1 deles por porta de saída) e marca o restante para recirculação.

ytti
fonte
3

Sempre haverá ALGUMA diferença em quando os dois computadores enviam para o terceiro, a menos que você esteja fazendo algo especial no comutador, ele será transmitido em uma base FIFO, para que o quadro que chegue primeiro seja transmitido primeiro.

David Rothera
fonte
1
Como o PC [23] está sozinho, não há nada que impeça o quadro de chegar exatamente ao mesmo tempo, pois a precisão do 'momento' (frequência) HW está sendo executada. Acho que cabe ao designer ASIC do switch decidir o que nesse caso, mas acho que ele lerá os quadros dos portos da maneira round robin.
usar o seguinte comando
2
Bom ponto, eu estava mais querendo dizer que as chances de dois quadros chegarem exatamente ao mesmo tempo eram muito baixas. Como você mencionou, provavelmente será o design do ASIC e tenho certeza de que não será documentado em nenhum lugar, a menos que você passe por uma série de obstáculos com sua equipe de contas.
precisa
Quem interrompe as primeiras vitórias, assume tudo igual.
generalnetworkerror
0

Os comutadores encaminham um pacote por vez à medida que entram no comutador, sem colisões. Em seguida, o PC3 processará pacotes do PC1 e PC2, dividindo o tempo da CPU. A janelas e o buffer controlam o fluxo da comunicação.

Jon Rob
fonte