Está en la página 1de 93

Teoría y Configuración de BGP

Teor í a y Configuraci ó n de BGP LACNIC XII

LACNIC XII

Programa
Programa

Introducción y Repaso

Uso de atributos de BGP

Implementando iBGP

Implementando eBGP

Enfasis en Estabilidad, Escalabilidad y Ejemplos de Configuraciones

Repaso de BGP
Repaso de BGP

Por qué utilizarlo?

Introducción
Introducción

BGP es un protocolo de Vector de Caminos

De-facto EGP

Utiliza números de sistemas autónomos (ASN) para identificación

Lleva información de los AS por los que un prefijo a pasado

Utiliza TCP en el puerto 179

Requiere conexiones explicitas entre dos enrutadores

Máquina de Estado Finíto de BGP
Máquina de Estado Finíto de BGP
Máquina de Estado Finíto de BGP
Que es un Sistema Autónomo?
Que es un Sistema Autónomo?

Necesarios para controlar la expansión de las tablas de enrutamiento

Proveen vista mas estructurada del Internet

Segregan dominios de enrutamiento en grupos administrativos bien definidos con su propias políticas de enrutamiento e IGPs

Representado por números de Sistema Autónomo

16-bits (actualmente, utilización de 73%)

Expandido a 32-bits (RFC4893)

Sistemas Autónomos
Sistemas Autónomos
Sistemas Autónomos
Distancia Administrativa de Protocolos
Distancia Administrativa de Protocolos

Protocolo

Distancia

Directamente Conectada

0

Estática

1

eBGP

20

EIGRP (Interno)

90

IGRP

100

OSPF

110

ISIS

115

RIP

120

EGP

140

EIGRP (Externo)

170

iBGP

200

BGP Local

200

Desconocido

255

Resultado Deseado?
Resultado Deseado?

Implementación de políticas de enrutamiento que sean:

Escalable

Estable

Simple (o eso esperamos!)

Más Detalles
Más Detalles

Necesitas escalar tu IGP

Eres un cliente con dos conexiones a ISPs

Necesitas transitar todas las rutas en Internet

Necesitas implementar una política de enrutamiento, o expandir las políticas de QoS

