ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

VPN ゲートウェイの性能評価

こんにちは。まほろば工房の浅間です。前回までのエントリーでは VPN ゲートウェイの基本的な使い方を紹介してきました。これらの構成で組んだネットワークではどれくらいの性能が出るものなんでしょう。第 8 回目の今回はこれまでの基本的な構成でネットワーク転送性能のベンチマークを取ってみたのでその紹介をしたいと思います。

※この記事は1年以上前に書かれたものです。 内容が古い可能性がありますのでご注意ください。また、執筆当時のサービス表記「ニフティクラウド」はニフクラに修正してあります。

ベンチマークの内容

まずどんなベンチマークを取ってみたかを、ざっと紹介します。大きく分類して以下の 3 パターンの構成でベンチマークを取ってみました。すべて IPsec VPN(L3 VPN) と L2TPv3/IPsec VPN(L2 VPN) の両方でベンチマークを実施しています。

  • ニフクラとオンプレ間の通信
  • 東西リージョン間の通信
  • ニフクラを Hub にしたオンプレ間の通信

一つ目の “ニフクラとオンプレ間の通信” はブログ・エントリーの “YAMAHA RTX1210 で単一拠点 IPsec VPN(L3 VPN)” と “YAMAHA RTX1210 で単一拠点 L2TPv3/IPsec VPN(L2 VPN)” で紹介した構成でニフクラ上のサーバとオンプレ側のサーバとの間でベンチマークをとりました。

二つ目の “東西リージョン間の通信” はブログ・エントリーの “東西リージョン間 IPsec VPN(L3 VPN)” と “東西リージョン間 L2TPv3/IPsec VPN(L2 VPN)” で紹介した構成で東西リージョンに置いたサーバ間でベンチマークをとりました。

三つ目の “ニフクラを Hub にしたオンプレ間の通信” はブログ・エントリーの “ニフクラを Hub にして IPsec VPN(L3 VPN)” と “ニフクラを Hub にして L2TPv3/IPsec VPN(L2 VPN)” で紹介した構成で 2 ヶ所のオンプレに接続したサーバ間でベンチマークをとりました。

ベンチマークを実施した環境としては以下の通りです。

IPsec の共通設定 暗号化アルゴリズム AES128
認証アルゴリズム SHA1
東日本リージョン ゾーン east-14
VPN ゲートウェイのタイプ medium
サーバタイプ e-small と small
サーバOS Ubuntu 14.04
西日本リージョン ゾーン west-12
VPN ゲートウェイのタイプ medium
サーバタイプ e-small と small
サーバOS Ubuntu 14.04
オンプレ側ネットワーク 回線 NTT 東日本フレッツ光ネクストギガファミリー・スマートタイプ(2 台の YAMAHA RTX1210 で共有して使用)
ISP ニフティ Bフレッツコース(ホーム) + 固定IPサービス
オンプレ側サーバスペック CPU Intel Pentium4 3.00GHz
メモリ DDR 400 MHz 2GB
NIC Intel 82541EI Gigabit Ethernet
OS Ubuntu 14.04

ベンチマーク試験はサーバ間で netperf コマンドを用いて行いました。 TCP での転送性能と UDP での 64, 128, 256, 512, 1024, 1280, 1518 バイト(FCS まで含めた Ethernet フレームのサイズ)での転送性能を測っています。

では結果を見ていきましょう。本来なら上にあげた順番の通り “ニフクラとオンプレ間の通信” から紹介していきたいところですが、ちょっと先に補足しておきたいことがあるので “ニフクラを Hub にしたオンプレ間の通信” から紹介します。

ニフクラを Hub にしてオンプレ間で通信した際のベンチマーク結果

ニフクラを Hub にしてオンプレ間で通信した際のベンチマーク結果のうち TCP での転送性能はこんな感じでした。

008_01

左側の “L3VPN” となっているものが IPsec VPN(L3 VPN) で 2 ヶ所のオンプレをニフクラに接続し、ぞれぞれに接続したサーバ間での TCP 転送性能です。

真ん中の “L2VPN” となっているものが L2TPv3/IPsec VPN(L2 VPN) で 2 ヶ所のオンプレをニフクラに接続し、それぞれに接続したサーバ間での TCP 転送性能です。

右側の “[参考]直結” となっているものはニフクラを介さず直接接続した際の TCP 転送性能です。

直結すると 420?427Mbps 程度の転送性能が出せるテスト環境ですが、 L3VPN 経由では 179?192Mbps、 L2VPN 経由では 125Mbps 程度という結果になりました。

つぎに UDP での性能はこんな感じでした。

