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:
- ¿Cómo puedo dominar las redes de computadoras para poder escribir programas usando redes de computadoras?
- ¿Las direcciones IP se basan en la ubicación del centro de datos? Por ejemplo, ¿sería posible usar un bloque de IP de EE. UU. Para mi centro de datos en Francia?
- Cómo hacer para configurar una pequeña red para una empresa de contabilidad
- ¿Cómo puede mi ISP evitar que descargue a través de mi navegador pero mis descargas de torrents aún funcionan? ¿Cómo funciona esa tecnología?
- ¿Estar en una VPN ralentiza su navegación web?
- 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?