BGP

O que é BGP e como ele funciona no provedor de internet

Nuvens de sistemas autônomos ligadas por arcos de rotas BGP sobre fundo azul-marinho

Todo técnico de provedor chega no mesmo ponto: o ASN saiu, o bloco IP foi alocado, o contrato com a operadora de trânsito está assinado, e agora alguém precisa subir a sessão BGP. Se você está nessa fase, a pergunta certa antes de qualquer comando é o que é BGP de fato e o que ele faz com a sua rede. Sem essa base, a primeira configuração vira cópia de exemplo, e o primeiro erro vira incidente.

Este guia responde o que é BGP do ponto de vista de quem opera provedor e é a porta de entrada para os outros guias de BGP do blog. Ele explica AS e ASN, a diferença entre eBGP e iBGP, os atributos que decidem por onde o tráfego sai, o que são trânsito, peering e IX, e termina com uma primeira sessão comentada em Huawei VRP, que é o que eu uso na borda. Os endereços e ASNs dos exemplos são de documentação, então nada aqui aponta para uma rede real.

O que é BGP, em uma resposta rápida

BGP (Border Gateway Protocol) é o protocolo que as redes da internet usam para contar umas às outras quais blocos de IP cada uma alcança. Cada rede independente é um sistema autônomo (AS), identificado por um número, o ASN. O provedor anuncia os próprios blocos aos vizinhos e recebe deles as rotas para o resto da internet.

  • Roda sobre TCP, na porta 179. Os vizinhos são configurados à mão; o BGP não descobre ninguém sozinho.
  • É um protocolo de vetor de caminho: cada rota carrega a lista de ASNs por onde passou (o AS-path).
  • Não escolhe pelo caminho mais rápido. Escolhe pela política que você configurou e, depois, por critérios como o AS-path mais curto.
  • A versão em uso é o BGP-4, descrito na RFC 4271.

Uma forma simples de ver o que é BGP: o OSPF e o IS-IS cuidam do caminho dentro da sua rede. O BGP cuida da conversa com as outras redes, e nessa conversa vale mais o acordo comercial do que a distância.

AS e ASN: a identidade do provedor na internet

Não dá para explicar o que é BGP sem antes falar de AS. Um sistema autônomo é um conjunto de redes sob uma única administração e com uma política de roteamento própria. Na prática, é o seu provedor visto de fora. O ASN é o número que identifica esse conjunto em todas as tabelas BGP do mundo. Quem tem ASN próprio deixa de depender do bloco de IP de uma operadora e pode ter mais de um fornecedor de trânsito ao mesmo tempo.

No Brasil, ASN e blocos IP são distribuídos pelo Registro.br, que atua como registro nacional dentro da região do LACNIC. O pacote típico de quem está começando é o ASN, um bloco IPv4 pequeno (o /22 é um tamanho comum) e um bloco IPv6 bem maior. Se o IPv6 ainda é novidade para você, leia antes o que é IPv6: a sessão BGP de IPv6 segue a mesma lógica deste guia.

TipoFaixaObservação
ASN de 16 bits1 a 65534O formato original. Ainda é muito usado.
ASN de 32 bitsaté 4294967295O formato atual (RFC 6793). Muitos provedores novos recebem um desses.
ASN privado64512 a 65534 e 4200000000 a 4294967294Uso interno, como um IP privado. Nunca deve aparecer na internet (RFC 6996).
ASN de documentação64496 a 64511 e 65536 a 65551Reservado para exemplos, como os deste guia (RFC 5398).

Um detalhe que confunde no começo: o mesmo ASN aparece em todos os roteadores de borda do provedor. O AS é a organização, não o equipamento. Dois roteadores seus no mesmo AS conversam por iBGP; um roteador seu e um da operadora, por eBGP.

Como o BGP funciona por dentro

Para entender o que é BGP na prática, vale seguir a vida de uma sessão. Os dois roteadores abrem uma conexão TCP, trocam uma mensagem OPEN com o ASN e o router ID de cada lado e, se tudo bate, passam a trocar rotas em mensagens UPDATE. Depois disso só circulam mudanças: uma rota nova, uma rota retirada. A tabela inteira só é enviada de novo quando a sessão cai e volta, ou quando um lado pede um route refresh.

