Escolar Documentos
Profissional Documentos
Cultura Documentos
Border Gateway
Protocol
Guillermo Cicileo
guillermo@lacnic.net
Gerardo Rada
gerardo@lacnic.net
FUNDAMENTOS
Protocolos de ruteo
3
Protocolos de ruteo
4
Ruteo en Internet
5
Ruteo en Internet
ruteo Inter-AS
entre
C.b
B.a
A, B y C
A.a Host
b A.c c h2
a C a
b
a B
Host d c ruteo Intra-AS
h1 b dentro de AS B
A
ruteo Intra-AS
dentro de AS A
6
Sistema Autónomo
7
Cómo trabaja BGP? Conceptos
Enlace
directamente conectados.
Sesión BGP
Enlace Enlace
AS 64496
• Cantidad de organizaciones (redes).
• BGP no pasa la complejidad interna a INTERNET.
8
Cómo trabaja BGP? Conceptos
9
Tabla de ruteo y Tabla de BGP
10
Aprender y anunciar rutas
11
Aprender y anunciar rutas
12
Aprender y anunciar rutas
13
Aprender y anunciar rutas
saliente
entrante
14
CONFIGURACIÓN
Configuración Básica
17
Configuración Básica
• Ejemplo:
18
Configuración Básica
198.51.100.1 198.51.100.0/30
B
AS 64496 AS 64505
192.0.2.0 203.0.113.0
A 198.51.100.2
• Esas rutas deben existir en la tablas de ruteo del router local o no serán
enviadas en las actualizaciones.
• También podría usarse cada comando network con el parámetro mask
255.255.255.0
• Las rutas aprendidas son propagadas por defecto (pueden ser filtradas por
una política de ruteo). 19
Configuración Básica
198.51.100.1 198.51.100.0/30
B
AS 64496 AS 64505
192.0.2.0 203.0.113.0
A 198.51.100.2
• Para establecer las relaciones con otros router BGP están los comandos
neighbor.
• Ese comando sirve para identificar un vecino con el cual el router local
establece la sesión.
• El argumento ASN determina si el router vecino es EBGP o IBGP.
20
Configuración
Básica
• Comandos “show” básicos
• show ip bgp
• show ip bgp summary
• show ip bgp <prefix>
• show ip bgp neighbors [ <ip> ]
• show ip bgp neighbors <ip> advertised-routes
• show ip bgp neighbors <ip> routes
• show ip bgp regexp <regexp>
21
show ip bgp
• Las
primeras
tres
columnas
listan
el
status
de
cada
ruta.
• Un
*
en
la
primer
columna,
indica
que
la
ruta
tiene
un
next-‐hop
válido.
Otras
opciones:
• "s"
suppressed:
BGP
conoce
la
ruta,
pero
no
está
siendo
anunciada,
usualmente
porque
es
parte
de
una
ruta
sumarizada.
• "d"
dampened:
BGP
detiene
el
anuncio
de
una
ruta
que
produce
un
efecto
denominado
flapping (se
levanta
y
se
baja)
demasiado
rápido
hasta
que
se
estabilice
por
un
periodo
de
tiempo.
• "h"
history:
BGP
conoce
la
red,
pero
no
hay
una
ruta
válida
hacia
ella.
• "r"
RIB* failure:
la
ruta
es
anunciada
a
BGP
pero
no
es
instalada
en
la
tabla
de
ruteo.
Esto
puede
suceder
porque
hay
otro
protocolo
que
tiene
la
ruta
con
una
mejor
distancia
administrativa.
* RIB:
Routing
Information
Base
• "S"
stale:
indica
que
la
ruta
está
“detenida”
y
requiere
ser
refrescada
cuando
se
reestablezca
la
conexión
con
su
vecino.
BGP table version is 134358, local router ID is 198.51.100.1
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
• La
segunda
columna
tiene
un
signo
mayor
al
lado
de
la
ruta
que
fue
seleccionada
como
el
mejor
camino
hacia
una
red
determinada.
• La
tercera
columna
está
en
blanco,
indicando
que
el
router
aprendió
todas
las
rutas
de
un
vecino
externo.
Una
ruta
aprendida
de
un
vecino
iBGP debería
tener
una
i.
23
show ip bgp
• La
cuarta
columna
lista
las
redes.
La
que
no
tiene
una
máscara
de
subred,
usa
la
máscara
classfull (A
/8,
B
/16,
C
/24).
Cuando
el
router
aprende
la
misma
red
desde
múltiples
fuentes,
sólo
lista
la
red
una
vez.
BGP table version is 134358, local router ID is 198.51.100.1
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
24
ATRIBUTOS
25
Atributos de rutas
Optional
transitive
• Un
atributo que puede o
no
ser reconocido por todas las implementaciones de
BGP
(de
ahi
que es opcional)
.
• Debido a
que el
atributo es transitivo,
BGP
lo
acepta y
lo
anuncia junto
con
la
ruta
(aun si no
fuera reconocido).
Ejemplo:
COMMUNITY 26
Atributos de rutas
Optional
non-‐transitive
• Un
atributo que puede o
no
ser reconocido por todas las implementaciones de
BGP.
• Si
un
router
receptor
reconociera o
no
el
atributo,
al
ser no
transitivo no
debe ser
anunciado a
otros peers
.
Ejemplo:
ORIGINATOR_ID
27
Atributos de rutas
28
Atributos de rutas
• Origin
• Next-‐hop
• AS_PATH
• Multi_EXIT_DISC
(Multi-‐Exit
Discriminator)
(MED)
• LOCAL_PREF
(Local
Preference)
• COMMUNITY
• WEIGHT
29
Atributos de rutas: origin
• Informa a todos los sistemas autónomos como fue introducido el prefijo de red
• 3 valores: IGP, EGP, incomplete
i originada en un IGP, anunciada con “network”
e originada en un EGP (BGP a BGP)
? origen desconocido, normalmente producto de una redistribución
incompleta desde otro protocolo de ruteo
30
Atributos de rutas: next-hop
• En
medios
multiacceso
(Ethernet,
FR,
ATM),
el
NH
es
la
IP
de
la
interfaz
del
router
que
originó
la
ruta
• Ejemplo:
IXP
IP 192.0.2.1
Tráfico
Switch
IP 198.51.100.2 NH 198.51.100.2
32
Atributos de rutas: next-hop
P
i BG
eBGP
C
AS 64496
198.51.100.0/25
A 192.0.2.1 192.0.2.2 B AS 64500
AS 64505
203.0.113.0/24
• Problema común:
NH
externo a
nuestra red
33
Atributos de rutas: AS-Path
34
Atributos de rutas: AS-Path
• El
primer
AS
(de
izquierda a
derecha)
muestra el
AS
adyacente desde donde se
aprendió la
ruta (el
AS
local
no
se
muestra).
El
resto,
representa la
secuencia de
ASN
que se
debe atravezar para
llegar a
destino.
El
último ASN
es el
AS
origen de
la
ruta.
• utilizado para
realizar “prepend”
en route
maps
35
Atributos de rutas: MED
• MED
es utilizado para
anunciar a
los
vecinos eBGP preferencia sobre el
tráfico entrante
a
nuestro AS
– Se
le
indica a
otro AS
cuál debería ser la
puerta de
entrada
a
nuestro AS.
• MED
solo
es enviado a
vecinos eBGP.
• Los
path
con
el
valor
MED
más bajo son
los
más preferidos.
• Se
utiliza en conexiones multihomed.
• Baja
precedencia en el
algoritmo de
selección de
rutas.
• Es preferible usar COMMUNITY.
• Med
es
un
valor
calculado
por
un
protocolo.
Se
puede
influir
en
él
ajustando
cosas
(ancho
de
banda,
route-‐maps,
etc).
BGP table version is 134358, local router ID is 198.51.100.1
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
36
Atributos de rutas: MED
Router C
Network Next Hop Metric
* 192.0.2.0/24 B 80
AS 64500
*>192.0.2.0/24 A 50
C Router B
192.0.2.0/24
Set metric 80
AS 64496
A 192.0.2.0/24
Router A
192.0.2.0/24
Set metric 50
• Los
routers
A
y
B
anuncian el
prefijo 192.0.2.0/24
con
MED
50
y
80
a
un
eBGP vecino (AS
64500).
• El
tráfico entrante al
AS
64500
desde el
AS
64496
elegirá el
camino por el
router
A,
pues tiene
menor MED.
37
Atributos de rutas: LOCAL_PREF
• Indica
un
grado
de
preferencia
respecto
a
otras
rutas
al
mismo
destino.
• Es
un
atributo
local
al
sistema
autónomo
(se
propaga
por
iBGP
pero
no
por
eBGP).
• Mayor
local
preference
indica
mejor
preferencia:
• local
pref
600
es
mejor
que
100
(este
es
el
valor
por
defecto)
• Da
una
visión
uniforme
a
todo
el
AS.
• Se
setea
mediante
route-‐maps.
Network Next Hop Metric LocPrf Weight Path
*> 192.0.2.0/26 198.51.100.1 95 0 64496 65511 i
*> 192.0.2.128/26 198.51.100.1 95 0 64496 64506 i
*>i 198.51.100.22 95 0 64506 e
* 203.0.113.128/25 198.51.100.1 95 0 64496 64501 i
*> 198.51.100.114 100 0 64501 i
*> 203.0.113.0/25 198.51.100.1 0 100 0 64496 64497 64498 i
38
Atributos de rutas: LOCAL_PREF
ping 203.0.113.1
Router A
Network Next Hop LocPref
*> 203.0.113.0/24 F 400 A B
* 203.0.113.0/24 E 200
AS 64496
192.0.2.0/24
C D
203.0.113.0/24 203.0.113.0/24
set local-pref 200 set local-pref 400
AS 64500 AS 64505
E F
AS 64510
203.0.113.0/24 G
39
Atributos de rutas: Weight
40
Atributos
de
rutas:
Weight
AS 64505
203.0.113.0/25
AS 64510 AS 64500
A C
B
203.0.113.0/25 D 203.0.113.0/25
set weight 100 set weight 200
AS 64496
41
Atributos
de
rutas:
Weight
AS 64505
203.0.113.0/25
AS 64510 AS 64500
A C
B
ping 203.0.113.1
203.0.113.0/25 D 203.0.113.0/25
set weight 100 set weight 200
AS 64496
Router D
Network Next Hop Weight
* 203.0.113.0/25 A 100
*> 203.0.113.0/25 C 200
42
Local-‐pref,
MED
y
Weight
192.0.2.0/24 192.0.2.0/24
eBGP
AS 64496
192.0.2.0/24 C A
iBGP
BGP – default behavior
Router B
Network Next Hop Metric LocPrf Weight B
*>i 192.0.2.0/24 C 0 100 0
AS
64500
43
Local-‐pref,
MED
y
Weight
192.0.2.0/24 192.0.2.0/24
set local-pref 200
eBGP
AS 64496
192.0.2.0/24 C A
iBGP
Router B aprende
local-pref 200
LOCAL_PREF
Router B
Network Next Hop Metric LocPrf Weight B
*>i 192.0.2.0/24 C 0 200 0
AS
64500
44
Local-‐pref,
MED
y
Weight
192.0.2.0/24 192.0.2.0/24
set weight 50
eBGP
AS 64496
192.0.2.0/24 C A
iBGP
Router B no
aprende weight
WEIGHT
Router B
Network Next Hop Metric LocPrf Weight B
*>i 192.0.2.0/24 C 0 100 0
AS
64500
45
Local-‐pref,
MED
y
Weight
192.0.2.0/24 192.0.2.0/24
set metric 80 metric = 80
eBGP
AS 64496
192.0.2.0/24 C A
iBGP
Router B aprende
métrica 80
MULTI_EXIT_DISC
Router B
Network Next Hop Metric LocPrf Weight B
*>i 192.0.2.0/24 C 80 100 0
AS
64500
46
Atributos de rutas: COMMUNITY
• Community
representa una técnica para
marcar un
conjunto de
rutas.
• Es factible usar estos flags
para
aplicar políticas de
ruteo específicas (ej.
local
preference,
etc.)
dentro de
la
red.
• Está representado por 2
enteros de
16
bits
(RFC1998).
• El
formato común es <local-‐ASN>:xx
.
• 0:0
a
0:65535
y
65535:0
a 65535:65535
están
reservados.
• Muy útiles para
aplicar políticas entre
sistemas
autónomos.
• Estandar acordado entre
proveedores – marcan sus
rutas.
47
Atributos de rutas: COMMUNITY
• network 0.0.0.0
– Debe existir la ruta en la tabla de ruteo
– Se enseña a todos los neighbors
– Importante: poner filtros!!
• default-information originate
– Anunciada a todos los neighbor
– No importa si el router tiene una ruta por default
• Redistribution
– Debe existir la ruta en la tabla de ruteo
• neighbor x.x.x.x default-originate
– Aplicado a un neighbor
– No importa si el router tiene una ruta por default
49
Insertando prefijos en BGP
Network
• Ejemplo:
router bgp 64496
network 203.0.113.128 mask 255.255.255.128
ip route 203.0.113.128 255.255.255.128 serial0
• Una ruta coincidente debe existir en la tabla de ruteo
antes de que la red sea anunciada.
• Fuerza el atributo origin a ser “IGP”.
50
Insertando redes en BGP
network
• Ejemplo
ip route 203.0.113.128 255.255.255.128 null0 250
router bgp 64496
network 203.0.113.128 mask 255.255.255.128
52
Filtrado de rutas
• Razones?
• económicas – transit ISP
• seguridad – sólo rutas asignadas a nuestros clientes
• técnicas – problemas de memoria
53
Filtrado de rutas
54
Filtrado
de
rutas
Prefix-list
• Para realizar filtrado más simple y más fácil de leer, es posible aplicar listas
de prefijos (prefix-list ) directamente a un vecino BGP utilizando:
neighbor {ip-address | peer-group} prefix-list prefix-list-name {in | out} command.
• Es una alternativa más simple e intuitiva que las listas de acceso tradicionales.
Permiten utilizar un número que especifica la secuencia de instancias permit o
deny. Especificando el número es factible editar cada instancia individual, sin
necesidad de remover la lista entera (como ocurre con las access list).
• Si se desea especificar un host en particular (198.51.100.45/32) el ejemplo
queda:
55
Filtrado
de
rutas
Prefix-list
56
Filtrado de rutas
Ejecutando:
Willis# show ip bgp neighbors 203.0.113.100 advertised-routes | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 198.51.100.0/26 0.0.0.0 0 32768 i
*> 198.51.100.64/26 0.0.0.0 0 32768 i
*> 198.51.100.128/26 0.0.0.0 0 32768 i
*> 198.51.100.192/26 0.0.0.0 0 32768 i
Esta lista provee la misma funcionalidad que una lista de acceso extendida con el uso de un wildcard 0.0.0.63.
La prefix-list 198.51.0.0/16 le 26 permite cualquier red que comience con 198.51.x.x con longitudes de prefijo
desde 16 hasta 26
57
Filtrado
de
rutas
Filtros por AS-Path
• Se define una expresión regular que denota un as-
path:
– ip as-path access-list <n> (permit|deny) <regexp>
58
Filtros
por
AS-‐PATH
• Ejemplo:
...
neighbor 198.51.100.22 filter-list 10 in
neighbor 198.51.100.22 filter-list 11 out
...
ip as-path access-list 10 permit ^$
ip as-path access-list 11 deny 64496$
ip as-path access-list 11 deny ^645
ip as-path access-list 11 permit _64497_64498_
...
59
Filtros
por
AS-‐PATH
AS 64500 AS 64505
Ejemplo:
R3 R4
Permitir redes originadas por el
AS
64505
entrando al
R1
(ninguna otra ruta)
R1 # sh run
R2 R1
...
router bgp 65550
AS 65550
neighbor 192.0.2.2 remote-as 64505
neighbor 192.0.2.2 filter-list 1 in
...
ip as-path access-list 1 permit ^64505$
...
60
Filtros
por
AS-‐PATH
AS 64500 AS 64505
Ejemplo:
R3 R4
Denegar redes originadas en AS64505
y
permitir el
ingreso a
AS64500
a
todas las demás redes,
a
través de
R3
R3 # sh run
R2 R1
...
ip as-path access-list 1 deny _64505$
AS 65550
ip as-path access-list 1 permit .*
...
router bgp 64500
neighbor 203.0.113.2 remote-as 65550
neighbor 203.0.113.2 filter-list 1 in
...
61
Filtros
por
AS-‐PATH
Ejemplo: AS 64500 AS 64505
R2 R1
AS 65550
R1 # sh run
...
ip as-path access-list 1 permit ^64505_[0-9]*$
...
router bgp 1
neighbor 192.0.2.2 remote-as 64505
neighbor 192.0.2.2 filter-list 1 in
...
62
Filtrado de rutas
Route-maps
• Los route-map son similares a las sentencias de un lenguaje de
programación,
• “if ……. then ……”
• Cada instancia del route-map tiene un número de secuencia.
• Son ejecutados en orden desde la sentencia con menor número de
secuencia hasta el más alto. Es posible editarlos o modificarlos
utilizando este número de secuencia.
• Si en un route-map, una sentencia con un determinado criterio de
coincidencia resulta verdadera, la ejecución del route-map se detiene.
• Se puede utilizar route-map para permitir o denegar según el criterio
encontrado por la sentencia match.
63
Filtrado de rutas
Route-maps
• Si no existiera una sentencia match dentro de una instancia de un
route-map, todas las rutas resultan con criterio verdadero. Las
sentencias set son aplicadas a todas las rutas *.
• Tal como con las listas de acceso, una denegación implícita es incluida
al final del route-map.
65
Route-‐maps
router bgp 64496
neighbor 203.0.113.10 route-map filter-on-as-path in
!
route-map filter-on-as-path permit 10
match as-path 1
set local-preference 80
set weight 200
set metric 127
set next-hop 192.0.2.10
!
route-map filter-on-as-path permit 20
match as-path 2
set local-preference 200
set weight 500
set metric 327
set next-hop 192.0.2.100
!
route-map filter-on-as-path permit 30
!
ip as-path access-list 1 permit _64505$
ip as-path access-list 2 permit _64510_
66
Route-‐maps
• Uso
de
prepend en
un
route-‐map
router bgp 64510
network 192.0.2.0
neighbor 203.0.113.10 remote-as 64496
neighbor 203.0.113.10 route-map set-path out
!
route-map set-path permit 10
set as-path prepend 64510 64510
67
Atributos de rutas: AS-Path
68
Selección del mejor camino
69
Selección del mejor camino
70
Selección del mejor camino
72
Puesta
a
punto
de
BGP
BGP vs IGP´s
73
Puesta
a
punto
de
BGP
BGP vs IGP´s
• BGP: usar internamente (iBGP) y externamente
(eBGP)
• iBGP: usado para transportar:
– Los prefijos de Internet a través del Backbone
– Los prefijos de los clientes
– Utilizar /32 para las interfaces loopbacks de
enrutamiento y levantar las sesiones de iBGP con ellas
– Usar Peer Groups
– Usar Passwords en la sesiones de iBGP (robos de
prefijos)
74
Puesta
a
punto
de
BGP
BGP vs IGP´s
• IGP
– El IGP debe contener a las redes de la DMZ o usar
neighbor x.x.x.x next-hop-self
75
Puesta
a
punto
de
BGP
BGP
• Nunca hacer
76
Puesta
a
punto
de
BGP
BGP
• Que anuncios no debería recibir
77
Puesta
a
punto
de
BGP
• Que prefijos no
debería recibir:
router bgp 64496
network 192.0.2.0 mask 255.255.255.0
neighbor 203.0.113.100 remote-as 64505
neighbor 203.0.113.100 prefix-list in-filter in
!
ip prefix-list in-filter deny 0.0.0.0/0 ! Block default
ip prefix-list in-filter deny 0.0.0.0/8 le 32
ip prefix-list in-filter deny 10.0.0.0/8 le 32
ip prefix-list in-filter deny 101.10.0.0/19 le 32 ! Block local prefix
ip prefix-list in-filter deny 127.0.0.0/8 le 32
ip prefix-list in-filter deny 169.254.0.0/16 le 32
ip prefix-list in-filter deny 172.16.0.0/12 le 32
ip prefix-list in-filter deny 192.0.2.0/24 le 32
ip prefix-list in-filter deny 192.168.0.0/16 le 32
ip prefix-list in-filter deny 224.0.0.0/3 le 32 ! Block multicast
ip prefix-list in-filter deny 0.0.0.0/0 ge 25 ! Block prefixes >/24
ip prefix-list in-filter permit 0.0.0.0/0 le 32
78
Muchas gracias!
Preguntas?