動作確認環境
- Cisco C891FJ-K9
- IOS 15.9(3)M10
MTU、MSS に関する説明の多くが分かりにくい
Cisco 機器構築案件において PPPoE、IPsec VPN、GRE などを構成する場合、Cisco 機器のインターフェース設定にて MTU や MSS の設定値を調整することがあります。MTU や MSS に関する説明をしているサイトは多くありますが、本質的に分かりやすい説明は少ないように感じます。
ここでは MTU、MSS とフラグメンテーションとは何か、ネットワーク機器において MTU、MSS を設定すると通信にどう影響するのかについて改めて整理します。
MTU、MSS とは
MTU とは、ネットワーク機器や端末が転送できる最大伝送ユニット(Maximum Transmit Unit)です。一般的には、IP ヘッダーを含む IP パケットサイズです。MTU は (L3) インターフェース毎に設定されます。Cisco ルータ・スイッチや一般的な PC では MTU のデフォルト値は 1,500 バイトになっています。
MSS とは、TCP における概念であり、TCP の最大セグメントサイズ (最大ペイロード(データ)サイズ) のことです。MSS は MTU から IP ヘッダ(20バイト)と TCP ヘッダ(20バイト) を除いたサイズ(1460バイト)といえます。

イーサネット(L2)ヘッダ(14バイト)とFCS(4バイト)を考慮すると合計 1518 バイトになります。dot1q vlanタグを使用する場合は更に 4 バイト追加されて 1522 バイトになります。
MTU チェックとフラグメンテーション
Cisco 機器においては MTU チェックは入力・出力インターフェースの双方で行われます。
入力インターフェースで MTU を超えるパケットを受信した場合、そのパケットは破棄されます。
出力インターフェースにて MTU を超えるパケットを出力する場合、そのパケットは分割されて送信されます。
この動作をフラグメンテーションと呼びます。
フラグメンテーションされたパケットを受信する端末では、分割されたパケットを元通りのパケットに戻す処理である再編成(リアセンブル) が行われます。
フラグメンテーションが発生すると、ネットワーク機器や端末で余計なリソースを使用する必要があったり、通信遅延が発生したりするなどのデメリットがあるため、フラグメンテーションの発生は避けるべきであるとされています。
機種によって動作仕様が異なる可能性があるため、正確には該当機種の公式ドキュメントを確認してください。
MSS はデータを送受信する端末で使用する値
ネットワーク機器で MSS (に関する) 設定をすることができるため、MSS はネットワーク機器の動作に影響する値と思われるかもしれませんが、MSS はデータ送受信を行う端末ペアで使用される値です。端末間において TCP 通信を行う際の最初のスリーウェイハンドシェイクの段階で MSS の値がネゴシエートされ、以後取り決められた MSS でデータが送受信されます。
端末間での MSS ネゴシエートの流れは以下です。
端末A はスリーウェイハンドシェイクの SYN パケットにおける TCP Option にて MSS を送信します。端末B は受信した MSS の値と自身の (インターフェースの MTU – 40) の値を比較し、値がより小さい方を自身の MSS として採用します。

以下は SYN パケットの中身です。TCP Option として MSS が存在することを確認できます。

端末B はスリーウェイハンドシェイクの SYN, ACK パケットにおける TCP Option にて MSS を送信します。端末A は受信した MSS の値と自身の (インターフェースの MTU – 40) の値を比較し、値がより小さい方を自身の MSS として採用します。

以下は SYN, ACK パケットの中身です。TCP Option として MSS が存在することを確認できます。

端末間で MSS が決定されたら、その MSS に基づいて端末間でデータ通信が行われます。
フラグメンテーションが発生する場合と防止策
上で端末間で MSS がネゴシエートされてデータ通信が行われると説明しました。これはそれぞれの端末にてフラグメンテーションが発生しないことを目的とした動作仕様です。しかし、通信経路となるネットワークの MTU は考慮されていないため、ネットワーク内の MTU が小さい場合ネットワーク内にてフラグメンテーションが発生する可能性があります。

