VPC VPN接続のベンチマークをしてみた
VPCに接続可能で安価なデバイスが手元に集まってきたので、ベンチマークを取ってみた。
使用したルータ
以下の機器を使用しました。
- Netscreen 5GT (ottoさんで購入)
- Juniper SSG5(128MBモデル) (借用)
- YAMAHA RTX1100 (ottoさんで購入)
- Cisco 1812J (ottoさんで購入)
- FortiGate 50B (qpstudy08でottoさんにいただきました)
- Vyatta Core 6.3 (PCがルータになるOS/PCのスペックは CPU:AMD Opteron 185 2.6GHz)
※Vyattaのconfig作成には、id:kikumotoさんのVyatta(=>6.3) Configuration Generator for Amazon VPCを利用させて頂きました!詳しくはこちら。
測定方法
iperfを利用しました。
受信側コマンド : iperf -s
送信側コマンド : iperf -c ターゲットIP
こんな感じの出力が得られます(各3回実行し、平均の値を採用)。
(public IP経由での実行結果) $ iperf -c xxx.xxx.xxx.xxx ------------------------------------------------------------ Client connecting to xxx.xxx.xxx.xxx, TCP port 5001 TCP window size: 256 KByte (WARNING: requested 256 KByte) ------------------------------------------------------------ [ 3] local yyy.yyy.yyy.yyy port 51966 connected with xxx.xxx.xxx.xxx port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 101 MBytes 84.4 Mbits/sec
測定結果
考察
ほとんどのルータで、デフォルト設定ではVPCからLAN向けのスループットが低いです。これはVPCが生成するデフォルトのconfigがMTU=1500を前提にしているからで、そのままではフレッツ回線のMTU(東日本では1454)だとreassembleされるためでしょうか。ちゃんと計算するとするならば、Amazon VPCではAES+SHA1でESPでカプセリングしているため、
Path MTU = 1454 とすると、 カプセル化対象パケット長 = 1454 - 12(SHA1) - 16(AES) - 8(ESP) - 20 (IPv4) = 1398 AESでは16bytesごとのchunkで暗号化(あまった分はpaddingされる)らしく、 Tunnel MTU = int(1398/16)x16 - 2(Paddingされたバイト数+次のヘッダ番号1バイト) = 1390 Tunnel MSS = 1390 - 40 (IPv4 + TCP hedaer) = 1350
といった感じで求められるようです(間違ってたらご指摘ください)。実際に適用してみた所、1350を境にだいたいのルータでかなり向上しました。
(Vyattaはこの辺を見てiptablesで設定したのですが、適切な設定ができていない可能性もあります)
参考: http://www.nec.co.jp/ixseries/ix2k3k/faq/ipsec-ike.html#Q1-8
まとめ
回線が100Mbps程度であれば、それほど高価なルータでなくてもちゃんと性能が望めそうですね。
MSSの調整でCIFS共有へのファイルコピー等でもかなり回線速度を使いきれるようになりました。
(Windows7<-->Windows2008なのでSMB2で通信していると思われます)