Encuentro Nacional de Técnicos CABASE
TUTORIAL DE BGP
Patricio Isa Lavalle 20/4/2015
Objetivos
Establecer un nivel común de conocimientos sobre BGP
Describir las propiedades de un NAPlayer 2 vs layer 3
Presentar herramientas de manipulación de rutas en
Routers Cisco
Estudiar una configuración típica de CABASE
Border Gateway Protocol
Advanced Distance Vector
Triggered Updates
Distancia Administrativa
iBGP 200 (dentro del AS)
eBGP 20 (entre ASs)
Métrica basada políticas administrativas
Diseñado para Internet y redes que requieren control
de ruteo
3
Preferencia
Qué pasa si conozco la misma red por BGP y OSPF?
Dos casos:
1. eBGP: BGP es preferido sobre todos los IGP
Las redes externas se buscan afuera, confiando en BGP
2. iBGP: BGP “siempre pierde” contra un IGP
Si la ruta está en el IGP, en general es una red propia del AS.
Origen Preferencia
Subnet propia 0 MEJOR
Ruta estática 1
External BGP 20
EIGRP 90
OSPF 110
IGPs
IS-IS 115
RIP 120
Internal BGP 200 PEOR
4
Cuándo usar BGP?
Conexiones entre Service Providers (no redistribuir al IGP!)
NAPs
Multihoming (1 Cliente – múltiples SP)
Enlace Cliente-SP, para detección de caídas.
MPLS VPNs (Backbone siempre, última milla opcional)
Ruteo privado con requerimientos de control administrativo,
corriendo sobre un IGP.
5
Atributos
Los atributos de BGP definen su métrica:
Métrica de un IGP:
Diseñada para seleccionar el camino óptimo
Ej.: Cantidad de saltos, ancho de banda, etc.
Métrica de BGP:
Diseñada para que el administrador defina el camino
Ej.: Weight (cisco), Local Preference, longitud de AS
Path, etc.
6
Weight y Local Preference
Caso de uso:
Se reciben al menos 2 routas hacia la misma red ([Link]/16)
Se asignan valores de weight o LP
Weight es local al router, LP se propaga por iBGP (dentro del AS)
Tráfico saliente
[Link]/16
166
0 ..11..00..00//1
11 0
Set 20 Backup
ght
[Link]/16
[Link]/16
we i
S
Weig et
ht
150 1100..11.
.00..00//11
66
Primario
AS-Path
Incluye la lista de ASs que atravesó la ruta (Inicialmente está vacío)
Al cruzar un AS se inserta el ID del AS de origen
Las rutas con el AS local se descartan por prevención de loop
El camino de menor longitud de AS Path es preferido
Caso de uso: Control de tráfico entrante por CABASE
Se altera la longitud del path repitiendo el AS propio (prepend)
Tráfico entrante
AS 200
.1 ..0
0 ..00//1166 110000
1
1100. 000 110000
10
AS 100 aatthh 1
ep end A
A S
S -
-PP
100
r
300 100
P
Set 00
[Link]/16
[Link]/16
0 1
AS-Path 300
10
AS-Path
[Link]
1100..11. AS 300
A .00..00//11
AS Paatthh 1 66
S--P
10000
8
Next Hop
Por default es la IP del peer eBGP que anuncia la ruta
Suele reasignarse a una IP ruteable en el AS de destino (next-hop-self)
Se aprende por un IGP, ruta estática, o red conectada.
No conozco
AS 200 [Link]
6
.00..00//116
AS 100
.
10000 10000
1100..1 Paatthh 1 ..11
[Link]
-P
AASS- 1100..11..00
AS-Path
AS-Path 200
NH
N H
[Link]/16
[Link]/16
0.1 NH
NH [Link]
. 1.
[Link]/16
10 [Link]
200 100
AS 300
100
[Link]
9
Next Hop en red Multiaccess
• En redes multiaccess (Ethernet Layer 2, o NBMA multipoint) el next
hop no se actualiza para optimizar el proceso de forwarding.
• Esto requiere Full Mesh y cuidado especial en Topologías como
Hub/Spoke NBMA
Propago rutas.
No switcheo estas
redes entre miembros
AS 200
166
.0..00//1
AS 100 1100..11.0th 110000 [Link]
AASS--PPaath .00..11 NAP
0..11.
AS-Path
AS-Path 200
NNH H 110
NH
NH [Link]
[Link]/16
[Link]/16
[Link]
200 100
[Link] Forwarding
100 directo, optimizado
AS 300
[Link]
10
Evaluación de métrica
Qué pasa si recibo 2 rutas para la misma red por BGP?
1. Excluir rutas con Next Hop inaccesible
2. Preferir mayor Weight (Alcance local al router)
3. Preferir mayor Local Preference (Alcance en todo el AS)
4. Preferir rutas originadas por el router sobre las recibidas
5. Preferir AS Path más corto (cantidad de ASs)
6. Preferir menor código de Origen (IGP < EGP < Incomplete)
11
Evaluación de métrica (cont.)
7. Preferir menor MultiExit Discriminator (MED)
8. Preferir rutas externas sobre las internas (iBGP)
9. Para las rutas internas (iBGP), preferir la de menor métrica
(IGP) al originador
10. Para rutas externas (eBGP) preferir la más antigua
11. Preferir rutas con menor BGP router ID
Algunos de estos criterios son administrables 12
Evaluación de métrica
Ejemplo
1 red, 2 caminos en BGP, 1 ruta en la tabla de ruteo
La de mayor Local Preference tiene precedencia
El camino preferido se marca con “>” (Best)
#show ip bgp
Network Next Hop Metric LocPrf Weight Path
* [Link]/24 [Link] 223 0 65102 209 654 ?
*> [Link] 305 0 65503 675 65314 654 ?
#show ip route
B [Link]/24 [20/0] via [Link], [Link]
13
Sesión establecida
• La última columna describe el estado o la cantidad de
prefijos recibidos cuando la sesión de BGP está
Establecida.
#show ip bgp summary
BGP router identifier [Link], local AS number 65310
…
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down Sate/PfxRcd
[Link] 4 65503 14012 14791 6154 0 0 1w2d 245
[Link] 4 65102 15623 14838 6154 0 0 1w2d 240
[Link] 4 65310 0 0 0 0 0 never Active
• Establecido se indica con el número de prefijos recibidos,
que puede ser 0.
• Active no significa establecido.
14
Keepalives
• Cada 60 segundos (sin actividad) se verifica la existencia
del neighbor
• Se puede modificar para acelerar la convergencia
• El valor configurado es una sugerencia. Se negocia.
#show ip bgp neighbors
BGP neighbor is [Link], remote AS 65503, external link
Description: Conexión eBGP a CABASE
BGP state = Established, up for 1w2d
… hold time is 180, keepalive interval is 60 seconds
15
Anuncio de rutas
• Cada router anuncia sus propias redes con Network o Redistribute
• El router anuncia estas redes mientras sean accesibles
• Si se pierden de la tabla de ruteo, se dejan de anunciar
Interfaz
removida
BGP update
Interfaz
reestablecida
BGP update
Configuración básica
AS privados: 64512 a 65535
Un router sólo puede pertenecer a un AS
router bgp 64512
neighbor [Link] remote-as 64512 iBGP
neighbor [Link] update-source Loopback0
neighbor [Link] remote-as 65000
neighbor [Link] description ISP1 eBGP
neighbor [Link] shutdown
no auto-summary
network [Link]
network [Link] mask [Link]
Network sólo anuncia redes presentes en la tabla de ruteo
17
Diseño de Backbone en Service Provider
Qué interfaces usamos para las conexiones BGP?
iBGP
Sesiones entre loopbacks, ruteadas por un IGP
En caso de fallas de enlaces converge el IGP.
Convergencia inmediata, transparente para BGP
Requiere update-source loopback
eBGP
Sesiones entre interfaces físicas (adyacentes)
Por default eBGP requiere conexiones entre interfaces
adyacentes (físicas) y no soporta Loopbacks.
El comando ebgp-multihop permite excepciones
18
Diseño de SP: Topología física
• El backbone debe ser físicamente redundante hasta
sus PoPs
clientes
AS 100 Core
PoP
Core
clientes
PoP
19
Diseño de SP: Ruteo interno
• Usar IGP (ej.: OSPF) para Loopbacks y enlaces entre routers
• No incluir clientes
• Direccionamiento público o privado
• Escalabilidad: Nunca incluir redes de clientes el IGP
clientes
AS 100 Core
OSPF
PoP
OSPF F
OSP
OSPF
OS
PF
Core OSP
PF
F
clientes
OS
PoP
20
Diseño de SP: sesiones iBGP
• iBGP requiere Full Mesh lógico, independientemente de la topología física
• La conexión BGP se rutea por el IGP entre loopbacks.
• Un cambio de topología interno es transparente para BGP.
• iBGP: Transporte de redes de clientes, o recibidas de otro Sistema Autónomo
• Escalabilidad: Route Reflectors y Confederations clientes
AS 100 Core iBGP
OSPF
P PoP
iBG
OSPF F
OSP
GP
GP iB
GP OSPF iBGP
iB
iB
OS
PF
Core OSP
PF
F
clientes
GP
OS
iBG
iB
AS 200 P
eBGP
iBGP
PoP
• eBGP establecido entre interfaces físicas
21
Repasando…
Qué interfaces usamos para las conexiones BGP?
iBGP
Sesiones entre loopbacks, ruteadas por un IGP
BGP no reemplaza al IGP
eBGP
Sesiones entre interfaces físicas (adyacentes)
Qué redes anunciamos con BGP?
Redes de clientes
Redes recibidas por eBGP (ej.: Internet)
No incluimos las internas del SP.
22
Redistribución
En lugar de anunciar con network, se puede inyectar en
BGP la información de un IGP, estáticas o conectadas
El código de origen será Incomplete “?”, con peor
preferencia que las originadas con network.
router bgp 64512
neighbor [Link] remote-as 65000
neighbor [Link] description ISP1
redistribute static [route-map static-to-BGP-filter]
redistribute ospf 1 [route-map ospf-to-BGP-filter]
Redistribuir sin control tiene riesgos.
Seleccionar cuidadosamente con Route-map
23
Ejemplo de Redistribución de clientes
Técnica basada en estáticas con tags, más escalable que usar network
Manejo simplificado de atributos. Clases de servicio asociadas a tags
El código de origen será Incomplete “?”
ip route [Link] [Link] [Link] tag 500
ip route [Link] [Link] [Link] tag 700
ip route [Link] [Link] [Link] tag 500
route-map clientes-clase-500 permit 10
match tag 500
set as-path prepend 64512 64512
route-map clientes-clase-500 permit 20
match tag 700
router bgp 64512
neighbor [Link] remote-as 65000
redistribute static route-map clientes-clase-500
!no se necesita el comando network!
24
Sumarización
• Mecanismo usado para anunciar una supernet o bloque de redes
• Se puede controlar si se suprimen las específicas
• La ruta sumaria tiene pérdida de información (AS-Path por ejemplo)
Router bgp 65000
aggregate-address [Link] [Link]
aggregate-address [Link] [Link] summary-only
• Requiere la presencia de al menos una ruta específica en la tabla de
ruteo.
• Mecanismo alternativo para anuncio de supernet: anuncio
incondicional.
ip route [Link] [Link] null 0
Router bgp 65000
network [Link]
25
Monitoreo
Análisis detallado de un prefijo
26
Synchronization
No se usará ni se anunciará una ruta recibida por iBGP para
una red que no está en la tabla de ruteo (conocida por estática
o IGP)
o Garantiza que todos los routers del camino conozcan la ruta
o Validación de sincronización de rutas de iBGP en el IGP
No usado en Service Providers:
Desactivar con no synchronization
27
Cliente con único SP
Cliente A Service Provider (AS 200)
R0 [Link] /16
.253
R1
R2
OSPF [Link] [Link]
.254 “Modem”
[Link]/26
ethernet
[Link]/26
[Link]/26
[Link]/26
R1# R2#
Ip route [Link] [Link] [Link] Ip route [Link] [Link] [Link]
(y anunciar [Link]/0 en OSPF) Ip route [Link] [Link] [Link]
Router BGP 200 28
Redistribute static route-map CustomerA
BGP entre R1 y R2 puede ayudar a detectar la caída de la última milla
Cliente con Multihoming
Cliente A (AS 5) Service Provider 1 (AS 100)
R0
[Link] /16
.253 R2
R1
[Link] [Link]
OSPF
.254
[Link]/26
[Link]/26 [Link] Service Provider 2 (AS 200)
[Link]/26
[Link]/26
R3
[Link]
R1#
router bgp 5 R2#
neighbor [Link] remote-as 100 Router bgp 100
neighbor [Link] remote-as 200 neighbor [Link] remote-as 5 route-map C-A
network [Link] [Link] 29
network [Link] [Link]
El cliente anuncia sus redes en forma redundante
El SP debe controlar las redes anunciadas por el cliente
Cliente con Multihoming (cont.)
Cliente con 2 Service Providers
AS Privado / Público
Direcciones Propias / Asignadas por el SP
Contingencia de SP
El cliente anuncia sus propias redes
El cliente también debe implementar filtros
No transit 30
Max prefix
Selección de caminos
Selección de AS Path
• Sintaxis basada en metacaracteres: Regular Expressions
Regex Descripción
^ Inicio de string
$ Fin de string
[] Clase
- Rango
() Agrupación para definición de precedencias
. Cualquier caracter
* Cardinal: Cero o más
+ Cardinal: Uno o más
? Cardinal: Cero o uno
_ Coma, paréntesis, inicio o fin de string, o espacio
| Or
\ Secuencia de escape
31
Selección de AS Path
• Regular Expressions: Aplicaciones
Regex Descripción
.* Cualquier AS Path
^$ Rutas con AS Path nulo (originadas en el AS propio
^100_ Rutas aprendidas por el AS 100
_100$ Rutas orginadas en el AS 100
_100_ Rutas que pasan por el AS 100
^[0-9]+$ Rutas originadas en cualquier AS vecino
32
Selección de AS Path: regex
Show ip bgp regex expresión
Rutas originadas en el AS 3549
#sh ip bgp regexp _3549$
Network Next Hop Metric LocPrf Weight Path
*>i10.0.1.5/32 [Link] 0 100 0 65507 3549 ?
*>i10.0.129.32/27 [Link] 0 100 0 65507 3549 ?
*>i10.1.1.20/30 [Link] 0 100 0 65507 3549 i
*>i10.1.1.36/30 [Link] 0 100 0 65507 3549 ?
Rutas originadas en cualquier AS vecino (1 AS de distancia)
#sh ip bgp regexp ^[0-9]+$
Network Next Hop Metric LocPrf Weight Path
*>i10.1.1.112/30 [Link] 0 100 0 65507 ?
*>i172.26.14.247/32 [Link] 0 100 0 65507 ?
*>i192.168.208.95/32
[Link] 0 100 0 65117 i
33
Selección de AS Path: access-list
AS Path access-list para filtrado de updates
ip as-path access-list 1 permit ^$
router bgp 109
network [Link]
neighbor [Link] remote-as 47
neighbor [Link] filter-list 1 { out |
in }
• AS Path access-list para monitoreo de tabla de BGP
#show ip bgp filter-list 1
34
Selección de rutas: prefix-list
Prefix Lists
Filtrado por red y mask (más poderoso que un distribute-list con ACL)
Denegar la ruta default
ip prefix-list ABC deny [Link]/0
Permitir la red [Link] / 8
ip prefix-list ABC permit [Link]/8
Permitir 192.168.x.x con máscaras entre 16 y 24 bits
ip prefix-list ABC permit [Link]/16 le 24
Denegar subnets de esta red clase C
ip prefix-list ABC deny [Link]/16 ge 25
Denegar subnets de 25 bits o más.
ip prefix-list abc deny [Link]/0 ge 25
Permitir todas las rutas
ip prefix-list abc permit [Link]/0 le 32 35
Selección de rutas: prefix-list
Filtro hacia o desde un neighbor
neighbor [Link] prefix-list abc {in|out}
Filtro en redistribución:
router bgp 65100
neighbor [Link] remote-as 65100
redistribute ospf 1 route-map OSPF-BGP
ip prefix-list OSPF_Redist seq 5 deny [Link]/24
ip prefix-list OSPF_Redist seq 10 permit [Link]/0
le 32
!
route-map OSPF-BGP permit 10
match ip address prefix-list OSPF_Redist
36
Cómo actualizar filtros en BGP
Entrante vs. saliente
Impacto de hard reset y alternativas
Hard reset
clear ip bgp * | clear ip bgp x.x.x.x
Soft reset
Clear ip bgp x.x.x.x soft out
Clear ip bgp x.x.x.x soft in (neighbor x.x.x.x soft-reconfig inbound)
Pro: show ip bgp x.x.x.x received-routes
Contra: Consumo de memoria
Route refresh (verificar capacidad con show ip bgp neighbor)
Clear ip bgp x.x.x.x in
Pro: no consume memoria
Contra: no puedo ver received-routes 37
Route Refresh
Cómo sé si el neighbor lo soporta?
Habilitado por default, soportado desde determinados IOS.
Verificación
Router# show ip bgp neighbors
BGP neighbor is [Link], remote AS 101, internal link
BGP version 4, remote router ID [Link]
BGP state = Established, up for [Link]
Neighbor capabilities:
Route refresh: advertised and received(new)
Address family IPv4 Unicast: advertised and received
Received 7 messages, 0 notifications, 0 in queue
…
38
BGP Communities
Valor de 32 bits usado para etiquetar / identificar rutas
Notación recomendada en IOS (new-format):
ASN:x, donde ASN es el número del AS que origina la comunidad y
x es un valor de significado asignado por el administrador.
Router# show ip bgp [Link]
BGP routing table entry for [Link]/8, version 7
Paths: (1 available, best #1, table Default-IP-Routing-Table)
1
[Link] from [Link] ([Link])
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 6553620
Router(config)# ip bgp-community new-format
Router# show ip bgp [Link]
BGP routing table entry for [Link]/8, version 9
Paths: (1 available, best #1, table Default-IP-Routing-Table)
1
[Link] from [Link] ([Link])
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 100:20 39
BGP Communities
Cómo se usa?
Set community en un router, match community en otro
(community-list)
Router A Router B
route-map setcomm ip community-list expanded Best permit .00:12
match as-path 1
set community 100:12 additive route-map matchcommunity
match community Best
set local-preference 101
router bgp 100 router bgp 300
neighbor [Link] remote-as 300 neighbor [Link] remote-as 100
neighbor [Link] send-community neighbor [Link] route-map matchcomm in
neighbor [Link] route-map setcomm out
network [Link]
[Link]/8
[Link]/8
Communities:
Communities: 100:12
100:12
40
Route Reflectors
Mecanismo para evitar el full mesh de iBGP
MPLS Friendly
iBGP jerárquico
router bgp 100
AS 100 neighbor [Link] remote-as 100
neighbor [Link] route-reflector-client
RR neighbor [Link] remote-as 100
RR
neighbor [Link] route-reflector-client
R3
RR router bgp 100
R2 neighbor [Link] remote-as 100
R1 neighbor [Link] remote-as 3
AS 3
Confederations
Mecanismo para evitar el full mesh de iBGP
MPLS non-friendly: rompe los LSPs porque actualiza los next-hops
AS particionado en member ASs
Migración disruptiva
AS 100 AS 40
Transparente hacia fuera del AS
AS 10 AS 30
AS 3
42
Configuración típica en CABASE: Miembro
eBGP
Remove-private-AS
Soft-reconfiguration inbound
Filtro entrante y saliente
Prefix-list
AS-path access-list
Communities
router bgp NNNN
bgp router-id [Link]
bgp log-neighbor-changes
neighbor x.x.x.x activate
neighbor x.x.x.x send-community
neighbor x.x.x.x remove-private-as
neighbor x.x.x.x soft-reconfiguration inbound
neighbor x.x.x.x route-map AS_XXXXX_IN in
neighbor x.x.x.x route-map AS_XXXXX_OUT out
43
Configuración típica en CABASE: NAP
IPV4, IPv6
eBGP
Remove-private-AS
Soft-reconfiguration inbound
Filtro entrante y saliente
Prefix-list
AS-path access-list
Communities
44
Para más información…
Se está evaluando armar otro curso técnico extendido para
profundizar e incluir más gente.
Por favor informar a CABASE sus temas de interés
Patricio Isa Lavalle
[Link]@[Link]
PISAL@[Link]