tutoriales.com

Configuración y Optimización de BGP en Cisco IOS: Interconexión de Redes a Gran Escala

Este tutorial te guiará a través de la configuración y optimización del Border Gateway Protocol (BGP) en dispositivos Cisco IOS. Aprenderás desde los fundamentos de BGP hasta la implementación de eBGP e iBGP, el manejo de atributos y la aplicación de políticas de enrutamiento para una interconexión de redes robusta y escalable.

Intermedio15 min de lectura15 views
Reportar error

🚀 Introducción al Border Gateway Protocol (BGP)

El Border Gateway Protocol (BGP) es el protocolo de enrutamiento estándar de facto utilizado para intercambiar información de enrutamiento entre sistemas autónomos (AS) en Internet. A diferencia de los protocolos de enrutamiento internos (IGP) como OSPF o EIGRP, que operan dentro de un único AS, BGP es un protocolo de vector de ruta (path-vector protocol) diseñado para gestionar la enorme escala y las políticas complejas de la interconexión global de redes.

En esencia, BGP permite que diferentes organizaciones, cada una con su propio AS, intercambien información sobre las rutas que tienen hacia diferentes destinos IP. Esto es fundamental para que el tráfico de Internet pueda encontrar su camino a través de múltiples proveedores de servicios y redes corporativas. Dominar BGP es crucial para cualquier ingeniero de redes que trabaje con interconexiones a gran escala o con proveedores de servicios de Internet (ISP).

🔥 Importante: BGP no se enfoca en la métrica más corta, sino en la aplicación de políticas para seleccionar la mejor ruta, lo que lo hace muy flexible pero también complejo.

🌍 ¿Por qué necesitamos BGP?

Imagina Internet como una colección de miles de islas interconectadas, donde cada isla es un Sistema Autónomo (AS). Para que un mensaje viaje de una isla a otra, necesitamos un mapa que indique cómo llegar. BGP es ese "mapa global" que permite a cada isla anunciar las rutas que conoce y aprender las rutas de otras islas. Sin BGP, la interconexión a esta escala sería imposible de gestionar eficientemente.

Los principales motivos para usar BGP son:

  • Escalabilidad: Puede manejar la gran cantidad de rutas de Internet.
  • Control de Políticas: Permite a los administradores de red dictar cómo el tráfico entra y sale de su AS.
  • Interconexión: Es el único protocolo capaz de enrutar eficientemente entre AS diferentes.
  • Flexibilidad: Gran cantidad de atributos y opciones para influir en la toma de decisiones de enrutamiento.

🛠️ Fundamentos de BGP

Antes de sumergirnos en la configuración, es vital entender algunos conceptos clave de BGP.

🔢 Sistemas Autónomos (AS)

Un Sistema Autónomo (AS) es una colección de redes IP que están bajo una administración técnica única y que presenta una política de enrutamiento común al resto de Internet. Cada AS se identifica con un número único llamado Número de Sistema Autónomo (ASN).

Los ASN se dividen en dos rangos principales:

  • ASNs Públicos: Asignados por organizaciones como IANA/RIRs. Rango de 1 a 64511. Necesarios para intercambiar rutas públicamente en Internet.
  • ASNs Privados: Rango de 64512 a 65535 (para ASNs de 16 bits) o 4200000000 a 4294967295 (para ASNs de 32 bits). Utilizados para configuraciones internas o de laboratorio donde no se necesita interconexión pública.
📌 Nota: Los ASNs de 32 bits (también conocidos como ASNs de 4 bytes) fueron introducidos para hacer frente al agotamiento de los ASNs de 16 bits.

🤝 Tipos de Peering BGP

Existen dos tipos fundamentales de sesiones de BGP:

  1. eBGP (external BGP): Se establece entre routers en diferentes Sistemas Autónomos. Es el tipo de peering que se utiliza para conectar su red a la de un ISP o a otro AS externo. Los routers eBGP suelen estar directamente conectados.
  2. iBGP (internal BGP): Se establece entre routers dentro del mismo Sistema Autónomo. Su propósito es asegurar que todos los routers dentro de un AS tengan una vista consistente de las rutas aprendidas externamente a través de eBGP. Los routers iBGP no necesitan estar directamente conectados.
AS 65001 AS 65002 Router R1 Router R2 Router R3 Router R4 eBGP iBGP iBGP

📖 Tabla de BGP y Tabla de Enrutamiento

