sexta-feira, 20 de maio de 2016

Configuração de Atributos e Filtros no Protocolo BGP

Olá Pessoal,

O BGP é um protocolo de roteamento externo (EGP) utilizado para troca de rotas entre diferentes Sistemas Autônomos na Internet através de um processo denominado pareamento (peering). Esse protocolo foi um dos novos tópicos adicionados recentemente no currículo CCNA 6.0 (exame 200-125), no entanto a cobrança pela sua configuração no exame está restrita apenas aos aspectos básicos. Para aqueles interessados em estudar os aspectos básicos do protocolo BGP para o novo CCNA, recomendo a leitura e a resolução do Laboratório 30 (Roteamento Externo via BGP) do livro Laboratórios de Tecnologias Cisco em Infraestrutura de Redes (2a Edição)

Em outro artigo do blog, intitulado Manipulação de Atributos PA do Protocolo BGP, o leitor encontra a resolução comentada do Laboratório 33 do meu livro de laboratórios, oportunidade para conhecer alguns detalhes dos aspectos mais complexos de configuração desse protocolo. Neste artigo utilizarei esse mesmo laboratório, cuja topologia é apresentada na figura abaixo, para que o leitor possa praticar outras configurações do BGP. Proponho na sequência uma atividade em forma de exercício, sendo que apresento também duas possíveis resoluções comentadas para o mesmo problema.


REQUISITO: Você é responsável pela configuração do BGP na empresa detentora do AS 123, portanto suas ações de configuração estão restritas apenas aos roteadores R1, R2 e R3. A empresa está conectada à Internet a partir de dois provedores, sendo que R1 possui um pareamento eBGP com o roteador R4 no AS 40 e que R3 possui um pareamento eBGP com o roteador R5 no AS 50. A empresa deseja que todo tráfego de acesso aos prefixos 36.0.0.0/8, 37.0.0.0/8 e 38.0.0.0/8 seja "escoado" pelo AS 50, ou seja, passe necessariamente pelo seguinte caminho:

(...) > R3 > R5 > R6 > (...)

LEMBRE-SE: Nos roteadores de borda R1 (conectado ao R4 do ISP no AS 40) e R3 (conectado ao R5 do ISP no AS 50) há duas fontes de aprendizado dos prefixos 36.0.0.0/8, 37.0.0.0/8 e 38.0.0.0/8, sendo uma através do roteador vizinho iBGP dentro do próprio AS da empresa e outra através do roteador externo eBGP com um dos ISPs. Por padrão, o BGP dá preferência pelo aprendizado eBGP, ou seja, em R1 haverá preferência por escoar o tráfego através de R4, enquanto que em R3 haverá preferência por escoar o tráfego através de R5. Esse comportamento pode ser confirmado através dos destaques nas tabelas BGP abaixo que foram extraídas dos roteadores R1 e R3:

R1> show ip bgp
BGP table version is 15, local router ID is 1.1.1.1


   Network          Next Hop            Metric LocPrf Weight Path
*> 36.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 37.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 38.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 39.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 40.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 41.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 42.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i


R3> show ip bgp
BGP table version is 8, local router ID is 3.3.3.3


   Network          Next Hop            Metric LocPrf Weight Path
* i36.0.0.0         10.0.3.1                 0    100      0 40 60 i
*>                  10.0.5.2                               0 50 60 i
* i37.0.0.0         10.0.3.1                 0    100      0 40 60 i
*>                  10.0.5.2                               0 50 60 i
* i38.0.0.0         10.0.3.1                 0    100      0 40 60 i
*>                  10.0.5.2                               0 50 60 i
* i39.0.0.0         10.0.3.1                 0    100      0 40 60 i
*>                  10.0.5.2                               0 50 60 i
* i40.0.0.0         10.0.3.1                 0    100      0 40 60 i
*>                  10.0.5.2                               0 50 60 i
* i41.0.0.0         10.0.3.1                 0    100      0 40 60 i
*>                  10.0.5.2                               0 50 60 i
* i42.0.0.0         10.0.3.1                 0    100      0 40 60 i
*>                  10.0.5.2                               0 50 60 i

Já em R2 que aprende os prefixos através dos roteadores internos R1 e R3 via iBGP no mesmo AS, o caminho preferido é aquele através de R1 que possui menor router-id (1.1.1.1) do que R3 (3.3.3.3), conforme pode ser constatado na tabela BGP abaixo:

R2> show ip bgp
BGP table version is 15, local router ID is 2.2.2.2

   Network          Next Hop            Metric LocPrf Weight Path
*>i36.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i37.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i38.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i39.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i40.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i41.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i42.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i



1a SOLUÇÃO: Como o exercício pede que TODO o tráfego para os prefixos 36/8, 37/8 e 38/8 seja escoado por R5, então é necessário ajustar apenas as configurações de R1 (ligado ao R4) para forçar sua saída por R3 (ligado ao R5). Uma solução seria configurar R1 para diminuir o valor da métrica Local-Preference para 50 (padrão = 100) apenas para os prefixos desejados. Dessa forma o comportamento padrão do BGP seria alterado, de maneira que o aprendizado através do vizinho iBGP (R3) seria preferido por ter maior valor de Local-Preference. Não é necessário fazer nenhuma configuração adicional em R2, já que os valores da métrica Local-Preference são propagados internamente no mesmo AS.

01. R1(config)# ip access-list standard PREFIXO-36-37-38
02. R1(config-std-nacl)# permit 36.0.0.0 0.255.255.255
03. R1(config-std-nacl)# permit 37.0.0.0 0.255.255.255
04. R1(config-std-nacl)# permit 38.0.0.0 0.255.255.255
05. R1(config-std-nacl)# exit
06. R1(config)# route-map BGP-LocalPref permit 10
07. R1(config-route-map)# match ip address PREFIXO-36-37-38
08. R1(config-route-map)# set local-preference 50
09. R1(config-route-map)# route-map BGP-LocalPref permit 20
10. R1(config-route-map)# exit
11. R1(config)# router bgp 123
12. R1(config-router)# neighbor 10.0.4.2 route-map BGP-LocalPref in
13. R1(config-router)# end
14. R1# clear bgp all 40 soft

Nas linhas 01-05 criamos uma ACL denominada PREFIXO-36-37-38 com a correpondência para os prefixos que pretendemos manipualar na sequência. Nas linhas 06-10 criamos uma route-map denominada BGP-LocalPref para instruir o roteador de que os prefixos da ACL anterior (match) devem ter seu valor de Local-Preference diminuídos para 50 (set). Por fim, nas linhas 11-14 aplicamos essa route-map na entrada (in) do tráfego recebido pelo vizinho R4 (10.0.4.2). Os resultados podem ser observados nas tabelas BGP de R1 e R2 listadas abaixo, oportunidade em que os melhores caminhos estão destacados em amarelo e os caminhos manipulados estão destacados em azul:

R1> show ip bgp
BGP table version is 18, local router ID is 1.1.1.1

   Network          Next Hop            Metric LocPrf Weight Path
*  36.0.0.0         10.0.4.2                       50      0 40 60 i
*>i                 10.0.3.2                 0    100      0 50 60 i
*  37.0.0.0         10.0.4.2                       50      0 40 60 i
*>i                 10.0.3.2                 0    100      0 50 60 i
*  38.0.0.0         10.0.4.2                       50      0 40 60 i
*>i                 10.0.3.2                 0    100      0 50 60 i
*> 39.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 40.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 41.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 42.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i


R2> show ip bgp

BGP table version is 18, local router ID is 2.2.2.2

   Network          Next Hop            Metric LocPrf Weight Path
*>i36.0.0.0         10.0.2.2                 0    100      0 50 60 i
*>i37.0.0.0         10.0.2.2                 0    100      0 50 60 i
*>i38.0.0.0         10.0.2.2                 0    100      0 50 60 i
*>i39.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i40.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i41.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i42.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i

Obs.: Observem que essa solução diminui a prioridade dos prefixos 36/8, 37/8 e 38/8 através de R4 (no AS 40), já que o objetivo foi tornar mais atrativo o caminho via R5 (no AS 50). No entanto, o caminho via R4 ainda está disponivel na tabela BGP de R1, de forma que em caso de queda do pareamento entre R3 e R5, a empresa utilizará o caminho alternativo via R4 para alcançar os prefixos manipulados.



2a SOLUÇÃO: Como o exercício pede que TODO o tráfego para os prefixos 36/8, 37/8 e 38/8 seja escoado por R5, então é necessário ajustar apenas as configurações de R1 (ligado ao R4) para forçar sua saída através de R3 (ligado ao R5). Outra possibilidade de configuração alternativa à manipulação das métricas do BGP é configurar um filtro através do recurso route-map negando (deny) todos os anúncios recebidos por R1 (ligado ao R4) dos prefixos desejados de serem acessados através do AS 40.

