¿Cómo crea un algoritmo de enrutamiento de inundación paquetes de red duplicados?

Si las topologías de red fueran siempre gráficos acíclicos, habría muy poco riesgo de enviar datagramas duplicados. Sin embargo, las redes del mundo real pueden tener ciclos (bucles) fácilmente y la misma información puede enviarse más de una vez. Para visualizar cómo puede suceder esto, imagine un grupo de enrutadores todos conectados entre sí en forma de círculo, con un “diámetro” del círculo que conecta dos nodos opuestos. Si un paquete comienza en un diámetro, muchos nodos verán el paquete más de una vez.

Editar: He aquí, mi topología de red basada en la pintura de mierda:

Imagine que un datagrama comienza en A y se inunda a sus tres vecinos, incluido B. B recibirá el mensaje unas tres veces (una de A directamente y otra de sus dos vecinos).

Los algoritmos de enrutamiento / enrutamiento del mundo real mitigan esto mediante:

  • Poner algún tipo de tiempo de espera / TTL en cada datagrama (aunque no es un protocolo de enrutamiento de inundación, IP utiliza esta técnica; ver: http://en.wikipedia.org/wiki/Tim…) que se verifica y / o disminuye en cada salto.
  • Tener nodos rastrean el estado completo de la red / datagrama en todo momento. IIRC, los protocolos de enrutamiento de estado de enlace actúan así (alguien me corrige si me equivoco): http://en.wikipedia.org/wiki/Lin… (Editar: Excelente, estaba en lo correcto: http: // en. wikipedia.org/wiki/Ope…, http://bradhedlund.com/notes/ospf/)

Ventajas del tiempo de espera / método TTL

  • No grava la memoria de los enrutadores por datagrama ya que toda la información está codificada / almacenada en el datagrama
  • Casi trivial de implementar en el caso básico

Contras de tiempo de espera / método TTL

  • Las redes en bucle tardarán en terminar los datagramas. Esto consumirá recursos de red adicionales (ancho de banda) con el tiempo, por paquete, dependiendo de la topología de la red.

Ventajas de la transferencia de estado completo

  • Los bucles tienden a detectarse mucho más rápidamente y el ancho de banda adicional no se consume con el tiempo de la misma manera que lo hace con el método TTL.

Contras de la transferencia de estado completo

  • Mucho más carga en la memoria del enrutador, especialmente para redes grandes, ya que debe almacenar “cosas” por nodo.
  • Ligeramente más difícil de implementar y más “cosas” a tener en cuenta: ¿cuánto estado de red queremos admitir por nodo? ¿Qué estructuras de datos deben usarse (tabla hash? Lista ordenada? Árbol equilibrado?) ¿Qué tan grandes / complicadas deben ser las actualizaciones almacenadas?

1) La capa 2 (tormentas de difusión), la capa 3 (bucles de enrutamiento) puede provocar bucles que provoquen inundaciones

a) una es la capa 2 Tormentas de difusión que se deben principalmente a bucles de conmutación -> El árbol de expansión es la solución aquí

b) El tráfico de multidifusión que se reenvía en varios puertos mediante conmutadores-> nuevamente El árbol de expansión es la solución aquí

c) Routing Loops -> Ejecutar algoritmos de enrutamiento es la solución aquí

3) Por lo general, los paquetes de control (ARP, OSPF, etc.) se transmiten, no los datos del usuario

4) Tener un dominio de difusión del tamaño adecuado y un dominio de colisión evitará este problema (con STP y algoritmos de enrutamiento)

Además de eso ,

Las inundaciones se usan en puentes y en sistemas como Usenet y el intercambio de archivos punto a punto y como parte de algunos protocolos de enrutamiento , incluidos OSPF , DVMRP y aquellos utilizados en redes inalámbricas ad-hoc .

Más información:

  • Problema de bucle de enrutamiento
  • Radiación de difusión
  • Inundaciones (redes de computadoras)

Considere un enrutador A conectado a tres enrutadores: B, C y D. B y C también están conectados entre sí. Ahora, imagine que el enrutador A recibe un paquete de D. Dado que en una inundación, reenviamos un paquete en cada interfaz, excepto en la interfaz en la que se recibió , el enrutador A reenvía el paquete a B y C (no D). Los enrutadores B y C ahora reenviarían este paquete entre sí (no A, ya que ambos recibieron el paquete de A). Pero como B y C habían recibido este paquete antes de A, ambos terminan con paquetes duplicados.

Hola, por favor necesito escribir una simulación en c ++ o java mostrando técnicas de inundación