Você está na página 1de 79

BGP

Border Gateway
Protocol

Guillermo Cicileo
guillermo@lacnic.net

Gerardo Rada
gerardo@lacnic.net
FUNDAMENTOS
Protocolos de ruteo

• IGP (Interior Gateway Protocol) - RIP, IGRP, EIGRP,


OSPF, etc
• Protocolo de ruteo usado para intercambiar información de
ruteo dentro de un sistema autónomo.
• EGP (Exterior Gateway Protocol) – BGP
• Protocolo de ruteo usado para intercambiar información de
ruteo entre sistemas autónomos.
• BGPv1 es del año 1989 (RFC 1105) y BGPv4 es del año
1994 (RFC 1654). La RFC actual es la 4271.
• BGP es un protocolo de ruteo externo del tipo path
vector.
• la tabla de ruteo mantiene una lista de AS´s que son
atravezados para alcanzar el AS de destino.

3
Protocolos de ruteo

• IGP: protocolo de ruteo interno


– RIP – Routing Information Protocol
– OSPF – Open Shortest Path First
– EIGRP – Enhanced IGRP (Cisco)
– IS-IS – Intermediate System to Intermediate System

• BGP: protocolo de ruteo externo, 2 casos:


• iBGP: dentro del sistema autónomo
• eBGP: entre sistemas autónomos

• NO CONFUNDIR: IGP con iBGP!!!

4
Ruteo en Internet

5
Ruteo en Internet

• Ruteo Inter-AS e Intra-AS

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

• Sistema  Autónomo (RFC  1771):  conjunto de  routers  


bajo una misma administración técnica,  que usan un  
protocolo de  ruteo interno (IGP)  y  métricas para  
rutear  paquetes dentro de  él,  y  que usan un  
protocolo de  ruteo externo (EGP)  para  rutear  
paquetes fuera de  él.
• Desde  afuera  el  AS  es  visto  como  una  entidad  única.
• Cada  AS  tiene  un  identificador:  ASN  (Autonomous  
System  Number).
• Tiene  su  propia  política  de  ruteo.
ASN  64496

7
Cómo trabaja BGP? Conceptos

• Usa TCP como protocolo de transporte (port 179)


• Routers Neighbors (o peers) – se establece entre 1 par de
routers una sesión TCP abierta, mediante la cual
intercambian información de ruteo BGP.
Sesión  BGP

Enlace

• Dentro de un AS, los peers BGP no necesitan estar


AS  64496

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

• Aprende y enseña rutas


• para que un router sepa hacia donde encaminar un
paquete, alguien tiene que decirle por donde hacerlo
(aprende).

• De la misma manera, si queremos que alguien llegue a


nuestras redes tenemos que “comunicar” que las
tenemos (anuncia).

• Para BGP, el ruteo interno es una caja negra


• No pasa la complejidad interna a INTERNET.

9
Tabla de ruteo y Tabla de BGP

• Existe una tabla con rutas por cada protocolo que el


router maneja: tabla de isis, tabla de rip, tabla de
BGP.
• Los protocolos “compiten” para que sus rutas sean las
que finalmente se utilicen (en función de una
propiedad denominada Distancia Administrativa).
• Determina cuan confiable es un protocolo. Si hay dos rutas similares, se elige la de menor
distancia administrativa. Cuanto menor es la distancia administrativa, más confiable es el
protocolo.

• La ruta “elegida” es la que pasa a formar parte de la


tabla de ruteo.
• Importante: existen varias tablas de protocolos (una
por cada uno de ellos) pero sólo una Tabla de Ruteo.

10
Aprender y anunciar rutas

• Aprender una ruta: significa que voy a incorporar


en mi tabla de BGP alguna ruta que me están
enseñando.

• Anunciar una ruta: significa que le voy a decir a


alguien que tengo una ruta para llegar a determinado
destino. No basta con tener la ruta en mi tabla de
BGP, la debo tener también en mi tabla de ruteo.

