Balanceamento de carga do 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.

Gostaria de distribuir meu tráfego de saída pelos dois links para que o tráfego de saída também seja balanceado de carga.

Como configurar isso usando 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

Respostas:


2

Eu não uso o openbgpd há anos, portanto, darei uma teoria que você pode aplicar à sua configuração.

Um provedor pode enviar rotas a você. Normalmente eles enviarão 'padrão', 'clientes' ou 'cheio'. Uma rota padrão é exatamente isso: 0.0.0.0/0 é anunciado a você e você sabe que alcança 0.0.0.0/0 (qualquer IP) por meio deles. Sua situação faz parecer que os dois fornecedores estão lhe entregando uma rota padrão e, provavelmente, aquele com o ASN mais baixo está recebendo todo o tráfego (o ASN é o desempatador quando um pacote pode ir para vários destinos e os caminhos do AS são iguais comprimento, etc.).

Um feed de 'clientes' solicita que eles anunciem todas as rotas diretamente conectadas a eles. Se você tiver um provedor como o Level3, provavelmente verá metade da Internet através deste feed. Se o seu outro provedor tiver um ASN menor, eles receberão qualquer tráfego que não esteja diretamente conectado ao ponto anunciando suas rotas de clientes para você.

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

Você deve ser capaz de fazer algo como:

mostre o sumário do IP 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, sua conexão está atualmente configurada para failover. O provedor A fica inoperante, você encaminha para o provedor B. Se você pegar os feeds dos clientes junto com a rota padrão, o tráfego fluirá para o provedor que possui o caminho mais curto para atingir um determinado endereço e retornará ao padrão. rota se não conseguir encontrar o endereço. Se você obtiver um feed completo de ambos, dependendo da sobreposição entre os provedores, você enviará o tráfego pelo melhor caminho para cada um.

Em um de nossos roteadores de borda, mostro 310540 rotas ativas, verifique se você tem RAM suficiente e configurou a máquina para lidar com as rotas de ambos os provedores, se você seguir rotas completas. Você pode experimentar percorrer rotas de clientes de ambos até ficar mais confortável. Ou siga as rotas dos clientes do fornecedor menor dos dois e veja como as coisas mudam.

Isso ainda não 'equilibra a carga' ou divide o tráfego uniformemente e dependendo do seu tráfego. Você pode achar que um provedor ainda recebe a maior parte do tráfego. Nesse 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 ASN para alterar seu tráfego, se o site de destino cair e a rota for removida desse provedor, o roteador ainda enviará o tráfego para a outra conexão. O BGP é um pouco autocurativo.

O que fizemos é que temos alguns mapas definidos que correspondem 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 comunidades, no entanto, você pode fazer qualquer um.

Nossas listas de prefixos veem se o destino é um ASN específico 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 a AT&T, PROVIDER_B_THROUGH corresponde a 7018 | 7019 (e alguns outros ASNs), de modo que o tráfego da AT&T é padronizado para o Provedor B. Mesmo que a AT&T possa ser acessada por ambos, preferimos enviá-lo pelo Provedor B .

Tenho certeza que o openbgpd tem métodos semelhantes.


3

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

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

Se ALL tráfego sai uma única conexão, meu primeiro palpite é que você não está recebendo um feed completo do provedor que está sendo ignorada. O roteamento é tal que a precedência é dada a rotas mais específicas; portanto, se você tiver uma rota 192.168.0.0/23 indo para o provedor a e duas rotas 192.168.0.0/24 e 192.168.1.0/24 indo para o provedor b, provedor a será completamente ignorado. Eu não estou familiarizado com o OpenBGP. Portanto, não posso lhe dizer os detalhes de como verificar algumas coisas sem olhar. Mas a primeira coisa que você precisa fazer é confirmar que AMBOS os fornecedores estão fornecendo um feed completo e não apenas uma rota padrão.

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


1

Construir uma ponte. O Freebsd realmente carregará o equilíbrio nos recursos de upstream dos prefixos atuais e o carregará bastante bem. BGP não. Você pode instalar o ISP upstream e anunciar ao ISP por seu / 22 e provavelmente rejeitará seus prefixos de / 30 wan, mas o iBGP irá buscá-lo. O iBGP funcionará bem na ponte e, portanto, não haverá necessidade real do OSPF. Agora você tem um loadbalancer e uma configuração de BGP totalmente redundante. Temos vários e os amamos em links de shows para a Internet.


1

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

sumário da mostra do bgpctl

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

E você deve remover o "anunciar tudo", a menos que queira que seus colegas direcionem o tráfego deles através de você, o que geralmente é o oposto;

Juste remove o anúncio de tudo e você deve ficar bem.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.