quarta-feira, 25 de maio de 2016

Anúncio de Rota Default via Protocolo BGP

Olá Pessoal,

Quando um AS contrata conexão com uma operadora de telecomunicações, há necessidade de que seja estabelecida uma sessão BGP entre as partes para que a empresa possa anunciar seus próprios prefixos e receber as informações de roteamento que permitam alcançar toda a Internet. Nesse contexto é comum a operadora oferecer ao seu cliente a possibilidade de escolher se deseja receber a tabela completa de rotas (full route), a tabela parcial de rotas (partial route) ou apenas uma rota padrão (default route).

  • Default Route: Basicamente a operadora anuncia apenas uma rota padrão (default) para seu cliente, apontando que todo tráfego de saída para qualquer prefixo na Internet deve ser direcionado através dela. Essa ação é comum, por exemplo, quando a empresa está conectada à Internet a partir de uma única operadora, mas utiliza BGP porque é um AS e tem seus próprios recursos públicos para anunciar. Também é comum quando a empresa não tem interesse nenhum em definir políticas de engenharia de tráfego;
  • Partial Route: Além de anunciar uma rota padrão para qualquer prefixo na Internet, a operadora também anuncia rotas específicas para seus próprios prefixos com o intuito de otimizar a alcançabilidade destes, a fim de evitar que seu cliente tente alcançar seus prefixos por outro caminho que certamente seria uma opção pior; 
  • Full Route: A operadora anuncia a tabela BGP completa com todos os prefixos da Internet, ação que certamente requer equipamentos de borda com poder de memória e processamento para lidar com aproximadamente 600.000 prefixos IPv4 (atualmente), além de milhares de rotas, já que podem existir múltiplas rotas apontando para o mesmo prefixo.




Não existe uma regra "mágica" que diga qual é a melhor opção, já que a escolha por uma dessas opções vai depender do interesse da empresa em aplicar suas próprias políticas de engenharia de tráfego, da competência técnica dos seus recursos humanos em configurar o BGP, dos equipamentos disponíveis, do orçamento para aquisição de novos equipamentos, etc.

Através do mesmo laboratório utilizado no artigo anterior, oportunidade em que expliquei o processo de configuração de atributos e filtros no BGP (cliqe aqui para ler), já vimos que há duas fontes de aprendizado dos prefixos nos roteadores de borda R1 (conectado ao R4 do ISP no AS 40) e R3 (conectado ao R5 do ISP no AS 50), sendo um aprendizado através do vizinho interno iBGP e outro através do vizinho externo. 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. Antes qualquer configuração, convém verificar as tabelas BGP dos roteadores da empresa:


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 está posicinado atrás de R1 e R3, podemos observar o aprendizado de duas rotas para cada um dos prefixos anunciados através dos pareamentos iBGP com seus vizinhos no mesmo AS. 

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

Neste artigo assumiremos que a empresa cliente não deseja receber a tabela BGP completa ou parcial, de forma que seus provedores serão configurados para anunciar apenas a rota padrão. Esse procedimento pode ser realizado através dos comandos listados abaixo:

!-- Configuração de R4 no AS 40
01. R4(config)# ip access-list standard TUDO
02. R4(config-std-nacl)# permit any
03. R4(config-std-nacl)# exit
04. R4(config)# route-map BGP-FILTRO deny 10
05. R4(config-route-map)# match ip address TUDO
06. R4(config-route-map)# route-map BGP-FILTRO permit 20
07. R4(config-route-map)# exit
08. R4(config)# router bgp 40
09. R4(config-router)# neighbor 10.0.4.1 route-map BGP-FILTRO out
10. R4(config-router)# neighbor 10.0.4.1 default-originate
11. R4(config-router)# end
12. R4# clear bgp all 123 soft