Los routers BGP mantienen varias tablas:

  • BGP Table (RIB BGP): Contiene todas las rutas BGP aprendidas de todos los vecinos, incluyendo las mejores rutas y las no tan buenas. Es el repositorio completo de información de ruta BGP.
  • IP Routing Table (RIB IP): Contiene las mejores rutas seleccionadas por BGP (junto con las de otros protocolos de enrutamiento) que se utilizarán para reenviar el tráfico. Sólo la mejor ruta de BGP para un prefijo se instala en la tabla de enrutamiento IP.
💡 Consejo: Usa `show ip bgp` para ver la tabla BGP y `show ip route bgp` para ver las rutas BGP instaladas en la tabla de enrutamiento IP.

🎯 Atributos BGP

Los atributos BGP son valores asociados a los prefijos de red anunciados. Se utilizan para influir en el proceso de selección de la mejor ruta de BGP. Los atributos clave incluyen:

  • NEXT_HOP: La dirección IP del router por el que se debe enviar el tráfico para alcanzar el prefijo anunciado.
  • AS_PATH: Una lista ordenada de los AS por los que ha pasado una ruta. Se usa para evitar bucles de enrutamiento y como un factor en la selección de ruta.
  • LOCAL_PREF: Utilizado dentro de un AS para indicar la preferencia para salir del AS por un determinado camino. Un valor más alto es preferido.
  • MED (Multi-Exit Discriminator): Sugiere a un AS vecino la ruta preferida para entrar en el AS local. Un valor más bajo es preferido.
  • WEIGHT: Un atributo propietario de Cisco. Es local al router y se usa para influir en la selección de ruta saliente. Un valor más alto es preferido.

La selección de la mejor ruta BGP sigue un algoritmo complejo que evalúa estos y otros atributos en un orden específico. Esto se conoce como el BGP Best Path Selection Algorithm.


⚙️ Configuración Básica de BGP en Cisco IOS

Vamos a configurar una topología simple para demostrar eBGP e iBGP.

Topología del Ejemplo:

  • AS 65001: Router R1
  • AS 65002: Router R2
  • AS 65001 (Interno): Router R3 (para iBGP con R1)

       AS 65001              AS 65002
    +-----------+          +-----------+
    |    R1     |----------|    R2     |
    | 1.1.1.1/30|  eBGP    | 1.1.1.2/30|
    |   (Fa0/0) |          | (Fa0/0)   |
    +-----------+          +-----------+
          |
          | iBGP
          |
    +-----------+
    |    R3     |
    | 3.3.3.3/30|
    |   (Lo0)   |
    +-----------+

📝 Configuración de eBGP entre R1 (AS 65001) y R2 (AS 65002)

Asumimos que las interfaces de red ya están configuradas con direcciones IP y están no shutdown.

Configuración de R1 (AS 65001):

configure terminal
hostname R1
!
interface FastEthernet0/0
 ip address 10.0.0.1 255.255.255.252
 no shutdown
!
router bgp 65001
 bgp log-neighbor-changes
 neighbor 10.0.0.2 remote-as 65002
 network 192.168.1.0 mask 255.255.255.0  ! Red interna a anunciar
!
end

Configuración de R2 (AS 65002):

configure terminal
hostname R2
!
interface FastEthernet0/0
 ip address 10.0.0.2 255.255.255.252
 no shutdown
!
router bgp 65002
 bgp log-neighbor-changes
 neighbor 10.0.0.1 remote-as 65001
 network 192.168.2.0 mask 255.255.255.0  ! Red interna a anunciar
!
end
📌 Nota: La sentencia `network` en BGP no *anuncia* la red en el sentido tradicional. En su lugar, BGP busca una ruta *exacta* para esa red en la tabla de enrutamiento IP local. Si la encuentra, entonces la anuncia a sus vecinos BGP.

✅ Verificación de Sesiones eBGP

Después de la configuración, las sesiones BGP deberían establecerse. Puedes verificar el estado con:

R1#show ip bgp summary

Ejemplo de salida esperada:

R1#show ip bgp summary
BGP router identifier 10.0.0.1, local AS number 65001
BGP table version is 2, main routing table version 2

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Dn  State/PfxRcd
10.0.0.2        4 65002       5       5        2    0    0 00:00:15        1

El State/PfxRcd debería mostrar el número de prefijos recibidos, y el estado debería ser Up/Dn con un tiempo de actividad.

También puedes ver las rutas BGP aprendidas:

R1#show ip bgp
R1#show ip route bgp

🤝 Configuración de iBGP dentro de un AS

