BGP

O que é BGP?

BGP significa Border Gateway Protocol.

Ele é um protocolo de roteamento usado para trocar informações de rotas entre diferentes redes independentes, chamadas de sistemas autônomos ou AS.

O BGP é considerado um dos protocolos mais importantes da internet, porque permite que redes de provedores, empresas, datacenters e grandes organizações saibam por onde enviar o tráfego até outros destinos.

De forma simples, o BGP ajuda a internet a decidir por quais redes os dados devem passar até chegar ao destino. A RFC 4271 define o BGP-4 como um protocolo de roteamento inter-AS, ou seja, usado entre sistemas autônomos.


Para que o BGP é usado?

O BGP é usado para roteamento entre redes diferentes.

Exemplos comuns:

Conectar provedores de internet.
Interligar grandes empresas à internet.
Anunciar blocos de IP públicos.
Controlar por qual operadora o tráfego deve sair.
Criar redundância entre links de internet.
Fazer roteamento entre sistemas autônomos.
Aplicar políticas de roteamento.
Escolher caminhos com base em regras administrativas.


Como o BGP funciona?

O BGP funciona por meio de sessões entre roteadores chamados de peers ou vizinhos BGP.

Esses roteadores trocam informações sobre redes alcançáveis e caminhos até essas redes.

Fluxo básico:

Dois roteadores BGP formam uma sessão TCP.
Eles trocam informações de rotas.
Cada rota pode conter atributos, como AS-PATH, NEXT-HOP e LOCAL_PREF.
O roteador analisa os atributos.
A melhor rota é escolhida conforme regras e políticas configuradas.
A rota é instalada na tabela de roteamento.

Exemplo:

AS 65001 → BGP → AS 65002 → BGP → AS 65003

Características principais do BGP

O BGP possui algumas características importantes:

É usado entre sistemas autônomos.
É o principal protocolo de roteamento entre redes da internet.
É classificado como protocolo path-vector.
Usa TCP.
Usa a porta 179/TCP.
Trabalha com políticas de roteamento.
Permite controle detalhado de entrada e saída de tráfego.
É usado por ISPs, operadoras, datacenters e grandes empresas.
Pode ser usado como eBGP ou iBGP.
É flexível, mas complexo.
Pode sofrer problemas como route leaks e BGP hijacking.


BGP é a mesma coisa que OSPF?

Não.

BGP e OSPF são protocolos de roteamento, mas usados em contextos diferentes.

O OSPF é usado principalmente dentro de uma rede ou organização.

O BGP é usado principalmente entre redes diferentes, como provedores e sistemas autônomos.

Resumo:

ProtocoloTipoUso principal
OSPFIGPRoteamento interno
BGPEGPRoteamento entre sistemas autônomos

BGP é a mesma coisa que RIP?

Não.

O RIP é simples e usado em redes pequenas.

O BGP é muito mais complexo e usado em redes grandes, principalmente na internet.

Resumo:

ProtocoloTipoMétrica principalUso
RIPDistance-vectorSaltosRedes pequenas
OSPFLink-stateCustoRedes internas médias/grandes
BGPPath-vectorPolíticas e atributosInternet e grandes redes

BGP usa TCP ou UDP?

O BGP usa TCP.

A porta padrão é:

179/TCP

O BGP forma uma sessão TCP entre os vizinhos antes de trocar rotas. A documentação técnica do BGP também descreve o protocolo como path-vector e executado sobre TCP na porta 179.


Qual porta o BGP usa?

O BGP usa a porta:

179/TCP

Normalmente, essa porta precisa estar liberada entre os roteadores que formarão vizinhança BGP.

Exemplo de teste:

nc -vz ip_do_vizinho 179

O que é sistema autônomo no BGP?

Sistema autônomo, ou AS, é uma rede ou conjunto de redes administrado por uma mesma entidade.

Exemplos:

Um provedor de internet.
Uma grande empresa.
Um datacenter.
Uma operadora.
Uma universidade com rede própria.

Cada sistema autônomo pode ter um número chamado ASN.

Exemplo:

AS 65001

ASes anunciam políticas de roteamento para outros ASes usando BGP, permitindo o roteamento de pacotes entre redes em grande escala.


O que é ASN?

ASN significa Autonomous System Number.

Ele identifica um sistema autônomo na internet ou em uma rede privada.

Exemplo:

AS 64512

Existem ASNs públicos e privados.

ASNs privados são usados em laboratórios, redes internas ou cenários específicos.

Faixa comum de ASNs privados de 16 bits:

64512 a 65534

O que é eBGP?

eBGP significa External BGP.

Ele é usado quando o BGP roda entre roteadores de sistemas autônomos diferentes.

Exemplo:

AS 65001 → eBGP → AS 65002

É o tipo de BGP mais associado à internet.


