MTU,MSS の計算と最適化の便利な手段をまとめる

MTU/MSS の計算 IP ヘッダや Ethernet フレームの計算は結構大変だけれどもこのサイトを使えばわりとラクに導出できます。 https://baturin.org/tools/encapcalc/ たとえば MTU 1454 の環境(フレッツ網で ISP と PPPoE で接続した場合)の MSS は次の画像のとおり 1414 と計算可能です。 この MTU 1454 の根拠は,フレッツ網では PPPoE で接続する際,NTT の収容ビルから事業者装置までの間は L2TP で接続しており,そこで PPPoE ヘッダを認証用の PPP ヘッダだけ残して取り払い,PPP over L2TP の状態にすると,IP (20 byte) + UDP (8 byte) + PPP (2 byte) + L2TP (16 byte) = 46 byte なので,1500 - 46 = 1454 byte になります。 参考サイト さきほどのサイトでは L2TPv3 の計算はできるけど L2TP の計算が出来ないのが惜しいところ。 MTU の最適化 前述の手段で計算した値をルーターやクライアントに設定しても良いですが,既に通信が可能な環境ならばヒューリスティックに最適な MTU を導出することもできます。 ping コマンド PS C:\Users\orumin> ping -f -l 1424 -n 1 8.8.8.8 8.8.8.8 に ping を送信しています 1424 バイトのデータ: 8.8.8.8 からの応答: バイト数 =68 (1424 を送信) 時間 =3ms TTL=119 8.8.8.8 の ping 統計: パケット数: 送信 = 1、受信 = 1、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 3ms、最大 = 3ms、平均 = 3ms たとえば Windows なら,このようにして ping のパケットサイズを指定し DF ビットを立てます(=分割を禁止する)。こうすると,MTU を超過するようなパケットを送出すると以下のようになります。 PS C:\Users\orumin> ping -f -l 1425 -n 1 8.8.8.8 8.8.8