Ahora, configuraremos R3 dentro del AS 65001 y estableceremos una sesión iBGP con R1. Para iBGP, es una práctica recomendada usar direcciones de loopback como direcciones de origen para las sesiones de peering, ya que son lógicamente siempre up y proporcionan redundancia si una interfaz física falla.

Configuración de R1 (AS 65001 - adición):

configure terminal
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!
router bgp 65001
 neighbor 3.3.3.3 remote-as 65001
 neighbor 3.3.3.3 update-source Loopback0
!
end

Configuración de R3 (AS 65001):

configure terminal
hostname R3
!
interface Loopback0
 ip address 3.3.3.3 255.255.255.255
!
router bgp 65001
 bgp log-neighbor-changes
 neighbor 1.1.1.1 remote-as 65001
 neighbor 1.1.1.1 update-source Loopback0
 network 172.16.1.0 mask 255.255.255.0  ! Red interna a anunciar por R3
!
end

⚠️ Consideraciones de iBGP: Full Mesh y Route Reflectors

El problema de iBGP es que, por defecto, los routers iBGP no anuncian rutas BGP aprendidas de un vecino iBGP a otro vecino iBGP. Esto es para prevenir bucles de enrutamiento dentro del AS. Para superar esto, todos los routers iBGP deben establecer una sesión de peering con todos los demás routers iBGP dentro del AS (full-mesh).

Para N routers, esto requiere N * (N - 1) / 2 sesiones, lo cual no escala bien. Las soluciones comunes para esto son:

  • Route Reflectors (RR): Un router RR comparte rutas iBGP con sus clientes RR, eliminando la necesidad de un full-mesh.
  • BGP Confederation: Divide un AS grande en sub-ASs más pequeños.

Configuración de Route Reflector (Ejemplo en R1)

Para que R1 actúe como Route Reflector y anuncie rutas a R3 (su cliente), la configuración en R1 sería:

configure terminal
router bgp 65001
 neighbor 3.3.3.3 remote-as 65001
 neighbor 3.3.3.3 update-source Loopback0
 neighbor 3.3.3.3 route-reflector-client
!
end

Con esta configuración, R1 reenviará las rutas que aprende de R2 (eBGP) y las que aprende de R3 (iBGP como cliente) a otros clientes o no clientes, según las reglas de Route Reflector.

✅ Verificación de Sesiones iBGP

R1#show ip bgp summary

Deberías ver ambos vecinos (10.0.0.2 y 3.3.3.3) en estado Up.


🛠️ Optimización y Control de Políticas BGP

La verdadera potencia de BGP reside en su capacidad para influir en la selección de rutas mediante atributos y políticas. Aquí veremos cómo manipular el atributo WEIGHT (propietario de Cisco) y LOCAL_PREF.

Manipulación de WEIGHT (Atributo Cisco)

WEIGHT es un atributo local al router y se utiliza para decidir qué ruta preferir para salir del AS cuando hay múltiples rutas hacia el mismo destino. Un WEIGHT más alto es preferido. Por defecto, las rutas originadas localmente tienen un WEIGHT de 32768, mientras que las rutas aprendidas tienen 0.

Escenario: R1 tiene dos enlaces eBGP con diferentes ISPs (R2 y R4). Queremos que R1 prefiera salir del AS por R2 para ciertos destinos.

eBGP eBGP R1 AS 65001 R2 AS 65002 R4 AS 65003 Topología de Sesiones eBGP

Configuración en R1 para preferir R2 para prefijo X:

configure terminal
access-list 10 permit 192.168.2.0 0.0.0.255
!
route-map SET_WEIGHT_R2 permit 10
 match ip address 10
 set weight 20000
!
router bgp 65001
 neighbor 10.0.0.2 remote-as 65002
 neighbor 10.0.0.2 route-map SET_WEIGHT_R2 in
 neighbor 10.0.0.4 remote-as 65003
!
end

En este ejemplo, cualquier ruta aprendida de 10.0.0.2 (R2) que coincida con la ACL 10 (prefijo 192.168.2.0/24) tendrá su WEIGHT ajustado a 20000, lo que la hará preferida sobre cualquier otra ruta con un WEIGHT inferior.

Manipulación de LOCAL_PREF

LOCAL_PREF es un atributo que se propaga dentro de un AS (a través de iBGP) y se utiliza para influir en la decisión de los routers iBGP sobre qué punto de salida (exit point) usar para un destino externo. Un LOCAL_PREF más alto es preferido.

