Roteando o tráfego para fora de links diferentes do mesmo BGP AS

19

Eu tenho dois sites, A e B, no BGP AS 65000, e um terceiro site, C, no AS 65001. Todos os três sites têm conectividade via MPLS de operadora e há conectividade interna entre os sites A e B. Estou tentando influenciar o BGP para que o tráfego do site A para o site C seja roteado pelo link MPLS do site A e o tráfego do site B para o site C seja roteado pelo link MPLS do site B. A topologia é semelhante à descrita neste exemplo .

AS 65000 e 65001

Os roteadores de borda nos sites A e B verão seu próprio link MPLS como o melhor caminho, porque as rotas EBGP são preferidas às rotas IBGP. No entanto, todos os roteadores dentro do AS 65000 preferem um link ou outro. Meu objetivo é forçar todos os roteadores em qualquer site a preferir o link mais próximo. (Infelizmente, não posso dividir os dois sites em ASes separados no momento.)

Existe uma maneira sensata de fazer isso, enquanto ainda permite conectividade de failover ao site C entre os links do site A e B?

Edit: Eu deveria ter notado que não há IGP em uso aqui. De fato, as redes em cada site existem dentro de um VRF como parte de uma rede muito, muito maior. Como tal, qualquer solução precisa confiar inteiramente no BGP.

Jeremy Stretch
fonte
Hey Jeremy - existem duas boas soluções para isso abaixo, mas não posso assumir com segurança que você tem controle administrativo sobre o IGP. Você pode esclarecer isso?
John Jensen
Não há IGP nesse cenário. Na verdade, isso representa apenas um VRF em uma rede muito maior; os detalhes que deixei de fora por motivos de clareza.
22413 Jeremy Stretch
Era disso que eu tinha medo. :-) Obrigado por esclarecer.
John Jensen
Algo está faltando aqui, eu acho; Então, nós dois assumimos que existe um link (possivelmente muitos, devido a vários roteadores internos?) Entre A e B dentro do AS 65000? Além disso, o que você vê sub-ideal? Um / ou muitos roteadores mais próximos de A (topologicamente falando) enviam tráfego via B para chegar a C?
Jwbensley #
@javano o problema é que ambos os roteadores A e B (roteadores de borda) são iBGP no mesmo ASN, portanto, qualquer prefixo (s) aprendido com C em qualquer um terá 2 caminhos no RIB em ambas as caixas, e o caminho eBGP terá sempre vencem, portanto o tráfego de saída do AS6500 para o AS65001 fica preso a um link.
John Jensen

Respostas:

12

Existe uma definição clara entre o site A e o site B?

Nesse caso, procuraria definir uma política nos roteadores de borda para injetar uma comunidade ao receber rotas do MPLS da operadora.

Depois que essa comunidade for colocada nos prefixos (digamos 100: 1 para o site A e 100: 2 para o site B), você poderá adicionar uma política a cada um dos roteadores do site A para aumentar o LP de todas as rotas com a comunidade 100: 1 e da mesma forma para o site B com a comunidade 100: 2.

Essa solução atenderia ao requisito de usar apenas o BGP e também seria flexível o suficiente para permitir que B usasse o uplink de A se perdesse seu próprio uplink para a transportadora.

David Rothera
fonte
1
Este é provavelmente o melhor caminho a percorrer, mas se Jeremy estiver anunciando um único resumo de C, ele terá que dividi-lo em partes para que isso funcione efetivamente.
John Jensen
Eu acho que esse é o caminho que vou seguir. Vou precisar trabalhar amanhã e ver se eu fico preso em algum lugar.
Jeremy estiramento
@JohnJensen, não deve haver necessidade disso, pois os sites A e B receberão os mesmos prefixos da transportadora e, portanto, podem fazer modificações nos próprios prefixos de 'sites', com o desempate chegando ao LP.
David Rothera
1
Como uma observação adicional ao pensar mais sobre isso, pode ser melhor usar um atributo localmente significativo como peso, em vez de um atributo transitivo como LP.
David Rothera
1
@DavidRothera Se houver vários prefixos anunciados em C, você estará correto - é possível que exista apenas um prefixo vindo de C; nesse caso, não tenho certeza de que definir o localpref com uma comunidade faria a diferença na solução do problema de Jeremy, porque há um único prefixo com uma opção de duas comunidades e dois valores de LP diferentes, o LP mais alto será preferido e o tráfego ainda será fixado em um link. Também concordando que o uso de um atributo localmente significativo pode ser melhor aqui.
John Jensen
6

