Está en la página 1de 14

BGP-4 está definido en la RFC 1771.

BGP es un protocolo de routing de pasarela externa (interdomain routing protocol).


BGP utiliza el puerto 179/tcp para transportar el protocolo entre vecinos BGP.
BGP fue creado para proporcionar CIDR (Classless Interdomain Routing), esta característica
no estaba disponible en las versiones anteriores

Vecinos de BGP
Antes de poderse intercambiar rutas BGP entre dos routers, estos deben de establecer la
vecindad, se tienen que hacer vecinos.
El intercambio de información antes de establecerse como vecinos incluye lo siguiente:

• Número de Versión de BGP


• Número de AS
• Router ID (RID) de BGP

Para verificar los vecinos BGP utilizaremos el comando show ip bgp neighbors:

Router# show ip bgp neighbors 172.16.232.178


BGP neighbor is 172.16.232.178, remote AS 10, external link
Index 1, Offset 0, Mask 0×2
Inbound soft reconfiguration allowed
BGP version 4, remote router ID 172.16.232.178
BGP state = Established, table version = 27, up for 00:06:12
Last read 00:00:12, hold time is 180, keepalive interval is 60 seconds
Minimum time between advertisement runs is 30 seconds
Received 19 messages, 0 notifications, 0 in queue
Sent 17 messages, 0 notifications, 0 in queue
Inbound path policy configured
Route map for incoming advertisements is testing
Connections established 2; dropped 1
Connection state is ESTAB, I/O status: 1, unread input bytes:
0
Local host: 172.16.232.181, Local port: 11002
Foreign host: 172.16.232.178, Foreign port: 179
…[salida omitida]…

En esta salida se puede ver que el keepalive es de 60 segundos y el holdtime de 180


segundos, así como que el puerto externo es el 179/tcp

Formas de BGP y Relaciones de Peering


BGP puede establecer dos tipos de peering

• iBGP
• eBGP
iBGP

iBGP define el peering entre dos vecinos BGP dentro del mismo AS. Se puede utilizar iBGP
en los AS de tránsito. Los AS de tránsito reenvían el tráfico desde un AS hacia otro. Si no se
utilizara iBGP, las rutas aprendidas por eBGP serían redistribuidas dentro del IGP y
redistribuidas de nuevo en el proceso de BGP de otro router eBGP. iBGP proporciona la
mejor forma de controlar las rutas para el AS de transito. Con iBGP la información de las
rutas externas (atributos) son reenviados. iBGP es preferido sobre otras redistribuciones ya
que los IGPs no entienden de AS paths y otros atributos de BGP.
Es importante configurar una red totalmente mallada de vecinos iBGP dentro del AS para
evitar bulces de routing. El router iBGP no redistribuye la información en otros peers iBGP.

eBGP

eBGP describe el peering BGP entre vecinos de diferentes AS, los vecinos eBGP deben de
tener una subred en común.

eBGP Multihop

Los peers eBGP pueden ser configurados sin estar directamente conectados, saltando varias
redes, mediante eBGP Multihop. eBGP Multihop también se utiliza para establecer el
peering con las direcciones de loopback. Esta es una característica propietaria de Cisco IOS.
El routing interno del AS (IGP) deberá de estar perfectamente configurado para que el eBGP
Multihop pueda funcionar. Multihop no es posible configurarlo en iBGP.
Ejemplo de configuración de eBGP Multihop:

RTA#
router bgp 100
neighbor 180.225.11.1 remote-as 300
neighbor 180.225.11.1 ebgp-multihop
RTB#
router bgp 300
neighbor 129.213.1.2 remote-as 100

Anunciar Rutas
Para anunciar rutas en BGP tenemos tres formas de hacerlo.

• Comando network
• Comando aggregate-address
• Redistribución de IGPs

El Comando network

El comando network especifica qué rutas de la tabla de routing IP local son añadidas a la
table de BGP. Por defecto en los routers Cisco la auto sumarización está habilitada. Si la auto
sumarización está desactivada, no se creará una ruta no classful sumarizada.

router bgp 100


network 4.0.0.0
network 5.0.0.0 mask 255.255.0.0

El Comando aggregate-address

El comando aggregate-address anuncia una ruta sumarizada si hay rutas más específicas en
la tabla de BGP. Si además utilizamos la palabra clave summary-only suprimiremos el
anuncio de prefijos más específicos.

router bgp 100


