BGP Overview – Back to Basics

O Border Gateway Protocol (BGP) é um protocolo de roteamento usado para encaminhar o tráfego entre diferentes Sistemas Autônomos (AS) na Internet. Ele desempenha um papel fundamental na conectividade da Internet. Diferentemente de protocolos de roteamento internos IGPs, como OSPF ou EIGRP, que são usados dentro de uma única rede, o BGP foi projetado para lidar com a rota de tráfego entre redes autônomas distintas.

O BGP é um protocolo de roteamento baseado em vetor de caminho, onde as decisões de roteamento são tomadas através da troca de listas de caminhos de sistemas autônomos (AS_PATHs). Cada AS_PATH lista todos os sistemas autônomos pelos quais um pacote precisa passar para alcançar uma rede de destino específica.

O BGP é essencial para Internet Service Provider (ISP) e grandes empresas que se conectam a vários ISPs. Ele utiliza um conjunto de atributos para determinar a melhor rota para alcançar destinos específicos na internet. Esses atributos permitem que os administradores de rede controlem o fluxo de tráfego e otimizem a entrega de dados.

internal-BGP vs external-BGP

A imagem abaixo ilustra a diferença entre o internal-BGP vs external-BGP. O BGP oferece suporte a dois tipos de trocas de informações de roteamento: trocas entre diferentes AS e trocas dentro de um único AS. A Figura-1 ilustra a conexão entre o iBGP e o eBGP.

Figura-1

  1. iBGP: Este é utilizado dentro de um único AS. Ou seja, quando os roteadores pertencem ao mesmo AS. O iBGP desempenha um papel crucial na propagação consistente de informações de roteamento dentro de uma organização ou AS. No entanto, também requer configurações especiais para evitar problemas de roteamento.
  2. eBGP: Este é usado quando a troca de informações de roteamento ocorre entre AS diferentes. Os ASs são essencialmente redes autônomas que podem pertencer a diferentes organizações ou prestadores de serviços de Internet. O eBGP é fundamental para garantir que diferentes partes da Internet possam se comunicar entre si.

A relação de peering com um vizinho BGP pode ser classificada como interna ou externa, dependendo de os dois roteadores estarem ou não no mesmo AS. Quando se trata de trocar informações de roteamento, a forma como o campo AS_PATH é atualizado varia com base no tipo de peering.

Por exemplo, as atualizações recebidas por vizinhos eBGP são propagadas para outros vizinhos tanto eBGP quanto iBGP. Isso permite que informações de roteamento sejam compartilhadas amplamente entre diferentes partes da Internet. No entanto, as atualizações aprendidas por vizinhos iBGP são anunciadas apenas aos roteadores eBGP. Essa restrição é chamada de split horizon e é implementada para evitar loops de roteamento.

É crucial observar que, no contexto do iBGP, é essencial que todos os roteadores iBGP estejam plenamente interconectados para garantir a propagação adequada das rotas. Essa configuração é conhecida como full mesh. Alternativamente, pode-se optar por utilizar Router Reflectors para reduzir a quantidade de conexões e a complexidade. No entanto, este tópico não será abordado neste artigo.

Tipos de Mensagens BGP

O BGP utiliza uma variedade de mensagens para estabelecer a conexão, trocar informações de roteamento, verificar se o vizinho BGP remoto ainda está ativo e/ou notificar o lado remoto se ocorrerem erros.

  1. Open Message: Após dois roteadores BGP completarem o processo de TCP handshake, eles tentarão estabelecer uma sessão BGP, o que é feito por meio das mensagens do tipo Open. Nesta mensagem, serão compartilhadas informações sobre o roteador BGP, que precisam ser negociadas e aceitas por ambos os roteadores antes que qualquer informação de roteamento possa ser trocada.
  2. Update Message: Após os roteadores se tornarem vizinhos BGP, eles podem começar a trocar informações de roteamento. Isso é feito por meio da mensagem de atualização, que contém informações sobre os prefixos anunciados. No contexto do BGP, um prefixo é conhecido como Network Layer Reachability Information (NLRI).
  3. Keepalive Message: Em situações em que não há atualizações de rotas a serem anunciadas ou retiradas, os vizinhos BGP usam mensagens de keepalive para manter a conexão ativa e verificar a disponibilidade um do outro. Essas mensagens periódicas de Keepalive são essenciais para garantir que a conexão permaneça estável. Por padrão, o BGP envia mensagens de Keepalive a cada 60 segundos. Se um vizinho BGP remoto não receber três dessas mensagens consecutivas (3 x 60 = 180 segundos, que é o valor do tempo de espera padrão), ele considerará a conexão como perdida e descartará as rotas desse vizinho BGP.
  4. Notification Message: A mensagem de notificação é utilizada quando ocorre um erro que resulta na terminação da adjacência do vizinho BGP. Quando algo sai errado, a mensagem de notificação é enviada e a sessão TCP será encerrada, todas as entradas deste vizinho BGP serão removidas da tabela BGP, e mensagens de atualização com retiradas de rotas serão enviadas aos outros vizinhos BGP.

