# Inundación de red

La inundación (en inglés: flooding) consiste en un algoritmo simple de enrutamiento en el cual se envían todos los paquetes entrantes por cada interfaz de salida, excepto por la que se ha recibido. Debido a como funciona el algoritmo de enrutamiento se garantiza que un paquete es entregado (si este puede ser entregado). Este algoritmo de enrutamiento es muy fácil de implementar, aunque con un enfoque bruto e ineficiente. Se aplica en las tramas de descubrimiento, en los puentes de red (bridges) por encaminamiento desde el origen y los transparentes, cuando la dirección de destino es desconocida.
Usenet y peer-to-peer (P2P) utilizan las inundaciones, así como los protocolos de enrutamiento como OSPF (Open Shortest Path First), DVMRP (Distance Vector Multicast Routing Protocol) y redes ad-hoc inalámbricas.

## Inconvenientes y sus posibles soluciones

Debido a que los paquetes son enviados a través de cada enlace de salida se desaprovecha el ancho de banda. Esto significa que la inundación puede degradar la fiabilidad de una red informática.
La inundación puede multiplicar el tráfico si existen bucles en la topología, ya que en ese caso se envían paquetes duplicados. A menos que se tomen las precauciones necesarias como en el número de saltos o en el tiempo de vida, las copias duplicadas podrán circular dentro de la red sin parar. Para limitar este problema se fija un número máximo de saltos, que suele ser igual al número de saltos que hay entre los dos puntos más alejados de la red. Otra posibilidad es identificar los paquetes, por ejemplo numerándolos, para que cada router mantenga una lista de los paquetes enviados y así puede evitar reenviarlos de nuevo, asegurándose de que un paquete pasa a través de él una sola vez. También puede usarse ﬂooding selectivo en el que el paquete se envía solamente por las líneas que aproximadamente apuntan en la dirección correcta. Flooding se utiliza en algunos algoritmos de routing multicast.

## Ventajas

El flooding tiene las siguientes ventajas:
* No es necesario para el estado del enlace, distribuciones de información ni cálculos complejos de ruta, por lo tanto se reduce los gastos generales de funcionamiento y complejidad de la aplicación.
* Los routers no están obligados a mantener la base de datos de la información de estado del enlace, con el consiguiente ahorro espacio de almacenamiento.
* Se acorta la ruta de búsqueda la conexión tiempo de configuración y puede seleccionar la mejor ruta disponible basada en múltiples criterios de calidad de servicio. Desde la última, y por lo tanto a más precisa, la información del estado del enlace se utiliza para la determinación de una nueva conexión, este puede encontrar una ruta cualificada.

## Causas

* La principal causa de las inundaciones es que la dirección MAC de destino del paquete no esté en la tabla de reenvío de un switch. En este caso, el paquete inundará todos los puertos de reenvío en su VLAN (excepto por el puerto por el que se recibió).
* Enrutado asimétrico. El enrutamiento asimétrico se produce cuando los paquetes son enviados desde una fuente a un destino a través de un camino, mientras que el tráfico de retorno sigue una diferente ruta. El tráfico es deliberadamente compartido a través de varias rutas de exploración y producción. El enrutamiento asimétrico puede causar una inundación excesiva de paquetes IP unicast.
* Protocolo Spanning tree. La función del protocolo es la de gestionar la presencia de bucles en topologías de red debido a la existencia de enlaces redundantes, permitiendo a los dispositivos de interconexión activar o desactivar automáticamente los enlaces de conexión, de forma que se garantice que la topología está libre de bucles. Los bucles infinitos ocurren cuando hay rutas alternativas hacia una misma máquina o segmento de red destino. Cuando existen bucles en la topología de red, los dispositivos de interconexión de nivel de enlace de datos (puente de red o un conmutador de paquetes) reenvían indefinidamente las tramas broadcast y multicast creando un bucle infinito que consume tanto ancho de banda en la red como CPU de los dispositivos de enrutamiento. Esto provoca que la red se degrade en muy poco tiempo pudiéndose quedar inutilizable.
* Desbordamiento de la Tabla de Reenvío. Cuando no se pueden añadir nuevas direcciones en la tabla de reenvío los paquetes destinados a tales direcciones inundan hasta que exista algún espacio disponible en dicha tabla. El desbordamiento de la tabla también puede ser causado por un ataque en la red donde un host comienza a generar tramas con dirección MAC diferente cada una. Esto saturará todos los recursos de la tabla de reenvío y cuando esto sucede el resto del tráfico inundará la red.

## Diferencias con broadcast

En difusión o broadcast se envía un paquete a todos los hosts simultáneamente, sin embargo, flooding no envía paquetes a todos los hosts de forma simultánea. En última instancia los paquetes llegarían a todos los nodos de la red debido a las inundaciones. Flooding puede enviar el mismo paquete a lo largo del mismo enlace múltiples veces, pero el broadcast envía un paquete a lo largo de un enlace una sola vez. Varias copias del mismo paquete pueden llegar a los nodos por el flooding, mientras que el broadcast no causa este problema. A diferencia de las inundaciones en broadcast se especifica una dirección especial en los paquetes.

## Bibliografía

* Redes de Datos, Jorge E. Pezoa Núñez, Universidad de Concepción Facultad de Ingeniería Depto. de Ingeniería Eléctrica, 2001.
* Difference Between Flooding and Broadcasting, Indika, Jun 25th, 2011.
* Fast and Efficient Flooding Based QoS Routing Algorithm, Hung Keng PUNG, Jun SONG and Lillykutty Jacob. Department of Computer Science, School of Computing National University of Singapore.
* Datos: Q179613