aggregate-address 100.100.4.0 255.255.252.0 summary-only

Con este ejemplo de arriba anunciomos la red sumarizada y no anunciaremos las más
específicas como 100.100.4.0/24 por ejemplo.

Redistribución de BGP

Otra forma de anunciar redes en BGP es importando las rutas de los protocolos IGP en BGP
mediante una redistribución. Este método se utilizará normalmente en grandes empresas con
core iBGP.
En el siguiente ejemplo se puede ver una redistribución de varias redes de EIGRP en BGP
modificando para unas cuantas la local preference y el weight:

router eigrp 111


network 15.0.0.0
!
router bgp 65511
no synonization
redistribute eigrp 111 route-map eigrp-to-bgp
!
route-map eigrp-to-bgp 5 (el 5 es el número de secuencia)
match ip address 40 (el 40 indica el access list con el que vamos a comparar)
set local-preference 200
set weight 10
set origin igp
!
route-map eigrp-to-bgp 10
match ip address 50
!
!
access-list 40 permit 15.186.0.0
access-list 40 permit 15.168.0.0
access-list 40 permit 15.124.0.0
access-list 40 permit 15.24.0.0 0.7.0.0
!
access-list 50 permit 15.202.208.0
access-list 50 permit 15.238.200.0

Distancia Administrativa de BGP


BGP tiene dos distancias administrativas dependiendo si es IGP o EGP

• iBGP: Distancia administrativa de 200


• eBGP: Distancia administrativa de 20

Filtros de BGP
Communities de BGP

El atributo communities es un atributo global opcional y transitivo y es un número en el


rango 1-4.294.967.200.
Las communities más comunes son:

• internet: Anuncia esta ruta a Internet, todos los routers pertenecen a esta community
• no-export: No anuncia esta ruta a otros peers eBGP
• no-advertise: No anuncia esta ruta a ningún peer
• local-as: Envía esta ruta a otros peers en otros subsistemas autónomos dentro de la
misma confederación local

Ejemplo:

router bgp 100


neighbor 10.1.2.5 remote-as 300
neighbor 10.1.2.5 send-community
neighbor 10.1.2.5 route-map commnolocal out
!
route-map commnolocal permit 10
match ip address 10
set community no-export
!
route-map commnolocal permit 20
match ip address 11
!
access-list 10 permit 2.0.0.0
access-list 11 permit 3.0.0.0
access-list 11 permit 4.0.0.0

En el ejemplo de arriba le pasa al peer 10.1.2.5 las rutas de la 2.0.0.0 marcadas con la
community no-export, es decir, no anunciar a peers eBGP

BGP Prefix Lists

Los prefix lists filtran los envíos y recepción de las rutas que se envían o reciben desde peers
Ejemplo:

router bgp 100


neighbor 1.1.1.1 prefix-list ccie out
!
ip prefix-list ccie seq 1 permit 2.0.0.0/8
ip prefix-list ccie seq 2 permit 3.0.0.0/8

En este ejemplo se envían al vecino 1.1.1.1 únicamente las rutas de las redes 2.0.0.0/8 y
3.0.0.0/8

BGP Distribute Lists

Los distribute lists filtran las rutas que se envían o reciben.


Ejemplo:

router bgp 100


neighbor 1.1.1.1 distribute-list 99 in
!
ip access-list 99 permit 2.0.0.0/8
ip access-list 99 permit 3.0.0.0/8

Filtros de BGP AS Path

Al igual que podemos filtrar por redes, también podemos filtrar los ASs mediante
expresiones regulares:

Expresión Significado

. Cualquier caracter único


^ Compara el inicio de cualquier cadena
$ Compara el final de cualquier cadena
_ Compara el inicio, el final, coma, {, }, (, ) o un espacio
* Compara con ninguna o cualquier secuencia en el patrón
Ejemplo de Expresiones:

^222_ Cualquier AS Path que comience por 222


.* Cualquier AS Path
.$ El AS local (sin AS)

Sincronización de BGP
Por defecto la sincronización de BGP está habilitada en los routers Cisco.
El proposito de la sincronización es que el AS proporcione transito a otro AS: BGP no debe
de anunciar una ruta hasta que todas las rutas del AS no se hayan aprendido por IGP.
Es posible desactivar la sincronización de BGP para acelerar el proceso de convergencia
(BGP no tiene que esperar al IGP). Esto sólo se puede hacer si el AS no es de transito o si
todos los routers corren BGP.
La sincronización podemos deshabilitarla con el comando no bgp synchronization.

