Loadbalancing tráfego de saída ao usar o openbgpd no freebsd

8

Estou usando o openbgpd no freeBSD com 2 conexões ISP. Eu tenho meu próprio número AS e uma rede / 22. Atualmente estou anunciando todo / 22 para ambas as redes. O tráfego de entrada chega Mas meu tráfego de saída passa por um único link.

Eu gostaria de distribuir meu tráfego de saída por meio de ambos os links para que o tráfego de saída também seja equilibrado na carga.

Como configurar isso usando o openbgpd no freebsd?

Minha configuração atual do openbgpd está anexada para referência.

AS 00my-as
listen on xx.xx.xx.x
router-id xx.xx.xx.x
network aa.aa.aa.0/22
group "ISP1" {
  remote-as 11remoteas-1
  neighbor bb.bb.bb.1 {
   descr "ISP1"
   announce all  
  }
}
group "ISP2" {
  remote-as 22remoteas-2
  neighbor cc.cc.cc.37 {
   descr "ISP2"
   announce all  
  }
}
deny from any
deny to any
allow from bb.bb.bb.1
allow to bb.bb.bb.1
allow from cc.cc.cc.37
allow to cc.cc.cc.37
    
por Rajkumar S 03.03.2010 / 17:25

4 respostas

2

Eu não usei openbgpd em anos, então, eu vou te dar uma teoria que você pode aplicar à sua configuração.

Um provedor pode enviar rotas para você. Normalmente, eles enviam 'default', 'customers' ou 'full'. Uma rota padrão é justamente isso, 0.0.0.0/0 é anunciado para você e você sabe que chega a 0.0.0.0/0 (qualquer IP) através deles. Sua situação faz parecer que ambos os provedores estão entregando a você uma rota padrão e, provavelmente, aquele com o ASN mais baixo está recebendo todo o tráfego (ASN sendo o desempatador quando um pacote pode ir para vários destinos e os caminhos AS são iguais comprimento, etc.).

Um feed de "clientes" permite que eles anunciem todas as rotas diretamente conectadas a eles. Se você tem um provedor como Level3, provavelmente veria metade da internet por meio desse feed. Se o seu outro provedor tiver um ASN mais baixo, ele receberia qualquer tráfego que não estivesse diretamente conectado ao peer anunciando as rotas dos clientes para você.

Um feed "completo" terá anúncios de rota para todos os sites que um provedor sabe como acessar - não apenas aqueles que estão conectados diretamente.

Você deve ser capaz de fazer algo como:

show ip resumo do bgp (comando IOS)

que deve listar o número de prefixos recebidos em algum lugar.

Se os dois provedores existentes estiverem enviando uma rota padrão, a conexão está configurada para failover. O Provedor A desce, você encaminharia para o Provedor B. Se você receber feeds de cliente de ambos junto com a rota padrão, o tráfego fluiria para o provedor que possui o caminho mais curto para alcançar um determinado endereço e retornaria ao padrão rota se não conseguir encontrar o endereço. Se você obtivesse um feed completo de ambos, dependendo da sobreposição entre os provedores, você enviaria o tráfego para o caminho "melhor" para cada um.

Em um dos nossos roteadores de borda, eu mostro 310540 rotas ativas, verifique se você tem RAM suficiente e configurei a máquina para lidar com as rotas de ambos os provedores se você tomar rotas completas. Você pode experimentar fazer rotas de clientes de ambas até se sentir mais confortável. Ou pegue as rotas dos clientes do provedor menor dos dois e veja como as coisas mudam.

Isso ainda não faz "balanceamento de carga" ou divide o tráfego de maneira uniforme e depende do tráfego. Você pode descobrir que um provedor ainda recebe a maior parte do tráfego. Neste ponto, você precisaria fazer alguns mapas de prefixo / rota para ajustar o tráfego para preferir um ponto ou outro.

Depois de configurar mapas de rotas ou uma correspondência de ASN para alterar seu tráfego, se o site de destino cair e sua rota for removida desse provedor, o roteador ainda enviará o tráfego para a outra conexão. O BGP é um pouco auto-reparador.

O que fizemos foi ter alguns mapas definidos que combinam com base no ASN.

PROVIDER_A_TO PROVIDER_A_THROUGH PROVIDER_B_TO PROVIDER_B_THROUGH

O Juniper torna isso mais fácil do que usar as comunidades, no entanto, você pode fazer isso.

Nosso prefixo lista ver se o destino é um ASN em particular, e se for, ele passa pelo mapa _TO. Se o ASN estiver listado em _THROUGH, ele preferirá esse provedor. Como um de nossos provedores tem uma conexão direta com AT & T, PROVIDER_B_THROUGH corresponde a 7018 | 7019 (e a alguns outros ASNs) para que o tráfego de AT & T seja padronizado como Provedor B. Embora AT & T seja acessível de ambos, preferimos para enviá-lo embora Provedor B.

Tenho certeza de que o openbgpd tem métodos semelhantes.

    
por 20.03.2010 / 18:41
3

O BGP não é um protocolo de balanceamento de carga.

Deixe-me repetir que o BGP é NÃO um protocolo de balanceamento de carga.

Se o tráfego ALL apagar uma única conexão, meu palpite é que você não está recebendo um feed completo do provedor que está sendo ignorado. O roteamento é tal que a precedência é dada para rotas mais específicas, então se você tem uma rota de 192.168.0.0/23 indo para o provedor a, e duas rotas de 192.168.0.0/24 e 192.168.1.0/24 indo para o provedor b, provedor um será completamente ignorado. Eu não estou familiarizado com o OpenBGP. Então eu não posso te dizer as especificidades de como verificar algumas coisas sem olhar. Mas a primeira coisa que você precisa fazer é validar se os provedores BOTH estão fornecendo um feed completo e não apenas uma rota padrão.

Se esse for o caso, você precisará examinar a preferência de rota para o tráfego de saída e o preenchimento de caminho para o tráfego de entrada. Certifique-se de aguardar vinte e quatro a quarenta e oito horas entre as alterações de configuração apenas para garantir que você tenha um conjunto de dados grande o suficiente para determinar a eficácia de suas alterações.

    
por 05.03.2010 / 23:07
1

Construa uma ponte. O Freebsd, na verdade, carregará o equilíbrio nos recursos upstream dos prefixos atuais e fará o balanceamento de carga muito bem. O BGP não irá. Você pode instalar o ISP upstream e anunciar para ambos ISP por seu / 22 e provavelmente rejeitará seus / 30 prefixos wan, mas o iBGP irá buscá-lo. O iBGP funcionará bem na ponte e, então, não haverá necessidade real de OSPF. Agora você tem um balanceador de carga e configuração BGP totalmente redundante. Temos vários e amá-los em links para a Internet.

    
por 12.03.2010 / 09:19
1

A primeira coisa a verificar é se ambas as sessões do BGP estão ou não funcionando. use

bgpctl show summary

E veja se você tem troca de mensagens com os dois pares.

E você deve remover o "anunciar todos", a menos que você queira que você direcione o tráfego deles por você, o que geralmente é o oposto;

Juste remover o anúncio todos e você deve estar bem.

    
por 05.07.2011 / 20:14