Protocolo de Gateway de Fronteira
| Border Gateway Protocol | |
|---|---|
| Nome em português | Protocolo de Gateway de Fronteira |
| Nome em inglês | Border Gateway Protocol |
| Abreviatura | BGP |
| Versão atual | BGP-4 (RFC 4271, 2006) |
| Porta / protocolo de transporte | TCP 179 |
| Tipo de roteamento | Protocolo de gateway externo (Exterior Gateway Protocol), protocolo de vetor de caminhos (Path-vector protocol) |
| Função principal | Trocar informações de acessibilidade de rede entre sistemas autônomos (AS) |
| Organismo de normalização | IETF |
Border Gateway Protocol (BGP, Protocolo de Gateway de Fronteira) é o principal protocolo de roteamento entre sistemas autônomos (AS, Autonomous System) da Internet, cuja função básica é trocar automaticamente informações de roteamento sem loops entre sistemas autônomos[1]. O BGP é classificado como um protocolo de vetor de caminhos (Path-vector protocol), cujas decisões de roteamento são baseadas em caminhos, políticas de rede ou conjuntos de regras configuradas pelo administrador, em vez de simplesmente manter contagens de saltos ou estado de enlace[2]. O BGP-4 suporta Roteamento Interdomínio sem Classes (CIDR) e fornece mecanismos de agregação de rotas, sendo atualmente o padrão de fato para roteamento interdomínio na Internet[1].
O design do BGP surgiu das limitações do Protocolo de Gateway Externo (EGP, Exterior Gateway Protocol) da Internet inicial, especialmente a restrição da topologia entre sistemas autônomos a uma árvore pelo EGP, e problemas de perda de atualizações devido ao uso de transporte IP não confiável[3].
- BGP-1: Publicado pela primeira vez em junho de 1989 na RFC 1105, suportava um pequeno número de rotas IPv4 com classes, usava TCP como transporte confiável para reduzir oscilações de rota e introduziu o atributo AS_PATH para evitar loops de roteamento[4][3]. O BGP foi originalmente projetado por Yakov Rekhter e Kirk Lougheed durante a 12ª reunião do IETF em janeiro de 1989, inicialmente apenas como uma solução de curto prazo, mas tornou-se inesperadamente um dos pilares da Internet[5].
- BGP-2: Publicado em 1990 na RFC 1163, introduziu uma estrutura para transportar atributos de caminho (como Origin, AS_PATH, Next_Hop) através de codificação TLV, estabelecendo a base para extensões futuras[3].
- BGP-3: Publicado em 1991 na RFC 1267, otimizou ainda mais o mecanismo de funcionamento do BGP-2[3][6].
A versão atualmente amplamente implantada é BGP-4. Sua especificação inicial foi redigida em 1994 na RFC 1654, depois publicada em 1995 na RFC 1771, e o padrão final foi formalizado em 2006 na RFC 4271[1][2].
A melhoria chave do BGP-4 em relação às versões anteriores é o suporte a CIDR, permitindo a agregação de múltiplos prefixos IP em um único anúncio de rota, reduzindo enormemente o tamanho da tabela de roteamento da Internet[1]. Além disso, o BGP-4 aumentou ainda mais a granularidade do controle de políticas, suportando atributos de caminho mais ricos[7].
O BGP opera sobre um protocolo de transporte confiável, geralmente usando a porta TCP 179 para estabelecer conexões, o que evita que o próprio protocolo implemente mecanismos complexos de fragmentação, retransmissão e confirmação de mensagens[4][2]. Os pares BGP (Peers) precisam ser configurados manualmente pelo administrador para estabelecer conexão.
Os pares BGP interagem através dos seguintes cinco tipos de mensagens[8][9]:
- OPEN: Primeira mensagem enviada após o estabelecimento da conexão TCP, usada para negociar parâmetros como versão BGP, número AS, Hold Time, etc.
- UPDATE: Usada para anunciar rotas alcançáveis (carregando NLRI e atributos de caminho) ou retirar rotas inalcançáveis.
- KEEPALIVE: Enviada periodicamente para manter a conexão ativa, também usada como confirmação da mensagem OPEN.
- NOTIFICATION: Enviada quando um erro é detectado, fechando imediatamente a conexão BGP.
- ROUTE-REFRESH (extensão opcional): Usada para solicitar dinamicamente que o par reenvie informações de rota.
O BGP não depende simplesmente de vetor de distância, mas toma decisões com base em uma série de atributos de caminho (Path Attributes). Quando existem múltiplas rotas para o mesmo destino, o BGP ativa o algoritmo de seleção da melhor rota (Decision Process)[7]. A ordem típica de seleção é a seguinte[10][7]:
- Descartar rotas cujo próximo salto é inalcançável;
- Preferir a rota com maior peso (Weight) (propriedade proprietária da Cisco);
- Preferir a rota com maior preferência local (Local Preference);
- Preferir rotas geradas localmente (por exemplo, injetadas via comando network);
- Preferir a rota com caminho AS (AS_PATH) mais curto;
- Preferir a rota com o tipo de origem mais baixo (IGP < EGP < Incomplete);
- Preferir a rota com o menor valor de MED (Multi-Exit Discriminator);
- Preferir rotas aprendidas via eBGP em vez de iBGP;
- Preferir a rota com a menor métrica IGP para o Next_Hop;
- Se ainda houver empate, usar o Router ID, comprimento da Cluster List e endereço IP do par como critérios de desempate finais.
Os roteadores BGP mantêm logicamente múltiplas bases de informações de roteamento (Routing Information Bases)[1][11]:
- Adj-RIBs-In: Armazena as informações de rota originais recebidas dos pares.
- Loc-RIB: Após a aplicação de políticas de roteamento (como filtragem de entrada, modificação de atributos e algoritmo de melhor caminho), as informações de rota selecionadas localmente.
- Adj-RIBs-Out: Rotas preparadas para serem anunciadas a pares específicos, geralmente modificadas por políticas de saída.
O BGP carecia de mecanismos de verificação de segurança integrados desde o início. Um AS pode anunciar prefixos de endereços IP que não lhe pertencem, causando desvio ou interceptação de tráfego (sequestro de prefixo, Prefix Hijacking)[12]. Este problema pode ser resultado de erros de configuração do administrador ou ataques maliciosos, e suas consequências geralmente afetam áreas muito amplas[13].
Para mitigar essas ameaças de segurança, a indústria desenvolveu a Infraestrutura de Chave Pública de Recursos (RPKI, Resource Public Key Infrastructure) e a Validação de Origem de Rota (ROV, Route Origin Validation), permitindo que proprietários de AS autorizem a declaração de seus prefixos IP por meio de certificados criptográficos[14]. Além disso, o BGPsec (RFC 8205) foi proposto para fornecer segurança mais abrangente para a integridade do caminho[13], mas sua adoção prática global ainda é limitada devido à complexidade e custos de implantação[14].
Com o desenvolvimento da Internet, as funcionalidades originais do BGP-4 projetadas para unicast IPv4 tornaram-se insuficientes para novas necessidades, resultando no desenvolvimento das Extensões Multiprotocolo para BGP (MP-BGP, Multiprotocol Extensions for BGP-4, RFC 4760). O MP-BGP introduz os campos Identificador de Família de Endereços (AFI, Address Family Identifier) e Identificador Subsequente de Família de Endereços (SAFI, Subsequent Address Family Identifier), permitindo que o BGP transporte informações de roteamento para vários protocolos de camada de rede, como IPv6 unicast, multicast, VPN de Camada 3 (L3VPN) e Virtual Private LAN Service (VPLS)[15][2].
- ↑ 1.0 1.1 1.2 1.3 1.4 Rekhter, Y., Li, T., Hares, S., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, January 2006.
- ↑ 2.0 2.1 2.2 2.3 Border Gateway Protocol, EPFL Graph Search.
- ↑ 3.0 3.1 3.2 3.3 Rekhter, Y., "BGP at 18: Lessons in protocol design", Juniper Networks, 2007.
- ↑ 4.0 4.1 Lougheed, K., Rekhter, Y., "A Border Gateway Protocol (BGP)", RFC 1105, June 1989.
- ↑ What is BGP? A Pillar of the Modern Internet, Catchpoint, 2019.
- ↑ BGP技术介绍,新华三集团.
- ↑ 7.0 7.1 7.2 BGP Path Selection and Route Preference, Cisco Systems, 2026.
- ↑ BGP路由技术, 阿里云开发者社区, 2023.
- ↑ Overview of BGP Messages, Juniper Networks.
- ↑ Route Selection, Juniper Networks.
- ↑ An Introduction to the Border Gateway Protocol (BGP) for Protocol Developers, IETF 119.
- ↑ Jiang, S., et al., "Route Origin Registry Problem Statement", IETF Internet-Draft, 2026.
- ↑ 13.0 13.1 Jaw, E., et al., "Serial BGP Hijackers: A Reproducibility Study and Assessment of Current Dynamics", RIPE Labs, 2024.
- ↑ 14.0 14.1 "Understanding stealthy BGP hijacking risk in the ROV era", APNIC Blog, 2025.
- ↑ Bates, T., et al., "Multiprotocol Extensions for BGP-4", RFC 4760, January 2007.