Atributos de BGP, Weight y el proceso de decisión de


BGP
La decisión de mejor ruta BGP la realiza teniendo en cuenta los atributos y el weight.
Los atributos de BGP vienen muy bien definidos en
http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/bgp.htm

Atributos de BGP Path


Los atributos de BGP se dividen siguiendo el siguiente esquema:

• Atributos

o Well-Known: Se reconocen en todas las implementaciones de BGP
o
 Mandatory: Tienen que ser incluidos en todas la actualizaciones

 Next-Hop: Dirección IP que alcanza el destino
 Origin: i(IGP), e(EGP), ?(incompleto)
 AS-Path: Número de ASs para alcanzar el destino y lista de
los mismos
 Discretionary: No tienen que ser incluidos en todas las
actualizaciones

 Local-Preference: Indica el path para salir del AS
 Atomic Aggregator: Informa a los peers BGP que existe una
ruta menos específica a un destino
o Optional: No necesitan ser soportados por el proceso BGP
o
 Transitive: Los routers los anunciarán, aunque ellos no los soporten

 MED: Le dice al peer eBGP el path preferido para entrar en el
AS
 Community: Agrupa redes para asignación de políticas
 Agregator: Incluye la IP y el AS del router que origina la ruta
agregada
 Non Transitive: Los routers no los anunciarán

Atributo Next-Hop

Este atributo nos indica la dirección IP del siguiente salto eBGP que vamos a utilizar para
alcanzar el destino. Para definir el siguiente salto como el vecio en si utilizaremos el
comando next-hop-self.

router bgp 100


neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 next-hop-self

Atributo Local Preference

El atributo local preference indica cual es el caminio para salir del AS local, este atributo no
se pasará a vecinos eBGP. Por defecto en routers Cisco es 100 y se prefiere la local
preference más grande

router bgp 100


neighbor 1.1.1.1 remote-as 100
bgp default local-preference 300 (este router tiene una LP de
300)

Atributo Origin

El atributo Origin define el origen de la información del path:

• IGP: Indicado con una i, presente si la ruta se ha aprendido con el comando network
• EGP: Indicado con una e, presente si la ruta ha sido aprendida desde otro AS
• Incomplete: Indicado con un ?, aprendido de una redistribución de la ruta

Atributo AS Path Length

El AS Path Length lista los ASs que se atraviesan para llegar los destinos

Router# show ip bgp community-list 20


BGP table version is 716977, local router ID is 192.168.32.1
Status codes: s suppressed, * valid, > best, i – internal
Origin codes: i – IGP, e – EGP, ? – incomplete

Network Next Hop Metric LocPrf Weight Path


* i10.3.0.0 10.0.22.1 0 100 0 1800 1239 ?
*>i 10.0.16.1 0 100 0 1800 1239 ?
* i10.6.0.0 10.0.22.1 0 100 0 1800 690 568 ?
*>i 10.0.16.1 0 100 0 1800 690 568 ?

En el ejemplo podemos ver en rojo el AS-Path, en verde el Origin y en azul la Local


Preference

Atributo MED

El atributo MED, también conocido como métrica, indica a los peers de eBGP el path
preferido para entrar en el AS desde fuera.
Por defecto el valor del MED es 0 y cuanto más bajo sea el valor es más preferible.
router bgp 100
neighbor 1.2.1.1 remote-as 200
neighbor 1.2.1.1 ebgp-multihop
neighbor 1.2.1.1 update-source loopback 0
neighbor 1.2.1.1 route-map setmed out
!
route-map setmed permit 10
set metric 200

Cisco además ha añadido dos funcionalidades nuevas al MED que permiten realizar
comparaciones:

• bgp deterministic-med compara valores de MED en las rutas anunciadas por


diferentes peers del mismo AS
• bgp always-compare-med compara el atributo MED de diferentes ASs para
seleccionar el path más adecuado

Atributo Community

Este atributo no participa en el proceso de selección de path, pero sirve para agrupar políticas
o decisiones que aplican a estas rutas

Atributos Atomic Aggregate y Aggregator

