Problema de Cuenta a Infinito en Protocolos de Enrutamiento Vector de Distancias
Las Malas Noticias Viajan Lentamente
Supongamos que el router R1 falla:
- Aproximadamente 3 minutos después, R2 marca la ruta como inválida.
- Si antes de que R2 envíe el vector a R3, este se lo envía a él, R2 pensará que se puede llegar a la red A a través de R3.
- Pero cuando R2 informa a R3 del nuevo camino, este verá un aumento en el coste.
- Y así ad infinitum.
Este es el proceso de cuenta a infinito. En este contexto, se considera infinito a un valor de 16.
Veamos un ejemplo con los routers R1, R2 y R3, donde la red A está conectada a R1:
Situación inicial:
- R2: Dst: Red A, cost: 2
- R3: Dst: Red A, cost: 3
R1 falla:
- R2: Dst: Red A, cost: ∞
- R3: Dst: Red A, cost: 3
R3 envía su vector a R2:
- R2: Dst: Red A, cost: 3 (piensa que puede llegar a través de R3)
- R3: Dst: Red A, cost: 3
R2 envía su vector a R3:
- R2: Dst: Red A, cost: 3
- R3: Dst: Red A, cost: 4 (aumenta el coste porque la ruta pasa por R2)
R3 envía su vector a R2:
- R2: Dst: Red A, cost: 5
- R3: Dst: Red A, cost: 4
R2 envía su vector a R3:
- R2: Dst: Red A, cost: 5
- R3: Dst: Red A, cost: 6
Y así sucesivamente, hasta llegar a 16 (infinito).
Solución: Split Horizon
Split horizon es una técnica que evita bucles de enrutamiento. Consiste en no incluir en el vector de distancias que se envía por una interfaz los destinos a los que se llega por esa misma interfaz.
- Los mensajes son más pequeños.
- Evita el bucle del ejemplo anterior.
Ejemplo:
- Caduca el temporizador (180s) en R2 y marca la ruta a la red A como inválida (coste ∞).
- Caduca el temporizador (30s) en R2 y envía su vector a R3.
- Como R2 llega a la red A a través de R3, no incluye la red A en el vector que envía a R3.
Split Horizon with Poisoned Reverse
Esta técnica es una mejora de split horizon. Consiste en anunciar los destinos a los que se llega por una interfaz con métrica ∞ (infinito) en el vector que se envía por esa interfaz.
- No hay que esperar al temporizador de expiración de la ruta.
- Los mensajes vuelven a ser grandes.
Convergencia Lenta
Las malas noticias viajan lentamente, lo que provoca una convergencia lenta.
- Actualización de información: En el peor de los casos, se necesitan N x 30 segundos para llegar al otro extremo de la red.
- Pérdida de ruta: En el peor de los casos, se necesitan N x 180 segundos hasta el otro extremo.
Para mejorar estos tiempos, se pueden usar triggered updates: enviar el vector de distancias en cuanto se produzca un cambio en el mismo.
Ejemplo de Cuenta a Infinito con Split Horizon with Poisoned Reverse
Consideremos la siguiente topología, donde las flechas indican las rutas hacia la red A:
R1 -- R2 -- R3 -- R4
| |
A E
| |
B D
|
C
Se utiliza split horizon with poisoned reverse.
Pasos:
- Falla el interfaz de R1 en la red A.
- R1 anuncia coste ∞ a R2 y R4.
- Puede que antes de que R1 avise a R3, este envíe su actualización periódica.
- R4 introduce una entrada hacia la red A por R3.
- R4 anunciará esa ruta a R1.
- R1 creerá que se llega a la red A por R4 con coste 5.
- R1 lo anunciará a R2.
- R2 creerá que se llega a la red A por R1.
- Y así sucesivamente, hasta que R2 llegue a R3, produciéndose una cuenta a infinito.
Solución: Hold Down
El hold down es un temporizador que se activa al marcar una ruta como inválida. Durante el tiempo de hold down, no se aceptan nuevas rutas a ese destino.
Ejemplo:
- R4 entra en hold down.
- R4 ignora la ruta anunciada por R3.
¿Cuánto tiempo debe durar el hold down?
- Depende del tamaño de la red.
- Se suele sobredimensionar (por ejemplo, 120 segundos).
- Si hay una ruta alternativa, se tardará más tiempo en descubrirla.
Conclusión
La combinación de split horizon, poisoned reverse, triggered updates y hold down ayuda a mitigar el problema de la cuenta a infinito, pero aumenta la complejidad del protocolo de enrutamiento.