BGP4
Border Gateway Protocol versão 4 (BGP4) é o protocolo utilizado para fazer o roteamento entre os Sistemas Autônomos da Internet.
Um Sistema Autônomo (AS) é uma rede ou grupo de redes sob uma mesma política de roteamento. Um AS pode ser a rede de uma empresa, universidade, provedora de serviço internet (ISP) etc. São exemplos de ASs, a rede ANSP, a USPnet, a rede IP da Telefonica.
Cada AS é identificado por um número de 1 a 64511. Os números de 64512 a 65535 são reservados para ASs privados. Aqui no Brasil, estes números são distribuídos pelo LACNIC. A rede formada pela interconexão de todos os ASs existentes é a própria Internet.
Roteamento é o processo de coletar, manter e disseminar informações sobre os caminhos (ou rotas) disponíveis para se chegar a cada ponto da rede. Não deve ser confundido com "forwarding" que é o encaminhamento dos pacotes na rede. Entre os ASs, esta troca de informações é feita pelo protocolo de roteamento externo, ou interdomínios, o BGP4. O roteamento interno de cada AS pode ser feito de diversas formas, normalmente usa-se um protocolo de roteamento interno, ou intradomínio, como o OSPF.
Na Internet, os equipamentos conectados são identificados por endereços IP. Dentro de um AS, os endereços IP são agrupados em blocos CIDR (Classless Inter-domain Routing) que são anunciados para os ASs vizinhos pelo BGP4. A partir dos anúncios recebidos, os roteadores do AS montam uma tabela de roteamento e assim podem encaminhar os pacotes IP de acordo com seus endereços destino.
A Figura 1 é um exemplo de sessão BGP4 entre dois ASs diretamente conectados. No exemplo, a rede IP 192.0.2.0/24 pertence ao AS 64520, isto é, todos os endereços IP da faixa 192.0.2.0 a 192.0.2.255 estão dentro da rede do AS 64520. Uma sessão BGP4 foi estabelecida entre os ASs 64520 e 64530 e os roteadores começam a trocar mensagens de roteamento. É necessário que exista conectividade IP entre os roteadores envolvidos, pois o BGP4 usa o TCP na camada de transporte, port 179.
Estabelecida a sessão BGP4, o roteador do AS 64520 passa a anunciar o prefixo 192.0.2.0/24 para o roteador do AS 64530, isto é, ele informa ao roteador do AS 64530 que a rede 192.0.2.0/24 pertence ao AS 64520. O roteador do AS 64530 insere esta informação em sua tabela de roteamento e passa a enviar para o roteador do AS 64520 todo o tráfego destinado para a rede 192.0.2.0/24.

Figura 1 - A conseqüência de anunciar um bloco IP por BGP4 é receber tráfego.
Para que todos os outros roteadores da Internet saibam que a rede 192.0.2.0/24 pertence ao AS 64520, é necessário que os anúncios BGP4 do roteador do AS 64520 se propaguem para todos os outros ASs. Na mensagem BGP4 que anuncia um bloco IP, há um importante atributo chamado "AS path". Inicialmente, o AS path contém somente o número do AS onde a mensagem foi gerada, mas cada roteador acrescenta o seu próprio AS ao AS path ao passá-lo para outro. O AS path é fundamental para o funcionamento do BGP4, pois seu tamanho é a métrica que o protocolo utiliza para decidir entre diferentes caminhos para chegar a um mesmo destino e também serve para evitar "loops" de roteamento.

Figura 2 - Cada roteador acrescenta o seu próprio AS ao AS path ao passá-lo para outro.
No exemplo da Figura 2, quatro roteadores de diferentes ASs trocam mensagens BGP4. A mensagem que o roteador do AS 64530 recebe do roteador do AS 64520 contém o AS path "64520". Na mensagem que os roteadores dos ASs 64540 e 64560 recebem do roteador do AS 64530, o AS path é "64530 64520", pois o roteador do AS 64530 acrescentou o seu próprio AS ao AS path. Quando o roteador do AS 64540 passa a mensagem para o roteador do AS 64560, ele também acrescenta o seu próprio AS e o AS path torna-se "64540 64530 64520". Assim, o roteador do AS 64560 acaba recebendo 2 anúncios referentes ao prefixo 192.0.2.0/24, um com AS path "64530 64520" e outro com AS path "64540 65530 64520", que correspondem aos dois caminhos possíveis para ir do AS 64560 ao AS 64520. O BGP4 é um protocolo tipo "distance vector", isto é, trabalha com um vetor de distâncias cujo tamanho é usado como métrica para a escolha do melhor caminho. Este vetor é o AS path e o caminho escolhido, é o que cruza o menor número de ASs.
Todos os ASs da Internet estão direta ou indiretamente conectados, assim, cada roteador rodando o protocolo BGP4 pode receber anúncios vindos de todos os outros ASs e conhecer as redes de cada um. Atualmente, cerca de 180 mil prefixos são anunciados por BGP4 na Internet. Um roteador que tem todos eles em sua tabela de roteamento está trabalhando em "full-routing".
Nos exemplos mostrados, os ASs têm apenas um roteador, mas na prática costumam ter vários e nem todos precisam trabalhar em "full-routing" ou mesmo rodar BGP4, somente os que têm conexão com os ASs vizinhos. Estes são chamados "roteadores de borda" do AS.
O BGP4 é um protocolo muito versátil, além do AS path, muitos outros atributos podem ser carregados pelas mensagens trocadas entre os roteadores e cada roteador pode manipular estes atributos de acordo com as regras configuradas pelo administrador do AS. O conjunto de regras configuradas nos roteadores define a política de roteamento do AS. Mais informação e detalhes sobre o protocolo BGP4 podem ser encontrados nas referências.
Referências
- RFC 1771 - A Border Gateway protocol 4 (BGP-4) - Y. Rekhter, T. Li - March 1995.
- Internet Routing Architectures - Second Edition - Sam Halabi, Danny McPherson - Cisco Press, 2000 - ISBN 1-57870-233-X
- Tutoriais em Português podem ser encontrados em
http://eng.registro.br/gter17/videos/Tutorial-BGP.pdf
http://penta2.ufrgs.br/redes296/cidr/tutorial.html



