4. 高速なスループットと高い性能 - SoftEther VPN プロジェクト

4. 高速なスループットと高い性能

    4.1. 高度に最適化された VPN 処理モジュール

    SoftEther VPN には C 言語で厳密に記述された高度に最適化された VPN 処理モジュールがコア部分に実装されています。現代の広帯域インターネット接続を十分活用することができるようにするため、最高のパフォーマンスを発揮することができるような現代的なデザインによるアーキテクチャになっています。

    比較

    レガシーな VPN プロトコル、例えば L2TP や PPTP は骨董品のようなプロトコルである PPP (Point to Point Protocol) から派生しています。PPP は電話回線のような細い帯域の回線でパケットを伝送する目的で設計されています。これは現代の高速なインターネット回線での利用に適していません。

    筑波大学において 2006 年に行われた実験の結果によると、SoftEther VPN のスループットは Microsoft PPTP VPN と比較して 4 倍高速でした。また、OpenVPN と比較して 13 倍高速でした。既存の多くの VPN プロトコルおよびその実装は、高スループットを実現するために十分洗練されている訳ではありません。

    SoftEther VPN がこれほど高速な理由は何か ?

    SoftEther VPN は高パフォーマンスを実現することを目標に開発されています。他の VPN は単にセキュリティ目的を実現するためだけに開発されました。SoftEther VPN はセキュリティだけでなくパフォーマンスを向上することも目標として開発されましたので、VPN 処理のアーキテクチャが大幅に異なっています。

    メモリコピーの頻度の削減

    メモリ内容をコピーする作業はいつもプログラムの動作速度を低下させることにつながります。SoftEther VPN は 1 個の VPN パケットを処理する際におけるメモリコピーの回数を減らすために慎重に開発されました。

    MTU 問題の解決

    コンピュータは MTU (Maximum Transmission Unit) としてデフォルトで 1,514 場合を使用します。なぜならば、これが Ethernet における FCS を除くパケットサイズであるためです。そして事実上、VPN 経由で伝送されるパケットの MTU サイズを容易に調整することは不可能です。

    IPsec、PPTP および L2TP などのレガシーな VPN プロトコルは、Ethernet の MTU 値との親和性があまり良くありません。これはレガシーな VPN がパケットを物理的な回線に流す際においてデータグラムパケットを用いる際の制限から生じる「MTU 問題」と呼ばれる深刻な問題です。

    コンピュータが Ethernet セグメントを経由して最大サイズのパケット (1,514 バイト) を伝送しようとするとき、最大のスループットを実現することができます。しかし、コンピュータ間にレガシーな VPN が存在する場合、パフォーマンスは半分になってしまいます。1 個パケットは MTU 問題のため、2 パケットに分割されてしまいます。総転送パケット数が増大することは、総スループットを低下させることにつながります。

    理想的には、この問題は Path MTU Discovery プロトコル、および両拠点のすべてのノードにおける適切な設定によって解決されるべきです。しかし Path MTU Discovery プロトコルは実際のネットワークではうまく機能しません。そして適切な MTU 設定をネットワーク上のすべてのコンピュータに設定することはとても難しいことです。

    レガシー VPN と比較して、SoftEther VPN はトンネリングの仕組みとしてストリームを採用しました。SoftEther VPN は VPN トンネルを経由して大量のパケットを送信しようとするとき、1,514 バイト単位でできるだけ詰め込むように最適化を行います。SoftEther VPN はブロック全体を HTTPS および SSL でカプセル化し、物理ネットワーク上に送り出します。この過程においてほとんど総送信パケット数は増加しません。この巧みな方法により、良好なパフォーマンスを実現しているのです。

    4.2. 複数トンネルを用いた並列伝送による高速化

    ファイアウォール、プロキシおよび NAT を簡単に通過することができるようにするため、SoftEther VPN は物理的な伝送に HTTPS プロトコルを採用しています。しかし HTTPS は TCP ベースであり、TCP は酷いパケットロスおよびパケット遅延が発生する環境では速度があまり出ません。

    そこで SoftEther VPN は HTTPS プロトコルに追加の拡張を行いました。これは「並列伝送メカニズム」と呼ばれています。ユーザーは同時並列伝送の数を 1 から 32 までの間で設定できます。特に低速で遅延の大きなネットワーク上で VPN を利用する場合に、このパフォーマンスのチューニング手法により良好なスループットを得ることができます。

    この機能が有効な場合、単一の論理的な VPN セッションは複数本の TCP (HTTPS) コネクションによって構成されていることになります。すべてのパケットは最適化モジュールによって計算された最適な TCP コネクションに追加されます。もし論理的な VPN セッションの中の 1 つの TCP コネクションでパケットロスが検出された場合は、その次のパケットは別の健康な TCP コネクションを経由するようになります。このような、TCP コネクション間の高速スイッチングによる最適化が高いスループットを実現しています。

     

    4.2.jpg

    遅延が大きいネットワーク上におけるスループットを向上させるため、
    1 本の論理的な VPN セッションは複数本の TCP コネクションによって構成されています。

     

    ss4.2.jpg

    1 本の論理的な VPN セッションを構成する TCP コネクションの本数を指定することができます。

    4.3. ファイアウォールの目を欺くため普通の HTTPS 通信を偽装

    現代における一部の高性能のファイアウォールは、ファイアウォールを通過する TCP コネクションの異常な挙動を検出することができます。そのようなファイアウォールがネットワークとインターネットとの境界上に設置されていた場合は、SoftEther VPN による VPN セッションは異常な TCP コネクションとして識別され、ファイアウォールによって切断されてしまう危険性があります。これは信頼性があり安定した VPN セッションを維持するためのリスクとなります。

    SoftEther VPN は HTTPS プロトコルを活用して VPN 内部を流れるパケットをトンネリングしますが、デフォルトでは HTTPS/TCP コネクションは双方向の通信となります。通常の HTTPS の挙動においては、1 本の TCP コネクションが確立されてから終了するまでの間の送信方向と受信方向の切り替わりの回数は HTTP 1.1 の RFC に基づき 15 回が最大となっています。SoftEther VPN がトンネリング目的で単一の HTTPS/TCP コネクションを使用すれば、送信・受信方向の切り替わりの回数は 15 回をすぐに超過してしまいます。このような状況は通常の HTTPS では絶対に発生しません。そのため、賢いファイアウォールはステートフルパケットインスペクション機能によりこのような HTTPS セッションを切断してしまいます。

    異常なコネクションとして検出されてしまうリスクを避けるため、SoftEther VPN は 2 種類の手法を有しています。まず、SoftEther VPN は 1 本の論理的な VPN セッションを構成する複数の TCP コネクションを 2 個のグループに分離することができます。1 個目のグループは送信方向のみ、2 個目のグループは受信方向のみです。このとても簡単なトリックは、異常な挙動として検出されることを避けることに役立ちます。もう一つの手法として、SoftEther VPN は各 TCP コネクションの生存の有効期限を設定することができるようになっています。ファイアウォールは長すぎる期間維持されている TCP コネクションを異常なコネクションとして検出し切断してしまう場合があります。その前に、SoftEther VPN は TCP コネクションを自主的に切断し、新しいコネクションを確立するのです。

    この 2 つのメカニズムは、VPN セッションがステートフルパケットインスペクション機能を有するファイアウォールによって異常な挙動として検出されてしまうことを防止するのに役立っています。

     

    4.3.jpg

    1 本の論理的な VPN セッションは、多数の TCP コネクションによって構成されています。
    各 TCP コネクションに短い生存時間を設定することができます。
    通信の経路上にあるファイアウォールは、それらを VPN セッションとして検出することができなくなります。

    4.4. 仮想 NAT および仮想 DHCP サーバー機能

    VPN Client の使用する IP アドレスをプールから自動的に払い出すためには、Ethernet セグメント上に DHCP サーバーを設置することが最良の方法です。しかし、もし Ethernet セグメント上に DHCP サーバーを設置するための追加コストを支出したくないのであれば、代替の方法として仮想 HUB 内に仮想 DHCP サーバーをセットアップすることもできます。仮想 DHCP サーバーは本物の DHCP サーバーと同様にサービスを提供します。機能はそれほど豊富ではありませんが、標準的な DHCP サーバー機能を利用することができます。

    同様に仮想 NAT 機能も仮想 HUB に実装されています。この機能は本来ローカルブリッジを使用すべきであるけれども何らかの理由で使用できない場合で、かつ物理的な LAN に対して仮想 HUB 側からアクセスしたい場合に役立ちます。仮想 NAT 機能はコンピュータのユーザーモードで動作し、いかなるカーネルモードドライバにも依存しません。したがって、もし SoftEther VPN Server をシステム管理者権限が使用できないようなシステムにインストールする場合であっても、仮想 NAT を使用すれば物理的なネットワークへのアクセスを実現できます。

    仮想 NAT 機能は一時的な利用や緊急時の利用など、限定された目的のために実装されていることに注意してください。日常的な業務目的において利用することは推奨されていません。

    仮想 NAT および仮想 DHCP サーバー機能を組み合わせたものが「SecureNAT」として仮想 HUB に実装されています。

     

    ss4.4_2.jpg

    仮想 NAT および仮想 DHCP サーバー機能の設定画面。

     

    ss4.4_1.jpg

    仮想 NAT & DHCP サーバー機能の仮想 IP インターフェイスのプロパティの設定画面。

    4.5. QoS のサポート

    VoIP パケット等の高優先度パケットを扱うために、QoS (Quality of Service) 機能がサポートされています。同一の VPN 内において大量のダウンロードトラフィックが流れている場合でも、VoIP の音声パケットを高い優先度で鮮明に伝送するために QoS 機能を有効にすることができます。

    4.6. 遅延、ジッタおよびパケットロスの生成機能

    SoftEther VPN の仮想 HUB はパケットの遅延、ジッタおよびパケットロスを生成することができます。これは、品質が低い環境の物理ネットワークをエミュレーションするために使用できます。この機能はネットワーク設計者が実験室内においてもしネットワークに遅延、ジッタまたはパケットロスが発生したらどのようになるかという実験を行う際に便利です。

     

    ss4.6.jpg

    遅延・ジッタ・パケットロス生成機能。

    4.7. クラスタリング

    SoftEther VPN Server はクラスタファームを構成することができます。すなわち、2 台またはそれ以上のコンピュータに SoftEther VPN Server をインストールすれば、それらがグループ化し、仮想的に 1 台の VPN Server を構成します。

    ロードバランシング (負荷分散)

    複数台の VPN Server を用いてクラスタを構築した場合、VPN Client からのすべての VPN セッションは VPN クラスタメンバ間に分散されます。これがロードバランシング機能です。もしロードバランシングがなければ、1 個の VPN Server にはせいぜい 1,000 本程度の VPN 接続しか処理できません。しかしロードバランシングを利用すれば、ハードウェアの能力に余裕がある限り 10,000 本以上の VPN 接続を処理することができます。

    フォールトトレランス (耐障害性)

    VPN クラスタ内においてハードウェアトラブルによりメンバサーバーの機能が停止してしまった場合は、当該 VPN サーバーに接続していたすべての VPN セッションはその他の健全な VPN サーバーに自動的にリダイレクトされます。これはユーザーまたはシステム管理者による特別な操作なしに実行できます。

     

    ss4.7_1.jpg

    1 個の VPN クラスタは複数個のクラスタメンバである VPN Server によって構成されています。

     

    ss4.7_2.jpg

    クラスタの構築は簡単です。GUI 設定画面だけで完了します。

    4.8. 完全な IPv6 のサポート

    SoftEther VPN は IPv6 をサポートしています。VPN 内を流れる IPv6 パケットに対してセキュリティや管理のための機能、たとえばパケットフィルタリングやセキュリティポリシーを適用することができることはもちろん、VPN セッションを構成するための物理的なトンネルの通信を IPv6 インターネット上に構築することもできます。

    たとえば、電話会社などの一部の ISP は IPv6 の広域ネットワーク通信のみに対応しています。このような状況では、SoftEther VPN セッションを IPv6 バックボーン・ネットワーク上に構築することにより、その VPN トンネル内で IPv4 を含む任意の Ethernet パケットを送受信することができます。

    SoftEther VPN を使用すると、IPv4 on IPv4、IPv4 on IPv6、IPv6 on IPv4 および IPv6 on IPv6 を容易に構築することができます。

     
    ss4.8_1.jpg
     
    仮想 HUB は IPv4 と IPv6 を完全に解釈することができます。
     
    ss4.8_2.jpg
    IPv4 と同様、IPv6 のパケットフィルタルールを仮想 HUB 上に定義することもできます。

    4.9. 物理回線および VPN で使用可能な通信スループット測定ツール

    SoftEther VPN にオマケとして付属している通信スループット測定ツールを使用すれば、VPN 上で、または物理的なネットワーク上でどの程度のスループットが出るかどうか調査することができます。このツールを使用すれば、スループット測定用の製品を購入する必要はありません。
     

    ss4.9_1.jpg

    通信スループット測定ツールは、物理的または仮想的なネットワークの性能評価に便利です。

     

    ss4.9_2.jpg

    通信スループット測定ツールの計測結果画面の例。