Estados de uma conexão BGP

O estabelecimento de uma sessão BGP envolve seis etapas distintas que precedem a efetiva troca de prefixos IP entre os peers BGP. Em cada uma dessas etapas, os roteadores enviam e recebem mensagens, processam dados e alocam recursos antes de avançar para a próxima fase.

  1. Idle – Este é o estado inicial em que o roteador recusa todas as conexões.
  2. Connect – O roteador aguarda a conclusão da conexão TCP:
    • Se a conexão TCP for bem-sucedida, o roteador envia uma mensagem de Open e o estado passa a ser Open Sent.
    • Se a conexão TCP falhar, o estado passa a ser Active, e o roteador continua a aguardar conexões TCP de entrada.
    • Se o tempo de Connect Retry expirar, o processo BGP redefinirá o tempo e retornará ao estado de Connect.
    • Em caso de qualquer outro evento, o BGP retornará ao estado Idle.
  3. Active – O roteador está ouvindo e aceitando conexões TCP:
    • Se a conexão TCP for bem-sucedida, o BGP envia uma Passive Open, move-se para o estado Open Sent e, em seguida, envia uma mensagem adicional de Open.
    • Se o temporizador de Connect Retry expirar, o BGP reinicia o temporizador, inicia uma conexão BGP com o par e retorna ao estado de Connect.
    • Se o peer não corresponder ao esperado, o BGP rejeitará a tentativa de conexão e permanecerá no estado Active.
  4. Open Sent – O processo BGP aguarda uma mensagem de Open do seu peer:
    • Se um erro for detectado na mensagem de Open, o BGP envia uma mensagem de Notification e retorna ao estado Idle.
    • Se a mensagem de Open for válida, o BGP envia uma mensagem de Keepalive e compara os parâmetros na mensagem, em seguida, passa para o estado de Open Confirm.
    • Se a conexão TCP for encerrada, o BGP fecha a conexão e retorna ao estado Active.
    • Em caso de qualquer outro evento, o processo BGP envia uma mensagem de Notificação e volta ao estado Idle.
  5. Open Confirm – O processo BGP aguarda mensagens de Keepalive ou Notification:
    • Se uma mensagem de Keepalive for recebida, o BGP passa para o estado Established.
  6. Established – Este é o estado operacional do BGP, durante o qual o BGP troca mensagens de Update, Notification e Keepalive:
    • Se o temporizador de Keep Alive expirar, o processo BGP envia novas mensagens de Keepalive e reinicia o temporizador.
    • Cada vez que o BGP envia mensagens de Keepalive e Update, o temporizador do Keep Alive é reiniciado, bem como o temporizador de Hold Time.
    • Se ocorrer um evento inesperado, o BGP envia uma mensagem de Notificação e muda para o estado Idle.

Esses estados são essenciais para o funcionamento do BGP, garantindo a troca segura de informações de roteamento entre roteadores BGP.

Quais os tipos de atributos do BGP?

