Passo a passo · Engenharia de tráfego
Como balancear tráfego no BGP: saída e entrada para provedores
Como balancear tráfego no BGP: mede-se o tráfego por destino, define-se uma meta em números e move-se uma fatia por vez entre os links. A saída se ajusta com preferência local no seu roteador, e a entrada se influencia mudando o que as outras redes enxergam nos seus anúncios.
Resumo
- O BGP escolhe um único caminho por destino, então a divisão da carga precisa ser desenhada por você.
- A saída é controlada com LOCAL_PREF por grupos de destinos, e o efeito aparece logo depois da mudança.
- A entrada depende das outras redes e responde a divisão de blocos, prepend e communities da operadora.
- Um ajuste por vez, medido no mesmo horário de pico, separa o que funcionou do que só coincidiu.
Como balancear tráfego no BGP: o que dá para controlar
Dá para controlar com precisão por onde o tráfego sai e só influenciar por onde ele volta. Todo balanceamento começa separando esses dois sentidos, porque cada um usa ferramentas diferentes.
O tráfego de saída é o que os assinantes mandam para a internet, como pedidos de página e envio de arquivos. Quem escolhe o link é o seu roteador, a partir das rotas que cada operadora entrega. O tráfego de entrada é o download, quase sempre o sentido mais pesado num provedor residencial, e quem escolhe o caminho é a rede de origem, não você.
Essa assimetria de controle explica por que tanto provedor ajusta a saída, vê o gráfico de upload equilibrado e continua com o download concentrado num link só. A engenharia de tráfego BGP trata os dois sentidos como projetos separados, cada um com meta e medição próprias.
| Ferramenta | Sentido | Precisão | Quando o efeito aparece |
|---|---|---|---|
| LOCAL_PREF por grupo de destinos | Saída | Alta, decisão é sua | Logo após aplicar a política |
| Divisão dos blocos entre operadoras | Entrada | Média, depende da rota de cada origem | Em minutos, conforme a propagação |
| Prepend de AS_PATH | Entrada | Baixa, muitas redes ignoram | Variável, conferir no mesmo horário |
| Communities da operadora | Entrada | Média, vale só dentro dela | Conforme a tabela de cada operadora |
| IX.br e caches | Os dois | Alta para as redes presentes | Assim que a sessão e o cache entram |
Por que o BGP não divide a carga sozinho?
Porque o protocolo foi feito para achar um caminho válido, não para encher os links por igual. Para cada prefixo, ele compara as rotas recebidas e instala só uma, seguindo a ordem de critérios descrita na RFC 4271.
Alguns roteadores permitem instalar mais de um caminho com o recurso de multipath, mas as rotas precisam ter atributos iguais, e rotas de operadoras diferentes quase nunca têm. Mesmo quando se força essa igualdade, a divisão é por fluxo e ignora a capacidade de cada link, o que costuma lotar o menor. O guia sobre como o BGP escolhe entre as rotas detalha cada critério dessa comparação.
Antes de mexer, meça e escreva a meta
Sem saber quais destinos pesam mais, qualquer ajuste é tentativa. A medição por fluxos mostra quem são os grandes volumes, e a meta diz quanto de cada um precisa mudar de link.
Os contadores de interface mostram quanto passa por link, mas não dizem para onde vai. Para balancear, é preciso saber quais sistemas autônomos concentram o tráfego, e isso vem da exportação de fluxos da borda. A implantação de IPFIX descreve como montar essa coleta.
- Horário: escolha a janela de pico real, normalmente à noite, e use sempre a mesma janela nas comparações.
- Ranking: liste os sistemas autônomos de origem e destino que somam mais tráfego em cada sentido.
- Caminho atual: anote por qual link cada grande volume entra e sai hoje.
- Fora do trânsito: confira o que já vai pelo IX.br e pelos caches, porque isso não entra na divisão entre operadoras.
- Meta: escreva o objetivo em números, como deixar o link A abaixo de um percentual combinado no pico.
A meta precisa considerar o contrato, e não só a capacidade. Um link com volume mínimo pago pode valer a pena encher mais, enquanto outro, cobrado por excedente, deve ficar com folga. Sem essa conta, o balanceamento perfeito no gráfico pode sair mais caro na fatura.
O que ter em mãos antes do primeiro ajuste
A lista abaixo resume o que precisa estar pronto. Faltando qualquer item, o resultado do ajuste fica difícil de provar.
Confira antes de mudar qualquer política
- Gráfico de cada link no pico dos últimos sete dias, nos dois sentidos.
- Ranking dos sistemas autônomos que mais pesam, por sentido.
- Capacidade, preço e volume mínimo de cada contrato.
- Backup da configuração atual da borda.
- Roteiro escrito para desfazer cada mudança.
Com todos os itens marcados, o ajuste tem ponto de partida e caminho de volta. Sem o ranking, o mais provável é mover tráfego que não pesa e deixar o grande volume onde estava.
Como balancear o tráfego de saída passo a passo
A saída se balanceia escolhendo grupos de destinos e dando a eles preferência local maior por um dos links. Mexer em grupos, e não em tudo de uma vez, permite mover fatias do tamanho certo.
- Grupo: a partir do ranking, separe um conjunto de sistemas autônomos que some a fatia que precisa mudar de link.
- Política: na sessão com a operadora que deve receber esse grupo, aumente o LOCAL_PREF das rotas dele.
- Padrão: deixe as demais rotas com o valor normal, para não puxar tudo de uma vez.
- Aplicação: aplique em janela de baixo uso, com backup, e confira as rotas instaladas para um destino do grupo.
- Medição: compare o gráfico do pico seguinte com o anterior e ajuste o tamanho do grupo se a fatia passou da meta.
O exemplo usa sintaxe Cisco IOS-XE, com o seu ASN 64500 e a operadora B no AS 64497. O grupo é formado pelos destinos originados nos sistemas autônomos 64510 e 64511, que no ranking somam a fatia a ser movida.
! destinos originados nos AS 64510 e 64511
ip as-path access-list 20 permit _64510$
ip as-path access-list 20 permit _64511$
!
route-map ENTRADA-OPERADORA-B permit 10
match as-path 20
set local-preference 150
route-map ENTRADA-OPERADORA-B permit 20
set local-preference 100
!
router bgp 64500
address-family ipv4 unicast
neighbor 198.51.100.5 route-map ENTRADA-OPERADORA-B in
!
! conferir qual caminho ficou instalado para um destino do grupo
do show ip bgp 192.0.2.0/24Repare que a política fica na entrada da sessão, porque o LOCAL_PREF é dado às rotas recebidas da operadora. O valor só vale dentro do seu sistema autônomo e precisa chegar a todos os roteadores de borda pelo iBGP, senão cada um decide de um jeito.
Quer a carga dividida pela sua meta, com gráfico de antes e depois?
A Táquion Tech mede o tráfego por destino, aplica um ajuste por vez na saída e na entrada e entrega o resultado comparado com a meta combinada.
Como balancear o tráfego de entrada no BGP?
A entrada se balanceia mudando o que as outras redes veem nos seus anúncios, porque são elas que escolhem por onde mandar o download. As três ferramentas são dividir os blocos, alongar o caminho com prepend e usar communities da operadora.
A ferramenta mais previsível é a divisão dos blocos. Cada bloco segue anunciado pelas duas operadoras, para não perder a redundância, mas com preferência diferente em cada uma: um bloco chega com caminho normal pela operadora A e mais longo pela B, e o outro faz o contrário.
ip prefix-list BLOCO-1 seq 10 permit 192.0.2.0/24
ip prefix-list BLOCO-2 seq 10 permit 203.0.113.0/24
!
route-map ANUNCIO-OPERADORA-A permit 10
match ip address prefix-list BLOCO-1
route-map ANUNCIO-OPERADORA-A permit 20
match ip address prefix-list BLOCO-2
set as-path prepend 64500 64500
!
route-map ANUNCIO-OPERADORA-B permit 10
match ip address prefix-list BLOCO-2
route-map ANUNCIO-OPERADORA-B permit 20
match ip address prefix-list BLOCO-1
set as-path prepend 64500 64500
!
router bgp 64500
address-family ipv4 unicast
neighbor 198.51.100.1 route-map ANUNCIO-OPERADORA-A out
neighbor 198.51.100.5 route-map ANUNCIO-OPERADORA-B outOs assinantes ligados ao bloco 1 tendem a receber o download pela operadora A, e os do bloco 2 pela B. A divisão fica tão boa quanto a distribuição de assinantes entre os blocos, por isso vale conferir quanto tráfego cada bloco puxa antes de decidir qual vai para cada lado.
Até onde o prepend funciona
O prepend só muda a decisão de quem desempata pelo tamanho do caminho. Redes que preferem rotas de clientes pagantes, ou que fixaram preferência por uma operadora, ignoram as repetições do seu ASN.
Por isso, depois de duas ou três repetições, mais prepend raramente move tráfego e só deixa o anúncio feio na tabela global. Para essas redes, as communities de engenharia de tráfego da própria operadora funcionam melhor, como mostra o guia de configuração de communities BGP.
Anúncios mais específicos e o cuidado com o RPKI
Anunciar um pedaço menor do bloco por uma operadora atrai o tráfego desse pedaço, porque o prefixo mais específico sempre vence. É a ferramenta mais forte para a entrada e também a que mais exige cuidado.
Cada anúncio novo precisa de um ROA que cubra o tamanho anunciado, ou as redes que validam origem vão descartá-lo como inválido. O guia de criação de ROAs mostra como ajustar o tamanho máximo para os anúncios mais específicos.
Erros comuns ao balancear tráfego no BGP
Os erros mais comuns vêm da pressa: vários ajustes de uma vez, medição em horários diferentes e mudanças que esquecem a redundância. Todos aparecem semanas depois, quando um link cai.
Evite
- Aplicar prepend, LOCAL_PREF e divisão de blocos na mesma janela.
- Comparar o gráfico de domingo à noite com o de terça à tarde.
- Anunciar um bloco por uma operadora só e perder a reserva dele.
- Esquecer o IPv6, que segue saindo pelo caminho padrão.
- Ajustar só a saída e esperar que o download acompanhe.
- Anunciar um prefixo mais específico sem ROA para ele.
O erro mais caro é o terceiro. Para dividir a carga, alguém deixa de anunciar um bloco por uma das operadoras, o balanceamento fica perfeito e, no dia em que essa operadora cai, metade dos assinantes fica sem internet. O balanceamento nunca pode custar a redundância que o segundo link deveria dar.
Quando o balanceamento cria rotas assimétricas
Ao mexer na saída e na entrada separadamente, é normal que um destino saia por um link e volte pelo outro. Isso não quebra a navegação, mas confunde gráficos e pode derrubar tráfego quando há filtro de origem estrito na borda.
Se a assimetria passou a incomodar depois de um ajuste, o guia de análise de rotas assimétricas mostra como medir ida e volta e decidir se vale corrigir.
Como saber se o balanceamento funcionou?
O balanceamento funcionou quando o pico de cada link ficou dentro da meta por alguns dias seguidos e a queda de qualquer link ainda leva o tráfego para o outro. Um dia bom isolado não prova nada.
A entrada muda conforme as outras redes reagem aos seus anúncios, e algumas demoram a recalcular. Por isso a conferência olha uma semana de picos, não a primeira noite depois da janela.
- Gráfico: o pico de cada link, nos dois sentidos, ficou dentro da meta escrita em todos os dias observados.
- Rotas: um destino de cada grupo movido aparece instalado pelo link esperado.
- Looking glass: de fora, os seus blocos aparecem pelas duas operadoras, com o caminho previsto em cada uma.
- Queda: com um link desligado em janela, o tráfego inteiro passa para o outro sem perder blocos.
Se o tráfego crescer ou um grande destino mudar de caminho, o equilíbrio se perde e o processo recomeça pela medição. Quando um link já está no limite e o assinante sente, o guia de link de trânsito saturado mostra o que fazer primeiro, antes de qualquer ajuste fino.
Perguntas frequentes
Dá para balancear tráfego BGP meio a meio exatamente?
Na saída, chega-se perto, ajustando o tamanho dos grupos de destinos. Na entrada, não, porque a escolha é das outras redes e muda com o tempo; a meta realista é uma faixa, não um número exato.
Qual sentido do tráfego pesa mais num provedor?
Num provedor residencial, o download costuma ser bem maior que o upload, então o sentido de entrada é o que mais enche os links. Por isso balancear só a saída quase nunca resolve um link lotado.
O IX.br conta no balanceamento entre operadoras?
Conta como tráfego que sai da conta das operadoras. Tudo o que vai pelo ponto de troca ou pelos caches deixa de pesar no trânsito, e o balanceamento se faz com o que sobra.
Quantos prepends usar para mudar a entrada?
Uma ou duas repetições costumam bastar para quem desempata pelo caminho. Acima de três, o efeito quase não muda e a rota passa a parecer suspeita para quem analisa a tabela global.
Preciso de equipamento novo para balancear o tráfego?
Normalmente não, porque as políticas de LOCAL_PREF, prepend e divisão de blocos rodam no roteador de borda que já existe. O que costuma faltar é a medição por fluxos, que pode exigir um coletor.
Fontes
- RFC 4271, A Border Gateway Protocol 4 (BGP-4): processo de decisão do BGP e uso do LOCAL_PREF.
- RFC 1998, An Application of the BGP Community Attribute in Multi-home Routing: uso de communities para orientar a entrada do tráfego em redes com mais de uma operadora.