Dia 7: BGP — Peering, Autonomous Systems e Encaminhamento
Neste artigo
ℹ O protocolo que une a Internet
O BGP é o protocolo que mantém a Internet unida — encaminhamento entre mais de 70.000 Autonomous Systems. Sem BGP, não haveria conectividade global entre operadores.
No Dia 5 abordámos encaminhamento estático, RIP e OSPF — protocolos de interior, que funcionam dentro de uma organização. No Dia 6 aprofundámos OSPF com áreas, LSA e eleição de DR/BDR. Hoje damos o salto para o exterior: como é que redes diferentes, geridas por entidades distintas, trocam informação de encaminhamento à escala planetária?
A resposta é o Border Gateway Protocol (BGP), definido na RFC 4271. Ao contrário do OSPF, que descobre vizinhos automaticamente e calcula caminhos mais curtos, o BGP foi concebido para um mundo onde a política importa mais do que a distância. Um operador pode preferir uma rota mais longa porque é mais barata, ou rejeitar tráfego de um parceiro por razões comerciais.
1. Introdução ao BGP
O BGP é um protocolo de encaminhamento path-vector. Em vez de calcular o caminho mais curto com métricas (como OSPF com custo ou RIP com saltos), o BGP troca rotas na forma de prefixos IP acompanhados de uma lista de Autonomous Systems (AS-Path) que a rota atravessou. Esta lista funciona simultaneamente como atributo de política e como mecanismo de prevenção de ciclos: se um router vê o seu próprio AS no AS-Path de uma rota recebida, descarta-a imediatamente.
O BGP opera sobre TCP na porta 179. Ao contrário do OSPF, que usa multicast para descobrir vizinhos, o BGP exige configuração manual de cada vizinho (neighbor) com o endereço IP e o AS remoto. Esta escolha de design reflecte a natureza inter-organizacional do protocolo: cada peering é um acordo comercial explícito, não uma descoberta automática.
Existem dois modos fundamentais de operação:
- eBGP (External BGP) — entre routers de AS diferentes, tipicamente com ligações directas.
- iBGP (Internal BGP) — entre routers do mesmo AS, usado para distribuir rotas aprendidas externamente.
A versão actual, BGP-4, foi definida em 2006 e introduziu suporte para CIDR (Classless Inter-Domain Routing), permitindo agregacao de prefixos — fundamental para manter a tabela de encaminhamento global num tamanho viável (cerca de 950.000 prefixos IPv4 em 2025).
2. Autonomous Systems e Peering
Um Autonomous System (AS) é um conjunto de redes IP sob uma única administração técnica que apresenta uma política de encaminhamento coerente para a Internet. Cada AS recebe um número único (ASN — Autonomous System Number) atribuído por um RIR (Regional Internet Registry) como RIPE NCC para a Europa.
Existem duas categorias de ASN:
| Tipo | Intervalo | Uso |
|---|---|---|
| Públicos | 1 — 419999999 | Anunciados na Internet global |
| Privados | 4200000000 — 4294967294 | Laboratórios, testes internos (RFC 6996) |
As relações comerciais entre ASs determinam o fluxo de tráfego na Internet. Existem três modelos principais:
- Transit — um AS paga a outro para transportar tráfego para qualquer destino na Internet. O provedor de transit anuncia uma rota predefinida (0.0.0.0/0) ou a tabela completa.
- Peering — dois ASs trocam tráfego mutuamente, tipicamente sem custos (peering sem custos), anunciando apenas os seus próprios prefixos e os dos clientes. Pode ser público (num Internet Exchange Point) ou privado (PNI — Private Network Interconnect).
- Customer — um AS paga ao outro para receber tráfego destinado aos seus prefixos. O cliente anuncia os seus prefixos ao provedor, que os propaga aos seus pares e provedores de transit.
Esta hierarquia de relações cria o modelo clássico Tier 1 / Tier 2 / Tier 3. Os Tier 1 (ex: Lumen, Telia, NTT) não compram transit a ninguém — só fazem peering. Os Tier 2 compram transit a Tier 1 mas também fazem peering. Os Tier 3 (ISP locais) compram transit a Tier 2 e vendem aos clientes finais.
Os Internet Exchange Points (IXP) são infraestruturas físicas onde múltiplos ASs se ligam a um switch de alta capacidade para estabelecer peering público. Em Portugal, a GigaPIX (operada pela FCCN) é o ponto de troca nacional, permitindo que ISPs, universidades e empresas troquem tráfego nacional sem passar pelo estrangeiro.
3. eBGP vs iBGP
A distinção entre eBGP e iBGP é fundamental para compreender como o BGP escala dentro de um AS com múltiplos routers de borda.
| Característica | eBGP | iBGP |
|---|---|---|
| Vizinhos | AS diferentes | Mesmo AS |
| AS-Path | Modificado (adiciona AS local) | Não modificado |
| Next-hop | Alterado para o IP local | Preservado do eBGP |
| TTL | 1 (directamente ligado) | 255 (qualquer router interno) |
| Propagação de rotas | Re-anuncia rotas a qualquer vizinho | Não re-anuncia rotas iBGP para iBGP |
| Topologia | Full-mesh ou Route Reflector | Full-mesh ou Route Reflector |
A regra crítica do iBGP é: um router iBGP não re-anuncia rotas aprendidas via iBGP para outro vizinho iBGP. Isto evita ciclos, mas exige que todos os routers de borda tenham sessões iBGP entre si (full-mesh). Para ASs grandes, o full-mesh torna-se impraticável (N×(N-1)/2 sessões). A solução é o Route Reflector (RFC 4456): um router designado reflecte rotas iBGP aos seus clientes, reduzindo o número de sessões para N-1.
Outra alternativa é a Confederação BGP (RFC 5065): o AS principal é dividido em sub-ASs (member-AS) com ASNs privados. Dentro da confederação, eBGP é usado entre os sub-ASs, mas externamente o AS confederado apresenta um único ASN.
4. Configuração BGP no Linux (FRR)
O FRRouting (FRR) é o sucessor do Quagga e Zebra, oferecendo uma implementação completa de BGP (e OSPF, RIP, IS-IS) para Linux. É a ferramenta ideal para laboratórios, ambientes de produção em centros de dados, e aprendizagem prática do protocolo sem equipamento proprietário.
# Instalar FRR para BGP
apt install frr frr-rtrlib
# Configurar BGP no Linux com FRR
vtysh
configure terminal
router bgp 65001
bgp router-id 192.168.1.1
neighbor 10.0.0.2 remote-as 65002
address-family ipv4 unicast
network 192.168.1.0/24
exit-address-family
exit
# Verificar vizinhos BGP
show ip bgp summary
# Verificar tabela BGP
show ip bgp
# Filtrar prefixos
neighbor 10.0.0.2 prefix-list FILTER-IN in
ip prefix-list FILTER-IN permit 192.168.0.0/16 le 24
Após instalar o FRR, é necessário activar o daemon BGP no ficheiro de configuração do daemon, tipicamente em /etc/frr/daemons, definindo bgpd=yes. Reiniciar o serviço com systemctl restart frr.
O comando show ip bgp summary é a primeira ferramenta de diagnóstico. A coluna State/PfxRcd mostra o estado da sessão e o número de prefixos recebidos de cada vizinho. Se aparecer Idle, a sessão TCP não foi estabelecida — verificar conectividade L3, firewall na porta 179 e ASN remoto.
O bgp router-id identifica único do router no domínio BGP. Se não for configurado manualmente, o FRR usa o maior IP de loopback. Em ambientes de produção, deve ser sempre definido explicitamente com um endereço de loopback estável.
5. Políticas de Encaminhamento e Filtragem
A essência do BGP não está em encontrar o caminho mais curto — está em aplicar políticas. Um operador decide quais rotas aceita, quais prefere, quais re-anuncia e com que atributos. Isto é feito através de filtros, route-maps e manipulação de atributos BGP.
Os principais atributos BGP que influenciam a selecção de rotas, por ordem de prioridade:
| Ordem | Atributo | Descrição |
|---|---|---|
| 1 | Weight | Local ao router (não propagado). Maior vence. |
| 2 | Local Preference | Local ao AS (propagado via iBGP). Maior vence. |
| 3 | AS-Path | Lista de ASs atravessados. Menor caminho vence. |
| 4 | Origin | IGP (0) < EGP (1) < Incomplete (2) |
| 5 | MED | Multi-Exit Discriminator. Menor vence (sugestão ao AS remoto). |
| 6 | eBGP vs iBGP | Prefere rotas eBGP sobre iBGP (para mesmo AS-Path). |
| 7 | Next-hop IGP metric | Menor métrica IGP para alcançar o next-hop. |
A filtragem de rotas é feita com prefix-lists (para prefixos IP), filter-lists (baseadas em AS-Path com expressões regulares), e route-maps (combina múltiplas condições e permite modificar atributos). O exemplo do FRR acima usa uma prefix-list para aceitar apenas prefixos de 192.168.0.0/16 com máscara até /24.
As BGP Communities (RFC 1997) são etiquetas de 32 bits (formato AS:nn) que viajam com as rotas e permitem sinalizar preferências a provedores de transit. Comunidades bem conhecidas incluem:
no-export(65535:1) — a rota não deve ser anunciada a vizinhos eBGP.no-advertise(65535:2) — a rota não deve ser anunciada a nenhum vizinho.blackhole(65535:666) — pedir ao provedor para descartar tráfego para o prefixo (mitigação de DDoS).
O RPKI (Resource Public Key Infrastructure, RFC 6480) é a infraestrutura de validação criptográfica que permite verificar se um AS está autorizado a anunciar um prefixo. O FRR suporta RPKI através do pacote frr-rtrlib, que se liga aos validadores como Routinator ou OctoRPKI. Rotas Invalid são rejeitadas; rotas NotFound ou Valid são aceites.
6. BGP para PME — Multihoming
Multihoming é a conectividade redundante a dois ou mais provedores de Internet. Para PMEs que dependem criticamente da conectividade (comércio electrónico, VoIP, serviços cloud), o multihoming via BGP oferece redundancia activa com failover automático.
Existem duas abordagens principais:
| Abordagem | Vantagens | Desvantagens |
|---|---|---|
| PI + ASN próprio | Endereços portáveis, mudança de ISP sem renumeração | Requer alocação RIPE, custos anuais, tabela global |
| PA + NAT/PI | Sem custos de registo, simples | Endereços não portáveis, NAT no failover |
Com Provider Independent (PI), a PME obtém um bloco de endereços IP e um ASN próprios, que anuncia a ambos os provedores. Se um provedor falha, o BGP converge (tipicamente em segundos a minutos) e o tráfego passa pelo outro provedor automaticamente. É a solução profissional, mas requer custo de subscrição RIPE e acordos com ambos os ISPs para anunciar o prefixo.
Com Provider Aggregatable (PA), a PME usa endereços de um dos ISPs e faz NAT no router de borda. No failover, o NAT muda de IP de saída, mas os endereços internos não mudam. É mais simples e barato, mas não permite ligações entradas redundantes (servidores acessíveis por ambos os ISPs).
Estratégias de tráfego com multihoming BGP:
- AS-Path prepending — anunciar o próprio AS várias vezes numa rota, tornando o AS-Path mais longo e portanto menos atractivo. Usado para fazer o tráfego preferir um ISP sobre o outro.
- Local Preference — definir preferência local para rotas recebidas de um ISP sobre o outro (aplica-se ao tráfego de saída).
- MED — sugerir ao provedor qual caminho preferir para tráfego de entrada (não é obrigatório ser respeitado).
- Communities — muitos ISPs oferecem comunidades para controlar propagação (ex: anunciar só nacional, só a pares, com prepend).
No Dia 23 abordaremos BGP para PME em detalhe, com cenários práticos de configuração, failover e optimização de custos.
7. Erros Comuns e Lista de Verificação
⚠ Anunciar prefixos inválidos pode causar buracos negros globais
Anunciar prefixos inválidos via BGP pode causar buracos negros globais — sempre filtrar com RPKI e prefix-lists. Incidentes históricos (Pakistan Telecom/YouTube 2008, China Telecom 2019) demonstram o impacto de anúncios errados.
Erros mais frequentes em configuração BGP:
- Não filtrar prefixos recebidos — aceitar a tabela completa sem prefix-lists permite que um vizinho injecte rotas inválidas, potencialmente desviando tráfego.
- Esquecer o AS-Path loop — se o AS-Path não for verificado, um router pode aceitar uma rota que já atravessou o seu AS, criando um ciclo.
- Next-hop inalcançável em iBGP — o iBGP preserva o next-hop eBGP, que pode não ser alcançável por routers internos. Usar
next-hop-selfpara resolver. - Full-mesh iBGP incompleto — se nem todos os routers iBGP têm sessões entre si, rotas são aprendidas de forma assimétrica. Usar Route Reflectors ou Confederações.
- TTL insuficiente em eBGP multihop — quando vizinhos eBGP não estão directamente ligados, é necessário
ebgp-multihopcom TTL adequado. - Não activar RPKI — sem validação RPKI, o router aceita qualquer prefixo, aumentando o risco de aceitar anúncios maliciosos.
- Router-id duplicado — dois routers com o mesmo router-id causam comportamento imprevisível. Definir sempre manualmente.
- Ignorar BGP Graceful Restart — sem graceful restart, uma reinicialização do processo BGP interrompe todas as sessões e convergência demora mais.
Lista de verificação para produção BGP:
- ✓
bgp router-iddefinido explicitamente em todos os routers. - ✓ Prefix-lists de entrada e saída em todos os vizinhos eBGP.
- ✓ RPKI activado com validador operacional (Routinator ou equivalente).
- ✓
next-hop-selfem sessões iBGP onde aplicável. - ✓ Full-mesh iBGP ou Route Reflector configurado.
- ✓ BGP Graceful Restart activado para reduzir tempo de convergência.
- ✓ Monitorização de sessões BGP (SNMP, Prometheus/blackbox exporter, ou Nagios).
- ✓ AS-Path filtering com expressões regulares para rotas de clientes.
- ✓ Comunidades documentadas e acordadas com provedores de transit.
- ✓ Plano de rollback para mudanças de política (guardar configuração anterior).
✓ Resumo do Dia 7
O BGP não é o protocolo que encontra o caminho mais curto — é o protocolo que aplica políticas comerciais à escala da Internet. Compreender Autonomous Systems, eBGP vs iBGP, e políticas de filtragem é essencial para qualquer administrador de redes que trabalhe com múltiplos provedores ou conectividade inter-organizacional.
No próximo dia continuaremos a explorar protocolos de rede essenciais. O Dia 23 dedicar-se-á inteiramente ao BGP para PME, com configurações práticas de multihoming, estratégias de custo e cenários de failover reais.
Artigos relacionados no kbase.pt
- Dia 5: Encaminhamento Estático, RIP e OSPF
- Dia 6: OSPF em Profundidade — Áreas, LSA, DR/BDR e Configuração
- Dia 23: BGP para PME — Multihoming e Estratégias de Custo (em breve)