¿Qué tiene de malo una red compuesta por 10000 computadoras, en la que cada computadora está conectada directamente a cualquier otra computadora?

Las conexiones físicas del cable implican que cada computadora esté cableada a otras 9,999 computadoras. Eso significaría 99,990,000 conexiones (10,000 computadoras x 9,999 conexiones salientes). Como cada cable tiene dos extremos, eso requiere enchufar ambos extremos de 49,995,000 cables.

Si suponemos conectores modulares, como un RJ-45 de 8 pines, que requiere un puerto con un área, con espacio libre, de 2 cm de lado, entonces las 10,000 computadoras necesitan un área de superficie de 4 metros cuadrados, completamente llena con una matriz de puertos hembra para hacer las conexiones. No estamos hablando de ningún equipo disponible en el mercado hoy en día.

El cableado se pone interesante. El paquete reunido de 9.999 cables que van a cada computadora se unirían en una masa más grande que el tronco de un árbol de 30 años. Al navegar por cables separados, y teniendo en cuenta nuestros paneles de conexión de 4 metros cuadrados, corremos el riesgo de que los cables más lejanos, probablemente muy por encima de los 400 metros, excedan los límites del equipo para una transmisión de datos confiable.

Dentro de cada computadora, las cosas se ponen interesantes. Se necesita una decisión de arquitectura: ¿utilizamos un diseño impulsado por interrupciones o una estrategia de sondeo? ¿El circuito permite que las señales eléctricas interrumpan el procesamiento, lo que requiere un manejo inmediato, incluso si solo se almacena en búfer? O, ¿la arquitectura sondea cada uno de los 9.999 circuitos en busca de actividad o necesita atención? El primero agotará rápidamente la informática de propósito general con interrupciones. Este último requiere tolerancia para una latencia muy larga ya que cada uno de los 9.999 circuitos se prueba para funcionar.

Todos los datos enviados requieren una señal de retorno de que se recibieron los datos, y estos reconocimientos deben consumirse, lo que permite que la computadora envíe datos adicionales o pase a la siguiente tarea.

Por lo tanto, la escala física y la escala computacional para soportar la comunicación punto a punto con casi 10,000 computadoras dificultarán el diseño.

Por último, no es necesario que sea una empresa muy grande para la situación en la que pares de empleados e incluso departamentos enteros tienen cero interacción entre ellos. No se conocen los nombres de los demás. Trabajan turnos separados, usan diferentes entradas. De manera similar, dependiendo del propósito de la red de computadoras, muchas de las conexiones físicas punto a punto entre computadoras pueden estar cableadas, pero nunca utilizadas para ningún trabajo real. Todo ese cable. Gran parte de ella es pura basura.

Nada. De hecho, este es el tipo de comportamiento efectivo de interconexión que los clústeres de supercomputadoras intentan abordar. Sin embargo, la realidad es que no se puede hacer una implementación ingenua, donde literalmente un nodo está físicamente físicamente conectado directamente al otro 9999. Son demasiados cables, demasiados puertos, demasiada potencia, demasiados todo.

Lo que sí obtenemos son tejidos de interconexión de todo tipo de topologías: anillos, árboles, hipercubos, mallas de todo tipo, etc. Todos tienen un comportamiento diferente con respecto al escalado de ancho de banda de bisección, latencia, complejidad. La única característica común es que no hay un almuerzo gratis en el grupo.

Una de las topologías de mejor rendimiento para hasta, quizás unos pocos cientos de nodos, es la barra transversal. Encontrará implementaciones de esto en, por ejemplo, conmutadores Ethernet.

Como puede ver, cualquier nodo puede conectarse directamente a uno (a n-1) otros nodos, pero solo a un objetivo a la vez.

Tomemos, por ejemplo, algunos casos más pequeños primero.

Primero, miramos una red con 2 computadoras donde están conectadas. Tienen una conexión entre ellos.

¿Y una red con 3 computadoras entre ellos? Pruébelo en un triángulo y verá que hay 3 conexiones para conectar todas las computadoras.

4 computadoras? Dibuja un cuadrado y engancha todas las esquinas hacia arriba. 6 lineas.

5? 10 conexiones.

Tal vez una lista pueda expresar mejor a dónde voy con esto:

  1. Sin conexiones
  2. 1 conexión
  3. 3 conexiones
  4. 6 conexiones
  5. 10 conexiones
  6. 15 conexiones

La cantidad de conexiones para una red de computadoras x parece ser que se suman todos los números entre 0 y x-1. Esto lógicamente tiene sentido también si observa este problema de forma iterativa. Cada vez que agregue una computadora nueva a la red, todas las conexiones anteriores permanecerán, la parte de 0 a x-2, y cuando agregue la computadora xth, debe conectarse con todas las demás. Por lo tanto, es la cantidad de computadoras menos la que agregó porque no se conecta a sí misma.

Una fórmula para expresar claramente una suma de 0 a n es [matemática] n (n + 1) * 1/2 [/ matemática] si desea una explicación o prueba, pídamela, me encantaría proporcionarla. Ahora no estoy en mi PC, así que escribirlo es molesto.

Subscribiendo x-1 para n obtenemos [matemática] x (x-1) * 1/2 [/ matemática]

Llenar en tienda de campaña: [matemática] 10.000 * 9.999 * 1/2 = 5.000 * 9.999 = 49.995.000 [/ matemática]

