AWSと1GbpsでインターネットVPN接続してデータ移行性能を計測してみた (NetApp FAS -> CVO) 

#背景と結論
自社でオンプレとAWS, GCP, Azureを接続してハイブリッド・マルチクラウド環境を構築し、利用しています。この接続にインターネットVPNを使っていますが、そこそこ安くて高速な回線だったのでクラウドへのデータ移行速度を計測しました。

転送元：
　　NetApp京橋オフィスに設置したNetApp FAS8040 (SSD 400GB x24本, ONTAP 9.1)
転送先：
　　AWS TokyoリージョンのEC2インスタンス上で動作しているCVO (Cloud Volumes ONTAP 9.9.0) 
　　EC2インスタンスはm5.xlarge(4core 16GB)、EBSはgp2とsc1の2種類で試しました。
ネット回線：
　　Nuro アクセス スタンダードプラン(法人向けインターネット接続サービス)
　　下り2Gbps/上り1Gbpsで月額2万円程度。
　　(https://biz.nuro.jp/service/internet/standard/)
ルーター：
　　Yahama RTX1210
コピーツール：
　　NetApp XCP v1.6.2

- **結論から書くと、上り(AWSへのアップロード)で約70～90MB/s(560-720Mbps)の性能が出ました。(2021年4月時点)**
24時間で6TB以上のデータを転送できます。

- netperfツールのように土管の太さを測るのではなく、実際にデータを転送して対向のストレージまで書き込んでいます。このスピードが出れば帯域保証型の高価な回線を使わなくてもほとんどのワークロードはカバーできるかと思います。

- 測定は24時間継続して行ったり時間帯別や曜日別の転送レートも数値化できれば良かったのですが、日常的に遅く感じることが無いことと、性能測定を目的とした長時間の回線利用はネット回線の約款に記載された禁止事項に当たる場合があるので短時間(10秒程度)で試しました。

- 今回は回線がデータ移行のボトルネックになりましたが、AWSと10Gbpsの閉域網で接続したテストも実施済みです。10GbpsではCVOが動作するEC2インスタンスがボトルネックになるので、インスタンスタイプやEBSボリューム構成を何種類か変更してテストした以下の記事もご参照ください。
    - ■10GbpsでAWSとDirect Connect接続し、NetApp FASからクラウド(CVO)へのデータ移行性能を測ってみた  
https://qiita.com/kan_itani/items/1898ddd3b05e8d0fae50


#目次
1. オンプレミスのラボ環境
2. 利用しているインターネット回線とルーター
3. AWSとのVPN接続手順
4. テストパターンと結果
5. 考察・雑談
6. 関連情報

前置きが少し長いので、とりあえず結果だけ知りたい方は「4. テストパターンと結果」に飛んでご覧ください。

#1. オンプレミスのラボ環境
検証内容に応じて、以下の3つのパターンを使い分けています。

###(1) 踏み台サーバ経由のラボ利用
Windowsの踏み台サーバにRDP通信のみ許可し、その踏み台サーバがグローバルIPとプライベートIPの両方に足を延ばす構成です。プライベートIPのセグメントにいる仮想サーバやストレージがインターネットへ通信する際は、ソースNATされて通信できますが、インターネットから直接アクセスできるのは踏み台サーバのみです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/2f84f188-19d5-158b-7017-8611c9aa54b6.png)

###(2) IPマスカレードによるポートフォワード
グローバルIPアドレスのポート番号によって、通信先のプライベートIPを使い分ける方法です。
通信要件が変わると設定変更を入れるのに少し手間がかかるので、あまりこの構成は利用していません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/c6ba42ca-2da0-8ebf-27ea-280f29255d4a.png)

###(3) インターネットVPNによる接続
お客様環境のラボや、AWS/Azure/GCPの環境とサイトtoサイトのVPNで接続する方法です。
(1)のWindows踏み台サーバ構成とこのVPNを同時に構成する事も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/61ada123-fb99-7cd8-0e22-bf9a416972ad.png)

#2. 利用しているインターネット回線とルーター

###インターネット回線
以下のNuro光回線を利用しています。
デフォルトで固定のグローバルIPが一つ付属しますが、固定IPアドレスオプションを申し込んでIPを8個増やしています。(ネットワークアドレスとブロードキャストで-2なので実質6個。)

https://biz.nuro.jp/service/internet/standard/

ネットワーク構成は以下の通りです。`ルータ1`と書かれているところに後述するYamaha RTX1210を配置し、DMZ上にVLANを複数切って異なる検証を同時に行えるようにしています。グローバルIPとVLANは1対1で割り当てており、グローバルIPへのアクセスはルータ側で制限しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/df67c5d9-a0be-7e72-8ccc-e1d1eba5482d.png)


