2014/12/08

IPsec VPN利用時の、最適なMTU


#以下、IP MTUをMTUと表記しています。

たとえば、出力インタフェースが、

PPPoEとかを使わない場合(MTU 1500):1420
B Fletsの場合(MTU 1454):1374
よくわからない場合(MTU 1454未満も想定):1350

この値を、自身が使うIPsecVPNルータにセットします。



B Fletsの場合を例に、理由を説明します。

IPsec TunnelインタフェースのMTU長は、カプセル化の方式などにより異なります。
http://jpn.nec.com/univerge/ix/faq/ipsec-ike.html
に、分かりやすい計算式が載っています。

■自身の環境用のMTU長は計算できます
Azure IPsecVPNで使える方式、
http://msdn.microsoft.com/en-us/library/azure/jj156075.aspx
と、
自身が使うルータで使えるカプセル化の方式、のAND条件をとり、カプセル化の方式などを決めていけば、IPsec TunnelインタフェースのMTU長は計算できるハズ。

■が、現実解は・・・
さて、僅差とはいえ、基本的にはMTU長は長ければ長いほど送受信効率は高いので、長くしたくなるのが人情。

しかし、どのカプセル化方式が使われるのかは、ルータ間(Azure側VPN装置と自身で使うルータ)のネゴで決まるため、ファームウェアやソフトウェアのバージョンアップでそれらの仕様が変更されることも考慮すると、不確定要素を考慮したほうがよさそうです。

とすると、もし、MTU長に固定値を割り当てるのならば、数ある選択肢の中で、最も短いMTU長を選んでおいたほうが、無難と言えます。

■たとえば、出力インタフェースがBフレッツ(B Flets)の場合
出力インタフェースのMTU長は1454。
IPヘッダは IPv4 だとして、カプセル化方式で最もMTUが短くなるパターンを計算すると、1374

※参考:このときのMSS
MSS=MTU-40(TCP/IPヘッダ)
=1374-40
=1334



IPsecVPN、MTU MSS の調整