Existem quatro categorias de atributos BGP, cada uma com seu próprio comportamento em relação ao suporte e à inclusão nas mensagensde de UPDATE:

  1. Well-known mandatory (Mandatório): Esses atributos são suportados por todas as implementações do BGP e devem ser incluídos obrigatoriamente nas mensagens UPDATE.
  2. Well-known discretionary (Discricionário): Esses atributos também são suportados por todas as implementações do BGP, mas têm a flexibilidade de serem incluídos de forma opcional nas mensagens UPDATE. A decisão de incluí-los ou não fica a critério do roteador.
  3. Optional transitive (Opcional): Estes são atributos opcionais que podem ser incluídos nas mensagens UPDATE. A peculiaridade é que, mesmo quando não são suportados por determinados roteadores, eles ainda são reencaminhados de forma transparente para seus peers BGP. Ou seja, não importa se um roteador não entende esse atributo, ele ainda o repassa adiante.
  4. Optional non-transitive (Opcional): São atributos opcionais que também podem ser incluídos nas mensagens UPDATE. No entanto, ao serem encaminhados para outros roteadores BGP, se esses atributos não forem suportados, eles são removidos antes de serem repassados para as vizinhanças BGP subsequentes.

Atributos mandatórios devem estar presentes em cada mensagem de atualização. Os atributos opcionais e discricionários não são obrigatórios. Atualizações de caminho que carregam um atributo transitivo devem ser aceitas (mesmo que o atributo opcional não seja suportado) e propagadas para os pares de um roteador. Aqueles que são não-transitivos podem ser silenciosamente ignorados e não anunciados. A tabela a seguir resume os 10 atributos transportados nas mensagens de atualização.

TipoCódigoNomeDetalhes
1ORIGINEstabelecido pelo AS de origem, pode ser definido como “i” para IGP, “e” para EGP e “?” se incompleto.Well-known mandatory
2AS_PATHO atributo AS_PATH é outro atributo bem conhecido e obrigatório. Esse atributo identifica os sistemas autônomos pelos quais as informações de roteamento carregadas na mensagem de atualização passaram. Quando uma rota é anunciada do AS local para outro AS, cada número de AS pelo qual passou é adicionado ao atributo AS_PATH, permitindo que o receptor determine os ASs para encaminhar a mensagem de volta. O número do AS mais próximo do AS receptor fica à esquerda, como mostrado no atributo AS_PATH.Well-known mandatory
3NEXT_HOPEstabelecido pelo roteador para o endereço da interface local usada para alcançar o vizinho. Em peerings iBGP, não é alterado; em peerings eBGP, é modificado. Estabelecido quando uma atualização cruza uma fronteira AS.Well-known mandatory
4MULTI_EXIT_DISCO atributo MED é trocado entre dois ASs vizinhos, sendo que cada um não o anuncia para nenhum outro AS. Semelhante às métricas usadas pelos protocolos IGP, o MED é usado para determinar a melhor rota para o tráfego que entra em um AS. Quando um roteador BGP obtém várias rotas para o mesmo destino, mas com próximos saltos diferentes, ele considera a rota com o menor valor de MED como a melhor rota, se outras condições forem iguais.Optional non-transitive
5LOCAL_PREFIncluído em mensagens de atualização que um router BGP envia para seus vizinhos iBGP. Atualizações com Local Preference mais altas são usadas.Well-known discretionary
6ATOMIC_AGGREGATEQuando apresentado com um conjunto de rotas sobrepostas, um roteador seleciona uma rota menos específica e o BGP anexa este atributo. Ele é usado para indicar que uma rota anunciada foi agregada de maneira “atômica”. Em outras palavras, a rota anunciada é uma representação resumida de várias rotas mais específicas que foram agrupadas em uma única entrada.Well-known discretionary
7AGGREGATOREspecificamente, o atributo AGGREGATOR inclui o número do AS e o endereço IP do roteador que realizou a agregação.Optional transitive
8COMMUNITYO atributo COMMUNITY é uma ferramenta poderosa para simplificar a implementação de políticas de roteamento em redes BGP. Ele permite que os operadores de rede atribuam “comunidades” às rotas BGP para agrupá-las com base em critérios comuns, semelhantes a marcadores ou Tags.Optional transitive
9ORIGINATOR_IDO atributo ORIGINATOR_ID é um atributo opcional e não transitivo no BGP que desempenha um papel importante em cenários de reflexão BGP. A reflexão BGP é uma técnica usada em redes BGP para melhorar a escalabilidade e reduzir a complexidade do protocolo.
O objetivo principal do atributo ORIGINATOR_ID é evitar que rotas refletidas retornem ao roteador de origem, o que poderia criar loops de roteamento indesejados. Sem esse mecanismo de proteção, as rotas refletidas poderiam potencialmente voltar ao roteador que as originou, causando problemas de roteamento.
Optional non-transitive
10CLUSTER_LISTO atributo CLUSTER_LIST é outro atributo opcional e não transitivo no BGP que está associado à técnica de reflexão BGP. Quando as rotas são refletidas em uma rede BGP, o atributo CLUSTER_LIST é usado para rastrear o caminho que a rota refletida percorreu pelos clusteres BGP.Optional non-transitive

