Linux OpenVPN 高速化チューニング

OpenVPNで通信速度に影響する下記設定について検証。
udp or tcp
・comp-lzo の有無
tcp-nodelay の有無(tcpのみ)
・mssfix、fragment のチューニング

mssfix … カプセル化されるTCPパケットのサイズ制限(デフォルト値:1450)
fragment UDPで接続するときのカプセル化されるパケットのサイズ制限
tun-mtu … tunデバイスを使用する場合のMTUサイズの制限(デフォルト値:1500)
※tun-mtuも変更可能だが、1500以下にすると「mssfix、fragmentを指定する場合はtun-mtuは1500にしろ」という
 ワーニングが接続時に出るので、そのままとした

※各パラメータについて:https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
※パケットサイズのチューニングは下記が参考になる
https://wiki.archlinux.jp/index.php/OpenVPN#Fragment_.E3.81.A8_MSS_.E3.81.AB.E3.82.88.E3.82.8B_MTU_.E3.81.AE.E8.A8.AD.E5.AE.9A

検証1 ローカル接続

・通信経路
 ノートPC <-> (無線LAN OpenVPN接続)
  <-> OpenVPN仮想サーバ <-> (KVM ブリッジ接続)
   <-> Web仮想サーバ
・ダウンロードするファイル
 158MB の 映像ファイルのHTTPダウンロードにかかった時間を5回測定して中央値を採用
接続オプション ダウンロード時間(中央値)
直接ダウンロード 15秒
tcp接続 オプションなし 18秒
tcp接続 comp-lzo 19秒
tcp接続 tcp-nodelay 22秒
tcp接続 mssfix:1280 19秒
tcp接続 comp-lzo mssfix:1280 tcp-nodelay 25秒
udp接続 オプションなし 16秒
udp接続 comp-lzo 16秒
udp接続 mssfix:1280 fragment:1280 17秒
udp接続 comp-lzo mssfix:1280 fragment:1280 16秒
udpの方が速く、直接ダウンロードと比べてもほとんどオーバーヘッドが無い
・tcp-nodelay が無い方がなぜか速い
・comp-lzo は速度にあまり影響しない(映像ファイルなので圧縮の余地がないから?)
・tun-mtu等は速度にあまり影響しない(ローカル接続だから?)

検証2 インターネット接続

測定タイミングによって速度が変わるため、定量的な測定ができなかった。