IBM Cloud(Classic IaaS)のVSIにおけるネットワーク性能確認（1Gbps越え）

#はじめに

IBM CloudのClassic Infrastructure(VPCではない方）のport speedは100Mbpsと1Gbpsのオプションがあります。100Mbpsオプションは文字通り100Mbpsまでの制限がかかっているようですが、1Gbpsオプションは1Gbpsまでしか出ないのかというとそういう訳ではないようです。

実際、注文画面には、以下のように`non-rate limited`と書かれています。つまり、制限をかけていないということなのでしょう。
<img width="842" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/2e736447-8007-2807-335d-421c24bdb9ef.png">

[IBM Cloud docs](https://cloud.ibm.com/docs/vsi?topic=virtual-servers-configuring-network-performance)には以下のように書かれてあります。
>IBM Cloud™ Virtual Servers の帯域幅は、プロビジョニング・プロセス中に 100 Mbps の速度制限アップリンク・ポート速度を選択した場合にのみ制限されます。 プロビジョニング中に 100 Mbps の速度制限アップリンク・ポート速度を選択した場合、仮想サーバー・インスタンスの最大スループットは、仮想サーバー・ホストで使用可能な物理帯域幅によってのみ制限されます。 1 Gbps の速度制限なしのアップリンク・ポート速度でプロビジョニングする場合、追加の構成を行うことでより高いネットワーク・パフォーマンスを実現できます。

今回は、デフォルト設定（MTU=1500)での速度とJumbo Frame(MTU=9000)での速度を取得してみました。

#計測環境の準備

今回は、専有環境(dedicated)などは利用せず、以下の環境を2台、同一VLAN上に構築してみました。

- 共有サーバー（Public VSI)
- 4 vCPU | 8 GB RAM
- CentOS 7.x

また、計測ツールとして[iperf3](https://qiita.com/yokoc1322/items/bfd8b6e69d6bdb3bb1c6)を導入しておきます（最初はscpを使おうと思ってたのですが、ネットワークより先にcpuボトルネックになってしまったので断念。）

```
# yum install -y iperf3

```

#検証(デフォルトのMTU=1500の時）


- 本結果では、平均4.18 Gbps出ています。
- `# ip link set mtu 1500 dev eth0`が設定されています。
- 数回取得しましたがほとんどかわらないので、そのうちの１つをピックアップして載せています。
- パラレル実行は色々試してみましたが、総量としてあまり変わらなかったので、同時コネクション数=1の結果を載せています。
- デプロイされたサーバーにnoisy neighbourがあるかどうかや、物理的な近さなど、その他要因にも影響されるので、あくまで参考値として扱ってもらえると幸いです。

```
[root@centos01 ~]# iperf3 -c 10.193.37.170 --parallel 1
Connecting to host 10.193.37.170, port 5201
[  4] local 10.193.37.148 port 43626 connected to 10.193.37.170 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   579 MBytes  4.86 Gbits/sec    0   1.50 MBytes
[  4]   1.00-2.00   sec   502 MBytes  4.21 Gbits/sec  240    540 KBytes
[  4]   2.00-3.00   sec   425 MBytes  3.57 Gbits/sec   28    566 KBytes
[  4]   3.00-4.00   sec   494 MBytes  4.14 Gbits/sec   32    665 KBytes
[  4]   4.00-5.00   sec   461 MBytes  3.87 Gbits/sec   23    724 KBytes
[  4]   5.00-6.00   sec   509 MBytes  4.27 Gbits/sec  128    713 KBytes
[  4]   6.00-7.00   sec   524 MBytes  4.39 Gbits/sec  113    696 KBytes
[  4]   7.00-8.00   sec   519 MBytes  4.35 Gbits/sec   12    591 KBytes
[  4]   8.00-9.00   sec   459 MBytes  3.85 Gbits/sec   46    566 KBytes
[  4]   9.00-10.00  sec   509 MBytes  4.27 Gbits/sec   43    706 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  4.86 GBytes  4.18 Gbits/sec  665             sender
[  4]   0.00-10.00  sec  4.86 GBytes  4.18 Gbits/sec                  receiver

iperf Done.

```

#検証(デフォルトのMTU=9000の時）

- 本結果では、平均8.47 Gbps出ています。
- `# ip link set mtu 9000 dev eth0`が設定されています。
- 数回取得しましたがほとんどかわらないので、そのうちの１つをピックアップして載せています。
- パラレル実行は色々試してみましたが、総量としてあまり変わらなかったので、同時コネクション数=1の結果を載せています。
- デプロイされたサーバーにnoisy neighbourがあるかどうかや、物理的な近さなど、その他要因にも影響されるので、あくまで参考値として扱ってもらえると幸いです。

```
[root@centos01 ~]# iperf3 -c 10.193.37.170
Connecting to host 10.193.37.170, port 5201
[  4] local 10.193.37.148 port 43646 connected to 10.193.37.170 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   940 MBytes  7.88 Gbits/sec   97    883 KBytes
[  4]   1.00-2.00   sec  1.01 GBytes  8.67 Gbits/sec   68   1.37 MBytes
[  4]   2.00-3.00   sec  1.00 GBytes  8.60 Gbits/sec  165   1.25 MBytes
[  4]   3.00-4.00   sec  1008 MBytes  8.45 Gbits/sec    0   1.62 MBytes
[  4]   4.00-5.00   sec  1.02 GBytes  8.77 Gbits/sec    0   1.81 MBytes
[  4]   5.00-6.00   sec  1.00 GBytes  8.63 Gbits/sec  169   1.44 MBytes
[  4]   6.00-7.00   sec  1.01 GBytes  8.68 Gbits/sec   97   1.22 MBytes
[  4]   7.00-8.00   sec   932 MBytes  7.83 Gbits/sec  108   1.41 MBytes
[  4]   8.00-9.00   sec  1.01 GBytes  8.65 Gbits/sec   69    996 KBytes
[  4]   9.00-10.00  sec  1018 MBytes  8.53 Gbits/sec    7   1.61 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  9.86 GBytes  8.47 Gbits/sec  780             sender
[  4]   0.00-10.00  sec  9.86 GBytes  8.47 Gbits/sec                  receiver

iperf Done.

```