Entender o que é BGP também passa por saber como a sessão vigia o vizinho. Para saber se ele continua vivo, os dois lados mandam KEEPALIVE de tempos em tempos. No Huawei o padrão é 60 segundos de keepalive e 180 de hold time: se passar o hold time sem notícia do vizinho, a sessão cai e todas as rotas aprendidas dele saem da tabela. Quando um lado encontra um erro, ele manda NOTIFICATION e fecha a sessão.

Os estados da sessão

EstadoO que está acontecendo
IdleSessão parada ou esperando para tentar de novo.
Connect / ActiveTentando abrir a conexão TCP na porta 179. Ficar preso em Active costuma ser IP errado, rota faltando ou filtro bloqueando a porta.
OpenSent / OpenConfirmTCP aberto; os dois lados trocam a mensagem OPEN com ASN, router ID e tempos. Um ASN errado derruba a sessão aqui.
EstablishedSessão no ar. Daqui em diante circulam as rotas (UPDATE) e os KEEPALIVE.

Como o BGP evita loops

Cada AS que repassa uma rota acrescenta o próprio número no começo do AS-path. Se um roteador recebe uma rota que já tem o ASN dele no caminho, ele descarta essa rota. É por isso que o BGP não precisa de um cálculo de árvore como o OSPF: o próprio caminho carregado na rota denuncia o loop.

eBGP e iBGP: a mesma língua com regras diferentes

O protocolo é um só, mas o comportamento muda conforme o vizinho está ou não no mesmo AS. Essa diferença explica boa parte dos problemas de quem tem mais de um roteador de borda. Em entrevista de NOC, quem pergunta o que é BGP quase sempre chega nesse ponto.

eBGPiBGP
Entre quemASNs diferentes (você e a operadora, você e o IX)O mesmo ASN (seus roteadores)
Uso típicoTrocar rotas com o mundoEspalhar as rotas externas dentro da sua rede
VizinhoNormalmente diretamente conectadoNormalmente pela loopback, via IGP
AS-pathSeu ASN entra no caminho ao anunciarNão muda
Next-hopPassa a ser o seu roteadorMantido, a menos que você mude
RepasseRepassa para os outros vizinhosRota de iBGP não é repassada a outro vizinho iBGP

A última linha da tabela é a que mais pega. Como o iBGP não repassa rota de um vizinho iBGP para outro, todos os roteadores BGP do AS precisam de sessão com todos (malha completa) ou de um route reflector que faça esse papel. A outra pegadinha é o next-hop: a rota chega no iBGP apontando para o IP da operadora, que o roteador interno não conhece. No Huawei isso se resolve com peer next-hop-local ou anunciando o enlace no IGP.

O iBGP também é a base das VPNs de camada 3 sobre MPLS. Se esse é o seu próximo passo, veja o guia de L3VPN MPLS no Huawei.

Atributos: como o BGP escolhe a melhor rota

Quando o mesmo prefixo chega por mais de um vizinho, o roteador escolhe um só caminho como melhor e só esse vai para a tabela de encaminhamento. A escolha segue uma lista fixa de critérios, avaliados em ordem. Quem entende essa lista entende o que é BGP como ferramenta de engenharia de tráfego.

AtributoOnde valeRegraPara que o provedor usa
local-preferenceDentro do seu ASMaior vence. Padrão 100.Escolher por qual trânsito o tráfego sai.
AS-pathViaja com a rotaMais curto vence.Tornar um caminho menos atraente para quem chega (prepend).
originViaja com a rotaIGP vence EGP, que vence incomplete.Raramente mexido à mão.
MEDEnviado ao vizinhoMenor vence. Por padrão só compara rotas do mesmo AS.Sugerir ao vizinho por qual de dois enlaces com ele entrar.
next-hopViaja com a rotaPrecisa ser alcançável, senão a rota nem concorre.Causa clássica de rota que aparece mas não é usada.
communityViaja com a rota (se você mandar)Não decide nada sozinha.Etiqueta para acionar política no seu AS ou no vizinho.

A ordem de decisão no Huawei, simplificada

  1. Rota com next-hop inalcançável é ignorada.
  2. Maior preferred value (PrefVal), um peso local da Huawei que não sai do roteador. Padrão 0.
  3. Maior local-preference.
  4. Rota originada no próprio roteador (por network ou importação).
  5. AS-path mais curto.
  6. Origin: IGP, depois EGP, depois incomplete.
  7. Menor MED.
  8. Rota de eBGP antes de rota de iBGP.
  9. Menor custo de IGP até o next-hop.
  10. Desempates finais, como o menor router ID.