• BGP está preparado para manejar políticas de ruteo.

11
Aprender y anunciar rutas

• Neighbor: punto remoto a quien voy a querer


enseñar y/o de quien aprender rutas.
• Para hacer este pasaje de rutas debe establecerse una
“sesión BGP”.
• Para que la sesión BGP se establezca, el potencial
neighbor debe ser perfectamente alcanzable por IP
(cuidado con filtros!).
• La sesión establecida puede ser eBGP o iBGP.

12
Aprender y anunciar rutas

• Una vez establecida la sesión BGP:

• El router podrá anunciar las rutas que:


• aprenda de otras sesiones BGP,
• se inserten en la tabla de BGP (network),
• pertenezcan a otros protocolos (redistribute) CUIDADO!!,
• los filtros permitan que se anuncien.

• El router podrá aprender las rutas que:


• el neighbor quiera anunciarnos,
• los filtros permitan que aprendamos.

13
Aprender y anunciar rutas

• Qué tráfico afecta las rutas que aprendo?

saliente

• Qué tráfico afecta las rutas que enseño?

entrante

• Qué pasa si no  aprendo nada?


Depende  de  lo  que  tenga  configurado  
localmente  en  mi  tabla  de  ruteo.

14
CONFIGURACIÓN
Configuración Básica

• router bgp <ASN>


• crea el proceso BGP dentro del router
• neighbor <ip> remote-as <AS-remoto>
• vecinos internos (mismo AS)
• vecinos externos (distinto AS)
• generalmente los externos comparten una subred, son
adyacentes. Los internos (iBGP) pueden estar en
cualquier parte del Sistema Autónomo.
• Nota: Cisco IOS permite ejecutar sólo un proceso
BGP a la vez, por lo tanto, un router no puede
pertenecer a más de un Sistema Autónomo.

• En un IGP los vecinos son descubiertos


automáticamente; en BGP se configuran en forma
explícita
16
Configuración Básica

• network <red> [mask <máscara>]


• Se da de alta una red en la tabla de BGP y la marca
como local al AS

• Sintaxis similar pero diferente significado con el


comando network de un IGP (en RIP, quedan
determinadas las interfaces que están sobre esa red
para envíar y recibir actualizaciones, así como que
redes conectadas directamente a esas interfaces se
anunciarán)

• La máscara permite especificar supernetting o


subnetting

17
Configuración Básica

• Ejemplo:

router bgp 64496


network 203.0.113.0 mask 255.255.255.0
neighbor 192.0.2.2 remote-as 64500
neighbor 192.0.2.22 remote-as 64505

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

Configuración  Router  A Configuración  Router  B

router  bgp  64496 router  bgp  64505


 network  192.0.2.0  network  203.0.113.0
 neighbor  198.51.100.2  remote-­as  64505  neighbor  198.51.100.1  remote-­as  64496

• 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

Configuración  Router  A Configuración  Router  B

router  bgp  64496 router  bgp  64505


 network  192.0.2.0  network  203.0.113.0
 neighbor  198.51.100.2  remote-­as  64505  neighbor  198.51.100.1  remote-­as  64496

• 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

Network Next Hop Metric LocPrf Weight Path


*> 192.0.2.0/26 198.51.100.1 0 64496 65511 i
*> 192.0.2.128/26 198.51.100.1 0 64496 64506 i
*>i 198.51.100.22 0 0 64506 e
* 203.0.113.128/25 198.51.100.1 0 64496 64501 i
*> 198.51.100.114 0 0 64501 i
*> 203.0.113.0/25 198.51.100.1 0 64496 ?
22
show ip bgp

• 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.

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

Network Next Hop Metric LocPrf Weight Path


*> 192.0.2.0/26 198.51.100.1 0 64496 65511 i
*> 192.0.2.128/26 198.51.100.1 0 64496 64506 i
*>i 198.51.100.22 0 0 64506 e
* 203.0.113.128/25 198.51.100.1 0 64496 64501 i
*> 198.51.100.114 0 0 64501 i
*> 203.0.113.0/25 198.51.100.1 0 64496 ?

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

