martes, 5 de noviembre de 2013

OSPF Básico I: DR y BDR


Ya todos sabemos que Open Shortest Path First (OSPF) es un protocolo de enrutamiento de estado enlace, que es un estándar abierto y que se define en la RFC2328.

OSPF usa un algoritmo llamado SPF que ya sabemos que busca los caminos de menor costo teniendo en cuenta que debe generar una topología libre de loops de enrutamiento. Cada nodo que lo utiliza contiene en memoria un mapa completo de la red para que se le permita calcular las rutas, por lo que es evidente que este protocolo va a tener requerimientos más altos en lo que se refiere a memoria y procesamiento en cada router donde se ejecute.

Dentro de los parámetros requeridos para funcionar, cualquier router que ejecuta OSPF requiere de lo que se denomina un router-id, que es básicamente un número de 32 bits que identifica unívocamente a cada equipo.

El router-id se selecciona de la siguiente manera:
  1. Utiliza el id configurado con el comando router-id.
  2. Si existe una loopback configurada, utiliza su dirección IP como router-id.
  3. Si existen varias loopback configuradas, busca la que tenga la IP más alta.
  4. Finalmente, si no hay ninguna loopback configurada, utiliza la IP más alta que encuentra en las interfaces.

Ahora viene la pregunta lógica... ¿por qué una loopback?.

Bien, veamos que si el equipo no tiene un router-id el proceso de enrutamiento se cae, por lo que se pierde la convergencia. Si yo pongo el proceso de OSPF asignado a una IP de una interfase (por ejemplo una ethernet) y esa ethernet se cae (se desconecta, falla el cable, se apaga el switch, etc...) el proceso de enrutamiento se cae también, obligando a elegir otro router-id y recomenzar el cálculo de todo de nuevo.

Ahora, una loopback es una interface que es virtual y nunca se va a caer salvo que le pongamos el fastuoso comando shutdown o la borremos. Con esto aseguramos que el proceso de OSPF se mantenga activo siempre.

Ya que tenemos el proceso de elección del router-id concluído, hay determinadas cuestiones que hacen a la optimización de recursos que se debieron tener en cuenta al momento de definir el protocolo.

Sabemos que los routers generan lo que se llama un Link State Update (LSU) que contiene Link State Advertisements (LSA) que son básicamente paquetes de datos que contienen los enlaces directamente conectados con todos los detalles de dicho enlace. Esto lo envía cada router a todos sus vecinos directamente conectados, que a su vez luego reenvían a los demás.

Esto es lo que se llama la inundación de información de LSA's, y básicamente es el proceso en el que cada router aprende todos los enlaces de toda la red para luego armar el famoso mapa topológico en su memoria que posteriormente se procesa con el algoritmo SPF.

El problema del multiacceso:


Supongamos que tenemos un switch ethernet donde están conectados varios routers -en la misma VLAN-.

Si cada router debe enviar los LSU a todos los otros, resulta que debo tener demasiados diálogos (uno por cada vecino), quedando para toda la VLAN:

[math]DialogosTotales=\frac{n(n-1)}{2}[/math]

Digamos, si tenemos 8 routers se deben establecer [math]\frac{8(8-1)}{2}[/math], es decir 28 conversaciones para enviar la información a todos los vecinos. Esto genera una carga extra en todos los equipos que puede -y debe- ser evitada.




La solución: el DR.


El Designated Router es el puesto que toma uno de los routers de cada segmento multiacceso. Se utiliza para que los intercambios de LSU se realicen sólo contra el DR. Es decir, todos los routers dialogan (intercambian LSU) únicamente contra el DR, y con esto se logra:

DialogosTotales=n-1, es decir que si hay 8 routers en el segmento y un DR, se establecen 7 diálogos de intercambio de LSU.



¿Cómo se selecciona el DR?


Muy fácil:
  1. El router que tenga configurada a mano la ip ospf priority más alta en la interfase.
  2. El router que tenga el router-id más alto.

Agregando redundancia: el BDR.


El Backup Designated Router es otro router que realiza intercambios de LSU con los demás nodos del segmento multiacceso. Se utiliza para agregar redundancia, ya que si el DR se cae, el BDR lo reemplazará para mantener la convergencia. Obviamente el BDR también estaba dialogando con el resto de los equipos.

Esto lleva la relación anterior a:

[math]DialogosTotales=2n-3[/math] es decir que si hay 8 routers en el segmento y un DR y BDR, se establecen 13 diálogos de intercambio de LSU.

Por lo que vemos es un buen balance entre cantidad de diálogos y redundancia.




¿Cómo se elige el BDR?


  1. El router que tenga configurada la ip ospf priority más baja que el DR pero más alta que el resto.
  2. El router que tenga el router-id más bajo que el DR pero más alto que el resto.

Por defecto la priority de todas las interfaces está configurada en 1. Si configuramos en 0, ese router nunca va a tratar de ser DR o BDR.

Obviamente queda mucho más por decir acerca de este protocolo, pero lo voy a dejar aquí para poder responder sus comentarios y ampliar el tema si es que les interesa.

No hay comentarios:

Publicar un comentario