2011-05-16

OpenVPNのスループット

By Taro Yamazaki  |  23:22

Optimizing performance on gigabit networks から。いつも有用な情報を提供してくれるJan Just Keijser氏のOpenVPN Users MLへの投稿をもとにまとめられています。

追記: こちらの記事の原文の日本語訳を「OpenVPNのスループットと最適化 - 1」と「OpenVPNのスループットと最適化 - 2」で取り上げています。詳細をご覧になりたい方はこちらもどうぞ。

詳細は上記サイトを参照していただくとして、要は「いい性能のPCを使ってGigabit上でOpenVPNをつないでみて、どこまでスループットを上げられるか実験してみよう!」ということです。OSはサーバー、クライアントともLinuxです。以下、結果を簡単にまとめるとこんな感じ(すべて計測値はiperfによるもので、プロトコルはUDPを使用しています)。
  • 標準設定(MTUやFragmentなどをいじらない&CipherはBlowfish)のOpenVPNスループットで156Mbps。Cipherをaes-256-cbcに変更すると 126Mbps。今回のPCのスペックでは標準のままで100Mbpsは超えます。この速度で十分というケースもありそうですね。
  • OpenVPNでMTUの設定値を大きくし、フラグメントを無効にするとスループットが上昇する。たとえばMTUを9000にすると 370Mbps、24000では 466Mbps、48000では 510Mbps。この値が最大で、これ以上MTUを増やすと速度は低下していく。 Cipherをaes-256にすると、MTUとスループットの相関性は低くなる(MTUを上げてもちょっとしかスループットが上がらない)。こんな大きいMTU設定したことない…。
  • AES-NIを使用すると速度がかなり向上する(当然、CipherをAESにしないと効果はありません)。たとえば、AES256でAES-NIを使用すると、MTUが9000なら 249Mbps→410Mbps に、24000なら 259Mbps→540Mbps に、48000では 247Mbps→585Mbps に上がります。これは相当なパワーアップですね。
  • OpenVPNの暗号化と署名を無効にした場合、 930Mbps というスループットに。Gigabitの範囲であればユーザー空間とカーネル空間の分離はパフォーマンスにそれほど影響せず(この結果によれば7%程度)、やはりOpenSSLによる暗号化と署名の処理がスループットに大きく影響することがわかる。
結論として、MTUサイズを大きくして、フラグメントを無効にすればスループットは大きく向上する、とのこと。ただし、当たり前ですが、MTUの設定値にネットワークの品質は密接に関わっていますので、ネットワーク構成に応じて設定する必要がありますね。

Author: Taro Yamazaki

© 2015 yamata::memo | Distributed By My Blogger Themes | Created By BloggerTheme9
TOP