El atributo Atomic Aggregate informa a los peers BGP que existe una ruta menos específica a
un destino y atributo Aggregator incluye la IP y el AS del router que ha generado la ruta
agregada
Weight
Weight es específico de Cisco y no se propaga a otros routers. Los valores del weight están
en el rango 0 – 65535, y las rutas a un destino con un weight mayor son preferidas sobre las
otras.
El weight puede ser utilizado en vez de la local preference para influenciar en la selección del
path a los peers externos de BGP.
La diferencia principal es que el weight no se envía entre peers y la local preference se envía
entre peers iBGP

router bgp 500


neighbor 4.1.1.1 remote-as 100
neighbor 4.1.1.1 weight 400
neighbor 5.1.1.1 remote-as 200
neighbor 5.1.1.1 weight 600

Proceso de Decisión de BGP


Por defecto BGP selecciona un único path a un destino, a no ser que se configure maximum
paths, y el proceso es el siguiente:

1. Si el next hop al path está caído se descarta el path


2. Si el path es interno, la sincronización está habilitada, y el path no está en IGP se
descarta el path
3. Se selecciona el path con mayor weight
4. Si el weight es igual se selecciona la menor local preference
5. Si la local preference es igual se selecciona el path que haya sido originado en el
router local
6. Si el path no ha sido originado por el router local se selecciona la que tenga el AS-
Path más corto
7. Si todos tienen el AS-Path de la misma longitud se selecciona en primer lugar los
paths originados en el AS local
8. Si los Origin Code son iguales se selecciona la que tenga el MED más pequeño
9. Si el MED es igual se prefiere el path eBGP antes que el iBGP
10. Si los MED son iguales se prefiere el que tenga el vecino IGP más cercano
11. Para desempatar se elegirá el path con el vecino BGP con el RID menor

BGP Route Dampening, Peer Groups, Route Reflectors y


Confederaciones
BGP Route Dampening
El Route Dampening es un método que permite detener la propagación de rutas inestables a
través de la red. En BGP para conseguir eso se le asigna a cada path un valor de penalización
que va aumentando cada vez que se produce una caída rápida (flappping). En el momento
que el valor de la penalización llega al máximo el path es descartado.
El comando que realiza esta función es

router bgp as-number


bgp dampening half-life-time reuse-value supress-limit maximum-supress-time

El fucionamiento es el siguiente. Al principio se le asigna un valor de penalización, cuando la


ruta lleva caída el tiempo descrito en half-life-time el valor de penalización (por defecto
1000) baja a la mitad, por defecto este tiempo es de 15 minutos. El reuse-value indica el valor
al cual la ruta tiene que llegar para poder volver a ser anunciada, por defecto es 750. El valor
de supress-limit indica el valor al que tiene que llegar para ser eliminada del todo y el
maximum-supress-time indica la máxima duración para suprimir la ruta estable, por defecto 4
veces el half-life-time, típicamente 60 minutos.

BGP Peer Groups


Los Peer Groups son una agrupación de vecinos BGP a los cuales se les aplica las mismas
políticas, de esta forma podemos configurar un montón de vecinos BGP de forma más rápida.

Ejemplo de Peer Group en iBGP

router bgp 100


neighbor internal peer-group
neighbor internal remote-as 100
neighbor internal update-source loopback 0
neighbor internal route-map set-med out
neighbor internal filter-list 1 out
neighbor internal filter-list 2 in
neighbor 171.69.232.53 peer-group internal
neighbor 171.69.232.54 peer-group internal
neighbor 171.69.232.55 peer-group internal
neighbor 171.69.232.55 filter-list 3 in

Ejemplo de Peer Group en eBGP, la diferencia está en el lugar donde ponemos el remote-as

router bgp 100


neighbor external-peers peer-group
neighbor external-peers route-map set-metric out
neighbor external-peers filter-list 99 out
neighbor external-peers filter-list 101 in
neighbor 171.69.232.90 remote-as 200
neighbor 171.69.232.90 peer-group external-peers
neighbor 171.69.232.100 remote-as 300
neighbor 171.69.232.100 peer-group external-peers
neighbor 171.69.232.110 remote-as 400
neighbor 171.69.232.110 peer-group external-peers
neighbor 171.69.232.110 filter-list 400 in

Route Reflectors
Muchas veces no es posible disponer de una red totalmente mallada y hay que utilizar Route
Reflectors.
Un Route Reflector proporciona la capacidad de hacer funcionar en cluster a el mismo y a sus
clientes. Utilizando route reflector con que el route reflector esté conectado mediante una red
totalmente mallada con sus peers (no con sus clientes) es suficiente.

La configuración de un route relflector incluye el comando neighbor ip-address route-