Network Next Hop Metric LocPrf Weight Path


*> 192.0.2.0/26 198.51.100.1 0 64496 65511 i
*> 192.0.2.128/26 198.51.100.1 0 64496 64506 i
*>i 198.51.100.22 0 0 64506 e
* 203.0.113.128/25 198.51.100.1 0 64496 64501 i
*> 198.51.100.114 0 0 64501 i
*> 203.0.113.0/25 198.51.100.1 0 64496 ?

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

• Well-known mandatory • Optional transitive


(mandatorios muy difundidos) -­‐ Community  
– AS-Path -­‐ Aggregator
– Next-hop
– Origin
• Well-­‐known discretionary • Optional non-­‐transitive
(discrecionales  muy  difundidos)
-­‐ Multi-­‐exit-­‐discriminator
−  Local  preference
(MED)  
−  Atomic aggregate

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

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

Network Next Hop Metric LocPrf Weight Path


*> 192.0.2.0/26 198.51.100.1 0 64496 65511 i
*> 192.0.2.128/26 198.51.100.1 0 64496 64506 i
*>i 198.51.100.22 0 0 64506 e
* 203.0.113.128/25 198.51.100.1 0 64496 64501 i
*> 198.51.100.114 0 0 64501 i
*> 203.0.113.0/25 198.51.100.1 0 64496 ?

30
Atributos de rutas: next-hop

• No  necesariamente  es  la  IP  del  router  directamente  conectado.


• En  un  IGP,  el  next-­‐hop  (NH)  es  la  IP  del  router  que  anunció  la  ruta.
• En  BGP  no:
– En  las  sesiones  eBGP,  el  NH  es  la  IP  del  neighbor  que  anunció  la  ruta.
– En  las  sesiones  iBGP:
• Rutas  originadas  dentro  del  AS:  NH  es  la  IP  del  router  que  la  origina.
• Rutas  incorporadas  por  eBGP:  se  transporta  inalterado  el  NH  aprendido  
por  eBGP.
• Un  next-­‐hop  0.0.0.0  indica  que  el  router  local  originó  la  ruta.
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

Network Next Hop Metric LocPrf Weight Path


*> 192.0.2.0/26 198.51.100.1 0 64496 65511 i
*> 192.0.2.128/26 198.51.100.1 0 64496 64506 i
*>i 198.51.100.22 0 0 64506 e
* 203.0.113.128/25 198.51.100.1 0 64496 64501 i
*> 198.51.100.114 0 0 64501 i
*> 203.0.113.0/25 198.51.100.1 0 64496 ?
31
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

Network Next Hop


198.51.100.0/25 192.0.2.1
203.0.113.0/24 192.0.2.1

AS  64505
203.0.113.0/24
• Problema común:  NH  externo a  
nuestra red

33
Atributos de rutas: AS-Path

• Secuencia de  ASN  que se  deben atravezar para  llegar al  AS  


destino.
• Puede ser utilizado en el  algoritmo de  selección de  rutas.
• Un  AS  Path  en blanco,  significa que la  ruta fue originada en el  AS  
local.
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

Network Next Hop Metric LocPrf Weight Path


*> 192.0.2.0/26 198.51.100.1 0 64496 65511 i
*> 192.0.2.128/26 198.51.100.1 0 64496 64506 i
*>i 198.51.100.22 0 0 64506 e
* 203.0.113.128/25 198.51.100.1 0 64496 64501 i
*> 198.51.100.114 0 0 64501 i
*> 203.0.113.0/25 198.51.100.1 0 64496 ?

34
Atributos de rutas: AS-Path

• Puede ser utilizado para  detectar loops.


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

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 64499
64500 64503 64540 64540 65540 65540 655440 65540 65540 65540 i

• 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

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

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

• Es  similar  a  local_pref,  sólo  que  tiene  efecto  local  en  el  


