Por que meu LSP de custo igual não carrega o balanceamento da mesma forma quando uso a largura de banda automática?

7

Primeiro, estou adicionando esta pergunta e respondendo a mim mesma, porque esse tipo de comportamento não era absolutamente onde encontrar, espero que ajude alguém.

Problema:

Usamos largura de banda automática para lidar com as assinaturas de largura de banda de nossos LSPs. Os LSPs são de custo igual e aparecem em nossas tabelas de encaminhamento / roteamento de forma adequada, como disponíveis nos próximos saltos para cada destino.

No entanto, para um único destino, os 4 LSPs de custo igual não são balanceados por carga de maneira igual (ou mesmo quase igual). Entendemos que o JUNOS usa um algoritmo de balanceamento de carga por fluxo, apesar da declaração "por pacote" na política para habilitar o balanceamento de carga. Mas isso não explica a principal diferença entre cada assinatura do LSP (esse desequilíbrio ocorre várias vezes por dia, não é uma ocorrência única), como:

jhead@R1> show route protocol rsvp 1.1.1.1 detail

1.1.1.1/32 (2 entries, 1 announced)
        State: <FlashAll>
        *RSVP   Preference: 7/1
                Next hop: 192.168.1.1 via xe-0/0/0.0 weight 0x1 balance 35%, selected
                Label-switched-path LSP1
                Next hop: 192.168.1.2 via xe-1/0/0.0 weight 0x1 balance 35%
                Label-switched-path LSP2
                Next hop: 192.168.1.3 via xe-0/0/1.0 weight 0x1 balance 26%
                Label-switched-path LSP3
                Next hop: 192.168.1.4 via xe-0/0/0.0 weight 0x1 balance 5%
                Label-switched-path LSP4

R1-R4 são MX480 e CORE-R1-R4 são MX960.

Abaixo estão gráficos comparando a assinatura do RSVP e a utilização do LSP. Vermelho é assinatura, verde é utilização. Você pode ver que a utilização segue a reserva quase exatamente ao longo do dia. Nós deve ver assinaturas ser muito próximos uns dos outros entre os LSPs para o mesmo destino.

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

Topologia:

R1 - R4 são roteadores de entrada para todos os LSPs, possuem 2 ou 4 LSPs para cada roteador principal.

insira a descrição da imagem aqui

Configuração:

A configuração LSP é um único destino do R1, apenas como exemplo. Todos os LSPs são configurados exatamente da mesma maneira (novamente, com 2 ou 4).

[edit protocols mpls]
    statistics {
        file mpls-stats;
        interval 300;
        auto-bandwidth;
    }
    traffic-engineering bgp;
    label-switched-path LSP1 {
        to 1.1.1.1;
        optimize-timer 300;
        auto-bandwidth {
            adjust-interval 7200;
            adjust-threshold 10;
            minimum-bandwidth 100m;
            maximum-bandwidth 4g;
            adjust-threshold-overflow-limit 2;
            adjust-threshold-underflow-limit 4;
        }
        primary primary-loose;
    }
    label-switched-path LSP2 {
        to 1.1.1.1;
        optimize-timer 300;
        auto-bandwidth {
            adjust-interval 7200;
            adjust-threshold 10;
            minimum-bandwidth 100m;
            maximum-bandwidth 4g;
            adjust-threshold-overflow-limit 2;
            adjust-threshold-underflow-limit 4;
        }
        primary primary-loose;
    }
    label-switched-path LSP3 {
        to 1.1.1.1;
        optimize-timer 300;
        auto-bandwidth {
            adjust-interval 7200;
            adjust-threshold 10;
            minimum-bandwidth 100m;
            maximum-bandwidth 4g;
            adjust-threshold-overflow-limit 2;
            adjust-threshold-underflow-limit 4;
        }
        primary primary-loose;
    }
    label-switched-path LSP4 {
        to 1.1.1.1;
        optimize-timer 300;
        auto-bandwidth {
            adjust-interval 7200;
            adjust-threshold 10;
            minimum-bandwidth 100m;
            maximum-bandwidth 4g;
            adjust-threshold-overflow-limit 2;
            adjust-threshold-underflow-limit 4;
        }
        primary primary-loose;
    }

[edit protocols rsvp]
load-balance bandwidth
interface xe-0/0/0.0 {
    bandwidth 9g;
}
interface xe-0/0/1.0 {
    bandwidth 9g;
}
interface xe-1/0/0.0 {
    bandwidth 9g;
}

[edit routing-options forwarding-table]
export load-balance;
Jordan Head
fonte
Eu responderei pessoalmente hoje ou amanhã, mas se alguém quiser dar uma facada, fique à vontade.
Jordan Head

