BGP - Border Gateway Protocol

Introdução

O Border Gateway Protocol (Protocolo de Roteamento de Borda – BGP) é um sistema de roteamento entre sistemas autônomos (Autonomous Systems - AS). Sistemas Autônomos são grupos de redes que compartilham uma mesma administração e a mesma política de roteamento. BGP é o protocolo usado para troca de informações sobre roteamento da Internet, comumente usado por ISP's (Internet Service Providers). A versão corrente do BGP é a versão 4, especificada na RFC 1771. A topologia interna de cada AS não é informada, mas somente as informações sobre como encontrar as redes (reacheability).

 
bgp-pathvector
 
O BGP Pode ser usado de duas Maneiras:
 

EBGP (External BGP) - Usado na troca de rotas entre Sistemas Autônomos;

IBGP (Internal BGP) - Usado dentro de um Sistema Autônomo.

Características

  • É um protocolo de vetor caminho;
  • As atualizações completas de roteamento são enviadas no início da sessão e as atualizações adicionais incrementais são enviadas em seguida;
  • Cria e mantém conexões na porta 179 do TCP1;
  • É um protocolo orientado a Conexão, dessa forma é tido como confiváel;
  • A conexão é mantida por keepalives periódicos;
  • O uso de atributos como métrica na escolha do melhor caminho lhe permite ótima granularidade2;
  • O uso de endereçamento hierárquico e a capacidade de manipular o fluxo de tráfego resultam em uma rede projetada para crescer;
  • Ele possui sua própria tabela de roteamento, apesar de ser capaz de compartilhar e pesquisar a tabela de roteamento IP Interno.

Funcionamento

O BGP opera trocando informações sobre a “encontrabilidade” de redes por mensagens de NLRI (Network Layer Reachability Information). As NLRI incluem um conjunto de atributos do BGP e um ou mais prefixos com os quais esses atributos estão associados. O BGP utiliza o protocolo TCP, porta 179 para garantir a confiabilidade das informações.

Ao contrário de protocolos como o RIP e OSPF, o BGP precisa que os vizinhos configurem de forma estática seus vizinhos (Peers). O BGP troca informações completas de roteamento quando uma conexão TCP for estabelecido com seu neighbor (vizinho). Quando uma rota é modificada, ele envia para seus vizinhos apenas as alterações. Ele não envia atualizações periódicas de rotas, e só informa o melhor caminho para a rede de destino, isso torna a divulgação mais leve, visto que o número total de rotas da Internet é muito grande e o anúncio de todas as rotas seria inviável. Esta forma de anúncio é conhecida como incremental. Para a comunicação entre roteadores BGP existem alguns tipos de mensagens onde cada um deles tem um papel importante na comunicação BGP.

Para promover o aprendizado sobre rotas para prefixos IP alcançáveis, um BGP speaker está engajado no intercâmbio de informações de alcançabilidade de redes
com seus vizinhos BGP. Durante um intercâmbio, uma sessão BGP pode cair e devido a isso a operação básica do BGP também precisa saber como lidar com essas situações. Para possibilitar várias atividades do BGP o protocolo define 4 tipos de mensagens obrigatórias para todos os sistemas BGP:
 
  • OPEN - utilizadas para o estabelecimento de uma conexão BGP;
  • UPDATE - são utilizadas para os anúncios propriamente ditos, incluindo rotas que devem ser incluídas na tabela e também rotas que devem ser removidos da tabela BGP;
  • KEEPALIVE - utilizadas para manter a conexão entre roteadores BGP caso não existam atualizações através de mensagens UPDATE;
  • NOTIFICATION - reportam erros e servem para representar possíveis problemas nas conexões BGP;
E ainda um tipo de mensagem adicional:
 
  • ROUTE-REFRESH - Forma dinâmica de requisitar o re-anúncio de rotas de um peer.
Uma expressão utilizada para definir rotas que devem ser removidas da tabela BGP é withdrawn, que devido a dinamicidade da Internet ocorrem com muita frequência. Outra questão importante em roteadores BGP é a questão do chamado Full Routing. Este termo é usado em roteadores que recebem todos os anúncios de rotas da Internet. Esta característica é desejável em core routers que possuam múltiplos pontos de interconexão com outros backbones. Nesses casos com a tabela de rotas completa será possível explorar e descobrir melhores rotas para uma determinada rede. Como efeito colateral, este recurso exige que os roteadores tenham bons recursos de CPU e memória.
 
Na maioria dos casos o recurso de full routing não é utilizado, pois os roteadores possuem geralmente apenas um ou dois pontos de interconexão com outros backbones, não permitindo nenhuma melhora significativa no roteamento caso fosse usado full routing. A tabela de roteamento BGP possui um número que identifica sua versão, sendo incrementado cada vez que esta sofrer alguma modificação.
 

Estados de uma conexão BGP

A negociação de uma sessão BGP passa por diversos estados até o momento que é propriamente estabelecida e é iniciada a troca de anúncios de prefixos de cada vizinho BGP. Para demonstrar os estados possíveis na negociação a figura abaixo ilustra a máquina de estados finitos.

 
estados_bgp
 
.