!-- Configuração de R5 no AS 50
01. R5(config)# ip access-list standard TUDO
02. R5(config-std-nacl)# permit any
03. R5(config-std-nacl)# exit
04. R5(config)# route-map BGP-FILTRO deny 10
05. R5(config-route-map)# match ip address TUDO
06. R5(config-route-map)# route-map BGP-FILTRO permit 20
07. R5(config-route-map)# exit
08. R5(config)# router bgp 50
09. R5(config-router)# neighbor 10.0.5.1 route-map BGP-FILTRO out
10. R5(config-router)# neighbor 10.0.5.1 default-originate
11. R5(config-router)# end
12. R5# clear bgp all 123 soft

Nas linhas de 01-07 criamos um filtro negando TODOS os prefixos que posteriormente (linha 9) foi aplicado no sentido sainte (out) da vizinhanga eBGP dos ISPs com o respsectivo roteador de borda no AS 123. Ou seja, o ISP responsável pela configuração de R4 aplicou o filtro na saída da vizinhança com R1 para negar que qualquer prefixo seja anunciado para a empresa. O mesmo procedimento foi feito pelo ISP responsável por R5 em relação a R3. 

Se as configurações cessassem nesse ponto, os roteadores do AS 123 não receberiam absolutamente nenhum anúncio dos provedores. É por isso que na linha 10 os ISPs configuram seus roteadores para que façam o anúncio de uma rota default (0.0.0.0/0) para que todo o tráfego de saída seja direcionado pelo seu AS. Embora haja outros métodos para anunciar a rota padrão, utilizar o parâmetro default-originate é uma boa solução porque injeta artificialmente uma rota default na tabela BGP de um vizinho específico, sem interferir nas demais vizinhanças. 

Obs.: Outra opção para anunciar uma rota padrão na tabela BGP seria utiliar o comando "network 0.0.0.0", desde que a rota padrão exista previamente na tabela de roteamento. Também é possível redistribuir a rota padrão a partir de outro protocolo de roteamento, mais uma vez desde que essa rota exista previamente na tabela de roteamento. Uma terceira possibilidade seria utiliar o parâmetro default-information originate de maneira global nas sub-configurações do BGP, uma estratégia que nem sempre é desejável porque faria o BGP injetar artificialmente uma rota padrão em todos os seus vizinhos BGP. A solução utilizada neste artigo é a mais flexível porque permite injetar artificialmente a rota padrão apenas para um vizinho específico, de maneira que todos os demais prefixos podem ser filtrados na saída sem afetar a rota artificial.

Uma vez que o procedimento de anunciar apenas a rota padrão foi realizado por ambos os provedores, os roteadores da empresa no AS 123 selecionam aquela saída que entendem ser a melhor, conforme observado nas tabelas abaixo. Seguindo a lógica do BGP, os roteadores R1 e R3 preferem a rota padrão do vizinho eBGP (por R4 em R1 e por R5 em R3), enquanto que o roteador R2 prefere a rota padrão do vizinho iBGP com menor router-ID (através de R1). 

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

   Network          Next Hop            Metric LocPrf Weight Path
* i0.0.0.0          10.0.3.2                 0    100      0 50 i
*>                  10.0.4.2                 0             0 40 i



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

   Network          Next Hop            Metric LocPrf Weight Path
* i0.0.0.0          10.0.2.2                 0    100      0 50 i
*>i                 10.0.1.1                 0    100      0 40 i



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

   Network          Next Hop            Metric LocPrf Weight Path
*> 0.0.0.0          10.0.5.2                 0             0 50 i
* i                 10.0.3.1                 0    100      0 40 i


Reparem que depois das configurações realizadas nos provedores (AS 40 e AS 50), os roteadores da empresa (no AS 123) não aprendem mais todos os prefixos individualmente, o que certamente alivia bastante a exigência de memória e processamento dos equipamentos de borda. Por outro lado, a empresa perde de aplicar qualquer ação no sentido de definir suas próprias políticas de engenharia de tráfego. 

Façam seus testes...

Samuel.

Um comentário: