ケーブルが届いたので、10GBaseの実力をテストしてみた

さて、やっと機材が揃ったので、10GBase ネットワークのテストをやってみた。

ファイバーだと割と安いのがあるのだけど、 SFP+ のトランシーバが必要なのでその分高くなっちゃうし、 RJ-45 で 10G 対応しているトランシーバは更にいいお値段なのでね…。

[From Linuxサーバ用に10GBase NICを調達した - Soukaku's HENA-CHOKO Blog]

機材調達に時間かかっちゃたのは、主にケーブル周り。
最初、 DAC ケーブルを注文していたのだけど、それ自体届くまでに時間かかったのと、届いたのでいざ NIC に挿そうとしたら、どうもコネクタの形状の問題で刺さらない。仕方がないので、10GBase-SR用のトランシーバと SC-SC な光ファイバケーブル(マルチモード OM3 のもの)を注文し直して、それが届くのを待っていた次第。
#それ以外にも、バタバタしててテストしたりする時間が取れなかった、というのもあったりするんですけどね。

実測に向けて準備

実測するにあたって、以下のような構成にしてみた。

Hacintosh である T5810 に NB-INT-X520DA1-S 、 Optiplex に Mellanox MCX211A-XCAT を搭載。これに関しては、ハードウェアとして認識されていることを事前に確認済みなので、それぞれに宅内ネットワークで普段使ってない IP アドレスレンジ(今回は 192.168.0.0/24 を使用)のアドレスを設定。その後、T5810 と OptiPlex をファイバケーブルで直結した、という流れ。
測定ツールには、 iperf3 を使用。トラフィックのデータは、 Zabbix で採れるようにということで、それぞれに zabbix-agent をインストールして、監視対象として設定も行っておきました。


まず、 T5810 に搭載した NB-INT-X520DA1-S の認識状況。

[soukaku@siegfried|~]$ ifconfig en3
en3: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 9000
options=42b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4,CHANNEL_IO>
ether 1c:fd:08:72:d6:58
inet6 fe80::47c:7f28:99dd:438a%en3 prefixlen 64 secured scopeid 0x7
inet 192.168.0.101 netmask 0xffffff00 broadcast 192.168.0.255
nd6 options=201<PERFORMNUD,DAD>
media: 10Gbase-SR <full-duplex,flow-control>
status: active
[soukaku@siegfried|~]$ networksetup -getmedia en3
Current: 10Gbase-SR <full-duplex flow-control>
Active: 10Gbase-SR <full-duplex flow-control>

こちらが、 OptiPlex3020 に搭載した MCX311A-XCAT の認識状況。

root@debian:~# ip address show dev enp1s0
3: enp1s0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether f4:52:14:84:7c:10 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.201/24 scope global enp1s0
valid_lft forever preferred_lft forever
inet 169.254.173.19/16 brd 169.254.255.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::f652:14ff:fe84:7c10/64 scope link
valid_lft forever preferred_lft forever
root@debian:~# ethtool enp1s0
Settings for enp1s0:
Supported ports: [ FIBRE ]
Supported link modes: 1000baseKX/Full
10000baseKR/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: 1000baseKX/Full
10000baseKR/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: off
Port: FIBRE
PHYAD: 0
Transceiver: internal
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000014 (20)
link ifdown
Link detected: yes

どちらも、 MTU は 9000 を指定してあります。

さぁ、実測です

で、実際にちゃんと 10Gbits/s とは言わなくても、それに近いところまでトラフィックが出るのか、ということで前述したとおり iperf3 を使って実測してみた。
iperf3 は、 OptiPlex 3020 をサーバとなるように -s オプション付きで起動、 T5810 がクライアントとなるようにしてテストを実施しています。

まずは、サーバである OptiPlex 3020 に対してアップロードとなる場合の結果。

[soukaku@siegfried|~]$ iperf3 -c 192.168.0.201
Connecting to host 192.168.0.201, port 5201
[ 5] local 192.168.0.101 port 56780 connected to 192.168.0.201 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 688 MBytes 5.76 Gbits/sec
[ 5] 1.00-2.00 sec 696 MBytes 5.84 Gbits/sec
[ 5] 2.00-3.00 sec 611 MBytes 5.13 Gbits/sec
[ 5] 3.00-4.00 sec 582 MBytes 4.87 Gbits/sec
[ 5] 4.00-5.00 sec 574 MBytes 4.83 Gbits/sec
[ 5] 5.00-6.00 sec 576 MBytes 4.83 Gbits/sec
[ 5] 6.00-7.00 sec 588 MBytes 4.94 Gbits/sec
[ 5] 7.00-8.00 sec 626 MBytes 5.25 Gbits/sec
[ 5] 8.00-9.00 sec 577 MBytes 4.84 Gbits/sec
[ 5] 9.00-10.00 sec 576 MBytes 4.82 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 5.95 GBytes 5.11 Gbits/sec sender
[ 5] 0.00-10.00 sec 5.95 GBytes 5.11 Gbits/sec receiver

iperf Done.

1Gits/s は超えているので、 10GBase としては動作していますが、5Gbit/s で頭打ち。

逆に、サーバ側からダウンロードとなるよう、 -R オプション付きで実行した場合。

[soukaku@siegfried|~]$ iperf3 -c 192.168.0.201 -R
Connecting to host 192.168.0.201, port 5201
Reverse mode, remote host 192.168.0.201 is sending
[ 5] local 192.168.0.101 port 56785 connected to 192.168.0.201 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 1.15 GBytes 9.89 Gbits/sec
[ 5] 1.00-2.00 sec 1.15 GBytes 9.89 Gbits/sec
[ 5] 2.00-3.00 sec 1.15 GBytes 9.89 Gbits/sec
[ 5] 3.00-4.00 sec 1.15 GBytes 9.90 Gbits/sec
[ 5] 4.00-5.00 sec 1.15 GBytes 9.89 Gbits/sec
[ 5] 5.00-6.00 sec 1.15 GBytes 9.89 Gbits/sec
[ 5] 6.00-7.00 sec 1.15 GBytes 9.89 Gbits/sec
[ 5] 7.00-8.00 sec 1.15 GBytes 9.89 Gbits/sec
[ 5] 8.00-9.00 sec 1.15 GBytes 9.89 Gbits/sec
[ 5] 9.00-10.00 sec 1.15 GBytes 9.89 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 11.5 GBytes 9.90 Gbits/sec 0 sender
[ 5] 0.00-10.00 sec 11.5 GBytes 9.89 Gbits/sec receiver

iperf Done.

こちらは、ほぼ規格の上限値と同じぐらいとなる 9.9Gbit/s が出ています。
まぁ、アップロード方向で規格近くまで出ないのは、ちょっと気になるけど、実用上は問題ない感じですかね。

とりあえず、 iperf3 のオプションに並列実行オプション( -P / --parallel )があるので、それを色々と試してみたところ、 4 並列で実行するとダウンロード方向でも 9.9Gbit/s までトラフィックがわかったので、

[soukaku@siegfried|~]$ for i in {1..3} ; do iperf3 -c 192.168.0.201 -P 4 -t 3300; sleep 300; iperf3 -c 192.168.0.201 -P 4 -t 3300 -R; sleep 300; done

という感じで、55 分間トラフィックをかけて 5 分休憩というのを 3 回繰り返すというのを実行してみた。
下のグラフは、その繰り返し実行していた際に Zabbix で取得していた Linux 側のトラフィックデータをグラフ化したもの。

こちら見ても、約 10Gbit/s が継続的に出ているのですけど、Mac → Linux 方向の 3 回目で、大きくトラフィックが落ち込んでいるところがあるのが、ちょっと謎。実際の実用上は問題はないと思うのだけど…。

同様に Mac 側で取得していたデータのグラフが以下のもの。

こちらは、Linux → Mac 方向のデータが全く取れてないようで、グラフとして描画されてないという…。とはいえ、ちゃんと通信ができているわけで、実害がないのですけど、一時的なトラフィックの落ち込みの事も含めて気にはなりますね。おそらく Mac 側の NIC ドライバ(SmallTreeIntel8259x.kext)に原因があるんだろうなぁというのは想像できるんですがねぇ…。う〜ん。

というわけで、10G 環境は作れそうなのがわかったのだけど、対応するスイッチの入手とかまでは手が回ってないので、実際に使うまでにはもう少し時間がかかりそうです。

トラックバック(0)

コメントする