###ルーター機種
ルーターはYahama RTX1210を使っています。機能に不満や不足を感じることもなく、メーカーの技術サポートのレベルも高いのでお勧めします。また、インターネットVPNでスループット不足を感じることもありません。AWSとのVPN接続ではルーターのconfigをAWSのGUIからダウンロード出来たり、Azureの場合はYamahaホームページに設定手順や例が充実しているので困ることがありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/c82d795d-a9a1-b0a8-184f-708c2b3ea67d.png)

上記の絵のように複数のVLANで環境を分離し、それぞれのVLANから異なるクラウド/オンプレ環境にVPN接続しています。また、以下のようなネットワーク構成にして各クラウドにVPNを張り、マルチクラウドで環境を使い分けることも可能です。
　192.168.66.0/24 - オンプレミス
　172.16.0.0/16 - AWS
　172.17.0.0/16 - Azure
　172.18.0.0/16 - GCP

Yamahaルーターのスペック等は以下をご確認ください。
https://network.yamaha.com/products/routers/rtx1210/spec

#3. AWSとのVPN接続手順
- AWSとオンプレ環境をインターネットVPNのSite to Site(IKEv2)で接続する手順  
https://qiita.com/kan_itani/items/2959f049525d3778e1b8  

https://qiita.com/kan_itani/items/2959f049525d3778e1b8


- Azureとの接続手順は以下に記載しています。  
https://qiita.com/kan_itani/items/0cda4479b61d543c8dde

#4. テストパターンと結果
###テストパターン
CVOのインスタンス：　m5.xlarge固定
EBS：gp2 (SSD) ／ sc1 (Cold HDD)
　※ CVOに割り当てるデータ用EBSは、1アグリゲートにつき1つにしています。
　※ gp2は500GB、SC1は1TBの容量で作りました。

移行元のデータの種類によって性能差があるかどうかも比較したかったので、ファイルサイズも2パターンでテストしています。

平均ファイルサイズ：
　小 (50KBytes/file)
　大 (100MB以上/file)

###テスト結果
割り当てたEBSはバーストクレジットが十分残っている状態でテストしています。
ここでの「転送レート」は、CVOのsysstatのNet Inの値の中央値を記載しています。

|No.| インスタンス | 回線速度 |EBS構成(gp2 or sc1)|ファイルサイズ|転送レート(bytes/s)| CPU使用率(CVO) | Disk Util |備考|
| :-- | :-- | :-: | --: | :-:| --: | --: | :-: |:-: |
|(1)|m5.xlarge|1Gbps|gp2 500GB x1|小|80-100MB/s|35-55%|10%以下|回線ネック (10G回線を使った際はさらに性能が出たため。)|
|(2)|m5.xlarge|1Gbps|gp2 500GB x1|大|70-90MB/s|30-40%|10%以下|同上|
|(3)|m5.xlarge|1Gbps|sc1 1TB x1|大|10-25MB/s|10-25%|0-7%|sc1の作成直後は極端に遅かった|
|(4)|m5.xlarge|1Gbps|sc1 1TB x1|大|90-100MB/s|33-49%|100%|DISK utilが高い。|
|(5)|m5.xlarge|1Gbps|sc1 1TB x1|小|70-110MB/s|40-62%|100%|EBS DISKネック (10G回線に変えてもおそらくこれが上限)|

今回は短時間のテストでしたが、長時間実施するとEBSのバーストクレジットが無くなって本来のそのEBSサイズに応じたベース性能まで落ちるので、注意が必要です。

500GiBのgp2の場合：
　バースト　3000iops　(3000 x IOブロックサイズ=転送レート)
　ベース　　1500iops
1TiBのsc1の場合：
　バースト　80 MiB/s
　ベース　　12 MiB/s
*参考：https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html*

以下にCVOのsysstat結果を記載しますが、CVOのDISK Writeの値を見るとgp2の場合はCPのタイミングで大量のWriteを短時間で処理できていますが、sc1の場合は多少のブレはありますが、均すと80,000KB/s程度の性能になっていることが確認できます。

#####(1) m5.xlarge(1Gbps, gp2 500GB x1, ファイルサイズ小)

- CVOのsysstat
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/c7327a24-a059-2546-3635-8bcada92c55f.png)
- XCPデータ移行ツールの結果
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/db21645d-5462-b253-9c78-ab8f2fbda5e7.png)

#####(2) m5.xlarge(1Gbps, gp2 500GB x1, ファイルサイズ大)
- CVOのsysstat
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/85cba3d2-4861-e4bb-e607-ecfcaf800d88.png)
- XCPデータ移行ツールの結果
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/f706184a-564f-d003-1f04-3a8364c6928f.png)