Como puede ver, eso requeriría muchos cables de ethernet e incluso más puertos de ethernet (a saber: [matemática] 10.000 * 9.999 = 999.000 [/ matemática])

El hecho de que requeriría 9,999 x 10,000 cables para conectarlos, y cada computadora requeriría 9,999 puertos. No sé cómo construir este último, y no puedo imaginarme cablear 99,990,000 cables.

Tal vez tenga la ilusión de que conectar computadoras a través de un interruptor es lo mismo que conectarlas directamente. No lo es. Los interruptores tienen una capacidad limitada, y cuando comienzas a acercarte a esa capacidad, las cosas comienzan a salir mal. Construir el sistema de cambio de mensajes es el “arte oscuro” de construir supercomputadoras. Los procesadores son fáciles, la interconexión es difícil, muy difícil.

El tráfico se vuelve ridículo, si hay algún tráfico significativo por nodo.

Si tenía un ethernet original de cable grueso (o cable delgado), así era como funcionaba: cada nodo estaba conectado a un solo cable con una conexión de derivación corta. Sería posible, supongo, conectar 10,000 computadoras que casi no hicieron nada, tal vez enviaron un informe meteorológico a un servidor central al azar cada hora, tal vez. Ethernet funcionó mediante detección de colisión y reintento aleatorio, lo mismo que WiFi. Si aumentaba la cantidad de tráfico, también aumentaba la cantidad de colisiones, hasta que ningún paquete pudiera pasar. En la práctica, es difícil asegurarse de que una red de computadoras tenga poco tráfico: la red estándar de Microsoft para una se basa en transmisiones regulares que van a cada nodo. Eso solo pondría a la gran red de rodillas antes de comenzar cualquier aplicación. Los propios nodos estarían sobrecargados: la mayoría de las interfaces de red pueden manejar algunos paquetes de Ethernet de unidifusión y multidifusión en el hardware, y rechazar los que no coinciden con la dirección MAC, pero otros paquetes, como la difusión, se pasan a la pila de red en el núcleo del sistema operativo. Es eficiente, no es un software de capa de aplicación, pero aún tendría un impacto.

Los principales inconvenientes serían duales:

  1. El costo, esto costaría una cantidad increíble de dinero, cualquier especificación de un proyecto como este con este requisito específico sería despedido, si fueran trabajadores por cuenta propia, se les recomendaría encarecidamente que no hicieran esto. Básicamente, en lugar de tener una cosa que puede hacer 10,000 trabajos virtuales, en cambio está cambiando lo virtual por lo físico y tiene 10,000 cosas que pueden hacer 1 trabajo cada uno. Esto es lo opuesto a este tipo de empoderamiento que las computadoras deben lograr.
  2. La sobrecarga del sistema sería astronómica. Su CPU se usaría esencialmente solo para arrancar y procesar el tráfico de red. La computadora no podría hacer ningún trabajo real considerando la gran cantidad de conexiones de red.

Porque buena suerte físicamente conectando tantos cables.

Siempre habrá un cuello de botella en alguna parte. En nuestras arquitecturas actuales, generalmente en Entrada / Salida a medios de almacenamiento. Tan pronto como agregue una pieza de información local a una máquina, agrega la posibilidad de que todo se detenga cuando toda la matriz intente acceder a esa computadora para obtener el archivo único.

Además, tiene el problema del direccionamiento y la escalabilidad, ya que al escalar cada computadora necesita recordar más direcciones a las que está conectada. Cada vez que accede a otra computadora en red, tiene que hacer una búsqueda oportuna y costosa de esas direcciones para averiguar con quién está contactando. Amplíe esto y eventualmente disminuya la velocidad de toda la red porque siguen teniendo que buscar en sus listas masivas de direcciones una y otra vez.

La forma en que funcionan nuestras arquitecturas de red actuales en cada computadora no tiene que recordarse entre sí, solo tiene que recordar una (o en realidad algunas) que recuerden por ellas. Este es DNS, se encarga de recordar qué nombres reconocemos (como quora.com) y convertirlos en direcciones IP para que nuestras máquinas se pongan en contacto para que nuestros escritorios domésticos no tengan que recordar millones de direcciones separadas y realizar la búsqueda cada vez que solicitar una página web

Depende de si lo dices literalmente o no.

10,000 ^ 2 conexiones directas, todas las tarjetas de red involucradas, etc., eso no tiene ningún sentido, si pudieras colocar todo el hardware en las cajas y permitirte todos los cables y tarjetas.

10,000 computadoras conectadas a una LAN corporativa, eso es un gran centro de llamadas.

Ahora tenemos procesadores de 1000 núcleos: conecte 10 de ellos en una placa posterior y uno tiene una supercomputadora bastante agradable.

¿Directamente conectado? Lo siento, pero no puedes, no con el hardware de computadora habitual. Claro, puede construir uno personalizado, pero con una computadora de serie puede obtener como máximo 4–6 tarjetas de red que permitirán 4–6 conexiones directas.

Ahora, puedes usar un interruptor. No permitirá la conexión directa de ninguna computadora, pero seguramente funcionaría y no hay nada malo en eso. Mi empresa probablemente tenga más que eso (y mucho más de 1 interruptor).

Esto se puede hacer con bastante facilidad, y ya se ha hecho, en modo inalámbrico.

El espacio tiene una capacidad masiva de mantener y manejar comunicaciones inalámbricas.