01. R1(config)# ip access-list standard PREFIXO-36-37-38
02. R1(config-std-nacl)# permit 36.0.0.0 0.255.255.255
03. R1(config-std-nacl)# permit 37.0.0.0 0.255.255.255
04. R1(config-std-nacl)# permit 38.0.0.0 0.255.255.255
05. R1(config-std-nacl)# exit
06. R1(config)# route-map BGP-Filtro deny 10  
07. R1(config-route-map)# match ip address PREFIXO-36-37-38
08. R1(config-route-map)# route-map BGP-Filtro permit 20
09. R1(config-route-map)# exit
10. R1(config)# router bgp 123
11. R1(config-router)# neighbor 10.0.4.2 route-map BGP-Filtro in
12. R1(config-router)# end
13. R1# clear bgp all 40 soft

Nas linhas 01-05 criamos uma ACL denominada PREFIXO-36-37-38 com a correpondência para os prefixos que pretendemos filtrar na sequência. Nas linhas 06-09 criamos uma route-map denominada BGP-Filtro para instruir o roteador de que os prefixos da ACL anterior (match) devem ser negados (deny). Por fim, nas linhas 10-13 aplicamos essa route-map na entrada (in) do tráfego recebido pelo vizinho R4 (10.0.4.2). Os resultados podem ser observados nas tabelas BGP de R1 e R2 listadas abaixo, oportunidade em que os melhores caminhos estão destacados em amarelo, lembrando que os caminhos filtrados sequer aparecem em R1 como opção. Os resultados podem ser observados nas tabelas BGP de R1 e R2:

R1> show ip bgp
BGP table version is 24, local router ID is 1.1.1.1

   Network          Next Hop            Metric LocPrf Weight Path
*>i36.0.0.0         10.0.3.2                 0    100      0 50 60 i
*>i37.0.0.0         10.0.3.2                 0    100      0 50 60 i
*>i38.0.0.0         10.0.3.2                 0    100      0 50 60 i
*> 39.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 40.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 41.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i
*> 42.0.0.0         10.0.4.2                               0 40 60 i
* i                 10.0.3.2                 0    100      0 50 60 i


R2> show ip bgp
BGP table version is 24, local router ID is 2.2.2.2

   Network          Next Hop            Metric LocPrf Weight Path
*>i36.0.0.0         10.0.2.2                 0    100      0 50 60 i
*>i37.0.0.0         10.0.2.2                 0    100      0 50 60 i
*>i38.0.0.0         10.0.2.2                 0    100      0 50 60 i
*>i39.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i40.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i41.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i
*>i42.0.0.0         10.0.1.1                 0    100      0 40 60 i
* i                 10.0.2.2                 0    100      0 50 60 i

Obs.: Observem que essa segunda solução, por ser baseada na filtragem de prefixo, elimina qualquer possibilidade de tráfego por R4 para os prefixos 36/8, 37/8 e 38/8. Ou seja, em caso de queda do pareamento entre R3 e R5 (no AS 50), a empresa não será capaz de alcançar esses prefixos nem mesmo pelo caminho alternativo via R4 (no AS 40), já que os prefixos foram negados. 



Para aqueles interessados em estudar mais detalhes do BGP, há outros artigos no blog:

Convenhamos que material para estudar não falta, não é? ;-) Reforço que essas configurações dos atributos do BGP abordados neste e em outros artigos do blog não fazem parte do recente curículo CCNA 6.0 que compõe o novo exame 200-125.

Façam seus testes...

Samuel.

4 comentários:

  1. o que cai exatamente no ccna 6.0 quanto ao BGP?
    somente a configuraçao bem basica de peers ebgp e ibgp ?

    ResponderExcluir
    Respostas
    1. Não cai iBGP no CCNA 6.0. É cobrado apenas o básico de eBGP, especificamente a configuração de vizinhança (neighbor) e anúncio de prefixos via comando network.

      Excluir
  2. Nice blog,very informative.Keep up with your good work

    ResponderExcluir
  3. Prezado Samuel,

    Estou tentando construir essa estrutura na minha maquina, porém, estou enfrentando alguns problemas.

    1 - Eu baixei o pacote disponível aqui no blog, e estou importando os start conf dos routers para meu cenário, porém eles estão com Ips diferentes dos desenho.

    É isso mesmo ?

    ResponderExcluir