Uma regra prática ajuda a lembrar: local-preference controla por onde o seu tráfego sai; AS-path prepend, MED e communities tentam influenciar por onde ele entra. Entrar é sempre mais difícil, porque a decisão final é do outro AS.

Próximo passo: communities são o jeito organizado de aplicar essas regras em escala. Mostro um sistema inteiro em BGP communities no Huawei, com o sistema completo de engenharia de tráfego.

Trânsito, peering e IX

Só dá para responder o que é BGP por inteiro olhando os acordos por trás das sessões. Cada sessão do provedor tem um papel comercial, e esse papel define o que você recebe e o que pode anunciar.

TipoComo funcionaO que você recebe
Trânsito IPPago. A operadora entrega rotas para a internet inteira e leva seus blocos para o mundo.Tabela completa (perto de 1 milhão de prefixos IPv4) ou só a rota padrão
Peering bilateralAcordo direto entre dois ASs, em geral sem custo de tráfego.Só as redes do vizinho e dos clientes dele
IX (ponto de troca)Uma porta conecta você a muitos ASs de uma vez, quase sempre por route server.As redes de quem está no IX
Diagrama do AS de um provedor com dois trânsitos IP e uma porta no IX, mostrando o que cada lado anuncia
O provedor anuncia só os próprios blocos. Dos trânsitos recebe a internet inteira; do IX, só as redes de quem está lá.

O desenho acima é o de muitos provedores regionais: dois trânsitos para ter redundância e uma porta no IX.br para trocar tráfego direto com conteúdo e outros provedores. No IX, a sessão com o route server entrega de uma vez as rotas de centenas de participantes, e o tráfego que sai por ali deixa de pagar trânsito.

A regra de ouro vale para os três casos: para trânsito, peering e IX você anuncia só os seus blocos e os dos seus clientes de trânsito, se tiver. Rota recebida de um trânsito nunca vai para o outro. Quando isso acontece, seu AS vira caminho entre duas operadoras grandes, o famoso vazamento de rotas.

Esse desenho tem uma armadilha. Com cada trânsito numa borda diferente, ele só é redundante de verdade se a Borda 1 souber sair pela Borda 2 e se a internet já conhecer o seu bloco pelo trânsito B no dia em que o A cair. Mostro o que precisa estar configurado mais abaixo, depois da primeira sessão, na seção sobre dois trânsitos em bordas diferentes.

Primeira sessão BGP no Huawei VRP

Saber o que é BGP ajuda pouco se a primeira configuração sai errada. O exemplo usa o AS 64500 com o bloco 203.0.113.0/24 no lugar do seu /22, e uma sessão de eBGP com o trânsito A (AS 64496, IP 198.51.100.1). A ordem importa: primeiro os filtros, depois a rota do bloco, por último a sessão. Se a CLI da Huawei ainda é nova para você, a lista de comandos para roteadores e switches Huawei ajuda com a navegação.

Passo 1: filtros de entrada e de saída

ip ip-prefix MEUS-BLOCOS index 10 permit 203.0.113.0 24
ip ip-prefix MEUS-QUALQUER index 10 permit 203.0.113.0 24 less-equal 32
route-policy SAIDA-TRANSITO permit node 10
 if-match ip-prefix MEUS-BLOCOS
 quit
route-policy SAIDA-TRANSITO deny node 100
 quit
route-policy ENTRADA-TRANSITO deny node 10
 if-match ip-prefix MEUS-QUALQUER
 quit
route-policy ENTRADA-TRANSITO permit node 100
 quit
commit

MEUS-BLOCOS casa exatamente o seu prefixo. MEUS-QUALQUER casa o prefixo e qualquer pedaço dele, até /32. A política SAIDA-TRANSITO deixa sair só o seu bloco e nega todo o resto no nó 100. A ENTRADA-TRANSITO recusa rotas para o seu próprio espaço vindas de fora e aceita o restante. No Huawei, uma rota que não casa com nenhum nó da route-policy é recusada; o nó 100 explícito deixa isso visível para quem ler a configuração depois.

Passo 2: a rota do bloco para o NULL0

ip route-static 203.0.113.0 255.255.255.0 NULL0
commit

O comando network do Huawei só anuncia um prefixo que existe na tabela de rotas com a mesma máscara. Os seus /24 ou /22 normalmente estão picados em sub-redes menores para clientes e servidores, então o agregado não existe. A estática para o NULL0 cria esse agregado. O tráfego para os pedaços em uso segue pelas rotas mais específicas; o que sobra, para um endereço sem dono, é descartado.

