リンク集約(LACP / 802.3ad)最大スループット


10

Linuxでのボンディングされたインターフェースに関していくつかの混乱した動作が見られます。誰かが私のためにそれを片付けてくれることを期待して、状況をそこに捨てたいと思います。

2台のサーバーがあります。サーバー1(S1)には4つの1ギガビットイーサネット接続があります。サーバー2(S2)には、2つの1ギガビットイーサネット接続があります。カーネル3.11.0-15(lts-saucy linux-genericパッケージから)を使用していますが、どちらのサーバーもUbuntu 12.04を実行しています。

両方のサーバーには、それぞれのネットワークインターフェイスがすべて、次の構成(単一の)で単一のbond0インターフェイスにバンドルされています/etc/network/interfaces

bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-slaves eth0 eth1 [eth2 eth3]

サーバー間には、問題のポートでLACP用に正しく構成されている(私が思う)いくつかのHPスイッチがあります。

これでリンクが機能します。ネットワークトラフィックは両方のマシンとの間でスムーズに送受信されます。そして、それぞれのインターフェースがすべて使用されているため、集約が完全に失敗しているわけではありません。ただし、これらの2つのサーバー間で可能な限り多くの帯域幅が必要であり、期待する最大2Gbit / sが得られません。

私のテストでは、各サーバーが各TCP接続(iperf、scp、nfsなど)を単一のスレーブインターフェイスに割り当てているように見えます。基本的に、すべてが最大1ギガビットで制限されているようです。

を設定するとbond-xmit-hash-policy layer3+4iperf -c S1 -P22つのスレーブインターフェースでの送信に使用できますが、サーバー側では、まだ1つのスレーブインターフェースでのみ受信が行われているため、合計スループットは1Gbit / sに制限されます。つまり、クライアントは〜40-50MB / sを示します2つのスレーブインターフェイスでは、サーバーは1つのスレーブインターフェイスで最大100MB / sを示します。bond-xmit-hash-policy送信を設定しないと、スレーブインターフェースも1つに制限されます。

LACPはこの種の接続バンドリングを許可し、たとえば、単一のscp転送が2つのホスト間で利用可能なすべてのインターフェースを利用できるようにするべきだという印象を受けました。

LACPについての私の理解は間違っていますか?または、どこかにいくつかの設定オプションを見逃しましたか?調査のための提案や手がかりは大歓迎です!

回答:


18

LACPを使用した1行の通信では、パケットが複数のインターフェイスに分割されないということは、簡単でわかりにくい説明です。たとえば、HostAからHostBへのパケットをストリーミングする単一のTCP接続がある場合、それらのパケットを送信するためにインターフェースをスパンすることはありません。LACPは、私たちが取り組んでいるソリューションについて最近よく検討してきました。これは、LACPを使用して複数のネットワークインターフェイスを「結合」または「トランキング」すると、結合されたインターフェイスの「スループット」が得られるという一般的な誤解です。一部のベンダーは、複数のインターフェースを介してルーティングする独自のドライバーを作成していますが、LACP標準は、私が読んだものからではありません。これは、同様の問題を検索しているときにHPから見つけた適切な図と説明へのリンクです。http//www.hp.com/rnd/library/pdf/59692372.pdf


1
それはすべて理にかなっています。なぜ自分の誤解がすぐに発見されなかったのかわかりません。私はちょうど正しい検索用語とドキュメンテーションページをまわっていたに違いありません。ネットワークハードウェアによっては、src-destハッシュモードを変更してマルチインターフェイスのスループットを向上させることができるようですが、この段階では私たちが持っているものに満足できると思います。あなたの説明と非常に便利なリンクをありがとう。
Zetten、2014年

お役に立ててうれしいです。私は最近、トランキングとボンディングを扱う用語を明確にするために、さまざまなベンダーによって異なる方法で使用されていることについて、多くを読んでいます。IEEEベンダーによって定義されているような特定の標準の外では、いくつかの用語を同じ意味で使用する傾向があることを発見しました...
Mike Naylor

6
文書は、元のURLで入手できなくなりましたが、それはインターネット・アーカイブを通じてまだアクセス可能です:web.archive.org/web/20030324105208/http://www.hp.com/rnd/...
smbear

3

bond-xmit-hash-policy layer3+4ソースサーバーからスイッチへの負荷分散を設定します。スイッチから2番目のサーバーへの負荷分散アルゴリズムは設定されません。これはほぼ確実に、レイヤー2またはレイヤー3のバランスが保たれています。つまり、まったくバランスが取れていません。


2

まず、チーミングドライバーを使用すると、オーバーヘッドが発生し、予想される最大スループット(1 GBアダプターで最大940 MB /秒)が最大10%低下します。

お使いのアダプターの種類はわかりませんが、インボックスドライバーを使用している場合、最大スループットの設定はおそらく理想的ではありません。アダプターの単一のキューがおそらくワイヤーレートに到達できないため、キューを最大4つまで追加することを検討できます。

もう1つの考慮事項は、iperfの1つのスレッドがおそらく最高速にならないことです。1GBの場合、2-6スレッドがおそらくより理想的です。単純なbashスクリプトを使用して、複数のスレッドを同時に起動できます。

Intel NICの場合、RSSおよびハードウェアRSCがスループットに影響を与える可能性があるため、BroadcomでTOEが機能していることを確認してください。

ただし、LAGを削除して、各システムでトラフィックの1つのポートをテストして、スループットを確認し、すべてのポートでこれを実行してから、2。を試してみてください。LACPは、簡単に設定できる獣ですそう、私はこれをHPスイッチで設定しようとしたことがなく、Force10(Dell以前)だけでした。

また、いくつかのスイッチがあるのはなぜですか?


他の答えが述べたように、根本的な問題はLACPの私の理解でしたが、画像に記入するだけです。Linuxボックスはカーネルのボンディングドライバーを使用しています。各インターフェイスは個別に最大に近いギガビットスループット(明らかに他のトラフィックに応じて約110〜117MB / s)をプッシュできるため、個々のNICを調整するのではなく、帯域幅を増やすことだけを考えていました。スイッチについては、マルチオフィスサイトがあり、途中にファイバーmux / demuxおよびその他のさまざまなビットとボブを備えたトランキングスイッチがあります。テストのために、1台のHP 2920-48Gスイッチに両方のサーバーを設置しました。
Zetten、2014年

iperfには--parallel、実行する並列クライアントストリームの数を制御するパラメーターがあります
8.8.8.8
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.