reflector-client que indica que este router es un route reflector y que los vecinos
especificados son clientes.
Otro comando intersante sería bgp cluster-id, este comando sirve para especificar un cluster
de route reflectors

Un ejemplo de configuración sería el siguiente:

router bgp 3549


neighbor 1.2.3.4 remote-as 3549
neighbor 1.2.3.4 route-reflector-client
neighbor 1.2.3.5 remote-as 3549
neighbor 1.2.3.5 route-reflector-client bgp cluster-id 10

Confederaciones
Con confederaciones, el AS se divide en sistemas autónomos privados, y el grupo entero es
asignado a un confederation ID. La configuración se realiza únicamente en los routers
frontera.

La configuración para este ejemplo sería la siguiente:

RTC#
router bgp 50
bgp confederation identifier 500

bgp confederation peers 60 70


neighbor 128.213.10.1 remote-as 50 (conexión iBGP en el AS50)
neighbor 128.213.20.1 remote-as 50 (conexión iBGP en el AS50)
neighbor 129.210.11.1 remote-as 60 (conexión BGP con peer de confederación 60)
neighbor 135.212.14.1 remote-as 70 (conexión BGP con peer de confederación 70)
neighbor 5.5.5.5 remote-as 100 (conexión eBGP con el AS100 externo)

RTD#
router bgp 60
bgp confederation identifier 500

bgp confederation peers 50 70


neighbor 129.210.30.2 remote-as 60 (conexión iBGP en el AS60)
neighbor 128.213.30.1 remote-as 50 (conexión BGP con peer de confederación 50)
neighbor 135.212.14.1 remote-as 70 (conexión BGP con peer de confederación 70)
neighbor 6.6.6.6 remote-as 600 (conexión eBGP con el AS600 externo)
RTA#
router bgp 100
neighbor 5.5.5.4 remote-as 500 (conexión eBGP con la confederación 500)

Comandos show bgp


show ip bgp neighbors

Este comando comprueba si se ha establecido la conexión TCP con el vecino

Router# show ip bgp neighbors 10.108.50.2

BGP neighbor is 10.108.50.2, remote AS 1, internal link


BGP version 4, remote router ID 192.168.252.252
BGP state = Established, up for 00:24:25
Last read 00:00:24, last write 00:00:24, hold time is 180,
keepalive interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised and received(old & new)
Graceful Restart Capabilty:advertised and received
Address family IPv4 Unicast: advertised and received
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 3 3
Notifications: 0 0
Updates: 0 0
Keepalives: 113 112
Route Refresh: 0 0
Total: 116 115
Default minimum time between advertisement runs is 5 seconds

For address family: IPv4 Unicast


BGP table version 1, neighbor version 1/0
Output queue size : 0
Index 1, Offset 0, Mask 0×2
1 update-group member
Sent Rcvd
Prefix activity: —- —-
Prefixes Current: 0 0
Prefixes Total: 0 0
Implicit Withdraw: 0 0
Explicit Withdraw: 0 0
Used as bestpath: n/a 0
Used as multipath: n/a 0
Outbound Inbound
Local Policy Denied Prefixes: ——– ——-
Total: 0 0
Number of NLRIs in the update sent: max 0, min 0

Connections established 3; dropped 2


Last reset 00:24:26, due to Peer closed the session
Connection state is ESTAB, I/O status: 1, unread input bytes:
0
Connection is ECN Disabled
Local host: 10.108.50.1, Local port: 179
Foreign host: 10.108.50.2, Foreign port: 42698

show ip bgp

El comando show ip bgp nos indica las redes en la tabla BGP, lo más importante es
comprobar los Status codes

Router# show ip bgp

BGP table version is 5, local router ID is 10.0.33.34


Status codes: s suppressed, d damped, h history, * valid, >
best, i – internal
Origin codes: i – IGP, e – EGP, ? – incomplete

Network Next Hop Metric LocPrf Weight Path


*> 10.1.0.0 0.0.0.0 0 32768 ?
* 10.2.0.0 10.0.33.35 10 0 35 ?
*> 0.0.0.0 0 32768 ?
* 10.0.0.0 10.0.33.35 10 0 35 ?
*> 0.0.0.0 0 32768 ?
*> 192.168.0.0/16 10.0.33.35 10 0 35 ?

clear ip bgp

El comando clear ip bgp elimina las rutas de la tabla de BGP para forzar el volver a
calcularlas

También podría gustarte