Passo 3: a sessão

bgp 64500
 router-id 203.0.113.1
 peer 198.51.100.1 as-number 64496
 peer 198.51.100.1 description TRANSITO-A
 ipv4-family unicast
  network 203.0.113.0 255.255.255.0
  peer 198.51.100.1 enable
  peer 198.51.100.1 route-policy ENTRADA-TRANSITO import
  peer 198.51.100.1 route-policy SAIDA-TRANSITO export
  quit
 quit
commit

Linha a linha: bgp 64500 abre o processo com o seu ASN. O router-id fixo evita que o roteador escolha um IP de interface que pode mudar. O peer ... as-number cria o vizinho e diz qual ASN você espera dele; se não bater com o que vem na mensagem OPEN, a sessão não sobe. A description é para quem ler a configuração às três da manhã.

Dentro de ipv4-family unicast, o network origina o seu bloco, o peer ... enable ativa a troca de rotas IPv4 com o vizinho e as duas route-policy aplicam os filtros do passo 1 na entrada (import) e na saída (export). Nos equipamentos que trabalham com confirmação em dois passos, nada vale antes do commit; em VRP sem esse modo, a linha passa a valer quando você aperta Enter.

Passo 4: conferir

display bgp peer
display bgp routing-table 203.0.113.0 24
display bgp routing-table peer 198.51.100.1 advertised-routes

O primeiro mostra o estado de cada vizinho. A saída esperada, com valores de exemplo, é parecida com esta:

 BGP local router ID : 203.0.113.1
 Local AS number : 64500
 Total number of peers : 1    Peers in established state : 1

  Peer          V    AS  MsgRcvd  MsgSent OutQ  Up/Down   State  PrefRcv
  198.51.100.1  4 64496   384217       38    0 00:31:12 Established 1012448

A coluna State precisa estar em Established e PrefRcv mostra quantos prefixos o vizinho mandou. O segundo comando confirma que o seu bloco está na tabela BGP como rota local. O terceiro é o mais importante no primeiro dia: ele lista o que você está anunciando para o trânsito. Ali só pode aparecer o seu bloco. Para quem ainda está fixando o que é BGP, esse é o teste que separa uma sessão saudável de um vazamento.

Dois trânsitos em bordas diferentes: o que acontece quando um cai

Este é o desenho do diagrama de trânsito, peering e IX: o trânsito A chega na Borda 1, o B na Borda 2, e um iBGP liga as duas. Parece redundância completa. Na prática, muitos provedores só descobrem que não é no dia em que a fibra do trânsito A rompe e os blocos param de navegar, mesmo com o trânsito B no ar.

Para entender o que falha, separe os dois sentidos do tráfego. A saída (o upload e as requisições dos clientes) é decidida por você, na tabela de rotas das bordas, no iBGP e no IGP. A entrada (o download, a resposta que volta) é decidida pelas outras redes, e elas só usam o trânsito B se o seu bloco já estiver anunciado lá. O failover precisa funcionar nos dois.

Diagrama do failover com dois trânsitos em bordas diferentes: o trânsito A caiu e o tráfego de entrada e de saída passa pela Borda 2 e pelo trânsito B
Depois que o BGP converge, upload e download passam pela Borda 2. A Borda 1 só segue útil porque aprende pelo iBGP as rotas de B.

Os cinco motivos que derrubam o failover

ProblemaO que acontece quando A caiCorreção
Só a Borda 1 origina o blocoO bloco some da internet: nada mais chega até você.NULL0 e network também na Borda 2
Rota de B chega na Borda 1 com next-hop 198.51.100.5A Borda 1 não alcança esse IP, a rota fica inválida e a Borda 1 não usa nada do que vem de B.peer ... next-hop-local no iBGP
iBGP no IP do cabo entre as bordas, sem IGPCai o cabo, cai o iBGP, e cada borda fica sozinha.iBGP entre loopbacks, com OSPF ou IS-IS
BNG ou CGNAT com rota padrão estática para a Borda 1O upload dos clientes continua indo para a borda sem trânsito.Rota padrão no OSPF, gerada só por borda que tem saída
Sessão eBGP sem BFDSe o enlace continua up, a sessão só cai depois do hold time: até 3 minutos.BFD na sessão com cada trânsito

