Je vois un comportement déroutant des interfaces liées sous Linux et j'aimerais jeter la situation dans l'espoir que quelqu'un puisse le refuser pour moi.
J'ai deux serveurs: le serveur 1 (S1) a 4x connexions Ethernet de 1gbits; Le serveur 2 (S2) a 2x connexions Ethernet 1Gbit. Les deux serveurs exécutent Ubuntu 12.04, bien que le noyau 3.11.0-15 (du package Linux-générique LTS-SAUCY).
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 sont quelques commutateurs HP qui sont (je pense) correctement configurés pour la LACP sur les ports en question.
Maintenant, le lien fonctionne - les flux de trafic réseau sont heureux vers et des deux machines. Et toutes les interfaces respectives sont utilisées, ce n'est donc pas comme si l'agrégation échoue complètement. Cependant, j'ai besoin de plus de largeurs de bande passante que possible entre ces deux serveurs et je ne reçois pas le ~ 2Gbit/s que j'attendrais.
Dans mes tests, je peux constater que chaque serveur semble allouer chaque TCP Connection (par exemple, IPERF, SCP, NFS, quoi que ce soit) à une seule interface esclave. Essentiellement tout semble plafonné à un max de 1 gigabit.
En définissant bond-xmit-hash-policy layer3+4
, Je peux utiliser iperf -c S1 -P2
Pour envoyer deux interfaces esclaves, mais sur le côté serveur, la réception ne se produit toujours que sur une interface esclave et le débit total est donc plafonné à 1Gbit/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 doit autoriser ce type de connexion de connexion, permettant, par exemple, un seul transfert SCP pour utiliser toutes les interfaces disponibles entre les deux hôtes.
Est-ce que ma compréhension de la lacp est fausse? Ou avez-je oublié certaines options de configuration quelque part? Toute suggestions ou indices d'enquête serait très apprécié!
Une explication rapide et sale est qu'une seule ligne de communication utilisant LACP ne divisera pas les paquets sur plusieurs interfaces. Par exemple, si vous avez un seul TCP des paquets de streaming de connexion à partir d'Hosta à hoster, il ne couvrira pas les interfaces pour envoyer ces paquets. Je cherche beaucoup la lacpe ici ces derniers temps pour une solution que nous travaillons et il s'agit d'une idée fausse commune que "liaison" ou "goulot" multiples interfaces réseau avec LACP vous donne un "débit" des interfaces combinées. Certains fournisseurs ont fait des pilotes propriétaires qui vont parcourir plusieurs interfaces, mais la norme LACP ne fait pas de ce que j'ai lu. Voici un lien vers un diagramme décent et une explication que j'ai trouvée de HP lors de la recherche sur des questions similaires: http://www.hp.com/rnd/library/pdf/59692372.pdf
bond-xmit-hash-policy layer3+4
Définit l'équilibrage de la charge de votre serveur source sur le commutateur. Il ne définit pas l'algorithme d'équilibrage de la charge de votre commutateur sur le deuxième serveur. C'est presque certainement toujours la couche-2 ou la couche-3 équilibré, c'est-à-dire pas du tout.
Eh bien, d'abord, lorsque vous utilisez un pilote de synthèse, cela créera des frais généraux et abaissera le débit maximum attendu, soit ~ 940 MB/S sur un adaptateur de 1 Go, d'environ 10%.
Je ne sais pas quel type d'adaptateur vous avez, mais si vous utilisez des pilotes dans la boîte, 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 file d'attente unique sur l'adaptateur ne peut probablement pas atteindre le taux de câble.
Une autre considération, est qu'un fil d'IPERF ne va probablement pas obtenir de meilleures vitesses. Pour 1 Go, 2-6 threads est probablement plus idéal, vous pouvez utiliser un script bash simple pour lancer plusieurs threads en même temps.
Pour une carte NIC Intel, mais RSS et le matériel RSC peuvent affecter le débit, sur Broadcom, assurez-vous que TOE fonctionne.
La première étape, cependant, serait de supprimer les retards et d'essayer d'essayer de tester 1 port de trafic sur chaque système pour voir combien de débit obtient, faites-le avec tous les ports, puis essayez 2. LACP est une bête fickle pour vous installer Droite, et je n'ai jamais essayé de la configurer sur un commutateur HP, seule la force10 (pré-dell).
En outre, pourquoi y a-t-il un couple de commutateurs?