¿Qué sucede cuando 2 computadoras transmiten al mismo tiempo a una tercera en un interruptor full duplex?

14

Considere el siguiente escenario:

Tengo 2 PC (PC1 y PC2) que quieren transmitir al mismo tiempo a PC3 en un conmutador de ethernet full duplex. Consideremos que todos los puertos están en la misma VLAN, entonces, ¿qué sucede internamente en el conmutador? ¿Quién transmite primero a PC3?

He leído antes que se usó CSMA / CD , pero solo se usó en versiones anteriores de Ethernet que funcionaban en half-duplex, y cada puerto del conmutador era un dominio de colisión y si 2 máquinas intentaban transmitir al mismo tiempo, un El algoritmo se ejecutó para dar un tiempo aleatorio a cada computadora para transmitir y resolver el problema de colisiones. Sin embargo, en un interruptor dúplex completo, leí que la posibilidad de una colisión se elimina, por lo que, si 2 PC intentan transmitir al mismo tiempo, ¿qué sucede internamente en el interruptor? ¿El interruptor ejecuta un algoritmo para elegir quién transmite primero?

Juan José Polanco Arias
fuente

Respuestas:

14

El conmutador cargará completamente las tramas de datos entrantes, desde los dos sistemas de envío, en su (s) búfer (s). No estoy seguro de cómo determina qué marco sería el primero en la cola para el reenvío posterior; pero probablemente se basa en el tiempo de recepción inicial del comienzo de la trama. Luego, el conmutador funciona a través de la cola del búfer de transmisión enviando las tramas una por una al puerto / segmento de destino.

No hay problema con que los marcos "se encuentren entre sí". El verdadero problema es si el último puerto / segmento puede aceptar las tramas lo suficientemente rápido. (Y, por supuesto, ¿puede el switch procesar su búfer / colas lo suficientemente rápido?)

Craig Constantine
fuente
99
Sí, hay una conmutación libre y sin fragmentos. Utilizado principalmente en entornos comerciales de alta velocidad. El corte comenzará a transmitirse tan pronto como se conozca DST MAC. Sin fragmentos, asegúrese de que la trama no sea un fragmento de colisión, por lo que debe recibir 64 bytes antes de transmitir.
Daniel Dib
2
Sí, creo que algunos lo llamarían reenvío directo, en lugar de almacenar y reenviar. En un enfoque de corte, un conmutador podría comenzar a reenviar tan pronto como haya recibido y buscado el MAC de destino, pero existen enfoques híbridos en los que espera un poco más, por ejemplo, para poder mirar una IP para verificar una ACL saliente . (El campo Ethertype le indicaría si hay una dirección IP presente en el marco).
Gerben
1
^^^ Esto. Es por eso que NE oscila.
Craig Constantine
44
Como nadie lo mencionó, el inconveniente de cortar es el caso extraño del error de cuadro. Si bien el corte reduce la latencia ligeramente en el marco inicial (cuanto más grande es el marco, más impacta), reenvía el marco independientemente de si el marco es válido porque lo hace sin recibir el marco completo y poder verificar el FCS . Los conmutadores de almacenamiento y reenvío recibirán el fotograma completo y podrán verificar el FCS antes del reenvío, lo que les permitirá descartar fotogramas no válidos.
YLearn
2
La mayoría de los conmutadores son solo de almacenamiento y reenvío, el corte regresó hace unos años, porque es fácil de vender al mundo financiero. almacenar y reenviar en 10G provoca una latencia de 1.2us, es decir, 235m. Además, la entrada y la salida no pueden tener una velocidad diferente en el corte.
ytti
6

Pregunta muy interesante que desafortunadamente no tiene una respuesta única y correcta, ya que la solución exacta varía de hardware a hardware.

Sin embargo, este problema se trata explícitamente en Redes de computadoras: un Apparoch de sistemas en la página 231-232.

La esencia de la solución para el diseño llamada 'Interruptor Sunshine' es que tiene entrada de diagrama - batcher - trap - selector == banyan === salidas y hay un cuadro de retraso que conecta el selector al batcher. Y cito:

Cuando más de 1 (tamaño ed. De banyan) se destinan a una sola salida en el mismo ciclo, se recirculan a través del cuadro de retraso y se vuelven a enviar al conmutador en el siguiente ciclo.

Y además:

La red de trampa identifica los paquetes que podrán salir del conmutador a través de los banyan (hasta 1 de ellos por puerto de salida) y marca el resto para la recirculación.

ytti
fuente
3

Siempre habrá ALGUNA diferencia cuando las dos computadoras envíen a la tercera, a menos que esté haciendo algo especial en el conmutador, se transmitirá de manera FIFO, por lo que cualquier trama que llegue primero se transmitirá primero.

David Rothera
fuente
1
Como la PC [23] está en sus propios cables, no hay nada que impida que el marco llegue exactamente al mismo tiempo para la precisión del 'momento' (frecuencia) en la que se ejecuta HW. Supongo que depende del diseñador ASIC del interruptor decidir qué que hacer en ese caso, pero supongo que leerá fotogramas de los puertos de forma circular.
ytti
2
Buen punto, quería decir que la posibilidad de que dos cuadros lleguen exactamente al mismo tiempo era bastante baja. Como mencionas, probablemente se deba al diseño ASIC y estoy bastante seguro de que no se documentará en ninguna parte a menos que saltes a través de una serie de obstáculos con tu equipo de cuentas.
David Rothera
El que interrumpe primero gana, suponiendo que todo lo demás sea igual.
generalnetworkerror
0

Cambia hacia adelante un paquete a la vez cuando entran en el interruptor para que no haya colisiones. Luego, PC3 procesará los paquetes de PC1 y PC2 dividiendo su tiempo de CPU. Las ventanas y el almacenamiento en búfer controlarán el flujo de comunicación.

Jon Rob
fuente