OpenVPNのスループットは、[1] サーバーとクライアントのスペック、[2] 使用している回線、[3] OpenVPNの設定値、の3つの要素が主に関係します。
サーバーとクライアントのスペック
OpenVPNでは通信の暗号化や署名処理をCPUを使って行うため、特にVPNサーバーのスペックがスループットに直接影響を与えます。高いスループットを出したい場合は、できるだけ高いスペック(CPU)のPCをVPNサーバーにすると良いでしょう。また、AES-NIが使用できる場合にはさらにスループットの向上が期待できます。
OpenVPNの暗号化/署名処理はOpenSSLをベースにしているため、OpenSSLの処理速度とOpenVPNのスループットは大きく関係します。OpenSSLには処理速度を測定するためのコマンドラインオプションがありますので( openssl speed
)、この測定結果も重要な手がかりになります。
使用している回線
VPNサーバーのスペックや設定によっては、VPNスループットが200~400Mbps程度になることもあります。回線そのもののスループットがこれを下回る場合はトラフィックのスループットがその上限で頭打ちになりますので、高速かつ安定した回線を使用することも大切です。
また、使用する回線の品質は、OpenVPNの設定で使用するMTUの値にも影響を与えます。回線の安定性が高ければOpenVPN設定で高いMTUを設定することが可能になり、高いスループットを引き出せる余地が出てきます。しかし、回線の品質が低い場合は、MTUの値をあまり高く設定できません(回線の品質に対してMTUの設定値が高すぎると、VPN通信が断続的に途切れるなどの問題が出ます)。
OpenVPN設定
スループットに影響を与える可能性のある設定は、暗号化や署名の方式(cipher/authディレクティブ)、MTUやフラグメントなどのネットワークパラメータ(tun-mtu、mssfix、fragmentディレクティブなど)、AES-NIなどの拡張設定(engineディレクティブ)などです。また、OpenVPNで使用するプロトコルをprotoディレクティブで指定できますが、TCPはUDPよりも大幅にスループットが低下します。
OpenVPNのスループットやOpenSSLの処理速度については、OpenVPN MLの中でJan Just Keijser氏が測定結果を報告してくれています。非常に有用な情報なので、スループットの向上を目指すときには一読をお勧めします。
- Re: [Openvpn-users] Scalability – OpenSSLの測定結果について(日本語での要約はこちら)
- Optimizing performance on gigabit networks (日本語訳はこちら[1]とこちら[2])