O quinto ponto engana muita gente. No Huawei, o keepalive padrão é de 60 segundos e o hold time, de 180. Quando o trânsito chega por um transporte em camada 2, a porta da borda continua up mesmo com o outro lado morto, e a sessão BGP fica três minutos achando que está tudo bem. Nesse tempo, o tráfego que sai pela Borda 1 vai para um buraco negro.

Passo 1: loopback e IGP nas duas bordas

interface LoopBack0
 ip address 203.0.113.1 255.255.255.255
 quit
ospf 1 router-id 203.0.113.1
 area 0.0.0.0
  network 203.0.113.1 0.0.0.0
  network 192.0.2.0 0.0.0.3
  quit
 quit
commit

Esse é o bloco da Borda 1; na Borda 2, troque o IP da loopback por 203.0.113.2. A loopback não cai enquanto o roteador estiver ligado, e o OSPF leva o endereço dela pelos caminhos que existirem entre as bordas. Se houver um segundo caminho, pelo switch do núcleo ou pelo BNG, coloque esse enlace no OSPF também: é ele que mantém o iBGP de pé quando o cabo direto cai.

Passo 2: iBGP entre as loopbacks, na Borda 1

bgp 64500
 peer 203.0.113.2 as-number 64500
 peer 203.0.113.2 description BORDA-2
 peer 203.0.113.2 connect-interface LoopBack0
 ipv4-family unicast
  preference 100 200 200
  peer 203.0.113.2 enable
  peer 203.0.113.2 next-hop-local
  quit
 quit
commit

O connect-interface LoopBack0 faz a sessão sair e chegar pelas loopbacks. O next-hop-local resolve o problema mais comum desse desenho: sem ele, a rota que a Borda 2 aprendeu do trânsito B chega na Borda 1 com o next-hop 198.51.100.5, o IP do enlace de B, que a Borda 1 não alcança. Com ele, o next-hop passa a ser a loopback da Borda 2, que o OSPF conhece. Se a /32 da outra borda sumir do OSPF, o next-hop passa a resolver pela estática do bloco para o NULL0; por isso, use loopbacks de uma faixa de infraestrutura separada ou ligue BFD também no iBGP.

O preference 100 200 200 é uma pegadinha do Huawei. Por padrão, toda rota BGP tem preferência 255, pior que a rota externa do OSPF (150). Sem esse ajuste, uma rota padrão aprendida pelo OSPF da outra borda ganha da sessão eBGP com o seu próprio trânsito. Com 100 para eBGP e 200 para iBGP e rotas locais, a rota do seu trânsito vem primeiro, o OSPF externo em segundo e o iBGP por último. Não desça o eBGP para 20, como no Cisco: no Huawei a estática vale 60, e uma rota do trânsito passaria por cima da estática de um cliente com bloco próprio.

Repare também por que o filtro de saída da primeira sessão é obrigatório aqui. A Borda 2 aprende pelo iBGP a tabela inteira do trânsito A e, sem a SAIDA-TRANSITO, anunciaria tudo isso para o trânsito B. É exatamente o vazamento de rotas da regra de ouro.

Passo 3: a Borda 2 completa

ip route-static 203.0.113.0 255.255.255.0 NULL0
bgp 64500
 router-id 203.0.113.2
 peer 198.51.100.5 as-number 64497
 peer 198.51.100.5 description TRANSITO-B
 peer 203.0.113.1 as-number 64500
 peer 203.0.113.1 description BORDA-1
 peer 203.0.113.1 connect-interface LoopBack0
 ipv4-family unicast
  preference 100 200 200
  network 203.0.113.0 255.255.255.0
  peer 198.51.100.5 enable
  peer 198.51.100.5 route-policy ENTRADA-TRANSITO import
  peer 198.51.100.5 route-policy SAIDA-TRANSITO export
  peer 203.0.113.1 enable
  peer 203.0.113.1 next-hop-local
  quit
 quit
commit

Antes desse bloco, crie na Borda 2 os mesmos filtros do passo 1 da primeira sessão, com os mesmos nomes. O ponto central é que a Borda 2 também origina o bloco, com a própria estática para o NULL0 e o próprio network. Assim o trânsito B recebe o seu prefixo o tempo todo, e não só quando o A cai. A internet já conhece os dois caminhos e só precisa descartar um deles.

Cuidado com a borda isolada. Se a Borda 2 perder todos os caminhos para dentro da rede e mantiver a sessão com B, ela continua anunciando o bloco, e o que chegar por B morre no NULL0. Por isso o segundo caminho entre as bordas e o núcleo vale tanto quanto o segundo trânsito.

