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:
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.1Network 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.
Samuel.