Respostas:

9

O problema é o:

[edit protocols rsvp]
load-balance bandwidth

Se você consultar a documentação da Juniper para LSPs de RSVP com balanceamento de carga de custo desigual , ela declara:

Para que o balanceamento de carga desigual, usando a largura de banda, funcione, você deve ter pelo menos dois LSPs de custo igual para o mesmo roteador de saída e pelo menos um dos LSPs deve ter um valor de largura de banda configurado no lsp- caminho-nome] nível de hierarquia. Se nenhum LSPs tiver largura de banda configurada, será realizado um balanceamento de carga de distribuição igual. Se apenas alguns LSPs tiverem largura de banda configurada, os LSPs sem nenhuma largura de banda configurada não receberão tráfego.

Isso implica que, independentemente do recurso ser configurado, nenhum balanceamento de carga de custo igual ocorrerá se você não definir estaticamente um valor de largura de banda em um LSP individual, como:

[edit protocols mpls label-switched-path LSP1]
bandwidth 2g

No entanto, a largura de banda automática conta como definir um valor de largura de banda, apesar de não estar presente na configuração.

Quando a largura de banda automática está ativada, o RPD começará a monitorar o consumo da largura de banda. Ele atribuirá valores de largura de banda com base na utilização e, em seguida, a instrução "load-balance bandwidth" no RSVP começará imediatamente a tentar manter as taxas de tráfego nessas assinaturas (35, 35, 26, 5, respectivamente). O problema disso é que ele nunca oferece a largura de banda automática a chance de se ajustar uniformemente, porque o objetivo da "largura de banda do equilíbrio de carga" é manter o tráfego o mais próximo possível dessas proporções. Isso faz sentido quando são definidos algo como 10, 30, 20, 40.

É essencialmente uma condição de corrida entre "largura de banda de balanceamento de carga" e "largura de banda automática"

Após remover:

[editar protocolos rsvp] largura de banda de balanceamento de carga

Tráfego ajustado (com um ligeiro soluço, visto abaixo):

NOTA: Este é um exemplo de um roteador diferente que foi afetado pelo mesmo problema.

jhead@R1> show log mpls-stats

LSP1 (LSP ID 3388, Tunnel ID 2646)    177150801 pkt   155450491134 Byte 178572 pps 152286259 Bps Util 228.46% Reserved Bw 66660264 Bps
LSP2 (LSP ID 3393, Tunnel ID 2647)            0 pkt              0 Byte      0 pps        0 Bps Util  0.00% Reserved Bw 116698880 Bps

Como você remove a capacidade de balancear a carga (para RSVP), o PFE será reprogramado para apenas um único caminho até que um ajuste automático da largura de banda ocorra automaticamente ou você pode forçar um ajuste:

request mpls lsp adjust-autobandwidth

E abaixo, se a largura de banda é ajustada para 2 LSPs com os mesmos sintomas, as configurações mudam e os ajustes ocorreram no meio da sexta-feira, você pode ver as diferenças nas assinaturas quase que imediatamente.

insira a descrição da imagem aqui insira a descrição da imagem aqui

Jordan Head
fonte
0

"Entendemos que o JUNOS usa um algoritmo de balanceamento de carga por fluxo, apesar da declaração" por pacote "na política para habilitar o balanceamento de carga"

Considerou essa afirmação bastante verdadeira ao usar o iperf para testar alguns cenários de balanceamento de carga. Com uma única sessão iperf, o tráfego não é balanceado de carga, mas, ao ativar sessões paralell iperf, o tráfego é balanceado.

Embora a documentação da Juniper sugira o contrário! http://www.juniper.net/documentation/en_US/junos13.2/topics/usage-guidelines/mpls-configuring-load-balancing-across-rsvp-lsps.html

Gostaria de saber se o acima é aplicável a partir de JUNOS13.2

AshvinO
fonte
A menos que você tenha equipamentos Juniper extremamente antigos em sua rede, todo o balanceamento de carga é dividido por FLOW (apesar de dizer por pacote na política). Portanto, dependendo de como você configura seus testes, o comportamento da sua serra é esperado - um único fluxo, de uma única sessão do iperf não será espalhado pelos links (ou LSPs). No entanto, se você adicionar um segundo fluxo, ele adicionará. A configuração "rsvp load-balance" é COMPLETAMENTE diferente, pois altera o balanceamento de carga normal. Não tenho certeza do problema que está vendo, mas você deve fazer uma pergunta para obter melhores respostas; os comentários não são o lugar.
Jordan Head