ECMP para um único VTEP: de onde vem a entropia do VXLAN
Um VTEP remoto pode ter vários próximos saltos de custo igual, mas um /32 não os torna úteis. A distribuição depende da tupla externa e do hash da porta de origem.
A afirmação de que o multipath de custo igual é inútil para uma rota de host é repetida com frequência suficiente para soar verdadeira. Um /32 seleciona um endereço de destino, e nada nessa seleção restringe o pacote a um único link físico. Quando o destino é uma extremidade remota de túnel VXLAN, vários próximos saltos podem transportar fluxos de sobreposição diferentes, e se o fazem depende do que o hash de encaminhamento tem permissão para ver. O resto é aritmética no cabeçalho externo, não uma propriedade do prefixo.
A rota decide a alcançabilidade; o hash decide a distribuição.
O mito: um /32 significa um único caminho
O OSPF pode anunciar alcançabilidade de custo igual até um loopback de VTEP enquanto a tabela de encaminhamento instala um grupo de próximos saltos para esse mesmo prefixo. O protocolo fornece os candidatos; a plataforma decide quais deles são utilizáveis e como um pacote é atribuído. Nenhum protocolo de roteamento calcula um novo hash para cada quadro encapsulado. É essa separação que explica por que dois roteadores com rotas idênticas ainda podem distribuir o tráfego de forma diferente.
Olhe para a entrada de encaminhamento instalada e não apenas para a exibição da rota, porque limites de hardware ou de política podem descartar candidatos que o plano de controle ainda anuncia.
De onde a entropia tem de vir
Entre dois VTEPs os endereços externos de origem e destino permanecem fixos, e a porta de destino UDP é 4789 numa implantação convencional. Um hash que lê apenas esses valores vê uma entrada constante e devolve um caminho constante. Algo no cabeçalho externo tem de variar, e o VTEP é o dispositivo que pode fazê-lo variar.
RFC 7348 propõe derivar a porta de origem UDP a partir de campos dentro do quadro encapsulado. Conversas internas diferentes produzem então tuplas externas diferentes, o que dá a um hash de transporte comum algo com que trabalhar.
Se o hardware de encaminhamento conseguir olhar mais fundo no pacote, verifique quais campos internos a sua implementação de hash suporta. Essa profundidade não deve ser tratada como requisito para todo dispositivo de underlay, uma vez que a variação da porta de origem por si só já expõe diferenças úteis.
Verifique o hash que realmente obtém
Meça em vez de presumir. Capture uma amostra de tráfego encapsulado e observe as portas de origem externas, depois compare o resultado com as entradas de encaminhamento e os contadores por link.
show ip route 10.255.0.5/32 show ip cef 10.255.0.5 internal ip route show 10.255.0.5 tcpdump -ni eth0 -c 200 'udp port 4789' -vv
Uma única porta de origem a aparecer em muitas conversas internas diferentes significa que o VTEP não está a variar o campo, e nenhum ajuste do underlay irá repartir a carga. Muitas portas distintas com um único próximo salto em uso apontam, em vez disso, para o grupo de encaminhamento.
Registe os contadores antes e depois da amostra, e note o tráfego não relacionado que partilha os uplinks, ou os números parecerão piores do que o hash merece.
O que uma distribuição uniforme não significa
Um hash por fluxo é concebido para manter uma conversa num único caminho enquanto as suas entradas e o conjunto de caminhos disponível não mudarem. Por isso uma única transferência TCP grande não agrega todos os uplinks, e acrescentar ligações não vai acelerar esse fluxo. Este é um comportamento normal, não uma falha.
Vários fluxos também podem colidir no mesmo próximo salto por acaso. Uma amostra curta pode parecer muito distorcida enquanto o hash faz exatamente aquilo para que foi configurado, e uma falha de ligação ou alteração do conjunto de caminhos pode mover fluxos estabelecidos a meio de uma transferência.
Teste com pares de endereços, transportes e débitos representativos segundo um plano aprovado, e mantenha a seleção de membros de agregação de ligações separada da seleção de multipath encaminhado, porque dois estágios de hash compõem o seu próprio padrão. Um grupo de próximos saltos preenchido mais entropia externa visível explicam o resultado; o comprimento do prefixo não.