“L3拠点1→拠点2″ と “L3拠点2→拠点1″ が IPsec VPN(L3 VPN) での試験で、”L2拠点1→拠点2″ と “L2拠点2→拠点1″ が L2TPv3/IPsec VPN(L2 VPN) での試験で、”直結拠点1→拠点2″ と “直結拠点2→拠点1″ がケーブルを直結させて測った結果になります。

008_02

まず目を引くのは UDP/1518B での結果がガクッと落ちている点だと思います。これは IPsec VPN(L3 VPN) も L2TPv3/IPsec VPN(L2 VPN) もどちらも 1518B の UDP/IP の Ethernet フレームがそのまま通すことができないため途中の RTX1210 でフラグメント処理を行っているためです。 IPsec VPN(L3 VPN) の場合は IP パケットをフラグメントする処理が発生し、 L2TPv3/IPsec VPN(L2 VPN) の場合は Ehternet フレームをフラグメントする処理が発生します。フラグメント処理とそれを元に戻すリアセンブル処理は結構重い処理となるためその分性能は悪くなります。

もうひとつ気になる点としては直結の方が悪くなっている場合がある(UDP/256B、UDP/512B が顕著です)という点があります。おそらくこれはオンプレ側のサーバスペックの限界なのではないかと思います。クラウドへ行って帰ってくるベンチマーク程度ならこれくらいのサーバスペックでも大丈夫かと思っていたのですが、まさかベンチマークを取るサーバ側がネックになるとは…。もしかしたらもっと良いサーバでベンチマークを取るともうすこし良い結果になったかもしれません…。

次はニフクラとオンプレ間でのベンチマーク結果をみてみましょう。

ニフクラとオンプレ間で通信した際のベンチマーク結果

まずは TCP の転送性能です。

008_03

TCP の転送性能は IPsec VPN(L3 VPN) の方がかなり良い結果となりました。ニフクラ側のサーバは e-small と small の 2 種類で試しているのですが、どちらも良かったり悪かったりでサーバのタイプによる性能の違いはこの試験からは確認できませんでした。

次に UDP の性能です。

008_04

008_05

IPsec VPN(L3 VPN) と L2TPv3/IPsec VPN(L2 VPN) 共に 1518B の UDP の Ethernet フレームのニフクラからオンプレに向けての性能が極端に悪い結果になりました…。どこで落としているのかまでは残念ながら確認できていないのですが、もしかしたら RTX1210 側でフラグメントされたパケットのリアセンブルがネックになっているのかもしれません。後述する通りニフクラ上のサーバの性能がかなり良いようなのでものすごく大量のフラグメントされたパケットが溢れているのかもしれません。

最後に東西リージョン間のベンチマーク結果です。

東西リージョン間で通信した際のベンチマーク結果

まずは TCP 性能から。

008_06

めちゃくちゃ良い結果になりました…。仮想化環境のはずなのにうちのサーバを直結させたのより 2 倍以上速いじゃないですか…。どうなってんの…。

008_07

008_08

UDP の転送性能もいままでと傾向がだいぶ異なっています。まず 1518B の性能がそこまで悪化していません。マシンの性能が良いのでフラグメントとリアセンブルの処理のコストの影響が小さくなっているのではないかと思います。

また他の試験では e-small と small の性能差がほとんど無視できる(誤差と思える?)程度でしたが、東西リージョン間での試験の場合 small のほうが性能が良い結果になりました。他のベンチマークではオンプレ側サーバの性能が悪かったり途中のネットワークが細かったりでそんなにマシンの性能の違いが現れなかったのが東西リージョン間はネットワーク帯域が太くてマシンの性能の違いが見えやすくなったということなのかもしれません。

まとめ

ごめんなさい。ちょっとなめてました。まさかオンプレ側に用意したサーバがボトルネックになるとは…。

逆に言うと VPN ゲートウェイの性能がボトルネックになることはなさそうな気がします。ニフクラとオンプレの間の回線にもよるんでしょうけどネットワークの性能が問題になることはほとんどないんじゃないかな。たぶん 100Mbps も出ればそんなに問題ないですよね?ファイルサーバとかだとオンプレのほうが速いみたいなことになるかもしれませんけど…。

また東西リージョン間のようなネットワーク帯域が十分に太いようなときはサーバのサイズによる違いも現れましたがオンプレとの通信ではサーバのサイズによる違いは(ネットワーク性能上は)あまり影響なさそうです。

あと大きいサイズのフレームの処理は性能劣化を招きます。もしかしたらサーバ側で iptables 等で TCP/MSS の値をちょっと小さめに書き換えるような処理をすると TCP の転送性能もちょっと上がったりしたのかなというのを後になって思いました。