Passo 4: BFD nas sessões com os trânsitos

bfd
 quit
bgp 64500
 peer 198.51.100.1 bfd enable
 quit
commit

O bfd sozinho liga o recurso no equipamento; o peer ... bfd enable amarra o BFD à sessão com o trânsito A. Na Borda 2, repita com o peer 198.51.100.5. O intervalo padrão muda conforme o modelo: 10 ms nos NE e CE, 1 segundo nos AR e S. Para fixar, acrescente peer 198.51.100.1 bfd min-tx-interval 300 min-rx-interval 300 detect-multiplier 3, que detecta a queda em menos de um segundo.

O BFD precisa estar ligado dos dois lados, então combine com a operadora. Se ela não oferecer, encurte os temporizadores com peer 198.51.100.1 timer keepalive 10 hold 30. O hold time negociado é o menor dos dois lados, então vale só do seu lado, mas a mudança derruba a sessão: faça na janela de manutenção e avise a operadora.

Passo 5: rota padrão no OSPF para o BNG

ospf 1
 default-route-advertise cost 10 type 1
 quit
commit

Esse é o bloco da Borda 1; na Borda 2, use cost 20. Sem a palavra always, a borda só gera a rota padrão no OSPF enquanto tiver uma rota padrão ativa vinda de outro protocolo, aqui a do trânsito. Peça às operadoras a tabela completa mais a rota padrão, ou só a rota padrão. No BNG ou no CGNAT, troque a estática por OSPF: ele aprende as duas rotas padrão e usa a de menor custo. O BGP decide nas bordas, mas o BNG precisa de um protocolo interno para saber qual borda está viva.

Quando o trânsito A cai, a melhor rota padrão da Borda 1 passa a ser a do OSPF, vinda da Borda 2. Como ela não gera de novo uma rota que aprendeu do próprio OSPF, para de anunciá-la, e o BNG fica só com a da Borda 2. O upload troca de caminho sem ninguém mexer em nada.

Escolher o trânsito principal (opcional)

Sem política nenhuma, cada borda escolhe rota a rota: vence o AS-path mais curto e, só no empate, a rota de eBGP ganha da de iBGP. Com tabela completa, parte do tráfego da Borda 1 já sai pela Borda 2. Para usar o A como principal e o B como reserva na saída, suba a local-preference de tudo o que vem do A. Esse bloco vai na Borda 1:

route-policy ENTRADA-TRANSITO-A deny node 10
 if-match ip-prefix MEUS-QUALQUER
 quit
route-policy ENTRADA-TRANSITO-A permit node 100
 apply local-preference 200
 quit
bgp 64500
 ipv4-family unicast
  peer 198.51.100.1 route-policy ENTRADA-TRANSITO-A import
  quit
 quit
commit

A local-preference vale para o AS inteiro: a Borda 2 passa a preferir as rotas do A, aprendidas pelo iBGP, e manda o tráfego pela Borda 1. Na entrada, o recurso mais simples é deixar o caminho por B mais longo com AS-path prepend. Esse bloco vai na Borda 2:

route-policy SAIDA-TRANSITO-B permit node 10
 if-match ip-prefix MEUS-BLOCOS
 apply as-path 64500 64500 additive
 quit
route-policy SAIDA-TRANSITO-B deny node 100
 quit
bgp 64500
 ipv4-family unicast
  peer 198.51.100.5 route-policy SAIDA-TRANSITO-B export
  quit
 quit
commit

Quando o A cai, o caminho com prepend vira o único e a internet passa a usá-lo. O prepend não é garantia: muitas redes preferem rotas de cliente por local-preference e ignoram o tamanho do AS-path. Para controle fino, use as communities das operadoras, como mostro em BGP communities no Huawei, com o sistema completo de engenharia de tráfego.

Com o /22 real: agregado nos dois trânsitos

Aqui entra o planejamento de endereços. No exemplo, o /24 não dá para dividir, porque prefixo mais específico que /24 é filtrado na internet. Com o seu /22, a prática comum é anunciar o /22 nos dois trânsitos e um /23 em cada um para dividir a entrada. Quando o A cai, o /23 dele some e o /22 que está no B cobre. Cada prefixo precisa da própria estática para o NULL0, do registro no IRR e de um ROA que cubra o tamanho anunciado.

O erro clássico é anunciar cada pedaço num trânsito só e o agregado em nenhum. Quando o A cai, os pedaços que estavam nele somem da internet, e são justamente esses blocos que param de navegar.

