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).

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.
- 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;
- ROUTE-REFRESH - Forma dinâmica de requisitar o re-anúncio de rotas de um peer.
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.
