なぜかバッファロー様のBSL-WS-G21M
の 8port インテリジェント L2 HUBがある。
QNAPの2個のGigaNICとIntel PRO/1000 PT Dual Port Server Adapter(2個のGigaNIC)を繋げてみた。
まあー単一ファイルの転送で1Gbps以上の転送速度は出なかった。。。多少期待したけど。。。
っで、2port NIC、4port NICを持つマシン側から見て対外を対象に トータルで2Gbps、4Gbpsは出るのだろうが、

1つのファイル転送が2Gbps、4Gbpsになる訳ではないみたい。

windows8.1とwindows2012R2とでも確かめてみたけど、、まぁー同じく2Gbps、4Gbpsにはならなかった。まあーそうゆうものなのだろう。
ここではLinuxマシン(CentOS6)でbonding(802.3ad)によるファイル転送速度を調べてみた。
Intel PRO/1000 PT Dual Port Server Adapterを持つPCのネットワーク設定は下記とした。
まずホスト名とかデフォルトGWとか
[root@e ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=e.chaperone.jp
GATEWAY=192.168.0.1
[root@e ~]#そしてbondingの設定
[root@e ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.0.17
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System bond0"
BONDING_OPTS="mode=4 xmit_hash_policy=0"
[root@e ~]#留意 複数のNICが平等に使用されていないなら xmit_hash_policy=1の値を変更する
そしてこのbond0の構成員となる eth0 と eth1 を定義します。
[root@e ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NM_CONTROLLED=no
ONBOOT=yes
HWADDR=00:15:17:8E:E2:44
UUID=6dc320fe-258a-4080-a1e7-8c0d473e9d0e
TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
NAME="System eth0"
MASTER=bond0
SLAVE=yes
[root@e ~]#
[root@e ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
NM_CONTROLLED=no
ONBOOT=yes
UUID=c3e9a74a-8914-4aa6-923d-749509766bf6
HWADDR=00:15:17:8E:E2:45
TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
NAME="System eth1"
MASTER=bond0
SLAVE=yes
[root@e ~]#ってな感じにして、
[root@s ~]# chkconfig NetworkManager off
[root@s ~]# rebootとします。再起動後にbondingは有効になっていて、ifconfigの値は
[root@e ~]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:15:17:8E:E2:44
inet addr:192.168.0.17 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::215:17ff:fe8e:e244/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:259 errors:0 dropped:0 overruns:0 frame:0
TX packets:505 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:28551 (27.8 KiB) TX bytes:67015 (65.4 KiB)
eth0 Link encap:Ethernet HWaddr 00:15:17:8E:E2:44
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:225 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:24757 (24.1 KiB) TX bytes:2948 (2.8 KiB)
Interrupt:16 Memory:f0760000-f0780000
eth1 Link encap:Ethernet HWaddr 00:15:17:8E:E2:44
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:477 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3794 (3.7 KiB) TX bytes:64067 (62.5 KiB)
Interrupt:17 Memory:f0720000-f0740000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@e ~]#となっている。っで、bond0の設定状況は、
[root@e ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 17
Partner Key: 1
Partner Mac Address: b0:c7:45:e6:01:de
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:15:17:8e:e2:44
Aggregator ID: 1
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:15:17:8e:e2:45
Aggregator ID: 1
Slave queue ID: 0
[root@e ~]#またethtoolでは
[root@e ~]# ethtool bond0
Settings for bond0:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Speed: 2000Mb/s
Duplex: Full
Port: Other
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Link detected: yes
[root@e ~]#と確認できる。
8port インテリジェント L2 HUBのBSL-WS-G21Mは、ブラウザでアクセスしてポートトランク設定で
全ポートでLACPを有効にした。

*LACPモードをManualで、一つでもトランクグループを作るとLACPモードが無効になるみたい
bondingデバイスからEthernetデバイスへのデータ転送を検証してみた。

こんなデータの流れになる。検証にはepelのiperf3パッケージを使用した。
計測はまず、データの受け口となる c101 と c102 ホストにて下記の様に待ち受けモードを作る
[root@c101 ~]# iperf3 -s -p 5201
[root@c102 ~]# iperf3 -s -p 5202そしてデータ転送側の e ホストから下記コマンドをそれぞれ別のターミナルで連続して実行する。
[root@e ~]# iperf3 -c c101 -p 5201 -t 30
[root@e ~]# iperf3 -c c102 -p 5202 -t 30転送状況は e ホストの bond0 デバイスを iftop コマンド(iftop -i bond0)にて確認した。

転送速度は半分の値であった。っで、別の測定アプリとして nmap-ncatパッケージ のnc コマンドでテストを行った。
受信側
[root@c101 ~]# nc -l 11111 > /dev/null
[root@c102 ~]# nc -l 11112 > /dev/null送信側
[root@e ~]# dd if=/dev/zero bs=1073741824 count=4 | nc -v 192.168.0.101 11111
[root@e ~]# dd if=/dev/zero bs=1073741824 count=4 | nc -v 192.168.0.102 11112結果、

とほぼ全速。
って逆方向をテスト。

パケット発信元は c101 と c102 サイトで、その両方からの通信を e サイトが受け取る。
下記コマンドをそれぞれ別のターミナルで実施する。
[root@e ~]# iperf3 -s -p 5201
[root@e ~]# iperf3 -s -p 5202次に、c101 と c102 からデータを送信する
[root@c101 ~]# iperf3 -c e -t 30 -p 5202
[root@c102 ~]# iperf3 -c e -t 30 -p 5201受け側となる e サイト bond0 デバイスは下記の様に記録される。

NFSサーバにこのIntel PRO/1000 PT Dual Port Server Adapter(2port NIC)を挿して検証してみた。
NFSとして拠出しているパーティション(/home)のHDD速度をddコマンドを使って計測してみた。
[root@nfs ~]# dd if=/dev/zero of=/home/zero1 bs=1G count=10 conv=fsync
10+0 records in
10+0 records out
10737418240 bytes (11 GB) copied, 42.1407 s, 255 MB/s
[root@nfs ~]#ローカルで255 MB/s(2,040 Mbps)ほどある。
次に/homeをnfsエキスポートして、マウントしたマシンから計測してみると
[root@n1 ~]# dd if=/dev/zero of=/home/zero1 bs=1G count=10 conv=fsync
10+0 レコード入力
10+0 レコード出力
10737418240 バイト (11 GB) コピーされました、 108.195 秒、 99.2 MB/秒
[root@n1 ~]#とGigaネットの帯域上限に差し迫る 99.2 MB/秒(793.6 Mbps)であった。
Bondingを施したNFSサーバに2台から同時に書き込みを掛けてみた
[root@n1 ~]# dd if=/dev/zero of=/home/zero1 bs=1G count=10 conv=fsync
10+0 レコード入力
10+0 レコード出力
10737418240 バイト (11 GB) コピーされました、 98.1811 秒、 109 MB/秒
[root@n1 ~]#
[root@e ~]# dd if=/dev/zero of=/home/zero2 bs=1G count=10 conv=fsync
10+0 records in
10+0 records out
10737418240 bytes (11 GB) copied, 99.2049 s, 108 MB/s
[root@e ~]#となり、bondingで109 MB/秒(872 Mbps)、108 MB/s (864 Mbps)を維持した。
NFSサーバでのiftop画面は下記のようになった。

Bondingしたethを十分に使っているようだ。
っで、ここで注意。2枚のNICがそれぞれ bonding させたnicと相対するようにxmit_hash_policyの調整/確認は忘れずに行いましょう。
そうでないと半分の50MB/secほどの速度しか出せなくなります。
次に逆のバターン。上記はクライアントからNFSサーバへの書き込みであった。その逆の読み込みの場合だと
*同じディレクトリ先を同時に読めなくて、別のディレクトリにしてます
[root@n1 ~]# dd if=/home/zero1 of=/dev/null conv=fsync
dd: `/dev/null' に対する fsync に失敗しました: 無効な引数です
20971520+0 レコード入力
20971520+0 レコード出力
10737418240 バイト (11 GB) コピーされました、 91.2692 秒、 118 MB/秒
[root@n1 ~]#
[root@e ~]# dd if=/home/a/zero2 of=/dev/null conv=fsync
dd: fsync failed for `/dev/null': 無効な引数です
20971520+0 records in
20971520+0 records out
10737418240 bytes (11 GB) copied, 91.7697 s, 117 MB/s
[root@e ~]#となって、