router  que  se  define.
• No  se  pasa  esta  info  a  otros  routers.
• Tiene  precedencia  más  alta  que  cualquier  otro  atributo  
(algoritmo  de  selección  de  camino).
• Sirve  para  discriminar  rutas  entre  proveedores  conectados  
al  mismo  router.
• Se  setea  mediante  route-­‐maps.
• Propietario  de  CISCO.
Network Next Hop Metric LocPrf Weight Path
*> 192.0.2.0/26 198.51.100.1 95 300 64496 65511 i
*> 192.0.2.128/26 198.51.100.1 95 0 64496 64506 i
*>i 198.51.100.22 95 100 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

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

access-list 101 permit ip 192.0.2.0 0.0.0.255 any


access-list 102 permit ip 198.51.100.0 0.0.0.255 any
!
route-map Peer-R1 permit 10
match ip address 101
set community 64496:650
route-map Peer-R2 permit 10
match ip address 102
set community 64500:750

ip community-list 1 permit 64496:650


ip community-list 2 permit 64500:750
!
route-map Peer-R3 permit 10
match community 1
set local-preference 130
route-map Peer-R4 permit 10
match community 2
set local-preference 140
48
Redistribución del default

• 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

• Se inserta la ruta en la tabla de ruteo idéntica al prefijo


que se quiere anunciar
• La ruta estática a “null0” es llamada ruta “pull up”.
• sólo se usará si no hay una ruta más específica en la tabla de
ruteo.
• La distancia administrativa 250 asegura que será la ruta
estática de último recurso.
• Es la forma más fácil y mejor de generar una ruta
agregada.
51
FILTROS

52
Filtrado de rutas

• Proceso muy importante a fin de garantizar la


estabilidad de nuestro AS y los AS vecinos.
• Filtrado de entrada: es aplicado a rutas aprendidas
• no se incluyen en nuestra tabla de ruteo.
• Filtrado de salida: se aplica a rutas previamente a ser
anunciadas a un vecino.
• no se incluirán en las tablas de ruteo remotas.

• Razones?
• económicas – transit ISP
• seguridad – sólo rutas asignadas a nuestros clientes
• técnicas – problemas de memoria
53
Filtrado de rutas

• Filtros basados en direcciones IP


– distribute-list (access-lists)
– prefix-list (mas nuevos)
• Filtros basados en el path
– filter-list (as-path)

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:

ip prefix-list bad-host seq 100 deny 198.51.100.45/32

55
Filtrado  de  rutas
Prefix-list

router bgp 64496


neighbor 203.0.113.100 remote-as 65551
neighbor 203.0.113.100 prefix-list PEER-IN in
neighbor 203.0.113.100 prefix-list PEER-OUT out
!
ip prefix-list PEER-IN deny 198.51.100.0/24
ip prefix-list PEER-IN permit 0.0.0.0/0 le 32
ip prefix-list PEER-OUT permit 192.0.2.0/24

56
Filtrado de rutas

Por ejemplo si tenemos un router con esta configuración en su bgp:


Willis# show run | begin bgp
router bgp 64496
no synchronization
bgp log-neighbor-changes
network 198.51.100.0 mask 255.255.255.192
network 198.51.100.64 mask 255.255.255.192
network 198.51.100.128 mask 255.255.255.192
network 198.51.100.192 mask 255.255.255.192
neighbor 203.0.113.100 remote-as 65551
neighbor 203.0.113.100 prefix-list route-filter out
neighbor 203.0.113.210 remote-as 64505
neighbor 203.0.113.210 remote-as 64505
no auto-summary
!
ip prefix-list route-filter seq 5 permit 198.51.0.0/16 le 26

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>

• Se aplica esa expresión regular a la información


que recibimos (in) o enviamos (out) a un neighbor.
• Sintaxis:
– neighbor x.x.x.x filter-list nnn (in | out)

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

Solo  permitir redes originadas en el  AS64505,  y  AS´s  


directamente conectados a  AS64505, R3 R4

