Balanceamento de carga ECMP roteado em várias NICs, pinos de tráfego para uma interface

3

Eu tenho uma adjacência ospf funcional entre um servidor com 2 NICs de 10Gb e o switch L3 conectado a mais de duas / 30 redes. Um endereço IP / 32 é atribuído à interface lo que é pingável e passa o tráfego de forma confiável.

No entanto, ao testar o ecmp via tcpdump, vejo o tráfego preso a uma interface ou duplicado em ambos, dependendo do destino. Mais importante, o servidor irmão que é configurado de forma semelhante, mas com outro endereço IP de loopback, o tráfego é fixado a uma NIC.

As rotas na tabela de rotas, particularmente o servidor ponto a ponto, mostram interfaces igualmente ponderadas, mas o resultado desejado de alcançar o throughput de > 10 Gbps entre cada servidor não é atendido.

No mínimo, gostaria de ver um desempenho terrível de < 10Gbps devido à sobrecarga da CPU, mas com rotas alternativas utilizando os uplinks.

Estou tentando resolver a questão de o drbd estar ligado a 1 IP / NIC com apenas um único link de 10 Gbps para sincronizar entre sistemas, enquanto tem > 10Gbps de possíveis solicitações de iniciador iSCSI. O fator limitante aqui é o throughput do link peer.

default via 10.0.4.1 dev enp9s0f0 proto zebra metric 1

10.0.4.0/30 dev enp9s0f0 proto kernel scope link src 10.0.4.31 metric 107
10.0.4.4/30 dev enp9s0f1 proto kernel scope link src 10.0.4.31 metric 106
10.0.4.8/30 via 10.0.4.1 dev enp9s0f0 proto zebra metric 14
10.0.4.12/30 via 10.0.4.5 dev enp9s0f1 proto zebra metric 14
10.0.4.30 proto zebra metric 24
        nexthop via 10.0.4.5 dev enp9s0f1 weight 1
        nexthop via 10.0.4.1 dev enp9s0f0 weight 1
    
por ACiD GRiM 11.06.2018 / 09:50

1 resposta

2

Tanto quanto eu sei, tanto o ECMP quanto o LACP tentam fixar cada fluxo (conexão) em um único caminho - acredito que é para evitar problemas de TCP causados por reordenamento.

No Linux ECMP, isso pode ser ajustado usando sysctl net.ipv4.fib_multipath_hash_policy para levar em consideração apenas o par de endereços IP (L3 hashing) ou, adicionalmente, o par de portas TCP / UDP (L3 + 4 hashing).

A alteração do valor de sysctl para 1 distribuiria vários fluxos / conexões nas duas rotas.

Se isso ainda não for adequado, alguns tipos de ligação / formação de equipe de L2 podem funcionar.

    
por 11.06.2018 / 10:54

Tags