Je vois un comportement déroutant concernant les interfaces liées sous Linux et je voudrais jeter la situation là-bas dans l'espoir que quelqu'un puisse l'éclaircir pour moi.
J'ai deux serveurs: le serveur 1 (S1) a 4 connexions Ethernet 1 Gbit; Le serveur 2 (S2) dispose de 2 connexions Ethernet 1 Gbit. Les deux serveurs exécutent Ubuntu 12.04, bien qu'avec le noyau 3.11.0-15 (du package lts-saucy linux-generic).
Les deux serveurs ont toutes leurs interfaces réseau respectives regroupées dans une seule interface bond0 avec la configuration suivante (en /etc/network/interfaces
):
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-slaves eth0 eth1 [eth2 eth3]
Entre les serveurs, il y a quelques commutateurs HP qui sont (je pense) correctement configurés pour LACP sur les ports en question.
Maintenant, le lien fonctionne - le trafic réseau circule facilement vers et depuis les deux machines. Et toutes les interfaces respectives sont utilisées, donc ce n'est pas comme si l'agrégation échouait complètement. Cependant, j'ai besoin d'autant de bande passante que possible entre ces deux serveurs, et je n'obtiens pas les ~ 2 Gbit / s que j'attendrais.
Lors de mes tests, je peux observer que chaque serveur semble allouer chaque connexion TCP (par exemple iperf, scp, nfs, peu importe) à une seule interface esclave. Essentiellement, tout semble plafonné à un maximum de 1 gigabit.
En définissant bond-xmit-hash-policy layer3+4
, je peux utiliser iperf -c S1 -P2
pour envoyer sur deux interfaces esclaves, mais côté serveur, la réception ne se produit toujours que sur une interface esclave et le débit total est donc plafonné à 1 Gbit / s, c'est-à-dire que le client affiche ~ 40-50 Mo / s sur deux interfaces esclaves, le serveur affiche ~ 100 Mo / s sur une interface esclave. Sans réglage, bond-xmit-hash-policy
l'envoi est également limité à une interface esclave.
J'avais l'impression que LACP devrait autoriser ce type de regroupement de connexions, permettant, par exemple, un seul transfert scp pour utiliser toutes les interfaces disponibles entre les deux hôtes.
Ma compréhension de LACP est-elle mauvaise? Ou ai-je manqué quelque part des options de configuration? Toute suggestion ou indice d'enquête serait très apprécié!
bond-xmit-hash-policy layer3+4
définit l'équilibrage de charge de votre serveur source vers le commutateur. Il ne définit pas l'algorithme d'équilibrage de charge de votre commutateur vers le deuxième serveur. Cela est presque certainement encore équilibré en couches 2 ou 3, c'est-à-dire pas du tout.la source
Eh bien, tout d'abord, lorsque vous utilisez un pilote d'association, cela créera une surcharge et réduira le débit maximal attendu, qui est de ~ 940 Mo / s sur un adaptateur de 1 Go, de ~ 10%.
Je ne sais pas quel type d'adaptateur vous avez, mais si vous utilisez des pilotes intégrés, les paramètres ne sont probablement pas idéaux pour le débit maximal. vous pouvez envisager d'ajouter des files d'attente, jusqu'à 4, car une seule file d'attente sur l'adaptateur ne peut probablement pas atteindre le débit de connexion.
Une autre considération est qu'un fil d'iperf n'obtiendra probablement pas de vitesse maximale. Pour 1 Go, 2 à 6 threads sont probablement plus idéaux, vous pouvez utiliser un simple script bash pour lancer plusieurs threads en même temps.
Pour une carte réseau Intel, mais RSS et RSC matériel peuvent affecter le débit, sur Broadcom assurez-vous que la TOE fonctionne.
La première étape, cependant, serait de supprimer les LAG et de simplement essayer de tester 1 port de trafic sur chaque système pour voir le débit qu'il obtient, faites-le avec tous les ports, puis essayez 2. LACP est une bête inconstante à configurer à droite, et je n'ai jamais essayé de le configurer sur un commutateur HP, seulement Force10 (pré-Dell).
Aussi, pourquoi y a-t-il quelques commutateurs?
la source
--parallel
paramètre qui contrôle le nombre de flux de clients parallèles à exécuter