insira a descrição da imagem aquiQuando fiz algo semelhante, não usei o eBGP entre os roteadores. Eu tinha o roteador que fala BGP apenas envia a rota padrão para os roteadores Site A e Site B via OSPF e depois redistribui as rotas OSPF no BGP. No link entre os dois sites, apliquei um custo OSPF.

Isso permite que o Site A tenha rotas para suas redes, redes do Site B e uma rota padrão para sair do Site A (o custo OSPF mantém a rota padrão do Site B como uma opção secundária, caso você perca o link do Site A). O site A conversará diretamente com o site B, sem usar o MPLS, a menos que haja uma falha no link entre os sites.

Além disso, os custos de OSPF são convertidos no BGP MED durante a redistribuição, o que faz com que a rede MPLS da operadora prefira enviar o tráfego do Site A diretamente ao Site A, mas também usa o Site B para acessar o Site A, se necessário.

Mike Marotta
fonte
3

Sinto que algumas informações estão faltando. Por que os roteadores de borda não estão preferindo o melhor caminho?

Você possui o iBGP de malha completa no 65000? Ou você está usando a reflexão de rota?

Se você possui o iBGP de malha completa, cada roteador de borda aprende a rota de ambos [AB] e recorre à comparação do custo do IGP com o salto seguinte, o que deve ser traduzido para a caixa de borda mais próxima.

Se houver reflexão da rota, ela refletirá apenas a melhor rota do seu próprio ponto de vista, o que pode remover o melhor encaminhamento de caminho. Isso é corrigível também adicionando outro RR que escolherá a outra rota como melhor e, em seguida, as caixas de borda mais uma vez poderão escolher a melhor rota. Se a fixação do RR não for possível assim. Você pode adicionar o mesmo endereço IPV4 nos dois loopbacks das rotas de fronteira e, quando os roteadores de fronteira anunciam o prefixo para RR, eles definem o próximo salto para esse endereço de anycast. Mesmo depois da reflexão, você seguirá o IGP até a borda mais próxima.

ytti
fonte
2

Se você tiver controle sobre o IGP:

O que fizemos é ter apenas roteadores eBGP na malha iBGP. O restante de nossos roteadores internos são roteadores OSPF. Redistribuímos de BGP para OSPF dentro de cada AS. Nossa configuração é um pouco diferente da sua, mas isso deve permitir que a métrica de custo do OSPF influencie o caminho do tráfego, direcionando-o para o roteador eBGP mais próximo.

Se você não tem controle sobre o IGP:

Talvez você possa aplicar uma política de importação aos roteadores internos para fazê-los preferir estaticamente os anúncios de rota do roteador eBGP de saída desejado. Assim, por exemplo, se o iBGP contiver dois anúncios para um determinado prefixo (um do roteador do site A e outro do roteador do site B, mas apenas um estiver instalado no RIB), você poderá fazer a prefiguração local do anúncio desejado, conforme ele vier Eu teria que trabalhar no laboratório, mas não vejo por que não funcionaria.

netdad
fonte
Sim, seria a melhor maneira que eu imagino, supondo que você tenha a capacidade de usar um IGP. Infelizmente esse não é o meu caso. :( Eu atualizei a questão para incluir esse detalhe negligenciado.
Jeremy estiramento
I como a resposta de David Rothera, como é o mesmo que o meu, mas ele acrescenta o detalhe de usar comunidades :)
netdad