Multipath de BGP com ASNs diferentes viáveis ​​para redes de produção?

15

na Cisco (este comando está oculto por algum motivo)

#bgp bestpath as-path multipath-relax

O comportamento padrão do BGP instala apenas rotas com exatamente o mesmo AS_PATH no RIB. Com multipath-relax, o AS_PATH só precisa ter o mesmo comprimento.

Que problemas isso pode causar? Por que não é usado com mais frequência?

Como provedor de transporte público, esse recurso complica a solução de problemas (estou pensando em reclamações dos usuários finais sobre o desempenho da rede)? Torna mais difícil conhecer o caminho que o tráfego específico seguiu em um determinado momento? Existe algo mais que possa ajudar na solução de problemas. Não tenho certeza sobre escalabilidade e custo do NetFlow na rede SP.

sdaffa23fdsf
fonte
11
Eu instruí vários clientes a usá-lo, não ouvi nenhum problema. -draft-Lapukhov-roteamento BGP-large-dc-05 baseia-se fortemente sobre este recurso
ytti
Estou procurando um recurso semelhante no Juniper JunOS ... Existe algum? networkengineering.stackexchange.com/questions/6735/...
Everton
Alguma resposta o ajudou? Nesse caso, você deve aceitar a resposta para que a pergunta não apareça para sempre, procurando uma resposta. Como alternativa, você pode fornecer sua própria resposta e aceitá-la.
Ron Maupin

Respostas:

15

bgp bestpath as-path multipath-relaxfoi introduzido por CSCea19918. Normalmente, o balanceamento de carga do eBGP exige que as rotas candidatas sejam caminhos de custo igual; ie atributos BGP idênticos:

  • mesmo peso
  • o mesmo Local-Pref
  • mesmo caminho AS (ambos os números e o comprimento do caminho AS)
  • mesma origem
  • mesmo MED
  • próximo salto diferente

Como você mencionou, este comando relaxa o mesmo requisito do AS-Path para que qualquer candidato a eBGP AS-Path com o mesmo tamanho de caminho AS possa ser usado para o balanceamento de carga do eBGP (isso não balanceará a carga entre os caminhos do eBGP e do iBGP). Se você executa o BGP entre vários ISPs e procura um melhor balanceamento de carga de saída entre suas conexões upstream, isso pode ajudá-lo.

Que problemas isso pode causar?

Não há muito perigo, desde que você seja um cliente corporativo que não forneça serviço de transporte público para outro ASN; para um provedor de transporte público, pode ser perfeitamente seguro, mas não posso ter certeza de que não haja loops de roteamento se um ASN de transporte público usar esse recurso . No começo, eu pensei que haveria facilmente um loop nos casos de ASN em trânsito; em mais reflexões, não consigo encontrar um problema real.

Por que raramente é usado?

Boa pergunta, existe desde pelo menos 2005.

Mike Pennington
fonte
11
Você poderia explicar como isso pode causar loops com #bgp bestpath as-path multipath-relax (não #bgp bestpath as-path ignore)?
sdaffa23fdsf
0
The   basic  issue   is   that  the   BGP   speaker  configured   with
"multipath-relax"   gets  into   a  control   plane  <->   data  plane
inconsistency; i.e.  it advertises  only the  best path,  but installs
multiple paths in the forwarding  that have different ASPATHs than the
best. This breaks the basic tool BGP has to detect loops - ASPATH loop
check.

A (distorted) scenario below. I am sure you can come up with
a better example with a bit more time at hand.

            ...............
            : R4  AS1 (10/8)
           /:..............
     ..../......
     :  R5 AS2
     :....\.....
       /   \  ...............
     /      --:--R1
  R6 AS4      :    \    AS3
     \--------:--- R2
              :    /
              : R3 (10/8)
              :..............

In this example,
- R3 in AS3 and R4 in AS1 announce a prefix 10/8. R5 in AS2 receives
  the prefix from R1(AS3) and R4(AS1).
- AS2 is configured with 'multipath-relax' and chooses both paths
  for multipath forwarding, though it selects AS1's path as best.
- R5 advertises the prefix with AS_PATH "2 1" to R6, and R6 in turn
   to R2.
- Because of some specific policy, it is possible that R2(AS3)
  chooses R6's path as best. If it happens, there is a loop.
  Note that R1-R2-R3 represents the physical connectivity of
  the routers in AS3.
Pradosh Mohapatra
fonte
Obrigado pelo exemplo. Você quer dizer que R3 seleciona R4 como o melhor caminho para 10/8, R5 encaminha parte do tráfego para 10/8 de volta para AS3 em R1? Por que isso é causado pelo multipath-relax? Sem multipath-relax, o loop R2 - R6 - R5 -R1 ainda pode existir se não houver filtragem de saída adequada (ou simples 10/8 para null0 no AS de origem). Parece-me que o problema aqui é o seqüestro de BGP. Estou entendendo errado?
Sdaffa23fdsf
Não. O que quero dizer é: (a) R3 tem seu próprio melhor caminho externo, (b) R1 escolhe R3 como o melhor, mas devido à conectividade física, tem que enviar tráfego para R2 para alcançar R3, (c) R2 seleciona o caminho externo (recebido de R6) como melhor. Isso está relacionado ao multipath-relax, pois o R5 escolhe um caminho do AS3 para o encaminhamento de caminhos múltiplos que ele não divulga. Assim, a técnica de prevenção de loop ASPATH falha no AS3.
Pradosh Mohapatra
Ainda não entendi como isso poderia ser evitado sem o multipath-relax. R1 envia tráfego para 10/8 via R2 e R2 escolhe R6 como saída (peso), R5 pode escolher R1 como melhor para 10/8, mesmo sem multipath-relax e causar um loop. A prevenção de loop ASPATH não pode impedir os loops causados ​​pela preferência de um ponto de saída externo para a rede interna. Se R1 escolhe R5, R2 escolhe R6 como melhor para 10/8, o loop é formado independentemente, não?
Sdaffa23fdsf
Não tenho certeza de como isso seria um loop. R1 escolhe R5 como melhor => implica que R5 escolhe R4 como a saída para o tráfego (caso contrário, um loop AS_PATH teria sido detectado). Assim, os caminhos do fluxo de tráfego serão: R1-> R5-> R4 ou R2-> R6-> R5-> R4 ou R5-> R4 ou R3.
Pradosh Mohapatra