Passo a passo · BGP multihoming
Como fazer BGP com dois links: passo a passo para provedores
Como fazer BGP com dois links: com ASN e blocos próprios, abre-se uma sessão BGP com cada operadora e anunciam-se os mesmos blocos pelas duas. Depois, define-se qual link leva o quê em dia normal e testa-se, desligando cada um, se o outro assume sozinho.
Resumo
- Sem ASN e blocos próprios não há BGP com dois links de verdade, só troca de endereço quando um link cai.
- Os mesmos blocos saem pelas duas operadoras, cada um com filtro de saída que deixa passar só o que é seu.
- O que você recebe de cada operadora, rota padrão ou tabela completa, define quanto dá para dividir a saída.
- O teste de queda com tráfego real, link por link, é o que prova que a redundância existe.
Como fazer BGP com dois links: o que precisa existir antes
Precisa existir um ASN, blocos de endereços em nome do provedor, registros de rota publicados e um contrato de trânsito com sessão BGP em cada operadora. Faltando um desses itens, a configuração trava antes de começar.
Com IPs emprestados de cada operadora, dois links funcionam como duas internets separadas: quando uma cai, o assinante precisa mudar de endereço, e as conexões abertas morrem. O BGP com dois links resolve isso porque os seus blocos passam a ser alcançáveis pelos dois caminhos ao mesmo tempo, e a internet escolhe o que estiver de pé.
Esse desenho é o que a configuração de BGP multihoming entrega, com a troca medida em teste. Antes da primeira linha de configuração, cada operadora vai pedir um conjunto de informações e de registros.
| Item | Para que serve | Onde se resolve |
|---|---|---|
| ASN próprio | Identifica a sua rede no anúncio | Registro.br, pelo pedido de ASN |
| Blocos IPv4 e IPv6 | São os prefixos que as duas operadoras vão anunciar | Registro.br ou LACNIC |
| Objeto de rota no IRR | Permite à operadora gerar o filtro que aceita os seus blocos | Base de roteamento usada pela operadora |
| ROA no RPKI | Evita que o anúncio seja descartado como inválido | Sistema de RPKI do Registro.br |
| Carta de autorização | Algumas operadoras pedem documento assinado para anunciar os blocos | Modelo da própria operadora |
Os registros de rota e os ROAs costumam ser o ponto em que o cronograma escorrega, porque cada operadora atualiza o filtro no seu próprio ritmo. O guia de criação de ROAs mostra como deixar o RPKI pronto antes de abrir os pedidos.
O que receber de cada operadora
Na hora de pedir a sessão, a operadora pergunta que rotas você quer receber. A resposta muda o tamanho do roteador e o quanto você consegue escolher a saída.
| Opção | O que permite | O que exige |
|---|---|---|
| Só rota padrão | Troca entre os links, mas a saída não escolhe por destino | Pouca memória no roteador |
| Rota padrão e rotas parciais | Mandar pela operadora os destinos que são clientes dela | Memória moderada e filtro por tamanho |
| Tabela completa | Escolher a saída destino por destino | Roteador com memória para a tabela global inteira |
Para um primeiro desenho, rota padrão mais rotas parciais é um meio-termo comum: a saída já se divide de forma natural, e o roteador não precisa carregar a tabela global duas vezes. [CONFIRMAR oferta de rotas parciais com cada operadora]
Um roteador ou dois na borda?
Um roteador com os dois links protege contra a queda de uma operadora, mas não contra a queda do próprio roteador. Dois roteadores, um por operadora, cobrem as duas falhas e pedem iBGP entre eles.
| Desenho | Protege contra | Ponto fraco | Faz sentido quando |
|---|---|---|---|
| Um roteador, dois links | Queda de uma operadora | O roteador vira ponto único de falha | Rede pequena, primeira etapa do multihoming |
| Dois roteadores, um link em cada | Queda de operadora e de equipamento | Exige iBGP e gateway redundante para dentro | Base que não aguenta ficar fora por defeito de hardware |
No desenho com dois roteadores, eles trocam as rotas recebidas por iBGP, para que cada um saiba sair pelo link do outro. Para dentro da rede, um protocolo de gateway redundante ou o roteamento interno decide qual dos dois recebe o tráfego dos assinantes; os guias de configuração de iBGP e de configuração de VRRP tratam dessas duas peças.
Dois contratos não garantem dois caminhos físicos
Duas operadoras diferentes podem chegar ao seu POP pelo mesmo poste, pela mesma fibra alugada ou pelo mesmo prédio de rede. Nesses casos, um único rompimento derruba os dois links, e o BGP não tem para onde convergir.
Pergunte a cada operadora por onde a fibra chega e de qual ponto ela sai. Se os trajetos se cruzam no último trecho, a redundância existe no contrato, mas não no chão.
Passo a passo da configuração das duas sessões
A configuração tem cinco partes: os blocos ancorados na tabela, os filtros de saída por operadora, as políticas de entrada, as sessões e a detecção rápida de queda. O exemplo monta o desenho de principal e reserva, que é o ponto de partida mais seguro.
- Âncora: crie uma rota de descarte para cada bloco próprio, para o anúncio não depender de nenhum enlace interno.
- Saída: escreva um filtro por operadora que só aceite os seus blocos, com o tamanho exato, e recuse todo o resto.
- Entrada: dê preferência local maior às rotas da operadora principal e aplique os filtros de prefixos inválidos.
- Sessões: suba uma operadora por vez, conferindo o que foi recebido e anunciado antes de passar à segunda.
- Detecção: ative BFD onde a operadora oferecer, para a queda ser percebida em segundos, e não em minutos.
O exemplo está em Juniper Junos, com o seu ASN 64500, a operadora A no AS 64496 e a operadora B no AS 64497. Os blocos 192.0.2.0/24 e 203.0.113.0/24 fazem o papel dos seus prefixos.
set routing-options autonomous-system 64500
set routing-options static route 192.0.2.0/24 discard
set routing-options static route 203.0.113.0/24 discard
set policy-options prefix-list MEUS-BLOCOS 192.0.2.0/24
set policy-options prefix-list MEUS-BLOCOS 203.0.113.0/24
# saída pela principal: blocos sem alteração
set policy-options policy-statement SAIDA-A term blocos from prefix-list-filter MEUS-BLOCOS exact
set policy-options policy-statement SAIDA-A term blocos then accept
set policy-options policy-statement SAIDA-A term resto then reject
# saída pela reserva: mesmos blocos, caminho mais longo
set policy-options policy-statement SAIDA-B term blocos from prefix-list-filter MEUS-BLOCOS exact
set policy-options policy-statement SAIDA-B term blocos then as-path-prepend "64500 64500"
set policy-options policy-statement SAIDA-B term blocos then accept
set policy-options policy-statement SAIDA-B term resto then reject
# entrada: principal preferida para a saída dos assinantes
set policy-options policy-statement ENTRADA-A then local-preference 120
set policy-options policy-statement ENTRADA-A then accept
set policy-options policy-statement ENTRADA-B then local-preference 100
set policy-options policy-statement ENTRADA-B then accept
set protocols bgp group TRANSITO type external
set protocols bgp group TRANSITO neighbor 198.51.100.1 peer-as 64496 import ENTRADA-A export SAIDA-A
set protocols bgp group TRANSITO neighbor 198.51.100.5 peer-as 64497 import ENTRADA-B export SAIDA-B
set protocols bgp group TRANSITO bfd-liveness-detection minimum-interval 300As políticas de entrada do exemplo só ajustam a preferência. Numa borda em produção, elas também recusam faixas privadas, prefixos longos demais e os seus próprios blocos vindos de fora, como mostra o guia de configuração de prefix-lists. Quem usa MikroTik encontra a sintaxe equivalente no guia de como configurar BGP no MikroTik.
Quer os dois links configurados e a troca cronometrada?
A Táquion Tech configura as sessões com as duas operadoras, uma por vez e com roteiro de volta, e entrega o tempo de troca medido em teste de queda.
Como balancear tráfego entre dois links BGP
Para balancear tráfego entre dois links BGP, troca-se o desenho de principal e reserva por uma divisão em que cada operadora leva uma parte em dia normal. A saída se divide por destinos, e a entrada, pelos blocos anunciados.
O desenho de principal e reserva tem uma vantagem pouco comentada: é fácil prever o que acontece numa queda, porque o reserva já está acostumado a receber tudo. O preço é um link pago e quase parado. Dividir a carga aproveita os dois contratos, mas cada link passa a precisar de folga para absorver o outro.
- Saída: com rotas parciais ou tabela completa, os destinos que são clientes de cada operadora já tendem a sair por ela; o ajuste fino move grupos de destinos com preferência local.
- Entrada: cada bloco ganha caminho normal por uma operadora e caminho alongado pela outra, o que divide o download pelos assinantes de cada bloco.
- Folga: a soma do pico dos dois links precisa caber no link menor, ou a queda de um lota o outro.
O método completo, com medição por destino e um ajuste por vez, está no guia de como balancear tráfego no BGP. Aqui vale o recorte para dois links de capacidades diferentes, que é o caso mais comum.
Na prática: dois links de tamanhos diferentes
Um provedor tem o link A com o dobro da capacidade do link B e dois blocos com quantidades parecidas de assinantes. Dividir meio a meio deixaria o B perto do limite e o A com folga demais.
- Medição: o pico de download soma um valor que cabe no link A sozinho, mas não no B sozinho.
- Decisão: o bloco com mais assinantes recebe caminho normal pela A, e o bloco menor fica preferido pela B.
- Saída: a preferência local continua favorecendo a A, e só um grupo pequeno de destinos sai pela B.
- Risco aceito: se a A cair no pico, o B vai lotar; o provedor registra isso e planeja aumentar o B antes da próxima expansão.
O ponto do exemplo é que a divisão segue a capacidade e o contrato, não a simetria. E que o risco de lotar o link menor numa queda precisa estar escrito, e não ser descoberto na noite em que acontece.
Como testar a queda de cada link?
Desligue cada link de propósito, numa janela combinada e com tráfego real, e cronometre o tempo até o tráfego voltar pelo outro. Sem esse teste, a redundância é uma suposição.
Sem BFD, a queda de um link que não derruba a interface física só é percebida quando o tempo de espera da sessão expira, que em muitos equipamentos fica entre 90 e 180 segundos por padrão. [CONFIRMAR na versão do equipamento] Com BFD ativo dos dois lados, a detecção cai para frações de segundo.
Confira em cada teste de queda
- A sessão do link desligado caiu e as rotas dela saíram da tabela.
- O tráfego de saída passou inteiro para o outro link.
- De fora, os seus blocos continuam visíveis pela operadora que ficou.
- O tempo até o tráfego voltar ficou anotado.
- Ao religar, o tráfego voltou para a divisão de dia normal.
Qualquer item sem marca é uma falha que apareceria numa queda de verdade. Corrija e repita o teste antes de considerar a borda pronta.
Repita o teste com o outro link e, se houver dois roteadores, desligando um roteador inteiro. A conferência de fora pode ser feita pelo looking glass das operadoras ou por serviços públicos de visualização de rotas.
Erros comuns em BGP com dois links
Os erros que mais aparecem são anunciar o que não é seu, deixar a redundância só no papel e tornar o provedor caminho de trânsito entre as duas operadoras. Todos se evitam com filtro de saída e teste de queda.
Evite
- Filtro de saída que repassa a uma operadora as rotas recebidas da outra.
- Anunciar cada bloco por uma operadora só para dividir a carga.
- Deixar a âncora do bloco depender de uma rota interna que pode sumir.
- Subir as duas sessões na mesma janela sem conferir uma de cada vez.
- Confiar na troca sem nunca ter desligado um link de propósito.
O primeiro erro é o mais grave: sem filtro de saída, a borda pode anunciar à operadora B a tabela recebida da operadora A, e o provedor vira caminho entre as duas. O tráfego de terceiros passa a atravessar a sua rede, os links lotam e as operadoras costumam derrubar a sessão até o anúncio ser corrigido.
Perguntas frequentes
Como balancear tráfego entre dois links BGP sem perder a redundância?
Anunciando todos os blocos pelas duas operadoras e mudando só a preferência de cada um, com prepend ou communities. Assim cada link leva a sua parte em dia normal, e qualquer um deles assume tudo quando o outro cai.
Dá para fazer BGP com dois links da mesma operadora?
Dá, e protege contra a queda de um enlace ou de uma porta. Mas não protege contra um problema na operadora inteira, que é a falha mais comum em quedas grandes.
Preciso de tabela completa para ter dois links BGP?
Não. Só a rota padrão de cada operadora já garante a troca na queda. A tabela completa, ou as rotas parciais, entra quando você quer escolher a saída por destino.
Quanto tempo a troca entre os links leva?
Depende de como a queda é detectada. Com BFD, poucos segundos; só com o tempo de espera da sessão, alguns minutos. O tempo real só aparece no teste de queda. [CONFIRMAR na versão do equipamento]
O IX.br pode servir de segundo link?
Não como reserva do trânsito, porque o ponto de troca só alcança as redes que estão nele. Ele tira peso das operadoras, mas a internet inteira continua dependendo de pelo menos dois trânsitos.
Fontes
- RFC 4271, A Border Gateway Protocol 4 (BGP-4): funcionamento das sessões, do tempo de espera e do processo de decisão.
- RFC 5880, Bidirectional Forwarding Detection (BFD): detecção rápida de falha entre dois roteadores vizinhos.