que entran al  AS65550  por el  R1

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 *.

• Si no existiera una lista de acceso para la sentencia match dentro de la


instancia del route-map, todas las rutas resultan con criterio verdadero.
Las sentencias set se aplican a todas las rutas.

• Tal como con las listas de acceso, una denegación implícita es incluida
al final del route-map.

• Si múltiples sentencias match son utilizadas dentro de una instancia de


un mapa de ruteo, todas las sentencias match deben resultar verdaderas
para que de la instancia surja un resultado verdadero
* o paquetes
64
Route-­‐maps
router bgp 64496
neighbor 203.0.113.10 route-map infilter in
!
route-map infilter permit 10
match ip address prefix-list HIGH-PREF
set local-preference 120
!
route-map infilter permit 20
match ip address prefix-list LOW-PREF
set local-preference 80
!
route-map infilter permit 30
!
ip prefix-list HIGH-PREF permit 192.0.2.0/25
ip prefix-list LOW-PREF permit 192.0.2.128/25

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

• Debe  ser  usado con nuestro número de  AS


• De  no  ser  así  BGP  puede  detectar  un  loop  y  
retirará  la  ruta

67
Atributos de rutas: AS-Path

• utilizado para  realizar “prepend”  en 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 64499
64500 64503 64540 64540 65540 65540 655440 65540 65540 65540 i

68
Selección del mejor camino

1. Si  el  next-­‐hop  es inaccesible,  descartar la  ruta.


2. Si  el  camino es interno (iBGP),  synchronization  está
habilitado y  la  ruta no  está en el  IGP,  descartarla.
3. Se  prefiere el  camino con  mayor  peso  “weight”  
(propietario Cisco).
4. Luego,  se  prefiere la  ruta de  mayor  “local  preference”.

69
Selección del mejor camino

5. En caso del  mismo local-­‐pref,  se  prefiere una ruta que


es originada por el  router  (comando network  o  
redistribución).
6. Si  la  ruta no  fue originada por el  router  y  local-­‐pref es
igual,  se  prefiere la  ruta con  el  path  de  sistemas
autónomos más corto (shortest  as-­‐path).
7. Si  todo es igual,  se  prefiere el  menor código de  
“origen”  (IGP<EGP<Incomplete).

70
Selección del mejor camino

8. A  igualdad de  “origen”,  se  prefiere el  menor valor  de  


MED.  Esta comparación se  realiza sólo si los  neighbors  
de  los  que se  aprendieron la  ruta pertenecen todos a  un  
mismo AS  (a  menos que se  especifique “bgp always-­‐
compare-­‐med”).
9. Se  prefieren rutas aprendidas por eBGP que por iBGP.
10.Se  prefiere la  ruta cuyo next-­‐hop  tiene menor métrica
en el  IGP.
11.Si  hasta  aquí no  hay  decisión,  se  prefiere la  ruta
correspondiente al  neighbor  de  menor router-­‐id. 71
MEJORES PRACTICAS

72
Puesta  a  punto  de  BGP
BGP vs IGP´s

Protocolos de ruteo interno

• Ejemplos OSPF, RIP, etc..

• Usados para transportar las direcciones de la infraestructura.

• No usados para transportar los prefijos de Internet o clientes.

• Diseñados de tal forma que se minimice el número de


prefijos.

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

• eBGP usados para


– Intercambiar prefijos con otros AS
– Implementar políticas de ruteo

75
Puesta  a  punto  de  BGP
BGP
• Nunca hacer

– Redistribuir prefijos BGP en un IGP

– Redistribuir rutas IGP dentro de BGP

– NO Usar IGP para transportar los prefijos de los


clientes u otras redes externas

76
Puesta  a  punto  de  BGP
BGP
• Que anuncios no debería recibir

– No recibir los prefijos definidos en el RFC1918

– No aceptar mis propios prefijos

– No aceptar el default (a menos que se requiera)

– No aceptar prefijos mayores de /24

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?

Você também pode gostar