sexta-feira, 4 de junho de 2010

BGP - AS_PATH Prepend


1        Atributo AS_PATH

O AS_PATH é um atributo do BGP mandatório transitável entre diferentes AS (Well-known mandatory, tipo 2) indica a sequencia de AS em que a divulgação daquela rota viaja até chegar ao roteador de origem. Cada AS que a rota passa é adicionado (prepend) o número do AS em que ela está passando no atributo AS_PATH.
Sempre que uma atualização de rota passa através de uma AS o N.º da AS é pré-anexado aquela atualização (colocado no inicio da lista de AS's que foram atravessadas até chegar o destino. Pode-se fazer alterações no AS_PATH, como por exemplo adicionar mais vezes o seu AS para que a rota não seja preferida.

1.1           Prepend

O prepend é um recurso disponível no BGP que serve para adicionar várias vezes o seu AS em um caminho de AS do BGP (AS_PATH). Conforme o atributo diz, quanto menor o caminho, pior.


2        Cenário

2.1           Objetivo

Seis roteadores (R1, R2, R3, R4, R5 e R6) são conectados fisicamente R1-R2-R3-R4-R5-R6-R1 e devem ser configurados com roteamento BGP seguindo os criterios abaixo:
          Os roteadores R1, R2 e R3 deverão participar do AS 123 fazendo iBGP entre eles full mesh utilizando peer-group e deverão utilizar como IGP o OSPF na área 0 divulgando suas interfaces físicas e as interfaces externas deverão ficar como passivas;
         O router-ID do BGP e OSPF de todos os roteadores é o endereço IP da loopback;
         O R1 pertence ao AS 123 deverá fazer conexão eBGP com o R4 (AS 4) e deverá divulgar somente sua loopback 1.1.1.1 no BGP;
         O R3 pertence ao AS 123 deverá fazer conexão eBGP com o R6 (AS 6) e deverá divulgar somente sua loopback 3.3.3.3 no BGP;
         O R4 pertence ao AS 4 e faz eBGP com o R5 (AS 5). O R4 deverá adicionar 3 vezes o seu AS na rota 1.1.1.1 aprendida do R1;
         O R6 pertence ao AS 6 e faz eBGP com o R5 (AS 5). O R6 deverá adicionar 3 vezes o seu AS na rota 3.3.3.3 aprendida do R3.

2.2           Topologia

Figure-01:              Topologia

2.3           IOS utilizados

         R1, R2, R3, R4, R5 e R6 – c7200-js-mz.123-7.T.bin

2.4           Configuração dos Roteadores

Em todos os roteadores, antes de configurar o roteamento BGP, deve-se configurar um IGP, ou seja, um roteamento interno para que os roteadores possam conhecer o endereço IP para fechar a conexão BGP e também para que a rota seja divulgada na tabela de roteamento BGP. Esse IGP pode ser OSPF, ISIS, estático, etc.

2.4.1      Configuração do IGP

O processo de ativação do OSPF é feito pelo comando “router ospf ” onde o “processo” é um numero do processo OSPF. Para adicionar interfaces usa-se o comando “network
área ”. Para o roteador fazer vizinhança OSPF é necessário que a rede da interface esteja no comando “network” e a interface não esteja configurada como “passive-interface”.

2.4.2      Configuração do BGP

Voltando ao BGP, agora que os roteadores conhecem os endreços IPs de seus vizinhos pelo IGP, configura-se o BGP em todos os roteadores pelo comando “router bgp ” onde o “AS” é o Autonomous System do provedor. Dentro da configuração de BGP adiciona-se os vizinhos estaticamente com o comando “neighbor remote-as ”, onde se o “as_vizinho” for igual ao AS do roteador a conexão é IBGP, se for diferente será EBGP.
Adiciona-se o IP da interface loopback como Router-ID pelo comando “router-id ”. Para divulgar rede no BGP é necessário que a rede exista na tabela de roteamento interna e, ou adicionar o comando “network mask ” ou redistribuir rotas para o BGP com o comando “redistribute”.
As configurações de BGP atualmente podem ser feitas dentro da família de endereçamento IPv4, ou seja, dentro da configuração de roteamento entra-se no “address-family ipv4” e configuram-se as vizinhanças, router-reflector, community, route-map, etc.
Para adicionar várias vezes o AS no AS_PATH usa-se um route-map aplicado ao vizinho que se deseja divulgar o AS_PATH extenso.

2.5           Observações e Bugs

Caso o AS_Path não fosse modificado com o prepend, o caminho preferencial no R5, tanto para o IP 1.1.1.1 (loopback divulgada pelo R1 no BGP) quanto para o IP 3.3.3.3 (loopback divulgada pelo R3 no BGP), seria via o link entre o R1 x R4 devido ao menor endereço IP do vizinho ser 45.45.45.4 comparado ao 56.56.56.6.
Documentação:

2.6           Comandos Importantes de Verificação

R5#sh ip bgp
BGP table version is 8, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.1/32       45.45.45.4                             0 4 4 4 123 i
*> 3.3.3.3/32       56.56.56.6                             0 6 6 6 123 i     

3        Configuração

3.1           R1

router ospf 1
 router-id 1.1.1.1
 passive-interface FastEthernet1/0
 network 12.12.12.1 0.0.0.0 area 0
 network 14.14.14.1 0.0.0.0 area 0
!
router bgp 123
 bgp router-id 1.1.1.1
 neighbor GRUPO peer-group
 neighbor GRUPO remote-as 123
 neighbor 12.12.12.2 peer-group GRUPO
 neighbor 14.14.14.4 remote-as 4
 neighbor 23.23.23.3 peer-group GRUPO
 !
 address-family ipv4
 neighbor GRUPO activate
 neighbor 12.12.12.2 peer-group GRUPO
 neighbor 14.14.14.4 activate
 neighbor 23.23.23.3 peer-group GRUPO
 network 1.1.1.1 mask 255.255.255.255
!

3.2           R2

!
router ospf 1
 router-id 2.2.2.2
 network 12.12.12.2 0.0.0.0 area 0
 network 23.23.23.2 0.0.0.0 area 0
!
router bgp 123
 bgp router-id 2.2.2.2
 neighbor GRUPO peer-group
 neighbor GRUPO remote-as 123
 neighbor 12.12.12.1 peer-group GRUPO
 neighbor 23.23.23.3 peer-group GRUPO
 !
 address-family ipv4
 neighbor GRUPO activate
 neighbor 12.12.12.1 peer-group GRUPO
 neighbor 23.23.23.3 peer-group GRUPO
!

3.3           R3

!
router ospf 1
 router-id 3.3.3.3
 passive-interface FastEthernet0/0
 network 23.23.23.3 0.0.0.0 area 0
 network 36.36.36.3 0.0.0.0 area 0
!
router bgp 123
 bgp router-id 3.3.3.3
 neighbor GRUPO peer-group
 neighbor GRUPO remote-as 123
 neighbor 12.12.12.1 peer-group GRUPO
 neighbor 23.23.23.2 peer-group GRUPO
 neighbor 36.36.36.6 remote-as 6
 !
 address-family ipv4
 neighbor GRUPO activate
 neighbor 12.12.12.1 peer-group GRUPO
 neighbor 23.23.23.2 peer-group GRUPO
 neighbor 36.36.36.6 activate
 network 3.3.3.3 mask 255.255.255.255
!

3.4           R4

!
router bgp 4
 bgp router-id 4.4.4.4
 neighbor 14.14.14.1 remote-as 123
 neighbor 45.45.45.5 remote-as 5
 !
 address-family ipv4
 neighbor 14.14.14.1 activate
 neighbor 45.45.45.5 activate
 neighbor 45.45.45.5 route-map PREPEND out
!
!
ip access-list standard Loopback_R1
 permit 1.1.1.1
!
!
route-map PREPEND permit 10
 match ip address Loopback_R1
 set as-path prepend 4 4
!
route-map PREPEND permit 20
!

3.5           R5

!
router bgp 5
 bgp router-id 5.5.5.5
 bgp log-neighbor-changes
 neighbor 45.45.45.4 remote-as 4
 neighbor 56.56.56.6 remote-as 6
 !
 address-family ipv4
 neighbor 45.45.45.4 activate
 neighbor 56.56.56.6 activate
!

3.6           R6

!
router bgp 6
 bgp router-id 6.6.6.6
 neighbor 36.36.36.3 remote-as 123
 neighbor 56.56.56.5 remote-as 5
 !
 address-family ipv4
 neighbor 36.36.36.3 activate
 neighbor 56.56.56.5 activate
 neighbor 56.56.56.5 route-map PREPEND out
!
!
ip access-list standard Loopback_R3
 permit 3.3.3.3
!
!
route-map PREPEND permit 10
 match ip address Loopback_R3
 set as-path prepend 6 6
!
route-map PREPEND permit 20
!

 

Nenhum comentário: