quarta-feira, 1 de junho de 2016

Limitando o Aprendizado de Prefixos no Protocolo BGP

Olá Pessoal,

Este é mais um artigo sobre configuração do protocolo BGP e novamente, por conveniência, irei me basear no laboratório 33 do livro LabCisco (2a Edição), cuja topologia pode ser observada na figura abaixo. Dessa vez o objetivo é apresentar os procedimentos de configuração necessários para limitar o aprendizado de prefixos a partir de um vizinho qualquer. 

Essa ação é importante porque a tabela de roteamento da Internet possui aproximadamente 600.000 prefixos atualmente. Esteja ciente de que a tabela completa terá milhares de entradas porque é muito comum existirem múltiplas rotas em direção ao mesmo prefixo. Além disso, caso uma empresa esteja conectada à Internet através de dois links, ou seja, esteja pareada simultaneamente com dois ISPs, então seu roteador de borda receberá duas vezes mais rotas aprendidas através de diferentes roteadores.

Por conta dessa grande quantidade de rotas, para receber a tabela completa seria recomendado, por exemplo, um Cisco 3925 ou preferencialmente um ASR 1002-X. Esses equipamentos não são baratos, principalmente os roteadores da família ASR. A escolha final vai depender não apenas da capacidade em armazenar e processar a tabela de roteamento, mas também da vazão dos links que implica na quantidade de pacotes por segundo (pps) que trafegarão através das interfaces do roteador. Por isso é importante estar atento às especificações do roteador para ter certeza de que o equipamento será adequado para as necessidades da empresa.

A recomendação para amenizar o "problema"do custo dos reoteadores é que o ISP envie apenas uma rota default, caso a empresa não tenha interesse em praticar engenharia de tráfego, ou apenas a tabela parcial com aquelas rotas originadas pelo próprio provedor. O que aconteceria se repentinamente, por qualquer motivo, a operadora começasse a anunciar mais rotas do que estava previsto para sua caixa aguentar? É nesse contexto que a limitação de aprendizado de prefixos pode ser um recurso bem útil!

Obs: Esse problema também poderia ser facilmente resolvido através da inserção de um filtro de entrada que permita apenas aquelas rotas previamente previstas de serem anunciadas pelo ISP.

Como o cenário é mais complexo do que realmente seria necessário para demonstrar essa simples configuração, utilizarei como referência apenas o roteador R1 da empresa detentora do AS 123. As linhas apresentadas abaixo são necessárias para limitar o aprendizado de prefixos em R1 através de R4 .

R1(config)# router bgp 123
R1(config-router)# neighbor 10.0.4.2 remote-as 40
R1(config-router)# neighbor 10.0.4.2 maximum-prefix 10 50 restart 2
R1(config-router)# end

Observem no destaque em amarelo que o primeiro parâmetro de maximum-prefix representa o limite de prefixos que será permitido na vizinhança, de forma que em caso de violação desse limite o roteador será forçado a terminar a sessão BGP. Neste exemplo, limitamos o aprendizado a 10 prefixos, lembrando que no laboratório há 7 prefixos sendo anunciados por R6. O segundo parâmetro define uma porcentagem que, quando atingida, fará com que o roteador passe a registrar mensagens de log alertando que a quantidade de prefixos recebidos está próxima do limite anteriormente definido. Por fim, o parâmetro restart define o tempo (em minutos) para que uma nova sessão BGP seja restabelecida depois de uma queda por motivo de violação ao limite de prefixos. 

Após essa configuração, o roteador R1 está recebendo 7 prefixos do limite de 10, condição que corresponde a mais que 50% e implica no registro de mensagens de log para alertar o administrador. Neste ponto, o sistema do R1 passa a exibir a seguinte mensagem no console:

%BGP-4-MAXPFX: No. of prefix received from 10.0.4.2 (afi 0) reaches 7, max 10

Na sequência, apenas para mostrar que a configuração funciona, adicionarei e anunciarei novas rotas em R6 (omitido), para que o limite de anúncios em R1 seja propositalmente violado. Observem abaixo a saída das mensagens de console em R1 quando o vizinho BGP ultrapassa o limite de anúncios permitidos.

%BGP-3-MAXPFXEXCEED: No. of prefix received from 10.0.4.2 (afi 0): 11 exceed limit 10
%BGP-5-ADJCHANGE: neighbor 10.0.4.2 Down BGP Notification sent

Obs.: Também é possível adicionar o parâmetro warning-only para que apenas mensagens de log sejam exibidas e/ou registradas pelo sistema, sem que a vizinhança BGP seja terminada. No entanto, a ação de terminar a sessão BGP ao receber rotas além daquilo que foi pré-definido pelo administrador é importante para não comprometer o desempenho do roteador. Lembrem-se de que a recepção repentina de milhares de rotas certamente demandaria uso de memória e de processamento, sendo a capacidade da caixa pode não ser adequada para lidar com rotas além da previsão. 

Simples assim, façam seus testes...

Samuel.

Nenhum comentário:

Postar um comentário