我々は、4ポート置くインテルI340-T4のFreeBSD 9.3サーバにNICを1とするために構成されたリンクアグリゲーションでLACPモード -2-にマスタ・ファイル・サーバからのデータの16のTiBにはミラー8に要する時間を短縮しようとして並行して4つのクローン。最大で4ギガビット/秒の総帯域幅が得られると期待していましたが、何を試しても、1ギガビット/秒の総帯域幅より速くなることはありません。2
iperf3
静止LANでこれをテストするために使用しています。3最初のインスタンスは予想どおりほぼギガビットに達しますが、2番目のインスタンスを並行して開始すると、2つのクライアントの速度が約½ギガビット/秒に低下します。3番目のクライアントを追加すると、3つすべてのクライアントの速度が〜⅓Gbit /秒に低下します。
iperf3
4つのテストクライアントすべてからのトラフィックが、異なるポートの中央スイッチに入るようにテストを設定しました。
各テストマシンにはラックスイッチへの独立したパスがあり、ファイルサーバー、そのNIC、およびスイッチにはすべて、lagg0
グループを分割してそれぞれに個別のIPアドレスを割り当てることでこれを実現する帯域幅があることを確認しましたこのIntelネットワークカードの4つのインターフェイスのうち。その構成では、4ギガビット/秒の総帯域幅を実現しました。
この道を歩み始めたとき、私たちは古いSMC8024L2管理スイッチでこれを行っていました。(PDFデータシート、1.3 MB。)それは当時の最高のスイッチではありませんでしたが、これを行うことができるはずです。スイッチは古くなっているため故障しているのではないかと考えましたが、はるかに高性能なHP 2530-24Gにアップグレードしても症状は変わりませんでした。
HP 2530-24Gスイッチは、問題の4つのポートが実際に動的LACPトランクとして構成されていると主張しています。
# show trunks
Load Balancing Method: L3-based (default)
Port | Name Type | Group Type
---- + -------------------------------- --------- + ----- --------
1 | Bart trunk 1 100/1000T | Dyn1 LACP
3 | Bart trunk 2 100/1000T | Dyn1 LACP
5 | Bart trunk 3 100/1000T | Dyn1 LACP
7 | Bart trunk 4 100/1000T | Dyn1 LACP
パッシブLACPとアクティブLACPの両方を試しました。
4つのNICポートすべてがFreeBSD側でトラフィックを取得していることを確認しました。
$ sudo tshark -n -i igb$n
奇妙なtshark
ことに、クライアントが1つだけの場合、スイッチは1ギガビット/秒のストリームを2つのポートに分割し、明らかにそれらの間でピンポンしていることを示しています。(SMCスイッチとHPスイッチの両方がこの動作を示しました。)
クライアントの総帯域幅は1か所(サーバーのラック内のスイッチ)でのみ集まるため、そのスイッチのみがLACP用に構成されます。
どのクライアントを最初に開始するか、またはどの順序で開始するかは関係ありません。
ifconfig lagg0
FreeBSD側で言う:
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=401bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
ether 90:e2:ba:7b:0b:38
inet 10.0.0.2 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::92e2:baff:fe7b:b38%lagg0 prefixlen 64 scopeid 0xa
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: active
laggproto lacp lagghash l2,l3,l4
laggport: igb3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: igb2 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: igb1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: igb0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
FreeBSDネットワークチューニングガイドのアドバイスは、状況に応じて適用しています。(最大FDの増加に関するものなど、その多くは無関係です。)
TCPセグメンテーションオフロードをオフにしてみましたが、結果は変わりませんでした。
2番目のテストをセットアップするための2番目の4ポートサーバーNICはありません。4つの個別のインターフェースでのテストが成功したため、ハードウェアはどれも損傷していないと想定しています。3
私たちはこれらの道のりを前向きに考えていますが、どれも魅力的ではありません。
SMCのLACP実装がうまくいかず、新しいスイッチの方が優れていることを期待して、より大きくてより悪いスイッチを購入します。(HP 2530-24Gへのアップグレードは役に立ちませんでした。)FreeBSDの
lagg
設定をもう少し見つめて、何かを見逃したことを期待します。4リンク集約を忘れ、代わりにラウンドロビンDNSを使用して負荷分散を実行します。
サーバーのNICを交換して再度切り替えます。今回は、このLACP実験のハードウェアコストの約4倍で、10 GigEのものに交換します。
脚注
なぜFreeBSD 10に移行しないのですか?FreeBSD 10.0-RELEASEは引き続きZFSプールバージョン28を使用し、このサーバーはFreeBSD 9.3の新機能であるZFSプール5000にアップグレードされています。10 のxラインは、FreeBSDまで10.1船ことを得ることはありませんので、約一ヶ月を。そして、いいえ、これは本番サーバーであるため、ソースから再構築して10.0-STABLEの最先端に到達することはオプションではありません。
結論にジャンプしないでください。質問の後半のテスト結果から、これがこの質問の複製ではない理由がわかります。
iperf3
純粋なネットワークテストです。最終的な目標は、ディスクからその4ギガビット/秒の集約パイプを試行して埋めることですが、ディスクサブシステムはまだ関与していません。バギーやデザインの悪さは、多分、工場を去ったときと同じくらい壊れていません。
私はそれをすることからすでに目を見張っています。