アプリ

MTU・MSS 計算機

トンネル越しの通信で必要になる、実効 MTU と TCP の MSS クランプ値を計算するツールを公開しました。経路の MTU とカプセル化を選ぶだけで、オーバーヘッドの内訳と設定コマンドまで出ます。

アプリを開く

使い方

  1. 経路の MTU を入れる — 直接入力するか、1500(Ethernet)・1492(PPPoE 回線)・1454(フレッツ系)・9000(ジャンボフレーム)のボタンで入れます。
  2. 外側 IP ヘッダを選ぶ — 外側が IPv4 なら 20 バイト、IPv6 なら 40 バイトで計算します。
  3. カプセル化にチェックを入れる — GRE、IPIP、VXLAN、Geneve、IPsec ESP(トンネル/トランスポート)、NAT-T、PPPoE、802.1Q、MPLS ラベルから、経路にあるものを重ねて選びます。
  4. 条件を詰める — GRE はキー・シーケンス・チェックサムの有無、ESP は暗号方式、MPLS はラベル数を指定できます。該当がなければ「その他(手入力)」でバイト数を直接足せます。
  5. 結果を読む — トンネルに設定する MTU、TCP MSS(IPv4 / IPv6)、オーバーヘッド合計が出ます。数値の横の「コピー」で取り出せます。

入力を変えるたびに再計算するので、生成ボタンはありません。オーバーヘッドが経路 MTU を超える組み合わせでは、数値の代わりにその旨を表示します。

何に使えるか

拠点間 VPN を張った直後に、大きいパケットだけ落ちる・特定のサイトだけ開かない、という切り分けの当たり値を出す用途です。GRE over IPsec や NAT-T のように層が重なるほど暗算が怪しくなるので、内訳を並べて確認できるようにしました。

「設定例」欄には Cisco IOS・Linux・FortiGate のコンフィグが、計算結果を埋めた状態で出ます。

interface Tunnel0
 ip mtu 1400
 ip tcp adjust-mss 1360

Linux は ip link setiptables の TCPMSS、FortiGate は set mtu-override とポリシーの tcp-mss-sender / tcp-mss-receiver を出力します。

技術メモ

HTML / CSS / JavaScript のみ、index.html 1枚です。外部 CDN やライブラリに依存していないので、手元に保存すればオフラインでも動きます。入力はブラウザ内で完結し、サーバには送りません。スマートフォンでも操作できます。

カプセル化は「外側 IP を除いたバイト数」と「外側 IP を足すかどうか」の 2 つで持たせています。GRE や VXLAN は外側 IP を加算し、802.1Q・PPPoE・NAT-T・ESP トランスポートモードは加算しません。GRE over IPsec のように外側 IP が 1 つしかない組み合わせで二重計上にならないよう、ESP はトンネルとトランスポートを別項目にしています。

IPsec のオーバーヘッドはパディングを最大とした値(AES-CBC + SHA1 で 53 バイト、SHA256 で 57、AES-GCM で 37)です。実パケットは数バイト小さくなりますが、見積もりは小さめに出すほうが安全なので大きい側で固定しました。

MSS は「実効 MTU − IP ヘッダ − TCP ヘッダ(オプションなし)」で、TCP オプションを使う場合はさらに小さくなります。VXLAN・Geneve は内側 Ethernet の 14 バイトを含むため、内側に VLAN タグが付く構成では「その他」で 4 バイト足してください。

-アプリ
-, , ,