O que é iBGP?

iBGP significa Internal BGP.

Ele é usado quando o BGP roda entre roteadores dentro do mesmo sistema autônomo.

Exemplo:

AS 65001 → iBGP → AS 65001

O iBGP é comum dentro de provedores, grandes empresas e redes com múltiplos roteadores BGP.


Diferença entre eBGP e iBGP

TipoOnde funcionaExemplo
eBGPEntre AS diferentesProvedor A com Provedor B
iBGPDentro do mesmo ASRoteadores internos de um provedor

O eBGP troca rotas entre redes diferentes.

O iBGP distribui rotas BGP dentro do mesmo sistema autônomo.


O que é peer BGP?

Peer BGP é um roteador vizinho com o qual outro roteador forma uma sessão BGP.

Também pode ser chamado de:

Vizinho BGP.
Neighbor BGP.
Roteador par.

Exemplo:

R1  ← sessão BGP →  R2

Para formar a sessão, os roteadores precisam ter configuração compatível e conectividade TCP na porta 179.


O que é AS-PATH no BGP?

AS-PATH é um atributo BGP que mostra por quais sistemas autônomos uma rota passou.

Exemplo:

AS-PATH: 65001 65002 65003

Ele também ajuda a evitar loops.

Em geral, caminhos com AS-PATH menor podem ser preferidos, dependendo das outras políticas e atributos configurados.


O que é NEXT-HOP no BGP?

NEXT-HOP é o próximo endereço para onde o tráfego deve ser enviado para alcançar uma rota.

Exemplo:

NEXT-HOP: 192.0.2.1

Se o roteador não souber alcançar o NEXT-HOP, a rota BGP pode não ser instalada na tabela de roteamento.


O que é LOCAL_PREF no BGP?

LOCAL_PREF significa Local Preference.

Ele é usado dentro de um AS para escolher a melhor saída para o tráfego.

Quanto maior o LOCAL_PREF, maior a preferência.

Exemplo:

LOCAL_PREF 200

Uma rota com LOCAL_PREF 200 costuma ser preferida em relação a uma rota com LOCAL_PREF 100, se as demais condições permitirem.


O que é MED no BGP?

MED significa Multi-Exit Discriminator.

Ele é usado para sugerir a outro AS qual caminho deve ser preferido para entrar na sua rede.

Em geral, menor MED é preferido.

Exemplo:

MED 50

Mas o comportamento pode depender da política do roteador e do provedor.


O que é prefixo no BGP?

Prefixo é uma rede anunciada via BGP.

Exemplo IPv4:

203.0.113.0/24

Exemplo IPv6:

2001:db8::/32

Quando uma rede anuncia um prefixo via BGP, está dizendo aos outros roteadores que sabe alcançar aquela rede.


O que é anúncio BGP?

Anúncio BGP é quando um roteador informa a outro que consegue alcançar determinado prefixo.

Exemplo:

AS 65001 anuncia 203.0.113.0/24

O vizinho pode aceitar, rejeitar ou modificar esse anúncio com base em políticas.


O que é política de roteamento no BGP?

Política de roteamento é o conjunto de regras que controla quais rotas serão aceitas, anunciadas ou preferidas.

Exemplos:

Aceitar apenas prefixos autorizados.
Bloquear rotas inválidas.
Preferir um link de internet.
Usar outro link como backup.
Alterar LOCAL_PREF.
Filtrar prefixos pequenos demais.
Controlar anúncios para provedores diferentes.

O BGP é muito poderoso porque permite tomar decisões de roteamento com base em política, não apenas em caminho mais curto.


Como o BGP escolhe a melhor rota?

O BGP usa vários critérios para escolher a melhor rota.

A ordem exata pode variar conforme o fabricante, mas critérios comuns incluem:

Maior LOCAL_PREF.
Menor AS-PATH.
Menor origem, dependendo do tipo.
Menor MED.
Preferência por eBGP sobre iBGP.
Menor custo até o NEXT-HOP.
Menor Router ID, em alguns casos.

Importante: BGP não escolhe necessariamente o caminho mais rápido. Ele escolhe a melhor rota conforme atributos e políticas.


BGP escolhe sempre o caminho mais curto?

Não.

O BGP não funciona como “menor distância física” ou “menor latência”.

Ele escolhe rotas com base em atributos, políticas e caminhos entre ASes.

Por isso, às vezes um caminho BGP pode parecer mais longo, mas foi escolhido por política de operadora, custo comercial, preferência de link ou controle administrativo.


O que é BGP hijacking?

BGP hijacking é quando uma rede anuncia indevidamente prefixos que não pertencem a ela.

Isso pode fazer o tráfego ser desviado para o lugar errado.

Pode acontecer por erro de configuração ou por ataque malicioso.

Exemplo:

AS errado anuncia prefixo de outra empresa

