martes, 12 de mayo de 2009

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.

Saludos.

42 comentarios:

silvota pe dijo...

Muy bueno!

Anónimo dijo...

que lastima que allá pasado tanto tiempo sin comentario el articulo. Esta muy bueno, simple y claro, nada avanzado pero preciso,cumple con el objetivo de enseñar.
felicitaciones.

Anónimo dijo...

Gracias, de rebote me ayuda para evaluar mejoras en la red en la que trabajo.

Anónimo dijo...

Muy buen aporte, es breve y entendible, me saco muchas que tenia

Anónimo dijo...

Exelente trabajo, es muy util para los que estamos aprendiendo redes y todabia no sabemos casi nada de OSPF. Espero mas material como por ej configuraciones practicas que pueda simular en el packet tracer

Anónimo dijo...

Esta muy bien, pero deberías ampliar mas pese a los comentarios..

Anónimo dijo...

información introductoria muy clara y precisa, muchas gracias por el aporte

Daniel Diaz dijo...

excelente muchas gracias

Daniel Diaz dijo...

Excelente explicación, muchas gracias

Anónimo dijo...

MUY BUENO ME SACO DE LA DUDA.

Anónimo dijo...

Muchas gracias! Buen articulo. Sencillo y conciso.

Anónimo dijo...

esta es la mejor explicación que he leído sobre esto, buen aporte

Anónimo dijo...

Excelente información,muchas gracias por compartir

Anónimo dijo...

Gracias. Muy buena informacion.

Anónimo dijo...

muy bueno..q éxito.gracias

Unknown dijo...

Muy bueno mi amigo, de hecho estoy en clase en este momento y me sirvio de mucho.

Unknown dijo...

Bueno, claro y preciso. Gracias por compartir.

Anónimo dijo...

¿Qué es el "router-id"?

Ariel S. Weher dijo...

es un número de 32 bits (en forma dot-quad de IPv4) que identifica unívocamente un router en toda la red de ospf

Unknown dijo...

Excelente blog! Muy bien detallado, simple y muy buen contenido.

Miguel Huallpa dijo...

gracias por la ayuda :)

Unknown dijo...

Muy buen post

danii dijo...

Gracias me sirvió para recordarlo.

Anónimo dijo...

exelente, en 5 minutos le entendi mas facil que lo planteado por el docente en la universidad

Ariel S. Weher dijo...

Probaste 'show ip ospf neighbor' ?

Anónimo dijo...

Muy buen tutorial, consulta en caso que todos las interfaces tengas la misma prioridad y solo 4 routers de 5 routers tengan configurado el router-id, cual sería el DR en ese caso?

Ariel S. Weher dijo...

el router id se configura a mano o sino se elige automáticamente segun la ip más alta. OSPF no funciona sin un id único.

Anónimo dijo...

Ariel, gracias por tu respuesta. A lo que me refiero es en un escenario de red broadcast de 5 routers, 4 de ellos tienen configurado su router-id pero el R5 no tiene un router-id configurado, este R5 tomaria coo router-id la ip de su interfaz fisica? y considerando el mismo cual sería el DR? Gracias nuevamente.

Ariel S. Weher dijo...

De nuevo, para que OSPF funcione, necesita un router-id, que se elige 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.
2a) Si existen varias loopback configuradas, busca la que tenga la IP más alta.
3) Finalmente, si no hay ninguna loopback configurada, utiliza la IP más alta que encuentra en las interfaces.

Siempre hay un router ID. Salvo que el equipo no tenga ninguna IP configurada, y por lo tanto no anda el ruteo IP.

En cuanto al DR, depende de las priorities o del router ID asignado a mano o en forma automática.

Anónimo dijo...

Ariel, buenas, tengo otra consulta. cual seria el DR y BDR en un escenario broadcast configurado con ospf area 0 con red:172.18.20.0/24 donde el R1(G0/0:172.18.20.1 Lo0:10.10.10.10/31) - R2(G0/0: 172.18.20.2 Router-id:2.2.2.2) - R3(G0/0:172.18.20.3) - R4(G0/0:172.18.20.4 Lo0:4.4.4.4/32)...

Anónimo dijo...

Explicación clara y precisa para entender los principios de funcionamiento de OSPF.

Anónimo dijo...

gracias por la informacion

Anónimo dijo...

Explicación muy buena para entender los principios de funcionamiento de OSPF.
Entiendo que si DR cae, el BDR se convierte en DR. En este momento hay BDR?
Si DR se recupera...vuelven a la situación inicial? o sea, el que es DR vuelve a ser BDR y el que se recupera DR?
En qué casos se "invoca" otra vez una nueva elección?
gracias.

Anónimo dijo...

Excelente! claro y conciso!!

Muchas Gracias!

Anónimo dijo...

Bueno artículo pregunta si dos routers tienen prioridad en sus interfaces una cero y otra uno están participando o no en elección de DR Y BDR o no y de estos cuál tiene prioridad,?

Anónimo dijo...

muy preciso! gracias

Anónimo dijo...

Excelente,de los mejores que he leído!

Anónimo dijo...

gracias , bien explicado

Anónimo dijo...

muy bueno para comenzar sin revolverse tanto

Anónimo dijo...

año 2020 y esta publicacion sigue ayudando!

Unknown dijo...

Excelente aportación, es muy preciso para quien se encuentra en aprendizaje de este protocolo de enrutamiento.

Nick dijo...

Thanks for sharing the article.

Publicar un comentario