WIKI CNOC
BGP (Border Gateway Protocol)
- 🌍 Protocolo BGP (Border Gateway Protocol)
- 🔐 Conexión basada en TCP
- 🌐 Interconexión Global (EBGP / IBGP)
- 📈 Escalabilidad
- 📋 Tipos de BGP con ejemplos
🌍 Protocolo BGP (Border Gateway Protocol)
BGP es el protocolo de enrutamiento utilizado para interconectar diferentes sistemas autónomos (AS) en Internet. Es clave para el intercambio de rutas entre redes grandes y complejas.
📌 Características principales
Resumen | Característica | Explicación |
---|---|---|
Protocolo de Vector | bgp 65000, peer, network | Anuncio de rutas basado en atributos. |
Conexión sobre TCP | peer 203.0.113.1 enable | Sesión confiable en TCP (puerto 179). |
Interconexión Global | EBGP: peer ... as-number ... | Conecta redes dentro y fuera del AS. |
Escalabilidad | aggregate, route-policy | Reduce el tamaño de las tablas. |
🧩 Atributos clave
- AS-PATH: Secuencia de AS atravesados. Ayuda a evitar bucles.
- NEXT-HOP: Dirección IP del siguiente salto hacia el destino.
- MED: Preferencia para rutas entrantes entre AS vecinos.
- LOCAL_PREF: Prioriza rutas dentro de un mismo AS.
🛠️ Ejemplo de configuración
router-id 192.168.1.1
peer 192.168.2.1 as-number 65001
ipv4-family unicast
network 10.1.1.0 255.255.255.0
import-route static
📖 Explicación
bgp 65000
: Activa BGP en el sistema autónomo 65000.router-id 192.168.1.1
: Identifica el router dentro del AS.peer 192.168.2.1 as-number 65001
: Establece una sesión EBGP con otro AS.network 10.1.1.0 255.255.255.0
: Anuncia la red 10.1.1.0/24 a través de BGP.import-route static
: Importa rutas estáticas al proceso BGP.
- 🔐 Conexión basada en TCP
- 🌐 Interconexión Global (EBGP / IBGP)
- 📈 Escalabilidad
- 📋 Tipos de BGP con ejemplos
🔐 Conexión basada en TCP
BGP opera sobre TCP (puerto 179) para asegurar la entrega confiable de mensajes de enrutamiento. Establece sesiones persistentes con vecinos BGP para intercambiar rutas mediante mensajes KEEPALIVE, UPDATE y NOTIFICATION.
🛠️ Ejemplo de Configuración de Vecinos EBGP
peer 203.0.113.1 as-number 65100
ipv4-family unicast
advertise-community
peer 203.0.113.1 enable
📖 Explicación
peer 203.0.113.1 as-number 65100
: Configura un vecino externo (EBGP) con el AS 65100.advertise-community
: Permite anunciar atributos extendidos, como comunidades.peer ... enable
: Activa la sesión BGP con el vecino configurado.
🌐 Interconexión Global (EBGP / IBGP)
BGP puede operar como:
- EBGP (BGP Externo): Conecta diferentes sistemas autónomos.
- IBGP (BGP Interno): Distribuye rutas dentro del mismo AS, usando Full Mesh o Route Reflectors.
🧱 Ejemplo de Configuración EBGP
router-id 192.168.1.1
peer 198.51.100.1 as-number 65100
ipv4-family unicast
network 10.1.1.0 255.255.255.0
🏠 Ejemplo de Configuración IBGP
router-id 192.168.1.1
peer 192.168.2.1 as-number 65000
peer 192.168.3.1 as-number 65000
ipv4-family unicast
network 10.1.1.0 255.255.255.0
peer 192.168.2.1 next-hop-self
📖 Explicación
peer ... as-number 65000
: Define vecinos internos (IBGP) dentro del mismo AS.next-hop-self
: Establece al router local como el próximo salto para rutas anunciadas.
📈 Escalabilidad
BGP es altamente escalable y permite manejar millones de rutas gracias a técnicas como:
- Agregación de rutas: Reduce entradas repetitivas.
- Políticas de filtrado: Controlan qué rutas se anuncian o aceptan.
🧰 Ejemplo de Agregación
ipv4-family unicast
aggregate 10.1.0.0 255.255.0.0
🧱 Ejemplo de Política de Filtrado
ipv4-family unicast
route-policy BLOCK_EXTERNAL deny node 10
📖 Explicación
aggregate
: Resume múltiples rutas en una sola.route-policy BLOCK_EXTERNAL
: Aplica una política que bloquea rutas específicas.
📋 Tipos de BGP con Ejemplos
Tipo | Descripción | Caso de Uso |
---|---|---|
IBGP (Interno) | Opera dentro de un AS, requiere Full Mesh o Reflectors. | Redes grandes dentro de una organización. |
EBGP (Externo) | Conecta diferentes AS. | ISPs o conexiones entre empresas. |
BGP Confederations | Divide un AS en sub-AS para simplificar gestión. | Redes con miles de routers. |
BGP Multicast y MPLS VPN | Soporta rutas para multicast y VRFs en MPLS. | Redes empresariales con múltiples clientes. |
📡 Tipos de BGP con Configuración
🔁 1. IBGP (BGP Interno)
Descripción:
- Opera dentro de un solo sistema autónomo (AS).
- Todos los routers deben estar completamente conectados (Full Mesh) o usar técnicas como Route Reflectors.
Configuración Ejemplo:
router-id 192.168.1.1
peer 192.168.2.1 as-number 65000
peer 192.168.3.1 as-number 65000
ipv4-family unicast
network 10.1.1.0 255.255.255.0
peer 192.168.2.1 next-hop-self
peer 192.168.3.1 next-hop-self
Explicación:
peer ... as-number 65000
: Configura vecinos internos dentro del mismo AS.next-hop-self
: Establece el router local como próximo salto para evitar problemas de enrutamiento.
🌍 2. EBGP (BGP Externo)
Descripción:
- Conecta diferentes sistemas autónomos (AS).
- Usado para la comunicación entre ISPs o grandes organizaciones.
Configuración Ejemplo:
router-id 192.168.1.1
peer 203.0.113.1 as-number 65100
ipv4-family unicast
network 10.1.1.0 255.255.255.0
peer 203.0.113.1 enable
Explicación:
peer ... as-number 65100
: Configura un vecino externo con el AS 65100.peer ... enable
: Activa la sesión BGP con el vecino configurado.
🏗️ 3. BGP Confederations
Descripción:
- Divide un AS grande en sub-AS para simplificar la gestión.
- Los sub-AS se comunican entre sí como si fueran externos, pero hacia el exterior son un único AS.
Configuración Ejemplo:
bgp confederation identifier 65000
bgp confederation peers 65001 65002
peer 192.168.1.1 as-number 65001
peer 192.168.2.1 as-number 65002
ipv4-family unicast
network 10.1.1.0 255.255.255.0
Explicación:
bgp confederation identifier 65000
: Identifica el AS principal de la confederación.bgp confederation peers
: Define los sub-AS que componen la confederación.peer ... as-number
: Configura vecinos internos dentro de los sub-AS.
🌐 4. BGP Multicast y BGP MPLS VPN
Descripción:
- BGP Multicast: Distribuye rutas específicas para tráfico multicast.
- BGP MPLS VPN: Utiliza BGP para enrutar tráfico en redes MPLS con VRFs.
Configuración Ejemplo para MPLS VPN:
router-id 192.168.1.1
ipv4-family vpnv4
policy vpn-target
nexthop recursive-lookup delay 1
ipv4-family vpn-instance VPN_CLIENTE_A
preference 20 200 200
import-route direct
import-route static
import-route ospf 1
Explicación:
ipv4-family vpnv4
: Activa BGP para VPN sobre MPLS.policy vpn-target
: Aplica políticas específicas a la VPN.import-route
: Permite importar rutas desde protocolos como OSPF, estáticas o directas.
🔄 Establecimiento de Sesiones BGP
BGP establece sesiones con vecinos siguiendo un proceso de seis estados. Cada estado tiene una función específica y puede ser verificado mediante comandos de diagnóstico.
📊 Resumen del Proceso de Sesión BGP
Estado | Descripción | Acción Principal |
---|---|---|
Idle | Estado inicial; espera para iniciar TCP. | Verifica configuraciones. |
Connect | Intenta establecer conexión TCP. | Inicia conexión en el puerto 179. |
Active | Reintenta conexión TCP si falla. | Reintenta conexión hasta un límite. |
OpenSent | Envía mensaje OPEN al vecino. | Negocia parámetros de sesión. |
OpenConfirm | Espera confirmación de parámetros negociados. | Verifica parámetros y compatibilidad. |
Established | Sesión activa; intercambia actualizaciones. | Mantiene la sesión y procesa rutas. |
🔍 Estados del Establecimiento de Sesión BGP (Parte 1)
🧊 1. Idle
Descripción:
- El router está inactivo y espera instrucciones para iniciar la conexión TCP con el vecino.
- Es el estado inicial de BGP.
Acciones en este estado:
- Verifica configuraciones y recursos antes de intentar establecer la conexión.
Comando en Huawei:
Salida Ejemplo:
Peer: 203.0.113.1 Local AS: 65000
State: Idle
🔌 2. Connect
Descripción:
- BGP intenta establecer una conexión TCP con el vecino en el puerto 179.
- Si la conexión falla, pasa al estado Active.
Acciones en este estado:
- Se evalúa la disponibilidad de la red y del vecino.
Comando en Huawei:
Salida Ejemplo:
State: Connect
Last error: Connection timeout
🔁 3. Active
Descripción:
- El router reintenta establecer la conexión TCP.
- Si falla repetidamente, vuelve a Idle.
Acciones en este estado:
- Reintenta la conexión hasta alcanzar un límite.
Comando en Huawei:
Salida Ejemplo:
State: Active
Last error: No response from peer
📤 4. OpenSent
Descripción:
- Se envía un mensaje OPEN al vecino para negociar parámetros como el AS y el router ID.
- El router espera una respuesta de tipo OPEN del vecino.
Acciones en este estado:
- Se realiza la negociación inicial de parámetros.
Comando en Huawei:
Salida Ejemplo:
State: OpenSent
Sent OPEN message to peer
📨 5. OpenConfirm
Descripción:
- Se recibe el mensaje OPEN del vecino y se espera confirmación para establecer la sesión.
Acciones en este estado:
- Se verifica la compatibilidad de los parámetros negociados.
Comando en Huawei:
Salida Ejemplo:
State: OpenConfirm
Waiting for KEEPALIVE
✅ 6. Established
Descripción:
- La sesión BGP está activa.
- Los routers comienzan a intercambiar mensajes UPDATE con rutas y atributos.
Acciones en este estado:
- Se mantienen actualizaciones periódicas para asegurar la sesión.
Comando en Huawei:
Salida Ejemplo:
State: Established
Uptime: 10h34m
Received prefixes: 25
🔍 Atributos BGP
Los atributos en BGP son información adicional asociada a cada ruta, utilizada para tomar decisiones sobre cuál ruta es la más adecuada. Estos atributos permiten el control detallado del enrutamiento en redes complejas.
📋 Resumen de Atributos BGP
Atributo | Propósito | Influencia en el Enrutamiento |
---|---|---|
AS-PATH | Identificar la ruta y evitar bucles. | Selección de rutas más cortas. |
NEXT-HOP | Especificar el siguiente salto hacia el destino. | Validez de la ruta. |
LOCAL_PREF | Preferencia de rutas dentro del AS. | Flujo de tráfico saliente. |
MED | Influenciar la selección de rutas de entrada. | Rutas más preferidas entre AS. |
COMMUNITY | Agrupar rutas con etiquetas comunes. | Aplicación de políticas personalizadas. |
🛣️ 1. AS-PATH (Path de Sistema Autónomo)
- Descripción: Lista ordenada de AS que una ruta debe atravesar.
- Comportamiento: Menor número de AS = mayor preferencia.
Comando en Huawei:
Salida Ejemplo:
192.168.1.0/24 10.1.1.1 65001 65002
Explicación: La ruta hacia 192.168.1.0/24
pasa por los AS 65001
y 65002
.
🔁 2. NEXT-HOP
- Descripción: Dirección IP del vecino hacia el destino.
- Comportamiento: Si el NEXT-HOP no es alcanzable, la ruta no se instala.
Comando en Huawei:
Salida Ejemplo:
192.168.1.0/24 10.1.1.1
Explicación: El tráfico hacia 192.168.1.0/24
debe pasar por el vecino con IP 10.1.1.1
.
📶 3. LOCAL_PREF (Preferencia Local)
- Descripción: Preferencia de rutas dentro del AS (valor más alto = mayor preferencia).
- Uso: Controlar tráfico saliente manualmente.
Comando de Configuración en Huawei:
if-match acl 3001
apply local-preference 200
Comando de Verificación:
Salida Ejemplo:
192.168.1.0/24 200
📉 4. MED (Multi-Exit Discriminator)
- Descripción: Influye en la selección de rutas entrantes entre AS diferentes. Un valor más bajo indica mayor preferencia.
- Uso: Se configura desde el AS que anuncia las rutas.
Comando de Configuración en Huawei:
if-match community 65000:100
apply med 50
Comando de Verificación:
Salida Ejemplo:
192.168.1.0/24 50
🏷️ 5. COMMUNITY
- Descripción: Etiquetas asociadas a rutas que permiten aplicar políticas comunes.
- Tipos:
- Well-known:
no-export
: No propaga la ruta fuera del AS.no-advertise
: No anuncia la ruta a ningún vecino.
- Definidas por el usuario: Etiquetas personalizadas como
65000:200
.
- Well-known:
Comando de Configuración en Huawei:
if-match acl 3001
apply community 65000:200
Comando de Verificación:
Salida Ejemplo:
192.168.1.0/24 65000:200
⚙️ Configuración Básica de BGP
🌍 Configuración de EBGP
router-id 192.168.1.1
peer 203.0.113.1 as-number 65001
ipv4-family unicast
network 192.168.1.0 255.255.255.0
Explicación:
bgp 65000
: Activa BGP con ASN 65000.router-id
: Define el identificador del router.peer
: Configura un vecino en el AS 65001.network
: Anuncia la red192.168.1.0/24
.
🏠 Configuración de IBGP
router-id 10.1.1.1
peer 10.1.1.2 as-number 65000
ipv4-family unicast
network 10.1.0.0 255.255.255.0
Explicación:
peer
: Configura un vecino dentro del mismo AS.network
: Anuncia redes locales al IBGP.
🧠 Notas Finales
Explicación de Configuración de Router Reflector (RR): Esta configuración de BGP permite establecer un Router Reflector (RR), optimizando las conexiones IBGP en redes grandes mediante la redistribución de rutas entre sus clientes.
🔁 Configuración Router Reflector
router-id 192.168.0.1
#
group iBGP_RR_Main internal
peer iBGP_RR_Main description Sesiones_iBGP_RR_Main_Locales
peer iBGP_RR_Main connect-interface LoopBack0
peer iBGP_RR_Main password cipher %^%#example_password%^%#
peer iBGP_RR_Main advertise-community
peer iBGP_RR_Main advertise-ext-community
peer 192.168.1.2 enable
peer 192.168.1.2 group iBGP_RR_Main
peer 192.168.1.3 enable
peer 192.168.1.3 group iBGP_RR_Main
#
group iBGP_RR_IPv4 internal
peer iBGP_RR_IPv4 enable
peer iBGP_RR_IPv4 advertise-community
peer iBGP_RR_IPv4 advertise-ext-community
peer 192.168.2.2 enable
peer 192.168.2.2 group iBGP_RR_IPv4
peer 192.168.2.3 enable
peer 192.168.2.3 group iBGP_RR_IPv4
#
group iBGP_RR_IPv6 internal
peer iBGP_RR_IPv6 enable
peer 192.168.3.2 enable
peer 192.168.3.2 group iBGP_RR_IPv6
peer 192.168.3.3 enable
peer 192.168.3.3 group iBGP_RR_IPv6
📘 Explicación de los Comandos BGP
🔧 1. Definición del Proceso BGP
router-id 192.168.0.1
bgp 65000
: Activa el proceso BGP en el sistema autónomo (AS) 65000.router-id 192.168.0.1
: Especifica el identificador único del router para el proceso BGP.
👥 2. Configuración del Grupo iBGP
group iBGP_RR_Main internal
: Define un grupo interno BGP (IBGP) llamado iBGP_RR_Main para las sesiones entre routers dentro del mismo AS.
🔧 Parámetros del Grupo
peer iBGP_RR_Main connect-interface LoopBack0
peer iBGP_RR_Main password cipher %^%#example_password%^%#
peer iBGP_RR_Main advertise-community
peer iBGP_RR_Main advertise-ext-community
description
: Documenta el propósito del grupo.connect-interface LoopBack0
: Usa la interfaz Loopback0 para las sesiones.password cipher
: Define la autenticación cifrada entre vecinos BGP.advertise-community
: Habilita comunidades estándar.advertise-ext-community
: Habilita comunidades extendidas.
🔗 3. Adición de Vecinos
peer 192.168.1.2 group iBGP_RR_Main
peer 192.168.1.2 enable
: Activa el vecino BGP con IP192.168.1.2
.peer ... group iBGP_RR_Main
: Asocia el vecino al grupo previamente definido.
Estos comandos se repiten para cada vecino adicional que se desee integrar al grupo.
🌐 4. Grupos Adicionales (IPv4 e IPv6)
peer iBGP_RR_IPv4 enable
peer iBGP_RR_IPv4 advertise-community
peer iBGP_RR_IPv4 advertise-ext-community
Se define un grupo específico para manejar sesiones BGP orientadas a rutas IPv4, con los mismos parámetros de comunidad y activación que el grupo principal.
🧠 Configuración Avanzada con MPLS VPN
Esta configuración establece conectividad entre un dispositivo PE (Provider Edge) y un CPE (Customer Premises Equipment) en un entorno MPLS VPN, utilizando BGP como protocolo de enrutamiento. Se incluyen explicaciones detalladas para cada comando, con datos anonimizados.
🔌 1. Configuración de la Interfaz en el PE
description DATOS_CLIENTE_A
ip binding vpn-instance VPN_CLIENTE_A
ip address 192.168.10.1 255.255.255.240
undo icmp name net-unreachable send
undo icmp name host-unreachable receive
undo icmp name protocol-unreachable receive
undo icmp name port-unreachable send
interface Vlanif1000
: Interfaz lógica VLAN asignada al cliente.description
: Describe el propósito de la interfaz.ip binding vpn-instance VPN_CLIENTE_A
: Asocia la interfaz a la VPN correspondiente.ip address
: Dirección IP configurada para la comunicación PE-CPE.undo icmp
: Desactiva respuestas ICMP específicas como medida de seguridad.
🛡️ 2. Configuración de la VPN en el PE
description CLIENTE_A_VPN
ipv4-family
route-distinguisher 65000:100
export route-policy EXPORT_TO_CLIENTE_A
apply-label per-instance
vpn-target 65000:100 export-extcommunity
vpn-target 65000:100 import-extcommunity
vpn-target 65000:50 import-extcommunity
vpn-target 65000:200 import-extcommunity
ip vpn-instance VPN_CLIENTE_A
: Crea la instancia de VPN identificada como VPN_CLIENTE_A.route-distinguisher
: Distingue las rutas internamente dentro del sistema MPLS.export route-policy
: Política aplicada a las rutas que se anuncian desde esta VPN.apply-label per-instance
: Indica que se utilizarán etiquetas por VPN.vpn-target ... export/import-extcommunity
: Define cómo y con quién se comparten las rutas, mediante comunidades extendidas.
🔗 3. Configuración de BGP en el PE
ipv4-family vpn-instance VPN_CLIENTE_A
as-number 65000
default-route imported
preference 20 200 200
import-route direct
import-route static
peer 192.168.10.2 as-number 65010
peer 192.168.10.2 timer keepalive 10 hold 30
peer 192.168.10.2 route-policy RPL_CLIENTE_A_PRI import
peer 192.168.10.2 keep-all-routes
bgp 65000
: Inicia BGP en el AS 65000 del PE.ipv4-family vpn-instance VPN_CLIENTE_A
: Define BGP para esa instancia VPN.default-route imported
: Permite importar rutas por defecto.import-route
: Redistribuye rutas directas y estáticas.peer 192.168.10.2
: Configura el vecino CPE con ASN 65010.route-policy ... import
: Controla las rutas que se aceptan mediante política.
🧾 4. Política de Rutas en el PE
apply local-preference 300
route-policy RPL_CLIENTE_A_PRI
: Define una política para filtrar o modificar rutas.apply local-preference 300
: Asigna una alta preferencia local (300) para priorizar rutas de esta política.
🏠 Configuración BGP en el CPE
⚙️ 1. Configuración General
bgp router-id 192.168.10.2
bgp log-neighbor-changes
neighbor PE_GROUP peer-group
neighbor PE_GROUP remote-as 65000
neighbor PE_GROUP timers 5 15
neighbor 192.168.10.1 peer-group PE_GROUP
router bgp 65010
: Inicia BGP con ASN 65010 en el CPE.bgp router-id
: Define el identificador del router.neighbor PE_GROUP
: Agrupa parámetros comunes para el vecino PE.remote-as 65000
: Define el ASN del PE.timers 5 15
: Ajusta los temporizadores de Keepalive y Hold.neighbor 192.168.10.1
: Asocia el vecino PE a este grupo.
🌐 2. Configuración de Direcciones IPv4 en el CPE
redistribute connected
redistribute static
neighbor 192.168.10.1 activate
neighbor 192.168.10.1 route-map PE_GROUP_POLICY in
redistribute connected
: Anuncia rutas conectadas locales.redistribute static
: Redistribuye rutas estáticas a BGP.neighbor ... activate
: Activa la sesión BGP para direcciones IPv4.neighbor ... route-map
: Aplica una política para manipular rutas recibidas.
🧾 3. Política de Rutas en el CPE
set local-preference 300
route-map PE_GROUP_POLICY
: Define la política aplicada a rutas entrantes.set local-preference 300
: Prioriza las rutas recibidas con un valor de preferencia local alto.
🧪 Ejercicios Prácticos
🔧 Ejercicio 1: Configuración Básica de BGP
Objetivo: Configurar una sesión EBGP entre dos routers.
Topología:
Router A (AS 65000) ----- (AS 65001) Router B IP: 192.168.1.1 IP: 192.168.1.2
🛠️ Pasos para el Ejercicio 1
1. Configura BGP en el Router A:
bgp router-id 192.168.1.1
neighbor 192.168.1.2 remote-as 65001
network 10.1.1.0 mask 255.255.255.0
2. Configura BGP en el Router B:
bgp router-id 192.168.1.2
neighbor 192.168.1.1 remote-as 65000
network 10.2.2.0 mask 255.255.255.0
3. Verifica la sesión BGP:
Salida esperada:
192.168.1.2 4 65001 15 15 0 0 0 00:05:23 1
🚨 Ejercicio 2: Troubleshooting de BGP
Escenario: La sesión BGP no está establecida.
1. Verifica configuración básica en Router A:
2. Diagnóstico del estado del vecino:
3. Salidas comunes:
- Idle: Revisa conectividad IP entre los routers.
- Active: Asegúrate de que el AS esté configurado correctamente.
Solución:
Corrige los errores de configuración y reinicia la sesión BGP:
🛠️ Sección Adicional: Resolución de Problemas Comunes
🚫 Problema 1: NEXT-HOP no alcanzable
- Síntoma: La tabla BGP muestra rutas cuyo siguiente salto no es accesible.
Comando de verificación:
Salida esperada:
10.1.1.0/24 192.168.1.2 0 100 0 i
Solución:
- Verifica conectividad hacia el NEXT-HOP:
- Si es vecino IBGP, utiliza
next-hop-self
:
🏷️ Sección Adicional: Atributos de BGP
⭐ LOCAL_PREF: Ejemplo de Configuración
Escenario: Priorizar una ruta específica dentro del mismo AS.
1. Configuración en Router A:
match ip address 10
set local-preference 200
router bgp 65000
neighbor 192.168.1.2 route-map SET_PREF in
2. Verificación:
Salida esperada:
10.1.1.0/24 192.168.1.2 0 200 0 i
Manual Técnico de BGP
Este documento incluye todas las secciones desarrolladas sobre BGP:
- 📌 Introducción al protocolo BGP
- 🧩 Atributos: AS-PATH, NEXT-HOP, LOCAL_PREF, MED, COMMUNITY
- 🔄 Estados de sesión: Idle, Connect, Active, OpenSent, OpenConfirm, Established
- ⚙️ Configuraciones básicas y avanzadas (EBGP, IBGP, Confederations, MPLS VPN)
- 🛡️ Políticas de enrutamiento y ejemplos prácticos
- 🚨 Troubleshooting BGP
- 🌐 Integración con MPLS
- 🧠 Casos reales y simulaciones
- 🧪 Evaluación final con ejercicios