Consequências possíveis:

Indisponibilidade.
Desvio de tráfego.
Intercepção de dados.
Perda de conectividade.
Problemas de reputação.

A MANRS descreve route hijacking como quando um atacante ou operador anuncia prefixos de outra rede como se fossem seus, podendo distorcer o “mapa” da internet e redirecionar tráfego.


O que é route leak no BGP?

Route leak ocorre quando uma rede anuncia rotas que não deveria anunciar.

Exemplo:

Um cliente recebe rotas de um provedor e acidentalmente anuncia essas rotas para outro provedor.

Isso pode causar:

Rotas incorretas.
Aumento de latência.
Perda de pacotes.
Indisponibilidade.
Desvio de tráfego.


O que é RPKI no BGP?

RPKI significa Resource Public Key Infrastructure.

Ele é usado para ajudar a validar se um AS está autorizado a anunciar determinado prefixo.

Com RPKI, é possível criar registros chamados ROAs, que indicam qual AS pode anunciar determinado bloco IP.

Resumo:

Prefixo X pode ser anunciado pelo AS Y

O RPKI ajuda a reduzir riscos de anúncios incorretos, route leaks e hijacking. Iniciativas como MANRS promovem práticas como RPKI e validação de origem para melhorar a segurança do roteamento global.


O que é ROA?

ROA significa Route Origin Authorization.

É um registro usado no RPKI para informar qual AS está autorizado a originar um prefixo.

Exemplo:

203.0.113.0/24 autorizado para AS65001

Se outro AS tentar anunciar esse prefixo, a rota pode ser considerada inválida por redes que fazem validação RPKI.


BGP é seguro?

O BGP original foi criado com base em confiança entre redes.

Por isso, ele não valida sozinho se todos os anúncios são legítimos.

Sem filtros e validações, podem ocorrer problemas como:

BGP hijacking.
Route leaks.
Anúncios incorretos.
Desvio de tráfego.
Instabilidade de rotas.

Por isso, redes profissionais usam filtros, RPKI, monitoramento e boas práticas de roteamento.


BGP usa TLS ou SSL?

Não.

O BGP tradicional não usa TLS ou SSL.

Ele usa TCP na porta 179.

A segurança normalmente é feita com outras medidas, como:

Filtros de prefixo.
Autenticação TCP MD5 ou TCP-AO, quando disponível.
TTL security.
RPKI.
ACLs.
Sessões protegidas.
Monitoramento de rotas.


Como configurar BGP em roteador Cisco?

Exemplo simples com ASN privado:

conf t
router bgp 65001
neighbor 192.0.2.2 remote-as 65002
network 203.0.113.0 mask 255.255.255.0
end

Explicação:

router bgp 65001 ativa o BGP no AS 65001.
neighbor 192.0.2.2 remote-as 65002 configura o vizinho BGP.
network anuncia o prefixo, se ele existir na tabela de roteamento.


Como verificar vizinhos BGP em Cisco?

Verificar resumo:

show ip bgp summary

Ver rotas BGP:

show ip bgp

Ver detalhes de um vizinho:

show ip bgp neighbors

Ver tabela de roteamento BGP:

show ip route bgp

Como configurar BGP no Linux com FRRouting?

Instalar FRRouting:

sudo apt update
sudo apt install frr

Habilitar BGP:

sudo nano /etc/frr/daemons

Ajustar:

bgpd=yes

Reiniciar FRR:

sudo systemctl restart frr

Entrar no terminal:

sudo vtysh

Configurar BGP:

configure terminal
router bgp 65001
 neighbor 192.0.2.2 remote-as 65002
 network 203.0.113.0/24
end
write memory

Como testar se o BGP está funcionando?

Testar porta TCP 179:

nc -vz ip_do_vizinho 179

Verificar vizinhança em Cisco:

show ip bgp summary

Verificar rotas:

show ip bgp

Verificar tabela de roteamento:

show ip route bgp

No FRRouting:

sudo vtysh

Depois:

show bgp summary
show bgp ipv4 unicast
show ip route bgp

Erros comuns no BGP

Vizinhança BGP não sobe

Erro comum:

show ip bgp summary

mostra o vizinho em estado Idle ou Active.

Possíveis causas:

IP do vizinho incorreto.
remote-as errado.
Porta 179 bloqueada.
Sem rota até o vizinho.
Firewall bloqueando TCP 179.
Configuração de update-source ausente.
TTL insuficiente em eBGP multihop.

Verificações:

ping ip_do_vizinho
nc -vz ip_do_vizinho 179
show ip bgp summary
show running-config | section bgp

Estado Idle

Possíveis causas:

BGP não conseguiu iniciar sessão.
Vizinho inacessível.
Configuração incorreta.
Interface down.
Rota até o vizinho inexistente.

