Mostrando las entradas con la etiqueta Split-horizon. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Split-horizon. Mostrar todas las entradas

lunes, 19 de abril de 2010

Routing Information Protocol (RIP)

RIP es un verdadero protocolo de vector-distancia; envía su tabla de ruteo completa por cada interfase activa cada 30 segundos, y sólo usa el número de saltos para determinar la mejor ruta hacia una red, con un conteo máximo de 15 saltos por default, declarando el destino inalcanzable al 16o. salto.

Trabaja bien en redes pequeñas, pero en redes grandes con enlaces WAN de anchos de banda pequeños es ineficiente.

RIP versión 1 usa sólo ruteo por clases (classful routing), es decir que todos los  dispositivos en la red deben usar la misma máscara de red; ésto se debe a que RIPv1 no envía las actualizaciones con las máscaras de red incluídas. RIP versión 2 tiene algo llamado prefijos de ruteo (prefix routing) y envía las máscaras de red en las actualizaciones de rutas. Éste si es classless routing.

RIP usa 4 contadores o timers para regular su desempeño:
  • Route update timer, es el contador que espera antes de enviar las actualizaciones de rutas, por default 30 segundos.
  • Route invalid timer, es el contador que lleva el tiempo que debe pasar antes de que un router determine que una ruta es inválida, 180 segundos por default. Se llegará a esta conclusión si no hay una actualización para esa ruta particular durante este periodo. Después de ese tiempo el router envía un anuncio a todos sus vecinos para que sepan que la ruta es inválida.
  • Holddown timer, es otro contadorde tiempo durante el cual se suprime la información de ruteo. Un router entra en un estado de holddown cuando una actualización nos indica que una ruta es inalcanzable. Este estado se mantiene hasta que una actualización nos avisa de una ruta con mejor métrica o hasta que expira el tiempo del holddown timer, que por default es de 180 segundos.
  • Route flush timer, fija el tiempo que pasa entre que se vuelve inválida una ruta y su retiro de la tabla de ruteo, por default son 240 segundos. Antes de quitarla de la tabla, el router les informa a los vecinos del retiro inminente de la ruta. El valor del contador Route invalid timer debe ser menor que el route flush timer para dar tiempo a que se anuncie entre los vecinos la actualización de la tabla de ruteo local.

Protocolos de Vector-Distancia

Como ya vimos, un protocolo como RIP basado en los saltos anuncia sus vecinos toda su tabla de ruteo, y no conoce de los anchos de banda o estado real de los enlaces en la red, así que, el siguiente escenario nos podría presentar un problema:
RIP

supongamos que hay una red más allá de nuestro router E a la que llamaremos T, a la cual lógicamente todos nuestros routers llegan por E; pero ese enlace falla y T es inalcanzable.

Como en RIP todos envían sus tablas de ruteo; A y B anunciarán que conocen la red remota T a través de C, y C anunciará que la conoce a través de D, mientras que D anunciará que la conoce por E, pero E anunciará que no está disponible. En ese momento D combinará su tabla con el anuncio, pero esperaremos al siguiente anuncio de rutas para que C sepa que no hay una ruta hacia T; y en el momento en que C reciba esa información, A hará el anuncio de que conoce una ruta hacia T a través de C, que le ha anunciado que no es alcanzable, pero que podría utilizar B para alcanzarla, por lo que ahora, todos conocerán a T a través de A que hizo un anuncio de ruta válida.

Esta situación es un loop de ruteo, caímos en una iteración infinita de resolución de una ruta. Para evitar ésto, RIP tiene un máximo de saltos, en este caso 15 saltos, después de lo cual declara el destino inalcanzable, es decir, declararemos que T está down luego de pasar por 15 routers en el proceso de búsqueda. Además, este conteo máximo de saltos nos ayuda a determinar cuanto nos toma declarar una ruta inválida o cuestionable.

Otra posible solución es el algoritmo Split-Horizon (horizonte dividido) , que reduce la información incorrecta y la carga de tráfico por información de ruteo al aplicar una regla simple: la información de ruteo no puede regresar por la dirección en que fue recibida. Es decir, el protocolo diferenciará por que interfase aprendió una ruta, y no anunciará la misma ruta por esa interfase, así evitaremos que el router A le envíe rutas a B que aprendió de B.

Otra manera de evitar las actualizaciones de rutas inconsistentes y evitar loops de ruteo es envenenar las rutas (Route Poisoning). Por ejemplo, cuando T se va down, el router E comienza a anunciar que la ruta hacia T es de 16 saltos (inalcanzable). Así evitamos que D y los demás subsecuentemente, anuncien una ruta inválida, y se asegura mediante el anuncio de una ruta Poison Reverse que D enviará a E, así sabremos que todos los routers del segmento conocen la ruta inalcanzable.

Un holddown es un tiempo de espera antes de enviar un anuncio regular de ruteo para una ruta que ha estado cambiando de estado (flapping); por ejemplo un enlace serial que pierde conectividad y regresa. Si no hay una manera de estabilizar dicho enlace la red no podrá converger y podría venirse abajo completa. Con el holddown nos aseguramos de que los cambios de estado no sean muy rápidos, dando tiempo para que la ruta afectada regrese o que la red se estabilice antes de volver a usar la ruta afectada. También es una manera de restringir a los routers por un espacio de tiempo los cambios que podrían afectar a rutas que se caban de retirar. Así evitamos que rutas no operativas se restablezcan en las tablas de otros routers.