私が理解しているように、ボンディングには、LAN内の2台のマシン間のネットワーク速度を向上させることができるという利点があります。
結合[...]は、複数のネットワークインターフェイス(NIC)を単一のリンクに結合し、高可用性、負荷分散、最大スループット、またはこれらの組み合わせ。
出典: buntuのドキュメント 、私のものを強調
2つのサーバーでボンディングを構成しています。両方に2つの1GbpsがあるNICアダプター。これらのサーバー間の速度をテストするとき iperf
を使用 、レポートは次のように示します。
balance-rr
ボンディングモードを使用する場合は、930〜945 Mbits/sec。802.3ad
を使用する場合、マシンAからBへの520〜530メガビット/秒802.3ad
を使用する場合、マシンBからAへの930〜945 Mビット/秒。興味深いのは、802.3ad
を使用する場合、ifconfig
は、実質的にすべてのRX
がeth0
(2.5 GB対数KB/MB)およびすべてのTX
on eth1
on machine A、およびその逆がmachineB。
複数の接続(iperf -c 192.168.1.2 -P 10
)を使用するようにiperf
に要求すると、取得された合計は、単一の接続を使用した場合に表示される結果に非常に近くなります。
2つのマシンが、LACPが適切に構成されている(私はそう思います)Netgear GS728TSに接続されており、2つのLAGがそれぞれ2つのポートをカバーしています。 IEEE 802.3xモードが有効になっています。
iperf
はこの種のテストに適していますか?はいの場合、何か不足していますか?
Netgearサポートに連絡した後、次のように思われます。
2つのステーション(1つのクライアント/ 1つのサーバー)を使用する場合、実際には1つのリンク(つまり1Gbps/940mbps)のみを使用し、使用されるリンクはLACPハッシュアルゴリズムによって決定されます。
1Gbpsの制限を超えるには、複数のクライアントでテストする必要があります。
出典:Netgearサポートチケットの応答
同じチケット応答 Netgearの公開フォーラム投稿へのリンク 、ここでそれを読むことができます:
LACPハッシュアルゴリズムが複数のトラフィックストリームを異なるパスに配置する場合にのみ2Gbpsの集約を取得できますが、常にそうであるとは限りません。クライアントの数が少ない場合(この場合は2つ)、両方が同じリンクにハッシュされる可能性が高いです。
フォーラムの議論全体を読みたくない人のために、ここに重要なポイントがあります:
LACPを利用するには、サーバーに接続するクライアントが2つ以上必要です。単一のクライアントは1つのリンクのみを使用するため、その速度は1 Gbpsに制限されます。
LACPを活用するには、2つのクライアントが異なるリンクを使用している必要があります。
サーバーにネットワークアダプターが2つしかない場合、50%の確率で2つのクライアントから同じリンクが取得され、その結果、合計速度は1 Gbpsに制限されます。 3つのネットワークアダプターは、確率を33%、4〜25%に減らします。
結論として、Netgear GS728TSを使用して2つのマシン間で1.4〜1.8 Gbpsの速度を得る方法はありません。
結合されたインターフェイスは、個々のネットワークフローに追加の帯域幅を付与しません。したがって、iperfのコピーを1つだけ実行している場合は、一度に1つのネットワークインターフェイスしか使用できません。 2つのNIC= in a laggがある場合、コンピューターで実行されているiperfの少なくとも2つの完全に独立したコピーが、同時使用率を確認するために必要になります。これは、実際の負荷にも適用されます。例: Sambaクライアントは1Gbのスループットしか表示しませんが、ラグに2つのNICがある場合、2つのクライアントはそれぞれ1Gbを表示できます。これはすべて、両方のNICを使用するようにラグが構成されていることを前提としています(802.3adオプションはこれを行います)。
このQ&AはLACPとの結合を理解するのに非常に役立ちましたが、約1.8Gb/sのスループットを確認する具体的な例はありません。私にとってこれを検証することが重要でしたので、私がそれをテストした方法を共有します。
@ ChrisSが彼の回答で述べたように、iperfの完全に独立したコピーを実行することが重要です。これを実現するには、2つのクライアントを使用してlacp-serverに接続します。 lacp-serverでは、2つの画面ウィンドウ/セッションでiperfの独立したインスタンスを実行するためにscreenを使用しています。また、接続ごとに異なるポートを使用することで、独立したデータストリームを確保しています。 LACPをサーバーに結合するスイッチは、TP-LINK T1600G-52TSです。すべてのデバイスでDebian 10(Buster)を使用します。 2つのテストクライアントは、スイッチのポートに接続されています。最初にscreen内でlacp-serverでiperfをサーバーモードで2回起動し、次にクライアントで実行しました同時に(sshを使用):
iperf --time 30 --port 5001 --client lacp-server # first test client
iperf --time 30 --port 5002 --client lacp-server # second test client
最初の接続のlacp-serverでの結果は次のとおりです。
lacp-server ~$ iperf -s -p 5001
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.10.11 port 5001 connected with 192.168.10.69 port 44120
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-30.0 sec 2.99 GBytes 855 Mbits/sec
2番目の接続の場合:
lacp-server ~$ iperf -s -p 5002
------------------------------------------------------------
Server listening on TCP port 5002
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.10.11 port 5002 connected with 192.168.10.80 port 48930
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-30.0 sec 3.17 GBytes 906 Mbits/sec
これは合計で855Mb/s + 906Mb/sの帯域幅です= 1.761Mb/s。
@ ArseniMourzenkoは彼の答えに言及しました:
サーバーにネットワークアダプターが2つしかない場合、50%の確率で2つのクライアントから同じリンクが取得され、その結果、合計速度は1 Gbpsに制限されます。 3つのネットワークアダプターは、確率を33%、4〜25%に減らします。
これを確認するためにテストを10回以上繰り返しましたが、常に約1.8Gb/sの帯域幅を取得しているため、これを確認できません。
インターフェースの統計は、その使用がバランスが取れていることを示しています。
lacp-server ~$ ip -statistics link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
3088 30 0 0 0 0
TX: bytes packets errors dropped carrier collsns
3088 30 0 0 0 0
2: eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
39231276928 25845127 0 0 0 916
TX: bytes packets errors dropped carrier collsns
235146272 3359187 0 0 0 0
3: eno2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
36959564721 24351697 0 0 0 60
TX: bytes packets errors dropped carrier collsns
267208437 3816988 0 0 0 0
4: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
69334437898 50196824 0 4253 0 976
TX: bytes packets errors dropped carrier collsns
502354709 7176175 0 0 0 0
3つのテストクライアントを使用すると、次の結果が得られます。
参照:
リンク集約とLACPの基本
LACPボンディングとLinux構成
LinuxイーサネットボンディングドライバーHOWTO
RedHat-チャネルボンディングの使用