Escenario: El mismo que antes (R1 conectado a R2 y R4), pero ahora queremos influir en cómo los routers dentro del AS 65001 (ej. R3) envían tráfico hacia 192.168.2.0/24, haciendo que R1 sea el punto de salida preferido.

Configuración en R1 para anunciar rutas con mayor LOCAL_PREF a R3:

configure terminal
access-list 20 permit 192.168.2.0 0.0.0.255
!
route-map SET_LOCAL_PREF_HIGH permit 10
 match ip address 20
 set local-preference 200
!
router bgp 65001
 neighbor 10.0.0.2 remote-as 65002
 neighbor 10.0.0.2 route-map SET_LOCAL_PREF_HIGH in
 neighbor 3.3.3.3 remote-as 65001
 neighbor 3.3.3.3 update-source Loopback0
 neighbor 3.3.3.3 route-reflector-client
!
end

Ahora, cuando R1 aprende la ruta 192.168.2.0/24 de R2, le asigna un LOCAL_PREF de 200. Esta ruta (con LOCAL_PREF 200) será anunciada a R3. Si R3 también aprendiera la misma ruta desde R4 (otro eBGP peer de AS 65001, no mostrado en el ejemplo, pero parte del escenario), pero esa ruta tuviera el LOCAL_PREF por defecto (100), R3 preferiría enviar el tráfico a través de R1.

⚠️ Advertencia: La manipulación de atributos BGP puede ser compleja. Asegúrate de entender el impacto de cada atributo en el algoritmo de selección de mejor ruta BGP.

🔍 Diagnóstico y Resolución de Problemas BGP

Como con cualquier protocolo complejo, el diagnóstico es clave. Aquí hay algunos comandos útiles:

  • show ip bgp summary: Estado general de los vecinos BGP y prefijos recibidos.
  • show ip bgp neighbor [IP_vecino]: Detalles específicos de la sesión con un vecino, incluyendo mensajes, temporizadores, capacidades.
  • show ip bgp: Muestra la tabla BGP completa.
  • show ip bgp [network/mask]: Muestra detalles de una ruta específica en la tabla BGP.
  • show ip bgp paths: Muestra todos los diferentes caminos BGP conocidos.
  • show ip route bgp: Muestra las rutas BGP instaladas en la tabla de enrutamiento IP.
  • clear ip bgp [neighbor | *] [soft | hard]: Reinicia una sesión BGP. soft intenta un reinicio sin derrumbar la sesión física; hard la derrumba y la vuelve a establecer.

Errores comunes y soluciones

Problema ComúnPosible CausaSolución Recomendada
---------
Estado Active o IdleProblema de conectividad TCP 179, ASN incorrectoVerificar conectividad IP (ping), ACLs, puerto 179 bloqueado, remote-as correcto.
No se anuncian prefijosnetwork no está en la tabla de enrutamiento IPAsegurarse de que la red anunciada exista en la tabla de enrutamiento local (conectada, estática, OSPF, etc.).
---------
No se aprenden rutasPolíticas de entrada, AS_PATH loop, Next-Hop inaccesibleRevisar route-maps de entrada, verificar AS_PATH, asegurar que el NEXT_HOP es accesible (usar next-hop-self en iBGP si es necesario).
BGP flapInestabilidad del enlace, problemas de CPU/memoriaVerificar la estabilidad de la interfaz, recursos del router, errores en logs.
💡 Consejo: Siempre revisa los logs del router (`show logging`) para buscar mensajes relacionados con BGP cuando depures problemas.

✨ Conclusiones y Próximos Pasos

Hemos cubierto los fundamentos de BGP, la configuración de eBGP e iBGP, y cómo empezar a aplicar políticas de enrutamiento utilizando atributos como WEIGHT y LOCAL_PREF. BGP es un protocolo vasto y complejo, pero esencial para la interconexión de redes modernas.

80% de BGP Básico Dominado

Pasos para seguir aprendiendo:

  • Explorar otros atributos BGP: AS_PATH Prepending, MED, Community Strings.
  • Estudiar la implementación de BGP Route Reflectors y Confederations en detalle para redes grandes.
  • Investigar BGP Peer Groups para simplificar la configuración.
  • Profundizar en la aplicación de Route Maps para el filtrado de rutas y la manipulación de atributos.
  • Practicar con escenarios de multi-homing (conexión a múltiples ISPs).

Dominar BGP requiere práctica y comprensión profunda de sus mecanismos de selección de ruta y políticas. ¡Sigue experimentando en entornos de laboratorio para consolidar tus conocimientos!

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!