Teste de failover na janela de manutenção

Redundância que nunca foi testada é só uma hipótese. Numa janela combinada, derrube a sessão com o trânsito A na Borda 1 e confira para onde a rota padrão foi:

bgp 64500
 peer 198.51.100.1 ignore
 quit
commit
display bgp routing-table 0.0.0.0 0
display ip routing-table 0.0.0.0 0

O peer ... ignore derruba a sessão sem apagar a configuração. A saída esperada, com valores de exemplo, mostra a rota padrão vindo do OSPF, com next-hop na Borda 2:

Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------
Routing Table : _public_
Summary Count : 1
Destination/Mask  Proto  Pre  Cost  Flags NextHop       Interface
      0.0.0.0/0   O_ASE  150  21      D   192.0.2.2     GE0/0/1

Na Borda 2, confira as sessões, o que está saindo para o trânsito B (só o seu bloco) e se a rota padrão da Borda 1 sumiu da base do OSPF:

display bgp peer
display bgp routing-table peer 198.51.100.5 advertised-routes
display ospf lsdb ase

Por fora, confirme num looking glass de uma operadora grande ou no bgp.tools que o caminho para o seu bloco agora passa pelo AS 64497, e faça um traceroute a partir de um cliente. Terminado o teste, volte a sessão:

bgp 64500
 undo peer 198.51.100.1 ignore
 quit
commit

Com a tabela completa, a volta leva alguns minutos até o trânsito A mandar todas as rotas de novo. Teste também a falha que o BFD não pega: a sessão no ar e o trânsito sem tráfego por um problema dentro da operadora. Esse caso só aparece no monitoramento, e a saída é o mesmo peer ... ignore, feito à mão.

Erros comuns de quem acabou de aprender o que é BGP

  • Subir a sessão sem filtro de saída. Sem export, o roteador pode repassar ao trânsito B tudo o que aprendeu do trânsito A. É o caminho mais curto para um vazamento de rotas.
  • Anunciar com network e esquecer a rota do agregado. O comando entra sem erro, mas nada é anunciado. Confira com advertised-routes.
  • Sessão parada em Active. Quase sempre é o básico: IP do vizinho digitado errado, interface sem o IP do enlace ou um filtro bloqueando o TCP 179.
  • ASN trocado no as-number. A conexão TCP abre, a sessão cai logo depois e o log mostra erro de OPEN. Confira o ASN que a operadora informou.
  • Achar que dois trânsitos em bordas diferentes já são redundância. Sem o bloco anunciado nas duas bordas, iBGP em loopback com next-hop-local e rota padrão condicional no IGP, a queda de um trânsito derruba os blocos do provedor.
  • Não cadastrar o bloco onde as operadoras conferem. Muitas operadoras filtram o que aceitam pelos registros de roteamento (IRR) e pelo RPKI. Prefixo sem registro pode simplesmente não ser aceito.

Perguntas frequentes

O que é BGP e para que ele serve?

É o protocolo que as redes usam para trocar rotas entre si na internet. Ele permite que o provedor anuncie os próprios blocos de IP e receba das operadoras as rotas para o resto do mundo, aplicando a política que ele definir.

Preciso de ASN próprio para usar BGP?

Para ter mais de um trânsito e anunciar seus blocos para o mundo, sim. Dentro da própria rede dá para usar ASN privado, mas ele nunca deve ser anunciado para a internet.

Qual a diferença entre eBGP e iBGP?

O eBGP liga ASs diferentes, como o seu e o da operadora. O iBGP liga roteadores do mesmo AS e espalha as rotas externas dentro da rede. As regras de AS-path, next-hop e repasse mudam entre os dois.

Por que o BGP não escolhe o caminho mais rápido?

Porque ele não mede velocidade nem latência. A escolha segue os atributos em ordem, a começar pela política local. Se você quer que um caminho seja o preferido, precisa dizer isso com local-preference ou outro atributo.

Posso receber só a rota padrão em vez da tabela completa?

Pode, e para roteadores com pouca memória costuma ser a melhor escolha. Muita gente que ainda está entendendo o que é BGP começa assim. Com dois trânsitos e só a rota padrão de cada um, você perde a escolha fina de caminho, mas mantém a redundância.

Tenho dois trânsitos em roteadores diferentes. O que garante o failover?