ネットワーク内の MTU が (端末の MSS + 40) より小さい場合、ネットワーク内にてフラグメンテーションが発生します。
ネットワーク内でのフラグメンテーションを防止するために、Cisco 機器の場合はインターフェースにて MSS の設定(ip tcp adjust-mss) を行います。
「ip tcp adjust-mss」設定の動作仕様とは
上でも記載しましたが、MSS は端末からの送信されるデータサイズを決定するパラメータです。Cisco 機器における MSS の設定である「ip tcp adjust-mss」がどのように端末の MSS に影響するのかを説明します。
端末間ではスリーウェイハンドシェイクにおける SYN パケット及び SYN, ACK パケットの TCP Option で MSS の値を相手に伝えていました。Cisco 機器の (L3) インターフェースにて「ip tcp adjust-mss」を設定すると、このインターフェースを通る SYN パケット、及び SYN, ACK パケットの TCP Option の MSS の値が「ip tcp adjust-mss」で設定した値に書き換えられます。
以下図は経路上のルータで「ip tcp adjust-mss 1000」を設定した場合の動作を示しています。

以下は端末A から送信された SYN パケットの内容です。TCP Option の MSS が 1460 になっています。

一方以下は端末B で受信した SYN パケットの内容です。TCP Option の MSS が経路上のルータで書き換えられ 1000 に変わっていることを確認できます。

同様に端末B から送信される SYN, ACK パケットについても MSS の値が書き換えられます。

以下は端末B から送信された SYN, ACK パケットの内容です。TCP Option の MSS が 1460 になっています。

一方以下は端末A で受信した SYN パケットの内容です。TCP Option の MSS が経路上のルータで書き換えられ 1000 に変わっていることを確認できます。

以上のように、経路上のインターフェースにて「ip tcp adjust-mss」を設定することにより該当インターフェースの送受信パケットについて TCP Option の MSS の値が書き換えられます。
「ip tcp adjust-mss」設定によってデータ通信を行う端末の MSS 設定を変更できるということになります。
ネットワークエンジニア同士の会話でも「ip tcp adjust-mss」設定のことを単に「MSS 設定」と表現することが多いですが、正確には「SYN パケット内の MSS の値を書き換える設定」といえます。不正確な表現が新人エンジニアを混乱させているのではとも思えます。
「ip tcp adjust-mss」の値を (MTU – 40) と設定する
データ通信を行う端末にて使用する MSS が (ネットワーク機器に設定されている MTU 値 – 40) の値になっていればネットワーク機器におけるフラグメンテーションを防止することができます。
このため Cisco 機器においてフラグメンテーションを防止するために「ip tcp adjust-mss」が値を (その Cisco 機器で設定されている MTU – 40) として設定します。
「- 40」は IP ヘッダ (20 バイト)、TCP ヘッダ (20 バイト) 分です。
MTU 設定値のパターン別計算方法
MSS は MTU が決まれば決まります。一方、MTU はネットワークで使用している機能に応じて適切に計算して求める必要があります。
以下ではパターン別の計算方法を記載します。
参考資料
- GRE および IPsec での IP フラグメンテーション、MTU、MSS、PMTUD の問題の解決
- Cisco IOS XE Amsterdam 17.2.x(Catalyst 9200 スイッチ)IP アドレッシング サービス コンフィギュレーション ガイド: TCP MSS 調整の設定
- Catalyst 9000 シリーズ スイッチでの MTU のトラブルシューティング
- PPPoE接続のイーサネットMTUおよびTCP MSS調整の概念
Cisco (IOS一般) 関連記事一覧
- 基礎知識
- OS バージョンアップ
- 基本設定
- 管理系設定
- インターフェース
- ルーティング
- コマンド解説
Cisco Catalyst 9000 シリーズスイッチ関連記事一覧
Cisco Catalyst 1300 スイッチ関連記事一覧
- 基礎知識
- 管理系設定
- インターフェース
- スパニングツリー
- ルーティング
- アクセス制御
- その他機能
- 参考資料
Amazon で買えるおすすめアイテム
以下は Amazon アフィリエイトリンクです。ネットワーク作業向けにそこそこおすすめなアイテムです。
ブログ始めるなら 【アフィリエイトリンク】
note メンバーシップへの参加もお待ちしています!

コメント