Actualizaciones de BGP
Actualizaciones de BGP
RetirosRetiros AtributosAtributos PrefijosPrefijos (NLRI (NLRI - - Network-Layer Network-Layer Reachability
RetirosRetiros
AtributosAtributos
PrefijosPrefijos
(NLRI (NLRI - - Network-Layer Network-Layer
Reachability Reachability Information) Information)

Atributos de BGP Utilizados para Definir la Política de Enrutamiento

de BGP Utilizados para Definir la Política de Enrutamiento   1: 1: ORIGIN ORIGIN 

1: 1: ORIGIN ORIGIN

2: 2: AS-PATH AS-PATH

3: 3: NEXT-HOP NEXT-HOP

4: 4: MED MED

5: 5: LOCAL_PREF LOCAL_PREF

6: 6: ATOMIC_AGGREGATE ATOMIC_AGGREGATE

7: 7: AGGREGATOR AGGREGATOR

8: 8: COMMUNITY COMMUNITY

9: 9: ORIGINATOR_ID ORIGINATOR_ID

10: 10: CLUSTER_LIST CLUSTER_LIST

14: 14: MP_REACH_NLRI MP_REACH_NLRI

15: 15: MP_UNREACH_NLRI MP_UNREACH_NLRI

BGP Externo (eBGP)
BGP Externo (eBGP)

Entre router en AS diferentes Usualmente con conexión directa Con next-hop apuntando a si mismo

Router B

router bgp 110 neighbor 131.108.10.1 remote-as 109

Router A

router bgp 109 neighbor 131.108.10.2 remote-as 110

AS 109 131.108.0.0 .1 A 131.108.10.0131.108.10.0 .2 B 150.10.0.0 AS 110
AS 109
131.108.0.0
.1
A
131.108.10.0131.108.10.0
.2
B
150.10.0.0
AS 110
BGP Interno
BGP Interno

Vecinos en el mismo AS

No se modifica el Next-hop

No necesariamente con conexión directa

No anuncia otras rutas aprendidas por iBGP

A B
A
B

Router B:

router bgp 109 neighbor 131.108.30.2 remote-as 109

Router A:

router bgp 109 neighbor 131.108.20.1 remote-as 109

Atributos de BGP: NEXT_HOP

EBGP—next-hop set to self 150.10.1.1 150.10.1.2 AS 300 FF AS 200
EBGP—next-hop set to self
150.10.1.1
150.10.1.2
AS 300
FF
AS 200
150.10.0.0/16 DDD EE CC 192.0.0.0/24 150.1.1.3 150.1.1.1 3rd Party EBGP 150.1.1.2 150.1.1.3 Modificando los
150.10.0.0/16
DDD
EE
CC 192.0.0.0/24 150.1.1.3
150.1.1.1
3rd Party EBGP
150.1.1.2
150.1.1.3
Modificando los defaults:
BB
AA
AS 201
AS 301
Solo para EBGP NLRI:
192.0.0.0/24
neighbor x.x.x.x next-hop-self

150.10.0.0/16 150.10.1.1 192.0.0.0/24 150.10.1.1

IBGP next-hop unmodified

Modificando con route-map:

set ip next-hop { A.B.C.D | peeraddress}

Problema: Detección de Loop, Políticas Solución: AS-PATH

Problema: Detección de Loop, Políticas Solución: AS-PATH 1883 193.0.32/24 1881 AA 193.0.33/24 BB 1880
1883 193.0.32/24 1881 AA 193.0.33/24 BB 1880 193.0.34/24 1882 D 193.0.35/24 CC EEE A: A:
1883
193.0.32/24
1881
AA
193.0.33/24
BB
1880
193.0.34/24
1882
D
193.0.35/24
CC
EEE
A: A: 193.0.33/24 193.0.33/24 1880 1880 1881 1881
B: B: 193.0.34/24 193.0.34/24 1880 1880
C: C: 193.0.32/24 193.0.32/24 1880 1880 1883 1883
E: E: 193.0.32/22 193.0.32/22 1880 1880 {1881, {1881, 1882,1883} 1882,1883}

Secuencia de ASs

Lista de AS por los que la ruta ha pasado

Conjunto de AS (AS Set)

Sumariza la secuencia de ASs

El order de la secuencia se pierde

Prefijo con route-map:

set as-path

Problema: Indicar mejor camino a AS Solución: MED

Problema: Indicar mejor camino a AS Solución: MED 690 1883 1755 1880 200 209  Informa
690 1883 1755 1880 200 209
690
1883
1755
1880
200
209

Informa sobre la preferencia de punto de entrada

Se compara si los caminos son del mismo AS

A no ser que se use “bgp always-compare-med”

Es un atributo no-transitivo

route-map:

set metric set metric-type internal

Problema: Sobrepasando As-path/MED? Solución: LOCAL PREFERENCE

Sobrepasando As-path/MED? Solución: LOCAL PREFERENCE 690 1755 1880 680 660  Atributo es local al AS
690 1755 1880 680 660
690
1755
1880
680
660

Atributo es local al AS — mandatorio para las actualizaciones de iBGP

route-map: set local-preference

Problema: Sobrepasando Local Preference Solución: WEIGHT (Cisco)

Sobrepasando Local Preference Solución: WEIGHT (Cisco) 690 1755 1880 666 660  Local al router en
690 1755 1880 666 660
690
1755
1880
666
660

Local al router en que es configurado

route-map: set weight

El mayor peso (weight) gana sobre todos los caminos válidos

Problema: Escalando Políticas de Enrutamiento Solución: COMMUNITY

Communities: Communities: 1:100—customer 1:100—customer routes routes Set Community 1:80—peer 1:80—peer routes
Communities: Communities:
1:100—customer 1:100—customer routes routes
Set Community
1:80—peer 1:80—peer routes routes
1:80 CORE Match Community 1:100 Match Community 1:100 Set Community 1:100
1:80
CORE
Match Community
1:100
Match Community
1:100
Set Community
1:100

Match Community 1:100 1:80

Peer A

Cliente A Todas las rutas

Cliente B Rutas de Clientes

Atributo de BGP: COMMUNITY
Atributo de BGP: COMMUNITY

Agrupa los destinos para ayudar a escalar la aplicación de políticas

Comunidades Típicas:

Destinos aprendidos de los clientes

Destinos aprendidos de los peers

Destinos en la VPN

Destinos que reciben tratamiento preferencial en la cola

Atributos de BGP: COMMUNITY
Atributos de BGP: COMMUNITY

Activación por neighbor/peer-group:

neighbor {peer-address | peer-group-name} send- community

Transferidos a través de ASs Formato común es una cadena de 4 bytes:

<AS>:[0-65536]

Atributos de BGP: COMMUNITY
Atributos de BGP: COMMUNITY

Cada destino puede ser miembro de varias comunidades

Route-map: set community

<1-4294967295> número de comunidad

aa:nn

número de comunidad en formato aa:nn

additive Añade a una comunidad existente

local-AS No enviar a los peers EBGP (well-known community)

no-advertise

No enviar a ningún peer (well-known community)

no-export

No exportar fuera del AS/Conf. (well-known community)

none

No atributo de comunidad

Atributo de menor uso: ORIGIN
Atributo de menor uso: ORIGIN

IGP—creado con comando network en la configuración de BGP

EGP—Redistribuido de EGP

Incomplete—Redistribute IGP en la configuración de BGP

NOTA: siempre usar route-map para

modificar: set origin igp

Comando set en un route-map
Comando set en un route-map

as-path

Añade una cadena de AS para el atributo AS-PATH set BGP community list (for deletion) Atributo de Comunidad Configura parámetros para dampening Atributo de preferencia local de BGP Valor Metric para el protocolo de enrutamiento Codigo de origen BGP Peso BGP para la tabla de enrutamiento

comm-list

community

dampening

local-preference

metric

origin

weight

ip next-hop

{ A.B.C.D | peer-address }

Atributos de BGP
Atributos de BGP

router1#sh ip bgp 10.0.0.0 BGP routing table entry for 10.0.0.0/24, version 139267814 Paths: (1 available, best #1) Not advertised to any peer

! AS-PATH

AS

ID

65000 64000 {100 200}, (aggregated by 64000 16.0.0.2) ! NEXT-HOP

IGP METRIC

PEER-IP

PEER-ID

10.0.10.4 (metric 10)

from 10.0.0.1 (10.0.0.2)

Origin IGP, metric 100, localpref 230, valid, aggregated internal (or external or local), atomic-aggregate, best Community: 64000:3 100:0 200:10 Originator: 10.0.0.1, Cluster list: 16.0.0.4, 16.0.0.14

Proceso de Enrutamiento
Proceso de Enrutamiento
Proceso de Enrutamiento
Algoritmo Básico Para Decidir
Algoritmo Básico Para Decidir

Only consider synchronized routes without AS loops and a valid next-hop, and then prefer:

Highest WEIGHT Highest LOCAL PREFERENCE LOCALLY ORIGINATED (eg network/aggregate) Shortest AS-PATH Lowest ORIGIN (IGP < EGP < incomplete) Lowest MED EBGP IBGP Lowest IGP METRIC to next-hop Oldest external path Router with lowest Router ID Shortest CLUSTER_LIST length Lowest Neighbor IP address

Sincronización

Sincronización 690 A 1880 B 209 • Router A no anunciará los prefijos de AS209 hasta
690 A 1880 B 209
690
A
1880
B
209

Router A no anunciará los prefijos de AS209 hasta que haya convergencia en el IGP.

Asegurarse de que los next-hops del iBGP pueden ser vistos via IGP, entonces:

router bgp 1880 no synchronization

Consideraciones Generales
Consideraciones Generales

Sincronización: no requerida si se tiene una maya iBGP completa

=> No dejar que BGP tenga prioridad sobre IGP

auto-summary: no. En su lugar usar comandos de agregación:

router bgp 100 no synchronization no auto-summary distance 200 200 200

Hasta Ahora …
Hasta Ahora …

Aplicar las políticas en base al AS

Agrupar las rutas usando comunidades

Seleccionar los puntos de entrada y salida para grandes grúpos de políticas usando MEDs y preferencia local

Pueden tús políticas escalar?

Implementando iBGP

Implementando iBGP Route Reflectors, Peer Groups 32

Route Reflectors, Peer Groups

Guías para un iBGP Estable
Guías para un iBGP Estable

Establecer la conexión usando direcciones de loopback

neighbor { ip address | peer-group} update-source loopback0

Independiente de fallos de la interfase física

Balanceamiento de la carga es realizado por el IGP

Guías Para Escalar iBGP
Guías Para Escalar iBGP

Usar peer-group y route-reflector

Solo llevar next-hop en el IGP

Solo llevar todas las rutas en BGP si es necesario

No redistribuir BGP en el IGP

Usando Peer-Groups
Usando Peer-Groups
iBGP Peer Group eBGP
iBGP Peer Group
eBGP

Peer Group con todas las rutas

Peer Group “Default”

Peer Group Rutas de Clientes

Qué es un peer-group?
Qué es un peer-group?

Todos los miembros del peer-group tienen una política de salida común

Actualizaciones generadas solo una vez

para el peer-group

Simplifica la configuración Miembros pueden tener diferentes políticas de entrada

Por qué usar Route-Reflectors?
Por qué usar Route-Reflectors?
13 Routers => 78 Sesiones iBGP!
13 Routers =>
78 Sesiones
iBGP!

Para evitar una maya con N(n-1)/2 sesiones

n=1000 => casi medio millón de sesiones iBGP!

Usando Route-Reflectors
Usando Route-Reflectors
BackboneBackbone RRRR RRRR RRCRRC RRC RRRR GrupoGrupo AA RR Grupo B RRC RRRR RRC GrupoGrupo
BackboneBackbone
RRRR
RRRR
RRCRRC
RRC
RRRR
GrupoGrupo AA
RR
Grupo B
RRC
RRRR
RRC
GrupoGrupo CC
RRRR
GrupoGrupo DD

Regla para evitar un circulo de RR:

Topología de RR debe reflejar la topología física

Qué es un Route-Reflector?
Qué es un Route-Reflector?

El Reflector recibe información de clientes y no clientes

Si el mejor camino es de un cliente, reflejarlo

a clientes y no clientes

Si el mejor camino es de no-cliente, reflejarlo

a los clientes

Desplegando Route-Reflectors
Desplegando Route-Reflectors

Divida el backbone en varios grupos

Cada grupo contiene al menos 1 RR (multiples para redundancia), y multiples clientes

Los RRs crean una maya completa de iBGP

Utilizar solo un IGP—next-hop que no es modificado por el RR

Router id RR 140.10.1.1 RRC Router id A 141.153.17.1 RR C RRC B Router id

Router id

RR 140.10.1.1 RRC Router id A 141.153.17.1 RR C RRC B Router id D 141.153.17.2
RR
140.10.1.1
RRC
Router id
A
141.153.17.1
RR
C
RRC
B
Router id
D
141.153.17.2
141.153.14.2
AS3
198.10.0.0

141.153.30.1

Route-Reflector Jerárquico

Ejemplo:

RouterB>sh ip bgp 198.10.0.0

BGP routing table entry for 198.10.10.0/24

3

141.153.14.2 from 141.153.30.1 (140.10.1.1)

Origin IGP, metric 0, localpref 100, valid, internal, best

Originator: 141.153.17.2 Cluster list: 144.10.1.1, 141.153.17.1

Atributos de BGP: ORIGINATOR_ID
Atributos de BGP: ORIGINATOR_ID

ORIGINATOR_ID

Router ID del vecino iBGP qye refleja rutas del cliente RR a no clientes

Sobrepasado por: bgp cluster-id x.x.x.x

De uso para resolver problemas y chequear por relaciones circulares

Atributos de BGP: CLUSTER_LIST
Atributos de BGP: CLUSTER_LIST

CLUSTER_LIST

Cadena de ORIGINATOR_IDs a través de los cuales la ruta ha pasado

De uso para resolver problemas y chequear relaciones circulares

Hasta Ahora…
Hasta Ahora…

Es la conexión iBGP Estable?

Use loopbacks para la conexión

Escalará?

Use peer-groups

Use route-reflectors

Simple, configuración jerárquica?

Desplegando eBGP

Desplegando eBGP Consideraciones de Clientes Consideraciones de ISPs 45

Consideraciones de Clientes Consideraciones de ISPs

Consideraciones de Clientes
Consideraciones de Clientes

Procedimiento

Configure BGP (use passwords para la sesión!)

Genere una ruta agregada estable

Configure la política de entrada

Configure la política de salida

Configure loadsharing/multihoming

Conectandose a un ISP
Conectandose a un ISP
AS 200 10.0.0.0 .1 A .2 B 10.60.0.0 AS100
AS 200
10.0.0.0
.1
A
.2
B
10.60.0.0
AS100

AS 100 es un cliente de AS 200

Usualmente con conexión directa

Router B:

router bgp 109 aggregate-address 10.60.0.0 255.255.0.0 summary-only neighbor 10.200.0.1 remote-as 200 neighbor 10.200.0.1 route-map ispout out neighbor 10.200.0.1 route-map ispin in

10.200.0.0

Que es agregación?
Que es agregación?

Sumarización basada en rutas específicas de

la tabla de enrutamiento BGP

10.1.1.0 255.255.255.0

10.2.0.0 255.255.0.0

=> 10.0.0.0 255.0.0.0

Cómo Agregar?
Cómo Agregar?

aggregate-address 10.0.0.0 255.0.0.0 {as-set} {summary-only} {route-map}

Use as-set para incluir la información de camino y comunidad basado en las rutas específicas

summary-only suprime las rutas específicas

route-map para configurar otros atributos

Por qué Agregar?
Por qué Agregar?

Reducir el número de prefijos a anunciar

Incrementar estabilidad — rutas agregadas se mantienen aún si las específicas son inestables

Generación de rutas agregadas estables:

router bgp 100

aggregate-address 10.0.0.0 255.0.0.0 as-set summary-only network 10.1.0.0 255.255.0.0

:

ip route 10.1.0.0 255.255.0.0 null0

Tener en cuenta que las communidades tambien son agregadas

Por ejemplo, que pasa si uno de los prefijos tiene no-export?

Atributos de BGP: Atomic Aggregate
Atributos de BGP: Atomic Aggregate

Indica perdida de información de AS-PATH

No debe ser removido una vez configurado

Configuración: aggregate-address x.x.x.x

No configurado si la clave as-set es utilizada, AS- SET y COMMUNITY contienen la información sobre las rutas específicas

Atributos de BGP: Aggregator
Atributos de BGP: Aggregator

Número de AS e IP del enrutador generando el agregado

De uso para resolver problemas

Atributos de Agregación
Atributos de Agregación

NEXT_HOP = local (0.0.0.0)

WEIGHT = 32768

LOCAL_PREF = ninguna (asume 100) AS_PATH = AS_SET o nada

ORIGIN = IGP

MED = ninguna

Por qué una Política de Entrada?
Por qué una Política de Entrada?

Aplicar una comunidad reconocible para usar en los filtros de salida u otras políticas

Configurar local-preference para modificar el default de 100

Balanceo de las cargas en ambientes de conexión dual—ver mas adelante

route-map ISPin permit 10 set local-preference 200 set community 100:2

Por qué una política de Salida?
Por qué una política de Salida?

El filtrado de prefijos de salida ayuda a protegernos contra errores (también podemos aplicar filtros de comunidades y as-path)

Enviar comunidades basado en acuerdos con el ISP

route-map ISPout permit 10 match ip address prefix-list salida set community 100:1 additive

Balanceo de Cargas —Un ISP
Balanceo de Cargas —Un ISP

Router A:

interface loopback 0 ip address 10.60.0.1 255.255.255.255

!

router bgp 100 neighbor 10.200.0.2 remote-as 200 neighbor 10.200.0.2 update-source loopback0 neighbor 10.200.0.2 ebgp-multi-hop 2

Loopback 0 A 10.200.0.2 200 100
Loopback 0
A
10.200.0.2
200
100

Balanceo de Cargas—Multiples Caminos desde el mismo AS

Balanceo de Cargas—Multiples Caminos desde el mismo AS Router A: router bgp 100 neighbor 10.200.0.1 remote-as

Router A:

router bgp 100 neighbor 10.200.0.1 remote-as 200 neighbor 10.300.0.1 remote-as 200 maximum-paths 6

A 200 100
A
200
100
Qué es Multihoming?
Qué es Multihoming?

Conectarse a dos o más ISPs para incrementar:

Confiabilidad - si un ISP falla, todavía funciona

Desempeño - mejores caminos a destinos comunes en Internet

Tipos de Multihoming
Tipos de Multihoming

Tres casos comunes:

Ruta Default de todos los proveedores

Rutas de Clientes+default de todos

Rutas completas de todos

Default de Todos los Proveedores
Default de Todos los Proveedores

Solución bajos requerimientos de memoria/CPU

Proveedor default de BGP => proveedor decide basado en la métrica de IGP cual es el default

Tu envias todas tus rutas al proveedor => camino de entrada decidido por el Internet

Tu puedes influenciar agregando tu AS varias

veces (AS-path prepend)

Default de Todos los Proveedores
Default de Todos los Proveedores
AS 100 160.10.0.0/16 AS 200 AS 300 DD EE 0.0.0.0 0.0.0.0 AA BB AS 400
AS 100
160.10.0.0/16
AS 200
AS 300
DD
EE
0.0.0.0
0.0.0.0
AA
BB
AS 400
CC

C Selecciona el IGP con la métrica más baja para Default

Clientes+Default de Todos los Proveedores

Clientes+Default de Todos los Proveedores  Uso mediano de memoria y CPU  “Mejor” camino—usualmente el

Uso mediano de memoria y CPU “Mejor” camino—usualmente el camino AS (AS PATH) más corto

Uso de local-preference para modificar basado en prefijo, as-path, o comunidad

Métrica de IGP al default usado para todos los destinos

Rutas de Clientes de Todos los Proveedores

Rutas de Clientes de Todos los Proveedores Cliente AS 100 160.10.0.0/16 Proveedor AS 200 D D

Cliente

AS 100

160.10.0.0/16

Proveedor AS 200

DD

C Selecciona el camino AS más corto

AA

AS 400

CC

BB

Proveedor

AS 300

EE

Rutas de Clientes de Todos los Proveedores

Rutas de Clientes de Todos los Proveedores Cliente AS 100 160.10.0.0/16 Proveedor AS 200 D D

Cliente

AS 100

160.10.0.0/16

Proveedor AS 200

Proveedor AS 200

Proveedor AS 200
Proveedor AS 200
Proveedor AS 200

DD

Proveedor AS 300

800 EE

C Selecciona la mayor Local-Preference

AA

BB

AS AS 400 400

CC

ip prefix-list AS100 permit

16.10.0.0/16

route-map AS300in permit 10 match ip address prefix-list AS100 set local-preference 800

Rutas Completas de Ambos Proveedores

Rutas Completas de Ambos Proveedores  Solución de mayores requerimientos de memoria/CPU  Alcanza todos destinos

Solución de mayores requerimientos de memoria/CPU

Alcanza todos destinos basado en el “mejor” camino—usualmente el que tiene el camino mas corto

Todavía puede ajustar manualmente usando local- preference y comparación de as-path/comunidad/prefijo

Rutas Completas de Ambos Proveedores

Rutas Completas de Ambos Proveedores AS 100 AS 500 AS 200 AS 300 DD EE AA
AS 100 AS 500 AS 200 AS 300 DD EE AA BB AS 400 C
AS 100
AS 500
AS 200
AS 300
DD
EE
AA
BB
AS 400
C Selecciona el
camino más corto
CC
Controlando la Entrada de Tráfico?  La entrada es muy difícil de controlar debido a

Controlando la Entrada de Tráfico?

La entrada es muy difícil de controlar debido a la falta de una métrica transitiva

Puedes dividir los anuncios de prefijos entre los proveedores, pero entonces, que pasa con la redundancia?

Controlando la Entrada de Tráfico?

Controlando la Entrada de Tráfico?  Mal Ciudadano Internet:  Divide el espacio de direcciones 

Mal Ciudadano Internet:

Divide el espacio de direcciones

Usa “as-path prepend”

Buen Ciudadano :

Divide el espacio de direcciones

Usa “advertise maps”

Usando “AS-PATH prepend”

Usando “ AS-PATH prepend” Cliente AS 100 10.1.0.0/16 300 400 400 10.1.0.0/16 200 400 (Mejor) Proveedor

Cliente

AS 100

10.1.0.0/16 300 400 400 10.1.0.0/16 200 400 (Mejor)

Proveedor AS 200

DD

AA

AS 400

BB

10.1.0.0

CC

Proveedor

AS 300

EE

ip prefix-list AS100 permit 10.1.0.0/16 route-map AS300out permit 10 match ip address prefix-list AS100 set as-path prepend 400

Usando un “Advertise-Map”
Usando un “Advertise-Map”

access-list 1 permit 10.15.7.0 access-list 2 permit 10.15.0.0

neighbor <R1> advertise-map am non-exist-map bb route-map am permit 10

match ip address 1 route-map bb permit match ip address 2

!Announces when !… this one disappears

1.10/16

10.15.7/24 auto-inject

ISP1 R1 R1 R2 R2
ISP1
R1 R1
R2 R2

10.15/16

ISP2 R3R3 R4R4
ISP2
R3R3
R4R4
10.15.7/24 1.10.6.1 10.15.7.4
10.15.7/24
1.10.6.1
10.15.7.4

1.10.6/24

10.15.7/24

1.10.6/24

Hasta Ahora…
Hasta Ahora…

Estabilidad por Medio de:

Agregación

Multihoming

Filtrado de Entreda/Salida

Escalabilidad de memoria/CPU:

Default, rutas de clientes, todas las rutas

Simplicidad usando soluciones “estandares”

Consideraciones de ISPs
Consideraciones de ISPs

Escalar la agregación de clientes en BGP

Ofrecer una selección del número de rutas a anunciar

Intercambio con otros proveedores

Minimizar la actividad de BGP y protegerse contra los problemas de configuración de los clientes

Proveer un servicio alternativo

Propagar una política de Calidad de Servicio

Guías para el Agregado de Clientes  Definir por los menos tres “peer-groups” : 

Guías para el Agregado de Clientes

Definir por los menos tres “peer-groups”:

cliente-default — envía solo default

cliente-cliente — envía solo las rutas de clientes

Cliente-completo — envía todas las rutas

Identificar las rutas a traves de comunidades

2:100=clientes;

2:80=peers

Aplicar claves y un “prefix-list” para cada vecino BGP

Agregado de Clientes

Agregado de Clientes CORECORE Route Reflector Cliente Peer Group Router de Agregación (Cliente RR) Rutas Completas
CORECORE Route Reflector Cliente Peer Group
CORECORE
Route Reflector
Cliente Peer Group

Router de Agregación (Cliente RR)

Rutas Completas “Default”

Peer Group

Peer Group

Rutas de Clientes Peer Group

NOTA: Aplicar claves y “prefix-list” de entrada para cada Cliente

Cliente-completo peer-group

Cliente-completo peer-group neighbor cliente-completo peer-group neighbor cliente-completo description Envía todas las

neighbor cliente-completo peer-group neighbor cliente-completo description Envía todas las rutas neighbor cliente-completo remove-private-AS neighbor cliente-completo version 4 neighbor cliente-completo route-map cliente-entrada in neighbor cliente-completo prefix-list cidr-block out neighbor cliente-completo route-map rutas-completas out

.

ip prefix-list cidr-block seq 5 deny 10.0.0.0/8 ge 9 ip prefix-list cidr-block seq 10 permit 0.0.0.0/0 le 32

route-map de salida para cliente-completo

route-map de salida para cliente-completo ip community-list 1 permit 2:100 ip community-list 80 permit 2:80 .

ip community-list 1 permit 2:100 ip community-list 80 permit 2:80

.

route-map rutas-completas permit 10

match community 1 80 set metric-type internal

set ip next-hop peer-address ; la nuestra

; clientes & peers ; MED = métrica IGP

route-map cliente-entrada
route-map cliente-entrada

route-map cliente-entrada permit 10

set metric 4294967294

set ip next-hop peer-address set community 2:100 additive

; ignora MED

cliente-cliente peer-group

cliente-cliente peer-group neighbor cliente-cliente peer-group neighbor cliente-cliente description Rutas de Clientes

neighbor cliente-cliente peer-group neighbor cliente-cliente description Rutas de Clientes neighbor cliente-cliente remove-private-AS neighbor cliente-cliente version 4 neighbor cliente-cliente route-map cliente-entrada in neighbor cliente-cliente prefix-list cidr-block out neighbor cliente-cliente route-map rutas-clientes out

route-map rutas-clientes

route-map rutas-clientes route-map rutas-clientes permit 10 match community 1 set metric-type internal ; solo clientes ;

route-map rutas-clientes permit 10

match community 1

set metric-type internal

; solo clientes ; MED = métrica igp

set ip next-hop peer-address ; la nuestra

route-map ruta-default

route-map ruta-default neighbor cliente-default peer-group neighbor cliente-default description Envía Default neighbor

neighbor cliente-default peer-group neighbor cliente-default description Envía Default neighbor cliente-default default-originate route-map ruta-default neighbor cliente-default remove-private-AS neighbor cliente-default version 4 neighbor cliente-default route-map cliente-entrada in neighbor cliente-default prefix-list niega-todo out

ip prefix-list niega-todo seq 5 deny 0.0.0.0/0 le 32

route-map ruta-default

route-map ruta-default route-map ruta-default permit 10 set metric-type internal ; MED = métrica igp set ip

route-map ruta-default permit 10 set metric-type internal ; MED = métrica igp set ip next-hop peer-address ; la nuestra

Peer Groups para Puntos de Intercambio

Peer Groups para Puntos de Intercambio  Similar al EBGP para agregado de clientes excepto que

Similar al EBGP para agregado de clientes excepto que no se usa el filtrado de prefijos (porque no hay un registro)

En su lugar se usa maximum-prefix y chequeos de sanidad de prefijos

Continua usando claves para cada vecino!

Peer Groups para Puntos de Intercambio

Peer Groups para Puntos de Intercambio neighbor nap peer-group neighbor nap descripción de ISP neighbor nap

neighbor nap peer-group neighbor nap descripción de ISP neighbor nap remove-private-AS neighbor nap version 4 neighbor nap prefix-list chequeo sanidad in neighbor nap prefix-list cidr-block out neighbor nap route-map nap-salidas out neighbor nap maximum prefix 30000

Peer Groups para Puntos de Intercambio

Peer Groups para Puntos de Intercambio route-map nap-salida permit 10 match community 1 set metric-type internal

route-map nap-salida permit 10

match community 1

set metric-type internal ; MED = métrica IGP

set ip next-hop peer-address ; la nuestra

; solo clientes

Peer Groups para Puntos de Intercambio:

Prefix-List chequeo-sanidad
Prefix-List chequeo-sanidad

# Primero filtramos nuestro espacio de direcciones!!

# no aceptamos default

ip prefix-list chequeo-sanidad seq 5 deny 0.0.0.0/32

# no aceptamos nada que comience con 0

ip prefix-list chequeo-sanidad seq 10 deny 0.0.0.0/8 le 32

# no aceptamos mascaras > 20 para todas las redes clase A (1-127)

ip prefix-list chequeo-sanidad seq 15 deny 0.0.0.0/1 ge 20

# no aceptamos 10/8 per RFC1918

ip prefix-list chequeo-sanidad seq 20 deny 10.0.0.0/8 le 32

# reservado por IANA – dirección de loopback

ip prefix-list chequeo-sanidad seq 25 deny 127.0.0.0/8 le 32

# no acepta mascaras >= 17 para todas las redes clase B (129-191)

ip prefix-list chequeo-sanidad seq 30 deny 128.0.0.0/2 ge 17

# no acepta la red 128.0 – reservado por IANA

ip prefix-list chequeo-sanidad seq 35 deny 128.0.0.0/16 le 32

Peer Groups para Puntos de Intercambio:

Prefix-List chequeo-sanidad
Prefix-List chequeo-sanidad

# no acepta 172.16 por RFC1918

ip prefix-list chequeo-sanidad seq 40 deny 172.16.0.0/12 le 32

# no acepta clase C 192.0.20.0 reservado por IANA

ip prefix-list chequeo-sanidad seq 45 deny 192.0.2.0/24 le 32

# no acepta clase C 192.0.0.0 reservado por IANA

ip prefix-list chequeo-sanidad seq 50 deny 192.0.0.0/24 le 32

# no acepta 192.168/16 por RFC1918

ip prefix-list chequeo-sanidad seq 55 deny 192.168.0.0/16 le 32

# no acepta 191.255.0.0 – reservado por IANA (Creo ??)

ip prefix-list chequeo-sanidad seq 60 deny 191.255.0.0/16 le 32

# no acepta mascaras > 25 para clase C (192-222)

ip prefix-list chequeo-sanidad seq 65 deny 192.0.0.0/3 ge 25

# no acepta nada en red 223 – reservado por IANA

ip prefix-list chequeo-sanidad seq 70 deny 223.255.255.0/24 le 32

# no acepta clase D/Experimental

ip prefix-list chequeo-sanidad seq 75 deny 224.0.0.0/3 le 32

Resumen
Resumen

Escalabilidad:

Uso de atributos, especialmente comunidad (community)

Uso de peer-groups y route-reflectors

Estabilidad:

Uso de dirección de loopback para el iBGP

Generación de agregados

Aplicación de claves

Siempre filtrar anuncios de entrada y salida

Resumen
Resumen

Simplicidad—soluciones estandares:

Tres opciones de multihoming

Agrupar clientes en comunidades

Aplicación de políticas estandares en el borde

Evitar “configuraciones especiales”

Automatice la generación de la configuracion (RR & RtConfig)

AS23456
AS23456

AS 23456 (IANA-ASTRANS) es utilizado como el número de AS cada vez que un AS de 32-bits tiene que ser representado en un enrutador que no entiende ASN de 32-bits

El AS vecino en mensajes de OPEN

En el AS-PATH en mensajes de actualización

Como el AGGREGATOR en mensajes de actualización

Es un número de AS valido (no un bogon)

Capacidad de soporte de ASN de 32-bits definido durante el proceso de negociación

Nuevos attributos

AS4_PATH

AS4_AGGREGATOR

Comunidades extendidas para VPN Route_Target (RT) Site_of_Origin (SOO)

Cuatro (4) trucos para la transición

Si 0 < ASN < 65536 usa ASN, sino usa 23456 como el ASN

Durante anuncios hacer la misma conversion mas arriba

Si el ASN > 65536 usar, ademas, nuevos atributos AS4_PATH y

AS4_AGGREGATOR

Si se recibe una actualización de un viejo BGP, utiliza ambos AS_PATH y AS4_PATH para reconstruir el camino

AS23456
AS23456

Como luce:

uonet9-gw#sh ip bgp 91.201.176.0/22

BGP routing table entry for 91.201.176.0/22, version 82287 Paths: (2 available, best #1, table default) Advertised to update-groups:

4

7

3701 3356 35320 3261 23456, (aggregated by 23456 92.242.127.170)

207.98.64.65 from 207.98.64.65 (207.98.64.251)

Origin IGP, localpref 1100, valid, external, atomic-aggregate, best Community: 3582:467 3701:380

3701 3356 35320 3261 23456, (aggregated by 23456 92.242.127.170), (received-only)

207.98.64.65 from 207.98.64.65 (207.98.64.251)

Origin IGP, localpref 1000, valid, external, atomic-aggregate

Community: 3701:380

AS23456
AS23456

Como transito solo la he visto para el prefijo experimental de RIPE NCC

uonet9-gw# sh ip bgp 84.205.80.0/24 BGP routing table entry for 84.205.80.0/24, version 5787485 Paths: (6 available, best #1, table default) Advertised to update-groups:

4

7

4600

11537 20965 1103 1125 23456 12654, (aggregated by 64512 10.255.255.255)

198.32.165.89 from 198.32.165.89 (198.32.165.126) Origin IGP, metric 0, localpref 1500, valid, external, best Community: 3582:567 4600:99

3701 4600 11537 20965 1103 1125 23456 12654, (aggregated by 64512 10.255.255.255)

207.98.64.65 from 207.98.64.65 (207.98.64.251)

Origin IGP, localpref 1300, valid, external Community: 3582:469 3701:391

4600 11537 6939 16150 1103 1125 23456 12654, (aggregated by 64512 10.255.255.255)

198.32.165.217 from 198.32.165.217 (198.32.165.254) Origin IGP, metric 0, localpref 1500, valid, external Community: 3582:567 4600:199

Referencias/Fuentes:
Referencias/Fuentes:

Cisco (www.cisco.com)

Dave Meyer (dmm@cisco.com)

John Stewart, BGP4, Addison Wesley

Sam Halabi, “Internet Routing Architectures”, Cisco Press

Randy Zhang, “BGP Design and Implementation”, Cisco Press

RFCs

Ejemplos de filtros para clientes
Ejemplos de filtros para clientes

ip prefix-list anuncia-mi-prefijo seq 10 permit <numero_red>/<mascara> ge 23 ip prefix-list anuncia-mi-prefijo seq 100 deny 0.0.0.0/32 le 32

ip prefix-list acepta-default seq 10 permit 0.0.0.0/0 ge 32 ip prefix-list acepta-default seq 100 deny 0.0.0.0/0 le 31

access-list 10 permit <numreo_red> <mascara_wildcard> access-list 10 deny any

access-list 20 permit 0.0.0.0 0.0.0.0 access-list 20 deny any