21 de julio de 2007

5 puntos a considerar en la configuración de BGP sobre Cisco IOS

BGP v.4 es el protocolo de enrutamiento implementado en Internet.
Pero también es el protocolo implementado en muchos casos en el borde con la red del ISP en las redes corporativas. Esto ocurre, usualmente, cuando la empresa tiene múltiples conexiones a Internet y requiere publicar un conjunto de direcciones públicas.
Ya consideré en un artículo anterior una breve introducción a BGP 4, y también he publicado un libro en el que reviso en detalle la implementación a nivel corporativo de este protocolo. En este artículo quiero sencillamente repasar, de modo sintético algunos puntos básicos.

Si en un router que corre BGP ejecutamos el comando show running-config begin bgp, podemos obtener un resultado semejante a este:

Router_1#show running-config begin bgp

router bgp 12345
no synchronization
bgp log-neighbor-changes
bgp dampening
network 200.113.134.0
neighbor 201.15.15.1 remote-as 6789

neighbor 201.15.15.1 description Provider1
neighbor 201.15.15.1 password 7 09823490822093482F
neighbor 201.15.15.1 update-source Loopback1
neighbor 201.15.15.1 version 4
neighbor 201.15.15.1 route-map Provider1 out
neighbor 195.16.16.2 remote-as 5678
neighbor 195.16.16.2 description Provider2
neighbor 195.16.16.2 password 7 09823490822093482F
neighbor 195.16.16.2 update-source Loopback1
neighbor 195.16.16.2 version 4
neighbor 195.16.16.2 weight 50

Como se puede apreciar, se trata de un router conectado a dos service providers diferentes (los neighbor pertenecen a dos sistemas autónomos diferentes). Cada una de las conexiones está asegurada con autenticación de las actualizaciones del protocolo, y están identificadas utilizando el comando description para identificar claramente cada conexión.
A partir de esto, hay 5 puntos a tener en cuenta:
¿Qué es el número de sistema autónomo?
En BGP cada número de sistema autónomo identifica un dominio de enrutamiento diferente, lo que es equivalente a un dominio que controla un conjunto de routers y redes.
En este caso tenemos 3 sistemas autónomos. El de la empresa: 12345; y los de los 2 ISPs: 5678 y 6789. El número de sistema autónomo identifica unívocamente a una red enla nube de Internet.
En BGP los sistemas autónomos son además los que definen la ruta que ha de seguir un paquete, ya que BGP es un protocolo de "ruta-vector" o "vector ruta". BGP selecciona como mejor ruta la ruta que atraviesa menor cantidad de sistemas autónomos.
Los números de sistemas autónomos son asignados por el ARIN.
¿Qué es lo mínimo necesario para que comience a operar BGP?
Lo mínimo que se requiere para que comience a operar BGP en un router, es la declaración del vecino o neighbor con el que este router debe establecer una relación de adyacencia para comenzar el intercambio de información. Junto con la declaración del vecino, debe indicarse la ruta (sistema autónomo) en el que ese vecino se encuentra. De este modo la configuracion mínima podría ser:

router bgp 12345
neighbor 201.15.15.1 remote-as 6789


Adicionalmente, cuando se requiere, además de aprender rutas, publicar una red en la Internet, el comando a agregar es

network 200.113.134.0

Este último comando, en el caso de BGP, indica cuál es la red que se desea publicar.
Hay una serie de comandos adicionales, entre ellos, el que permite asegurar el intercambio de información BGP utilizando encriptación MD5.
¿Cuáles son los comandos show más utilizados?
Hay 2 comandos show que son habitualmente utilizados en redes BGP:
  • show ip bgp summary
    Muestra el estado de cada una de las adyacencias BGP establecida con los routers vecinos.
  • show ip bgp
    Muestra todas las rutas recibidas desde los routers BGP peers.
¿Qué métrica utiliza BGP?
BGP considera como mejor ruta la ruta de sistemas autónomos más corta.
Para comprender esto hay que tener en cuenta que una ruta BGP, no está compuesta por una serie de saltos IP, sino por una sucesión de sistemas autónomos que se deben atravesar para llegar a la red destino.
Adicionalmente, BGP complementa esta selección considerando una serie de parámetros más complicados que es preciso tener en cuenta. Para tener una visión completa de este proceso, sugiero revisar este documento de Cisco.
¿Qué significa el comando no synchronization?
Este es uno de los comandos BGP que genera más confusión.
Por defecto, BGP publica solamente redes que se corresponden con una ruta interna presente en la tabla de enrutamiento del ruter.
Aún cuando declare una red con el comando network, si en la tabla de enrutamiento no hay una una ruta hacia esa red, la misma no se publicará.
A eso apunta el comando synchronization. A publicar exclusivamente redes con las cuales está en condiciones de comunicarse uitlizando una ruta aprendida por un protocolo de enrutamiento interior. Es por esto que en muchos casos se deshabilita, pues es posible que no se esté utilizando un protocolo de enrutamiento interior.
Bibliografía sugerida:
Enrutamiento BGP Básico - Oscar Gerometta
¿Tenés alguna información u opinión para aportar en este tema....?
Perfecto!!!! agregá un comentario con el detalle.
Muchas gracias.
Oscar Gerometta