Cinco coisas: as duas bordas originam o bloco, o iBGP entre elas usa as loopbacks com next-hop-local, o IGP leva essas loopbacks, cada borda gera a rota padrão no OSPF só quando tem saída, e o BFD derruba rápido a sessão com o trânsito que caiu. Nenhuma delas é avançada; o problema é esquecer uma. Depois, teste numa janela de manutenção.

Quanto tempo leva para a sessão BGP subir?

Com tudo certo, a sessão fica Established em poucos segundos. Receber a tabela completa leva mais, de alguns segundos a poucos minutos, conforme o equipamento. Se passar disso parado em Active, revise IP, ASN e filtros.

Conclusão

Entender o que é BGP é entender que ele é um protocolo de política: você decide o que anuncia, o que aceita e por onde prefere sair, e o protocolo leva essas decisões para as outras redes. AS e ASN são a sua identidade, eBGP e iBGP são as duas formas de conversa, e os atributos são as alavancas. A primeira sessão é curta; o que dá trabalho, e evita incidente, são os filtros.

Com a sessão no ar e os filtros conferidos, o passo seguinte é organizar a engenharia de tráfego. O guia de BGP communities no Huawei, com o sistema completo de engenharia de tráfego parte exatamente daqui, já supondo que você sabe o que é BGP e tem uma sessão estável.

Leitura recomendada: Fundamentos do BGP, na wiki do Brasil Peering Forum (CC BY-NC 4.0).

Compartilhar:

Sobre o autor

Ivan Alves

Especialista em redes de provedores (ISP)

Ivan Alves trabalha há mais de 15 anos com redes de provedores de internet, do NOC ao backbone e à borda BGP. Coordena infraestrutura e tecnologia em um provedor regional e escreve aqui os tutoriais que gostaria de ter encontrado quando começou: comandos testados, cenário explicado e o porquê de cada linha.

6 Comentários

  1. RTBH: blackhole via BGP para conter ataque DDoS no provedor – IA Tecnologia Responder

    […] O preço é claro: o IP atacado fica fora do ar enquanto o bloqueio durar. Em troca, o resto do bloco continua navegando. Este guia explica quando vale usar RTBH, como funcionam as communities de blackhole, a configuração completa no Huawei VRP e os cuidados para não vazar um /32 nem esquecer um bloqueio ativo por semanas. Os exemplos usam endereços e ASNs de documentação. Se sessão eBGP, AS-path e prefixo ainda são novidade, leia antes o guia o que é BGP e como ele funciona. […]

  2. RPKI: como criar ROA no Registro.br para proteger seu ASN – IA Tecnologia Responder

    […] Quem recebe o primeiro ASN e o primeiro bloco do Registro.br costuma deixar o RPKI para depois. A sessão BGP sobe, o prefixo aparece na internet e tudo parece resolvido. O problema é que, sem uma ROA publicada, nada impede que outro AS anuncie o seu bloco e leve parte do tráfego dos seus clientes. E muitos trânsitos e IXs descartam rotas inválidas, então a ROA errada também derruba o seu próprio anúncio. Se a sessão BGP ainda é novidade, veja antes o que é BGP e como ele funciona no provedor. […]

  3. BGP no Mikrotik RouterOS v7: connection, templates e filtros – IA Tecnologia Responder

    […] Este guia monta uma borda com dois trânsitos do zero, na sintaxe atual. O AS 64500 anuncia 203.0.113.0/24, o trânsito A (AS 64501) é o preferido e o trânsito B (AS 64502) fica de reserva. Todos os endereços e ASNs são de documentação, e os comandos foram conferidos na documentação oficial da MikroTik. Se o conceito de AS, eBGP e atributos ainda é novo para você, comece por o que é BGP e como ele funciona. […]

  4. IX.br: como conectar seu provedor ao ponto de troca de tráfego – IA Tecnologia Responder

    […] O peering não substitui o trânsito: pelo IX você alcança só as redes dos participantes. Para revisar a base, veja o que é BGP e como ele funciona. […]

  5. AS-override e allowas-in no BGP: diferença e quando usar – IA Tecnologia Responder

    […] sistemas autônomos sem precisar de nenhum outro mecanismo. Se isso ainda é novo, o guia sobre o que é BGP e como ele funciona explica a […]

  6. OSPF no provedor: boas práticas de áreas, custo e loopback – IA Tecnologia Responder

    […] iBGP e, mais tarde, os LSPs do MPLS. Se você precisa revisar o papel de cada protocolo, veja como o BGP funciona e o que é MPLS. O OSPF no provedor não precisa saber onde está o cliente; precisa saber onde […]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *