SoftLayer「グローバル高速ネットワーク」のパフォーマンス計測

SoftLayerには、「グローバル高速ネットワーク」を無償で利用できる、という特長があります。たとえば、[第25回 iSUC札幌大会の公開資料](http://www.slideshare.net/kkitase/softlayer-basic)の20ページには、まさにSoftLayerの特徴は「グローバル高速ネットワーク」と「ベアメタルサーバ」である、と記載されています。

グローバルに展開している企業のプライベートネットワークとしてSoftLayerのネットワークを活用できることは非常に魅力的です。そこで今回は、実際に拠点間ネットワークのパフォーマンスを計測してみることにしました。

##構成

ここでは、日本に本社がありASEAN地域に進出している製造業などの企業がグローバル会計やグローバルサプライチェーンのしくみをつくるためにネットワークを活用する、というケースを想定します。しかしSoftLayerの国内リージョンは近日中に公開(*注1)とのことですので、ここでは香港のサイトに対してシンガポールから接続する、という構成とします。また、比較対象の外部連携先としてAWSを使用します。

※注1: SoftLayerの東京リージョンはまさに本日公開されました！

シンガポールと香港、およびAWSのシンガポールにそれぞれサーバを立てます。なお、SoftLayer内部は拠点をまたいだプライベートネットワークを構成するために[VLANスパニングの設定](http://www.creationline.com/lab/6134)を行っておきます。

この構成で、以下の3つの組み合わせで接続します。

* 接続a: SoftLayerシンガポール→SoftLayer香港 (Public IPに紐付いたDevice Nameを指定)
* 接続b: SoftLayerシンガポール→SoftLayer香港 (Private IPを指定)
* 接続c: AWSシンガポール→SoftLayer香港 (Public IPに紐付いたDevice Nameを指定)

![構成](https://qiita-image-store.s3.amazonaws.com/0/21963/f6e30dc2-7468-53c2-835c-92a659a9112d.png)

##計測項目

具体的な計測項目として、以下の3つのコマンドを実行しました。

1. ping
2. tracepath
3. iperfによるデータ転送

接続a〜cに対してそれぞれ3項目の計測を行い、その結果を[a-1]〜[c-3]と表します。なお、それぞれについて平日夜間に複数回の計測を行いましたが、傾向に変化はありませんでしたので、ここでは典型的な1回の結果を記載しています。

##1. Ping

Pingでは以下のコマンドを実行します。

```bash
$ ping -c 1 server-name
```
結果です。

* [a-1] 34.4ms
* [b-1] 34.5ms
* [c-1] 39.1ms

SoftLayer内ではpublic IPでもprivate IPでも特に違いはありませんでした。外部から接続した場合のみ14%程度レスポンスが悪い結果となっています。

##2. tracepath

Pingではpublic IPとprivate IPでは差異がほとんどありませんでしたが、実際に経路に違いはあるのでしょうか?

以下のように経路を表示させてみましょう。(細かいアドレスやサーバ名、サブドメイン名などは伏せ字にしてあります)

```bash
$ tracepath server-name
```

* [a-2]

```shell-session
[root@xxxx ~]# tracepath server-name
 1:  server-name                                           0.064ms pmtu 1500
 1:  xx.xx.xx.xx-static.reverse.softlayer.com              1.178ms 
 1:  xx.xx.xx.xx-static.reverse.softlayer.com              0.616ms 
 2:  xxxx.xxxx.xxxx.sng01.networklayer.com                 0.383ms 
 3:  xxxx.xxxx.xxxx.sng02.networklayer.com                 0.547ms 
 4:  xxxx.xxxx.xxxx.hkg01.networklayer.com                80.874ms 
 5:  xxxx.xxxx.hkg02.networklayer.com                     34.291ms 
 6:  xxxx.xxxx.hkg02.networklayer.com                     33.827ms 
 7:  xx.xx.xx.xx-static.reverse.softlayer.com             34.450ms reached
     Resume: pmtu 1500 hops 7 back 58
```

* [b-2]

```shell-session
[root@xxxx ~]# tracepath server-private-ip
 1:  xxxx                                                  0.075ms pmtu 1500
 1:  xx.xx.xx.xx                                           0.512ms 
 1:  xx.xx.xx.xx                                           0.753ms 
 2:  10.xx.xx.xx                                           0.532ms 
 3:  10.xx.xx.xx                                           0.750ms 
 4:  no reply
 5:  no reply
 6:  no reply
 7:  10.xx.xx.xx                                          34.350ms asymm  8 
 8:  10.xx.xx.xx                                          33.930ms asymm  9 
 9:  xx.xx.xx.xx                                          34.721ms reached
     Resume: pmtu 1500 hops 9 back 55 
```

* [c-2]

```shell-session
[ec2-user@ip-xx-xx-xx-xx ~]$ tracepath server-name
 1?: [LOCALHOST]     pmtu 9001
 1:  ip-xx-xx-xx-xx.ap-southeast-1.compute.internal (xx-xx-xx-xx)   0.200ms pmtu 1500
 1:  ec2-xx-xx-xx-xx.ap-southeast-1.compute.amazonaws.com (xx-xx-xx-xx)   0.743ms 
 2:  203.83.223.xx (203.83.223.xx)                          0.870ms 
 3:  203.83.223.xx (203.83.223.xx)                          1.683ms 
 4:  203.83.223.xx (203.83.223.xx)                          3.071ms 
 5:  no reply
 6:  xxxx.xxxx.xxxx.asianetcom.net (61.14.xx.xx)            3.353ms asymm 13 
 7:  xxxx.asianetcom.net (202.147.xx.xx)                    2.931ms 
 8:  xxxx.xxxx.xxxx.hkg01.networklayer.com (xx.xx.xx.xx)   37.574ms asymm 10 
 9:  xxxx.xxxx.hkg02.networklayer.com (xx.xx.xx.xx)        38.618ms asymm 10 
10:  xxxx.xxxx.xxxx.networklayer.com (xx.xx.xx.xx)         37.227ms asymm 11 
11:  xx.xx.xx.xx-static.reverse.softlayer.com (xx.xx.xx.xx) 38.945ms reached
     Resume: pmtu 1500 hops 11 back 53 
```

Whois情報を参考にしながら考察します。[a-2]で経由しているnetworklayer.comはIBM(SoftLayer)の持ち物である一方、[b-2]で経由している10.*.*.*はプライベートネットワークのアドレスです。結局のところ、いずれもSoftLayerから外には出ていないことを示唆しています。これがpingの結果(publicでもprivateでも結果に差異がないこと)の理由かもしれません。

なお、AWSからSoftLayerに接続する際はasianetcom.netを経由しているようですが、これはPacnetの国際回線です。

##3.iperfによるデータ転送

最後に、iperfで実際にデータを転送してみます。なお、SoftLayerのCentOS、AWSのAmazon Linuxともiperfは標準で入っていませんので、[repoforge](http://pkgs.repoforge.org/iperf/)からyumでインストールしました。

まず接続される側(SoftLayer香港サイトのサーバ)で以下のコマンドを実行し待機します。

```bash
$ iperf -s -w 128K
```

次に、接続する側でそれぞれ以下のコマンドを実行し、60秒のデータ転送のスループットを計測します。

```bash
$ iperf -c <server> -t 60 -i 10 -w 128K
```

* [a-3] 転送量: 214 MBytes (スループット: 29.9 Mbps)
* [b-3] 転送量: 213 MBytes (スループット: 29.8 Mbps)
* [c-3] 転送量: 195 MBytes (スループット: 27.2 Mbps)

この結果でもやはり、public IPとprivate IPとで差異はありませんでした。一方、外部から転送した場合は9%程度スループットが悪化しています。

##結論

SoftLayerのネットワークに関するping、tracepath、iperfによる計測の結果を要約すると以下の図のようになります。

![計測結果サマリ](https://qiita-image-store.s3.amazonaws.com/0/21963/1fa17c3b-1869-a6f7-2a74-4979639efab7.png)

この結果は以下のことを示唆しています。

* SoftLayerのpublic IPとprivate IPのいずれも拠点間ネットワークはSoftLayer (NetworkLayer)の経路に閉じており、パフォーマンスに差異はない。
* Softlayer内の拠点間でデータ転送した場合と外部サーバからデータ転送した場合、シンガポール-香港間では10%前後の性能の差異が見られる。

これらの特性は、グローバルで拠点間接続を行う案件でSoftLayerを採用すべき理由のひとつになるのではないでしょうか。