2011-05-20

[OpenVPN TIPS] TCPを使用する場合のスループット

By Taro Yamazaki  |  21:00 No comments

OpenVPNのプロトコルとしてTCPを使用する場合、UCPに比べてパフォーマンスがかなり低下します。理由はこちら(日本語訳はこちら)に説明されていますが、TCPの信頼性を高めるための仕組みがネックになってしまうことが原因です。
そのため、OpenVPNをUDPで使用するほうが高いスループットを期待できます。しかし、ネットワーク構成上(ファイアウォールで許可されていない場合など)、UDPが使用できない場合もありますよね。



OpenVPNをTCPで使用する際には、tcp-nodelayディレクティブを使用すると速度が向上する可能性があります。OpenVPNのmanページにあるこのディレクティブの説明には以下のように書かれています。
このマクロを使用すると、サーバー側でTCP_NODELAYソケットフラグがセットされ、接続してきたクライアントにプッシュされます。TCP_NODELAYフラグはTCPソケット上でのNagleアルゴリズムを無効にし、細かいパケットを大きなパケットにまとめずに即時に送るようにします。TCP上でのVPNアプリケーションでTCP_NODELAYを使用すると、たいていの場合はレイテンシーの向上が見込めます。
ディレクティブの書き方は簡単で、サーバー側の設定ファイルに
tcp-nodelay
と一行書き加えるだけです。

公開されている実際の測定結果によると、UDPのスループットには達しないものの、UDPと通常のTCPのちょうど真ん中ぐらい(またはそれより少し速いぐらい)のスループットが出るようです。

OpenVPNをTCPで使用しておられる方は一度お試しを。

Author: Taro Yamazaki

0 コメント:

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