Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Uso de hashing resillient para minimizar o remapping de fluxo

Em implantações entre endpoints de rede, é necessário preservar conexões estabelecidas e caminhos de Camada 2 e Camada 3 associados. Se houver alguma mudança na rede, como falha de um dispositivo de rede ou um servidor, os pacotes seguirão um novo caminho.

O hashing resiliente reduz o impacto da mudança de rede. Cada ECMP com hashing resiliente recebe uma região de 256 entradas na tabela de balanceamento de carga (também conhecida como tabela de macro fluxo). Cada entrada na tabela armazena a ID do link de membro atribuído a esse macro-fluxo.

O hashing resiliente funciona como descrito abaixo:

  • Pacotes de entrada de hash para uma dessas entradas ou baldes de macro fluxo.

  • Em seguida, você vincula pacotes aos caminhos do grupo ECMP.

Se usarmos uma "cesta" para representar o enlace/caminho de cada membro, as operações de hashing resilientes podem ser modeladas como colocar baldes (fluxos macro) em uma das cestas.

Se tivermos N buckets e caminhos P para o grupo ECMP, use a seguinte sequência:

  1. O mapeamento inicial do balde é gerado usando um método round-robin. Assim, todos os baldes são quase igualmente (N/P) distribuídos entre os membros do grupo ECMP. Mais tarde, os baldes se movem com base nos eventos de adição ou exclusão do caminho.

    Se N=64 baldes e caminhos P=4, você distribui todos os 64 baldes de forma redonda. Como você tem 4 caminhos, existem 4 pilhas. Cada pilha corresponde a um único caminho. Cada pilha tem o mesmo número de baldes, N/P=16.

    Last_processed_path= 0 (consulte a Etapa 5 do algoritmo).

  2. Se houver uma falha ou remoção de caminho, de repente você remove todos os baldes do caminho/pilha fracassado e os empurra para caminhos/pilhas remanescentes de uma maneira circular round-robin.

    Se você remover o caminho 3 (Pilha 3 na imagem acima), você precisa mover todos os baldes da Pilha 3 (laranja na figura abaixo) para pilhas restantes.

  3. Se houver uma adição de caminho, de repente você remove baldes N/(P+1) dos caminhos existentes de forma circular round-robin e os empurra para o caminho/pilha recém-adicionado.

    Se você adicionar um novo caminho, você precisa mover baldes N/P+1=64/4=16 de pilhas existentes (pilhas 0, 1, 2). Todos os baldes laranja estão agora de volta na pilha 3, pilhas azuis não são movidas e estão intactos.

    Last_processed_path= 0

  4. A direção circular de round-robin para a Etapa 2 e a Etapa 3 é oposta. É importante determinar a primeira pilha a partir da qual o round-robin circular começa. Você mantém um indicador last_processed_path de índice que fornece o índice de pilha inicial para a Etapa 2 e antes de começar a pilha para a Etapa 3.

  5. 5. Para definir last_processed_path, faça o seguinte:

    • Quando você empurra baldes como na Etapa 2, last_processed_path é a próxima pilha da última pilha onde você empurrou o último balde.

    • Quando você remove baldes como na Etapa 3, last_processed_path é a última pilha de onde o balde foi removido.

Limitações e advertências para hashing resiliente

  • O hashing resiliente é suportado apenas no grupo ECMP baseado em rotas BGP de igual custo. Quando você configura outros protocolos ou rotas estáticas com maior prioridade do que as rotas BGP, o hashing resiliente não é suportado.

  • O hashing resiliente não é suportado no LAG de velocidade mista.

  • O hashing resiliente de ECMP de 128 vias não é suportado com o design atual. Apenas o hashing resiliente de ECMP de 64 vias é suportado.

  • A Ethernet agregada (AE) e o balanceamento de carga adaptativo (ALB) AE não são suportados com o design atual de hashing resiliente.

Configuração de hashing resiliente para ECMP

  1. Habilite o hashing resiliente para rotas ECMP selecionadas. Crie uma política de roteamento separada para combinar rotas de entrada a um ou mais prefixos de destino. Veja a configuração da ação padrão nas políticas de roteamento.
  2. Aplique a política no(s) nível(s) necessário da hierarquia de configuração do BGP — global, grupo ou peer:
    Nota: Uma declaração de importação ou exportação de nível peer substitui uma declaração de importação ou exportação de grupo. Uma declaração de importação ou exportação de nível de grupo substitui uma declaração global de importação ou exportação do BGP. Um ponto-chave é que, em uma configuração conforme mostrado acima, apenas a política mais explícita é aplicada. Uma política de nível vizinho é mais explícita do que uma política de nível de grupo e uma política de nível de grupo do que uma política global. (Embora a mesma política seja aplicada em cada nível no exemplo acima para fins de ilustração, o resultado não é afetado.)

    Se você precisar de um vizinho para executar a função de todas as três políticas, execute qualquer uma das seguintes:

    • Você pode escrever e aplicar uma nova política de nível vizinho que abrange as funções dos outros três.

    • Você pode aplicar as três políticas existentes, como uma cadeia, a esse vizinho.

  3. [Opcional] Selecionar campos de pacotes usados na computação hash-key. Os exemplos a seguir são de PTX10001-36MR 22.2R1.12-Junos OS Evolved:

    Use os seguintes comandos para selecionar campos de pacotes:

    1. user@router# set forwarding-options enhanced-hash-key family family

      Aqui, a família pode retomarinet, inet6mplsou multiservice valores.

    2. user@router# set forwarding-options enhanced-hash-key hash-seed

    3. user@router# set forwarding-options enhanced-hash-key resilient-hash-seed

    Nota:

    Por padrão, a maioria dos campos está habilitada para balanceamento de carga. Se você configurar qualquer coisa sob a família de chave hash-key aprimorada para opções de encaminhamento, isso afeta tanto a chave de hash resiliente quanto a geração chave de balanceamento de carga lag e ECMP regular.

Configuração de hashing resiliente para interfaces de ethernet agregadas

Use o comando a seguir para configurar:
user@router# set interface ae1 aggregated-ehter-options resilient-hash