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:
-
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).
-
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.
-
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
-
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. 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
Configuração de hashing resiliente para interfaces de ethernet agregadas
user@router# set interface ae1 aggregated-ehter-options resilient-hash