#####(3) m5.xlarge(1Gbps, sc1 1TB x1, ファイルサイズ大)
- CVOのsysstat
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/97844f65-bad5-937f-d38a-a9ca23d8ccf6.png)
- XCPデータ移行ツールの結果
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/7d210a96-23f8-9819-6f97-a5554c957a0d.png)

#####(4) m5.xlarge(1Gbps, sc1 1TB x1, ファイルサイズ大)
- CVOのsysstat
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/89d15e96-04db-a0b0-bcb8-53b2dc0e6eca.png)
- XCPデータ移行ツールの結果
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/8159ca59-72d2-2131-61be-9d5fe2a7d16d.png)

#####(5) m5.xlarge(1Gbps, sc1 1TB x1, ファイルサイズ小)
- CVOのsysstat
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/64801089-7919-7f86-43c5-5281adb85a7b.png)
- XCPデータ移行ツールの結果
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/b7f48797-a0e5-da73-2b2e-63d715145f0f.png)

#5. 考察・雑談
- 1Gbpsの回線を使ってオンプレミスからのCloud Volumes ONTAPにデータ転送する場合はm5.xlargeのインスタンスで十分であることがわかりました。
    - 余談ですが、もしこのm5.xlargeのCVOを本番切り替えして使う場合には、データはそのままでインスタンスタイプの変更も可能です。CVOの管理UIのCloud Managerから操作することでスペックアップできます。

- 今回の検証におけるボトルネックは回線とEBSストレージ(sc1)でした。CVOのCPUにはまだ余裕がありました。

- EBSストレージにgp2で1TBのサイズを切り出せば、バーストクレジットを気にすることなく常に最大性能を出せますが、多少高くなります。

- sc1 (Cold HDD)のベーススループットは非常に低いのですが、バーストクレジットを使い切らない範囲でのデータ転送であれば検討の余地があるかと思います。あるいはsc1を10TiB以上を切り出せば、ベーススループットで1Gbps(≒120MiB/s)を出せるようになります。
    **(但しブロックサイズが大きいwriteである必要があります。)**
【Amazon EBSボリュームの種類】
(https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/7ff84cfe-4b19-aeb9-7890-ee0a8475e62f.png)

- GB単価では最近はS3よりもsc1のほうが安くなっているので、ある程度大きなデータを扱うことがわかっていれば、sc1という選択肢もアリかと思います。(ランダムI/Oは弱いですが、バックアップ用途のI/Oには向いています)

- 今回はテストしませんでしたが、st1 (スループット最適化HDD)を3TiB以上切り出すことでバーストクレジットを気にすることなく1Gbpsの性能を出すことができるようになります。
【Amazon EBSボリュームの種類】
(https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001215/c7357433-30e4-267e-cdeb-4e853eb08a46.png)

- 今回は回線が1Gbpsで細いためデータ用のEBSストレージを1つだけ切り出してテストしましたが、10GbpsのDirect Connect経由の検証では複数のEBSをRAID-0で構成したテストも実施しています。単一EBSボリュームとは異なった性能特性が見えてきたので、こちらの記事もご覧ください。(「6.関連記事」を参照)
 
- 月2万円の回線とYamahaルータがあれば、簡単にハイブリッド環境を作ることができます。

- AWSから課金されるVPN接続料金は0.48ドル/時間で、8時間でも4ドル弱、24時間x7日間利用しても81ドル程度です。Azureと異なり、回線速度別の課金体系は見当たりません。
(https://aws.amazon.com/jp/vpn/pricing/)

- 今回はデータ移行を主目的として検証しましたが、本来のハイブリッドクラウド環境としての使い方もできますので、この検証環境に興味のある方はNetApp社かそのパートナー様までご連絡ください。環境をお貸し出しいたします。

- 「こんなテストも実施してみてほしい！」というご要望があれば、記事のコメントまでご連絡ください。

#6. 関連記事
(1) 10GbpsでAWSとDirect Connect接続し、NetApp FASからクラウド(CVO)へのデータ移行性能を測ってみた
https://qiita.com/kan_itani/items/1898ddd3b05e8d0fae50

(2) EBSのバースト性能について
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html

(3) XCPを使ったオンプレ to オンプレデータ移行性能(rsyncとの比較)
https://www.storage-channel.jp/blog/nfs-small-file.html

(4) Nuroアクセススタンダード回線
https://biz.nuro.jp/service/internet/standard/

(5) AWSとのVPN接続料金
https://aws.amazon.com/jp/vpn/pricing/

(6) Yamahaルータ
https://network.yamaha.com/products/routers/rtx1210/spec

(7) AWSとのVPN接続手順
(今後追記予定)

(8) AzureとのVPN接続手順
https://qiita.com/kan_itani/items/0cda4479b61d543c8dde

(9) XCPデータ移行ツールについて
（追記中）