OpenVPNでsambaが遅い場合に高速化する方法

サーバ

OpenVPNでsamba経由の通信が遅い場合の対処法です。

今回はMTUの値を調整するため、fragment、mssfixオプションを使用して解決します。

スポンサーリンク

MTUとは

MTUとは、(Maximum Transmission Unit)の略でネットワークで一回に送信できるデータの最大サイズのことを指します。

ネットワークを流れるパケットは、MTUで定められた最大サイズに分割して送信されます。
送信側のサイズよりも受信側のサイズが小さいと受信できず、受信側のMTUに合わせて再分割されたうえで再送信されます。
この再分割時に通信エラーや通信速度の遅延が起こります。

OpenVPNではMTUで定められた値に加え、OpenVPN用のヘッダーが付加されます。

そのため、パケットサイズ+OpenVPNヘッダーサイズがMTUを超えない様に設定し、エラーや遅延を起こりにくくします。

MSSとは

MSSとは、最大セグメントサイズ(Maximum Segment Size)のことです。TCP通信において一回に受信できるデータの最大サイズを指します。

MSSは、MTUからTCP/IPヘッダーの40バイトをマイナスした値となります。

MSS = MTU – 40

サーバー側の設定

CentOS7にて。

通常の設定に加え、以下の項目を追加します。

編集ファイル /etc/openvpn/server.conf

tun-mtu 1500
fragment 1300
mssfix

tun-mtu: tunデバイスのMTUサイズ(デフォルト:1500)
fragment: UDPパケットのサイズ制限
mssfix: UDPパケット(カプセル化後)のサイズ制限(デフォルト:1450)

tun-mtu

tunデバイスのMTUサイズを指定します。(デフォルト値:1500)。

デフォルトの1500で動作させておき、MTUの調整にはfragmentオプションやmssfixオプションを使用することが推奨されています。

fragment

UDPパケットの最大サイズを指定します。環境に応じて最適なMTU値を調べて記載します。

fragmentオプションはUDPプロトコル(–proto udp)を使用している場合にのみ有効です。

mssfix

OpenVPNでは、MTU値を元にMSSという値を設定する必要があります。MSSの設定にはmssfixを使用します。

MSSとは、OpenVPNによるカプセル化後、トンネル上を流れるUDPパケットの最大サイズのことです。(デフォルト値:1450)。

fragmentオプションとmssfixオプションを同時に使用する場合、mssfixはfragmentから自動的にパラメータを取得します。

そのため、fragmentと同時に使用する場合、mssfixに値を設定する必要はありません。

クライアント側の設定

通常の設定に加え、以下の項目を追加。つまり、サーバー側と設定を合わせるということ。

注意点として、クライアント側のアプリがfragmentに対応していない場合は記載しないこと。iphoneやAndroidのOpenVPNアプリなどが該当します。

編集ファイル C:\Program Files\OpenVPN\config\client.ovpn

または

編集ファイル C:\Program Files\[Username]\OpenVPN\config\client.ovpn

tun-mtu 1500
fragment 1300
mssfix

コメント

タイトルとURLをコピーしました