Esses atributos desempenham papéis cruciais no processo de roteamento BGP, permitindo que os roteadores compartilhem informações sobre caminhos de rede de forma eficaz e façam decisões informadas de roteamento.

Critérios de Seleção de Caminho (Path Selection Criteria)

Os critérios de seleção de caminho do BGP definem como as rotas, ou caminhos, são escolhidos para alcançar uma rede de destino específica. O BGP gerencia esse processo usando três tabelas de roteamento:

  1. Adj RIB-IN – Informações de roteamento aprendidas a partir de mensagens de Updates recebidas.
  2. Local RIB – Informações de roteamento locais que o BGP selecionou aplicando suas políticas locais à Adj RIB-IN.
  3. Adj RIB-OUT – Informações de roteamento que o BGP selecionou para serem anunciadas aos seus peers.

Os critérios de seleção de caminho do BGP são os seguintes:

  1. Weight: Seleciona o caminho com o maior peso. O valor padrão é 0 para todas as rotas não originadas pelo roteador local.
  2. Local Preference: Escolhe o caminho com a maior Local Preference. O valor padrão é 100.
  3. Locally Originated: Opta pelo caminho originado pelo roteador local.
  4. AS path length: Seleciona o caminho com o menor comprimento de AS path.
  5. Origin code: Escolhe o menor Origin Core.
  6. Multi-Exit Discriminator (MED): Prioriza o caminho com o valor MED mais baixo.
  7. eBGP path over iBGP path: Dá preferência aos caminhos eBGP sobre os caminhos iBGP.
  8. Shortest IGP path to BGP next-hop: Seleciona o caminho dentro do AS com a métrica IGP mais baixa até o próximo salto BGP.
  9. Oldest path: Opta pelo caminho que foi recebido primeiro.
  10. Router ID: Escolhe o caminho com o ID do roteador BGP vizinho mais baixo.
  11. Neighbor IP address: Seleciona o caminho com o endereço IP do vizinho BGP mais baixo.

É importante observar que os fabricantes de equipamentos de rede podem adotar critérios de seleção de caminho um pouco distintos e podem incorporar verificações adicionais em seus algoritmos. Por exemplo, a Cisco emprega um atributo proprietário conhecido como “weight,” que é avaliado na etapa inicial. Outras implementações podem introduzir estágios adicionais no processo, dando prioridade às rotas mais antigas em detrimento das mais recentes.

Conclusão:

Em resumo, o BGP desempenha um papel fundamental na infraestrutura da internet, permitindo a troca eficaz de informações de roteamento entre diferentes ASs. Este protocolo de roteamento baseado em vetor de caminho utiliza uma série de atributos e critérios de seleção para determinar a melhor rota para alcançar destinos específicos na internet.

Além disso, o BGP distingue entre peerings internos (iBGP) e externos (eBGP), garantindo a conectividade eficaz entre ASs distintos. O BGP é essencial para provedores de serviços de Internet e grandes empresas com conexões complexas, permitindo que eles controlem o fluxo de tráfego e otimizem a entrega de dados.

No entanto, é importante ter em mente que as implementações do BGP podem variar ligeiramente entre fabricantes de equipamentos de rede, resultando em diferenças nos critérios de seleção de caminho. Por exemplo, a Cisco utiliza o atributo “weight” como um critério adicional na escolha de rotas. Portanto, compreender essas nuances é crucial para a configuração eficiente e segura do BGP em uma rede.

Deixe um comentário