19 comentarios:

  1. EXCELENTEE ME HAS DADO UNA IDEA EN 10 MINUTOS DE ESTE MARAVILLOSO PROTOCOLO

    ResponderEliminar
  2. Entonces si desactivo la sincronización para que el router publique al resto del mundo las redes que desea que se conozcan ¿que criterio se debe cumplir? ¿Podría publicar cualquier red que yo quiera? ó ¿tiene que conocerla por iBgp?

    ResponderEliminar
  3. Si, puedes publicar cualquier red con la única condición de definir la network y contar con una entrada en la tabla de enrutamiento que coincida, y que puede ser definida como una ruta estática a la Null0, por ejemplo.

    ResponderEliminar
    Respuestas
    1. Pero si desactivo la sincronización ¿también debe estar en la tabla de enrutamiento? entonces no veo la diferencia entre desactivar la sincronización y no hacerlo. Gracias.

      Eliminar
    2. Siempre la ruta debe estar en la tabla de enrutamiento. Si no tengo ruta en la tabla de enrutamiento la red no se publica.
      La sincronización hace que la publicación dependa de tener una ruta aprendida por el IGP. Al deshabilitar la sincronización se tiene control exclusivamente manual de la publicación.

      Eliminar
    3. Gracias por tu respuesta Oscar, pero sigo sin ver la diferencia.

      Eliminar
    4. Sugerencia: un laboratorio para ver la diferencia.

      Eliminar
  4. ¿Que función realiza el router id? Porque aunque no se configure al menos en Cisco le asigna uno. Pero si yo establezco la vecindad con una ip distinta a la del router id, ¿que información aporta el router id?

    ResponderEliminar
    Respuestas
    1. El router ID es solamente un identificador del dispositivo que genera información de actualización, y no tiene ninguna relación con la identificación del "neighbor" que es la IP sobre la cuál se levanta el circuito de TCP sobre el que se realizará el intercambio de información.

      Eliminar
    2. No es suficiente identificación con la ip del neighbor no identifica al dispositivo con la ip con la que establece la vecindad que es necesario in router id que puede ser incluso la misma ip, ¿no?

      Eliminar
    3. Pues... operativamente no es necesario configurar un router ID, sino que podemos dejar que IOS asuma uno por defecto.
      Pero el protocolo establece la necesidad de un ID que identifique al dispositivo en sí, más allá de las direcciones IP de las interfaces que podrían cambiar.

      Eliminar
  5. Me gustaría saber si ¿cuando se hace un cambio en la configuración de BGP, por ejemplo, añadir un filtro para permitir recibir nuevos anuncios o bien cuando se cambia o añade algún atributo, por ejemplo, para elegir otro camino es necesario hacer un clear ip bgp * in o out para que lo actualice o se actualizará sólo según los timers?

    ResponderEliminar
    Respuestas
    1. BGP no realiza actualizaciones periódicas, por lo que al aplicar filtros a la publicación o aprendizaje de rutas hay que forzar la publicación o aprendizaje nuevamente ya que de lo contrario los filtros agregados no se aplican a la información existente.
      Para esto hay algunos mecanismos menos agresivos que el clear ip bgp, con un efecto semejante.

      Eliminar
    2. Gracias, se que el clear ip bgp simplemente "rompería" la sesión tcp pero con el in y el out no es así (por mi experiencia), tampoco con el soft in o out. Pero no se si hay otras distintas además de las que indico. Por otra parte he leído que si actualiza cuando hay un cambio en la tabla de routing pero supongo que esto no afectara a los filtros o la modificación de los atributos para elegir el camino, por ejemplo.

      Eliminar
    3. Efectivamente, BGP realiza notificaciones cuando hay cambios en la tabla de BGP. Pero esas notificaciones son incrementales, es decir, solamente comunican el cambio. Por lo tanto no se puede descansar en este tipo de actualizaciones en cambios en atributos o en la aplicación de filtros

      Eliminar
    4. Suponiendo que se haya realizado un cambio en un filtro y que no se haya pasado aplicado el filtro en ese momento a posteriori ¿Hay algunas de las tablas de bgp que te pueda indicar que ese filtro esta pendiente? Es decir que no aparezca en la tabla de routing porque no se ha aplicado el filtro pero si lo haga en otra. He visto algún caso en el que no se ha aplicado en el instante y después se ha tardado en tiempo en detectar que había que "refrescar" el bgp.

      Eliminar
    5. Si no se forzó a que el proceso de BGP "aprenda" o "publique" según sea el caso del filtro aplicado, que yo conozca, ninguna de las tablas de BGP muestra el filtro ya que ese filtro se aplica antes o después del proceso de BGP, no es parte del proceso mismo.

      Eliminar
  6. Estimado Oscar, no logro comprender del todo el comando network en BGP, siempre tenemos que publicar las redes que tenemos conectadas? en el ejemplo que pusiste no estarias publicando la red 201.15.15.1?

    ResponderEliminar
    Respuestas
    1. Carlos
      BGP como protocolo de enrutamiento exterior opera de modo diferente que los protocolos de enrutamiento interior como OSPF o RIP.
      En este caso el comando network tiene un significado completamente diferente.
      En primer lugar, en una red BGP no todos los dispositivos publican rutas. Consecuentemente la activación del protocolo en un dispositivo no supone que se estén publicando las redes directamente conectadas al mismo. Todo lo contrario, un dispositivo BGP aprende rutas, participa del intercambio de información y por defecto no publica ninguna ruta.
      Para publicar rutas es necesario utilizar el comando network (que en este contecto tiene una función diferente que en los protocolos de enrutamiento interior). Ahora bien, la publicación de rutas tiene un conjunto de reglas específicas que no es este el lugar, pero para responder a tu pregunta, ante todo no es necesario que se trate de una red directamente conectada (se puede publicar cualquier red), pero es condición que exista una ruta hacia ese destino en la tabla de enrutamiento del dispositivo.

      Eliminar

Gracias por tu comentario.
En este blog los comentarios están moderados, por lo que su publicación está pendiente hasta la revisión del mismo.