lunes, 19 de enero de 2009

OSPF (Open Shortest Path First)

OSPF es un protocolo de routing abierto, que utiliza el algoritmo Dijkstra para calcular la ruta más corta. Primero se genera un árbol, y posteriormente la tabla resultante con los mejores caminos. Es un protocolo de estado de enlace.

Éstas son sus principales características:

  • Tiene un diseño jerárquico, puede dividirse en áreas.
  • Minimiza el tráfico de actualización de rutas.
  • Soporta VLSM (subredes de tamaño variable).
  • Sin límite de hops o saltos.
  • Balancea sólo links de igual coste (EIGRP permite que no sean iguales).

Todo diseño OSPF se compone de un área 0 o área backbone. Todos los otros áreas han de estar conectados con éste, física o lógicamente (virtual link). Un router que conecta otro área con el backbone, dentro de un autonomous system (AS), se denomina Area Border Router (ABR). Almenos una de las interfazes de un ABR ha de estar conectada al área 0.

OSPF puede conectar varios AS, el router que los conecta recibe el nombre de Autonomous System Boundary Router (ASBR).

Estos son algunos conceptos que usa OSPF:

  • Router ID: dirección IP que identifica al router. Es la ip más alta de todas las interfaces configuradas.
  • Router vecino: para que dos routers sean vecinos deben compartir el área y los intervalos de Hello y Dead. Si esta activada la autentificación también deben compartir el mismo password.
  • Router adyacente: relación entre dos routers que permite intercambiar actualización de rutas. Es decir entre un router y su DR y BDR.
  • Hello protocol: permite mantener las relaciones con los routers vecinos. Estos paquetes y los LSA construyen y mantienen la topological database.
  • Link state advertisement (LSA): paquetes que contienen el estado del enlace y información de routing compartida.
  • Neighborship database: lista de routers OSPF a los que se envían paquetes Hello. Contiene detalles, como la router ID o el estado.
  • Topological database: contiene información de los LSA recibidos de un área. Se utiliza como entrada del algoritmo Dijkstra para encontrar el mejor camino.
  • Designated router (DR): router elegido en un área, encargado de informar al resto de routers sobre cambios en la red mediante LSAs.
  • Backup designated router (BDR): por si falla DR.

Shortest Path First tree

Dentro de un área cada router calcula las mejores rutas con la topological database. Si el router tiene interfaces en distintas áreas, se construirá un árbol para cada una.

El criterio clave que se usa en la selección de las rutas, es el coste potencial a una red. El coste se asigna a cada interfaz de salida incluida en el árbol. El coste de una ruta completa, es la suma de los costes de las interfazes a lo largo del camino. Cisco usa: 10^8/ancho de banda. Ex: Fast Ethernet (100 Mbps), tendría un coste de 1. Podemos cambiar el coste de una interfaz con el comando ip ospf cost.

Si usamos routers de diferentes fabricantes, usarán otras métricas para calcular el coste y deberemos ajustarlo.

Elección de DR y BDR

La idea del DR es que todos los routers se comuniquen con un router central, en lugar de con todos los demás. La elección del DR y BDR se realiza mediante el protocolo Hello (este proceso sólo se producirá en redes broadcast o non-broadcast multi-access, no en ppp).

El DR será el router configurado con más prioridad. Si todos tienen la misma se elegirá a la router ID más alta. Como la router ID es la interfaz con ip más alta. podemos configurar una ip de loopback para cambiarla. También se puede configurar una prioridad de 0, y el router no intervendrá en el proceso.

Configurando OSPF

Para activar el proceso de routing OSPF:

router(config)# router ospf process_ID

La process_ID es un valor local, no ha de ser igual con otros routers. Esto se debe a que puede haber varias instancias de OSPF corriendo independientes.

A continuación se han de configurar las áreas. Estos se indica identificando las interfaces y el área en que residen. OSPF usa wildcards en la configuración.

router(config-router)# network 10.0.0.0 0.255.255.255. area 0

Un 0 en la wildcard indica que ha de coincidir exactamente con la red y un 1 que no importa. Ex: 1.0.0.0 0.255.255.255 nos da el rango: 1.0.0.0-1.255.255.255.

Truco: para saber la wildcard correspondiente a una red, basta con mirar la máscara de subred, calcular el tamaño del bloque y restar uno. Ex: 192.168.10.64/28 es un tamaño de bloque de 2^4=16. Wilcard= 0.0.0.15

Configurando una interfaz de loopback

Se tratan de interfaces lógicas o virtuales, y intervienen en la elección de la router ID. Simplemente:

router(config)#int loopback 0
router(config-if)#ip adress 172.16.10.1 255.255.255.255

Despues de esto deberemos reiniciar el router para que cambie la router ID.

Verificando OSPF

Para ver la tabla de routing (entradas OSPF con O) usar sh ip route. Para ver información de los procesos OSPF sh ip ospf.

Para ver la topological database usar el comando sh ip ospf database. Con sh ip ospf interface mostramos información OSPF de la interfaz (coste, area, router ID, timers, etc).

El comando sh ip ospf neighbor nos permite ver una tabla con los vecinos y cuál es el DR y BDR. Por último sh ip protocols vuelca información de los protocolos de routing configurados en el router.

Debugando OSPF

Con degub ip ospf packet vemos los paquetes enviados y recibidos en el router. Para ver sólo los Hello existe el comando debuf ip ospf hello.

Con debug ip ospf adj vemos las elecciones DR y BDR en redes broadcast y non-broadcast multi-access.

Autor:David González Pérez

1 comentario:

Anónimo dijo...

Excelente, sencillo y concreto