BGP: Border Gateway Protocol
BGP (Border Gateway Protocol) es el protocolo de enrutamiento utilizado en Internet por los ISPs (Proveedores de Servicios de Internet) para interconectar sistemas autónomos y sus redes.
Tipos de Conexiones a ISPs
Single-Homed ISP Connectivity
Dual-Homed ISP Connectivity
Multihomed ISP Connectivity
Cuando se decide implementar Multihomed, existen tres formas principales de realizar la conexión con el ISP:
- Se crea en los routers borde una ruta por defecto hacia el ISP, donde el uso de la CPU será menor y la tabla de enrutamiento más pequeña.
- Se construye una ruta por defecto hacia el ISP y este nos envía algunas rutas específicas. El uso de CPU será medio y la tabla de enrutamiento no será sobrecargada.
- El ISP nos envía todas las rutas de las redes, donde el uso del CPU será extremo y la tabla de enrutamiento será demasiado grande. Normalmente, los ISPs utilizan esta opción.
IBGP vs EBGP
- IBGP (Internal BGP) hace referencia a la conexión entre dos routers que corren BGP dentro de un mismo sistema autónomo.
- EBGP (External BGP) son los routers borde que interconectan los distintos sistemas autónomos.
Los mensajes BGP entre peers EBGP se envían con un TTL de 1, por lo tanto, solo se puede generar adyacencia EBGP entre routers borde, ya que no permite más de un salto.
El TTL entre routers IBGP siempre es mayor a 1 (en Dynagen es 255), lo que permite generar adyacencia entre vecinos que no se encuentran directamente conectados.
Según la regla de BGP split horizon, las rutas aprendidas vía IBGP nunca son propagadas a otros IBGP peers.
Sistema Autónomo de Tránsito
Un sistema autónomo (AS) de tránsito es el encargado de transportar tráfico entre sistemas autónomos, como por ejemplo, el tráfico entre distintos ISPs o sucursales.
En un sistema autónomo de tránsito, todos los routers deben tener completo conocimiento de las rutas externas.
La solución es correr IBGP en todos los routers dentro del sistema autónomo de tránsito, realizando un full mesh entre routers que corren BGP.
¿Cuándo usar BGP?
- El sistema autónomo será utilizado como tránsito para alcanzar otros sistemas autónomos (ejemplo: un ISP).
- Cuando un sistema autónomo posee más de una conexión a otros sistemas autónomos.
- Cuando se desea aplicar políticas de enrutamiento sobre el tráfico que entra y sale del sistema autónomo.
No se debe usar BGP cuando existen las siguientes condiciones:
- Existe solo una conexión a Internet o a un sistema autónomo.
- Pocos recursos de hardware, cuando existe muy poca memoria en el router o el procesador no soporta constantes actualizaciones de BGP.
- Cuando se posee limitado conocimiento sobre el proceso de selección de rutas de BGP.
BGP envía la información dentro de segmentos, usando el puerto 179 y el número de protocolo 6.
Dentro de un sistema autónomo se pueden generar Neighbors, a pesar de que estos no se encuentren directamente conectados (IBGP), pero solo el router borde puede generar vecindad con el router perteneciente al otro sistema autónomo (EBGP).
Ya que no es necesario que los vecinos estén directamente conectados, normalmente se decide usar interfaces loopbacks para el establecimiento de la sesión TCP entre los routers. Esto permite que cuando existan caminos redundantes hacia un vecino, la caída de una interfaz física no afecte la adyacencia.
La regla de sincronización de BGP indica que en un sistema autónomo de tránsito, encargado de transportar tráfico entre redes, BGP nunca debería anunciar las redes antes de que el IGP aprenda las rutas. Por lo tanto, ambos deberían ser sincronizados. Esto ayuda a que no ocurran problemas dentro del sistema autónomo cuando se utiliza como tránsito, ya que siempre poseerá un camino dentro de la red de la empresa y no generará un Black Hole.
Como se dijo anteriormente, no es una buena práctica redistribuir todas las rutas dentro del IGP, por lo tanto, se recomienda correr IBGP Full-mesh en todos los routers en la red de tránsito y deshabilitar la sincronización.
Las redes aprendidas por EBGP poseen una distancia administrativa de 20, y las IBGP poseen una distancia administrativa de 200.
Mensajes BGP
- Open (19 – 4096 bytes)
- Keepalive (19 bytes)
- Update (19 – 4096 bytes)
- Notification (19 – 4096 bytes)
Estados de un Neighbor BGP
- Idle
- Connect
- Active
- Open sent
- Open Confirm
- Established
Atributos BGP
Atributo AS-PATH
Lista los sistemas autónomos por los que pasa la ruta para llegar a la red. Se utiliza para asegurar un camino libre de bucles, ya que el router no aceptará una ruta que posea un sistema autónomo por el cual ya atravesó.
Atributo Next-hop
Este atributo indica la dirección IP del siguiente salto para alcanzar la red destino. El siguiente salto no necesariamente debe estar directamente conectado, sino que más bien es la dirección IP del router quien anunció la red. Este atributo es well-known mandatory.
Atributo Origin
Indica cómo fue aprendida la ruta. Si fue aprendida a partir de un IGP utilizando el comando network, se marca una «I» en la tabla de BGP. Si la ruta fue aprendida por un EGP, se marca con una «e». Incomplete es cuando el origen es desconocido, normalmente ocurre cuando una ruta es distribuida en BGP y es marcada con un signo.
Atributo Local Preference
Se utiliza para determinar cuál es la salida preferida en el sistema autónomo. Cuando el Local Preference es más alto, posee mayor prioridad, por lo tanto, es mejor.
Atributo Community
Este atributo es utilizado para realizar un filtrado de rutas. A las rutas de la comunidad se les asigna un TAG, para a partir de él poder tomar decisiones de filtrado de rutas pertenecientes a la etiqueta. Esto ayuda a tener un mejor control, ya que las comunidades comparten políticas similares. Este atributo es optional transitive.
Atributo MED
Este atributo informa a los vecinos externos por cuál de las salidas del sistema autónomo local se prefiere que sean alcanzadas las redes locales, en otras palabras, cuál es la entrada preferida a la red. El menor valor MED es el preferido, por lo tanto, posee mayor prioridad. Este atributo es enviado entre los vecinos EBGP y por defecto es 0.
Atributo WEIGHT
Este atributo es utilizado en el proceso de selección de ruta, tiene significancia local, por lo tanto, no es propagado hacia los vecinos. Cuando existen múltiples rutas hacia un camino, la ruta con weight más alto será la preferida.
Selección de la Mejor Ruta
- Los routers Cisco prefieren las rutas que posean mayor weight.
- Si aún existe más de una ruta, se selecciona la ruta con mayor local preference.
- Si las rutas poseen igual Local preference, se selecciona la ruta que fue generada localmente vía comando Network o aggregate-address.
- Si las rutas no fueron originadas localmente por el router, se prefiere la ruta con menor as-path.
- Si el tamaño del as-path es el mismo, se prefieren las rutas menormente originadas según el siguiente código: IGP < EGP < Incomplete.
- Si las rutas poseen el mismo código origin, se prefieren las rutas con menor MED. La comparación del MED solo ocurre cuando el comando bgp-always-compare-med es habilitado.
- Si poseen el mismo MED, se prefieren los caminos EBGP sobre los IBGP.
- Si no hay neighbors EBGP y solo existen vecinos IBG, además de que la sincronización se encuentra deshabilitada, se prefiere el camino con menor métrica respecto del IGP existente en relación a la dirección del siguiente salto.
- Cuando las rutas son aprendidas vía EBGP, se prefiere la ruta que fue recibida primero, es decir, la más antigua. Este paso es saltado si el comando router-id es configurado en el router.
- Se prefiere el camino con menor router-id del vecino.
- Si las direcciones IP son iguales, se prefiere la dirección del router del vecino más baja.
EBGP Multihop
Se debe aplicar el comando
neighbor dirección_IP ebgp-multihop 2 para permitir que los mensajes de EBGP posean un TTL de 2, esto permitirá la adyacencia entre vecinos EBGP usando loopbacks.
También se deben crear dos rutas estáticas hacia la dirección de loopback que generará la adyacencia, para que realicen un balanceo de carga entre los enlaces
Peer groups
Se pueden crear peer groups para agrupar los vecinos que poseen iguales políticas, esto permite no tener que ingresar un comando por cada vecino al momento de aplicar las políticas.
Para configurarlo primero se debe crear el peer group, el nombre asignado al peer group tiene significancia local y no es enviado otros routers.
Sumarizar
Si se poseen varias redes dentro de un sistema autónomo, se puede decidir sumarizarlas, para reducir el tamaño de la tabla de enrutamiento. Debido a que BGP no permite declarar redes que no se conocen, es necesario crear una red sumarizada.
1)En el router que deseamos que anuncie la red sumarizada, creamos una ruta estática con la red sumarizada apuntando a null 0.
2)Luego en la configuración de BGP anunciamos la nueva red, que fue creada con la ruta estática