Verificar:

show ip bgp summary
show ip route ip_do_vizinho
ping ip_do_vizinho

Estado Active

No BGP, “Active” não significa necessariamente funcionando.

Geralmente significa que o roteador está tentando formar sessão, mas ainda não conseguiu.

Possíveis causas:

Porta TCP 179 bloqueada.
Vizinho não configurado do outro lado.
ASN remoto incorreto.
IP de origem incorreto.
Firewall ou ACL bloqueando.

Testar porta:

nc -vz ip_do_vizinho 179

Bad peer AS

Erro relacionado a AS incorreto.

Possíveis causas:

O ASN configurado em remote-as está errado.
O vizinho está usando outro ASN.
Configuração de eBGP/iBGP incorreta.

Exemplo de correção:

conf t
router bgp 65001
no neighbor 192.0.2.2 remote-as 65003
neighbor 192.0.2.2 remote-as 65002
end

Rotas BGP aparecem, mas não entram na tabela de roteamento

Possíveis causas:

NEXT-HOP inacessível.
Rota com preferência menor que outra rota.
Política bloqueando instalação.
Prefixo não válido.
Rota não é a melhor BGP.

Verificar:

show ip bgp
show ip route
show ip route ip_do_next_hop

Prefixo não é anunciado

Possíveis causas:

O prefixo não existe na tabela de roteamento.
Comando network incorreto.
Máscara diferente.
Filtro de saída bloqueando.
Route-map impedindo anúncio.

Verificar:

show ip route
show ip bgp
show running-config | section bgp

Route leak

Possíveis causas:

Filtros de saída ausentes.
Cliente anunciando rotas de provedor para outro provedor.
Redistribuição incorreta.
Política BGP mal configurada.

Soluções:

Aplicar filtros de prefixo.
Usar prefix-lists.
Usar route-maps.
Validar anúncios esperados.
Monitorar rotas anunciadas.


BGP hijacking

Possíveis causas:

Anúncio malicioso de prefixos.
Erro de configuração.
Falta de validação RPKI.
Filtros fracos entre peers.

Soluções:

Usar RPKI/ROA.
Aplicar filtros de prefixo.
Monitorar anúncios globais.
Validar origem das rotas.
Participar de boas práticas como MANRS.


Como testar se o BGP está funcionando?

Verificar sessão:

show ip bgp summary

Verificar rotas BGP:

show ip bgp

Verificar rotas instaladas:

show ip route bgp

Testar porta TCP:

nc -vz ip_do_vizinho 179

Testar conectividade com o destino:

ping ip_de_destino

Verificar caminho:

traceroute ip_de_destino

Comandos principais relacionados ao BGP

ComandoFunção
router bgp ASNAtiva o processo BGP
neighbor IP remote-as ASNConfigura vizinho BGP
network prefixo mask mascaraAnuncia rede no BGP em Cisco
show ip bgp summaryMostra resumo dos vizinhos BGP
show ip bgpMostra tabela BGP
show ip bgp neighborsMostra detalhes dos vizinhos
show ip route bgpMostra rotas BGP instaladas
clear ip bgp *Reinicia sessões BGP
show bgp summaryMostra resumo no FRRouting
nc -vz IP 179Testa porta BGP TCP

Exemplo completo de uso

Cenário:

R1 no AS 65001
R2 no AS 65002
Link entre eles: 192.0.2.0/30
R1: 192.0.2.1
R2: 192.0.2.2
Rede anunciada pelo R1: 203.0.113.0/24
Rede anunciada pelo R2: 198.51.100.0/24

Configuração no R1:

conf t
router bgp 65001
neighbor 192.0.2.2 remote-as 65002
network 203.0.113.0 mask 255.255.255.0
end

Configuração no R2:

conf t
router bgp 65002
neighbor 192.0.2.1 remote-as 65001
network 198.51.100.0 mask 255.255.255.0
end

Verificar vizinhança:

show ip bgp summary

Verificar rotas:

show ip bgp

Verificar rotas instaladas:

show ip route bgp

Esse exemplo cria uma sessão eBGP simples entre dois sistemas autônomos e permite a troca de prefixos entre eles.


Boas práticas de segurança

Filtrar prefixos recebidos e anunciados.
Usar prefix-lists e route-maps.
Criar ROAs no RPKI para seus blocos IP.
Validar rotas com RPKI quando possível.
Evitar aceitar qualquer rota sem filtro.
Usar autenticação de sessão quando disponível.
Proteger a porta 179/TCP com ACLs.
Monitorar anúncios BGP públicos.
Evitar route leaks com políticas claras.
Documentar peers, ASNs e prefixos.
Não anunciar prefixos que não pertencem à rede.
Usar limites de prefixos por peer.
Controlar redistribuição de rotas.
Manter roteadores atualizados.