内容

はじめに

前提条件

使用するコンポーネント

背景説明

MTU の概要

MTU に関する Q&A

イーサネットフレーム

MTU の設定と確認

MTU の設定

MTU の確認

MTU のトラブルシューティング

トポロジ

入力パケットドロップ（入力 MTU を低下させる）

IP MTU の設定と確認

IP MTU の設定

IP MTU の確認

IP MTU のトラブルシューティング

トポロジ

IP フラグメンテーション

関連情報

Cisco Bug ID

はじめに

このドキュメントでは、Catalyst 9000 シリーズ スイッチの MTU（最大伝送ユニット）を把握し、トラブルシューティングする方法について説明します。

前提条件

このドキュメントに関する固有の要件はありません。

使用するコンポーネント

このドキュメントの情報は、次のハードウェアのバージョンに基づくものです。

- C9200

- C9300

- C9400

- C9500

- C9600

注：デバイス上のすべてのインターフェイスのMTUサイズは、グローバルコマンド「system mtu」を使用して同時に設定できます。  Cisco IOS® XE 17.1.1以降、Catalyst 9000スイッチはポート単位のMTUをサポートします。ポート単位の MTU はポートレベルとポートチャネルレベルの MTU 設定をサポートします。ポート単位の MTU を使用すると、異なるインターフェイスと異なるポート チャネル インターフェイスに異なる MTU 値を設定できます。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

注：シスコの他のプラットフォームでこれらの機能を有効にするために使用されるコマンドについては、該当するコンフィギュレーション ガイドを参照してください。

背景説明

MTU の概要

総フレームサイズ = MTU + L2 ヘッダー

ポート タイプ

デフォルトの MTU（バイト単位）

設定された MTU（バイト単位）

L2 ヘッダー

合計フレーム サイズ

L2 アクセス

1,500

18

1518

9216

18

9234

L2 トランク

1,500

22

1522

9216

22

9238

L3 物理ポート

1,500

18

1518

9216

18

9234

L3 SVI

1,500

18

1518

9216

18

9234

L3 ポートの IP MTU

1,500

範囲をサポート

18

設定された IP MTU 値に基づく

MTU に関する Q&A

MTU とは何ですか。

- MTU とは、デバイスが転送できる最大伝送ユニット（Maximum Transmit Unit）です。一般に、この「単位」はIPヘッダーを含むIPパケット長です。

- Dot1qタグ、MacSec、SVLヘッダーなどのL2ヘッダーは、この計算では考慮されません。

L2 ヘッダーとは何ですか。またその長さはどれくらいですか。

- 一般的な L2 ヘッダーは、14 バイト + 4 バイトの CRC で、合計 18 バイトです。

- トランクでは、dot1q vlan タグ用にさらに 4 バイトが追加され、合計 22 バイトになります。

- 同様に、MacSec では、通常の L2 ヘッダー長に独自のヘッダー長が追加されます。

- SVL ポートでは、通常の L2 ヘッダー長に独自のヘッダー長が追加されます。

- したがって、Overall Packet on Wire(POWL)はワイヤ上でバンピングされます

インターフェイスで処理されるパケット長を教えてください。

- Catalyst 9000 スイッチでは、64 ～ 9238 バイトのパケットサイズが処理されます。

デフォルトの MTU とは何ですか。

- デフォルトの MTU は、ユーザー設定の前にスイッチで設定されている MTU です。

- Catalyst 9000 スイッチのデフォルトの MTU は 1500 バイトです。

- イーサネットポートでは、1500 バイトのレイヤー 3 パケット + レイヤー 2 ヘッダーが転送されます。

MTU チェックは、入力と出力のどちらで行われますか。

Egress:MTUはMaximum Transmission Unit（MTU；最大伝送ユニット）で、出力チェックです。フラグメント化するか、そのまま送信するか、廃棄するかは、出力に関して決定されます

- ポートMTUがルーティングされるパケット長よりも大きい場合、パケットはそのまま送信されます

- パケットが出力ポートのMTUよりも大きい場合、および出力ポートが

- レイヤ3ポートでは、パケットはMTU

- 出力ポートがレイヤ 2 ポートの場合、パケットはドロップされます（フラグメント化はレイヤ 3 でのみ行われます）。

注：パケットのIPヘッダーにDF(Don't Fragment)ビットが設定されていて、ポートMTUがルーティング対象パケットより小さい場合、そのパケットは廃棄されます

入力: インターフェイスに到着するパケットに対するMTUチェックも行われます

- インターフェイスが設定されたMTUを超えるパケットを受信すると、これらのパケットはオーバーサイズのパケットとして扱われ、廃棄されます。

ジャンボパケットとは何ですか。

- Catalyst 9000スイッチでは、1500バイトを超えるものはすべてジャイアントパケットまたはジャンボパケットです。

- 例1：インターフェイスMTUが9216バイトのジャンボフレームサイズを転送するように設定されている場合、9216バイト+レイヤ2ヘッダーのフレームを受け入れるか、または送信します

- 例2：インターフェイスMTUが5000バイトのジャンボフレームサイズを転送するように設定されている場合、インターフェイスMTUは5000バイト+レイヤ2ヘッダーのフレームを受け入れるか送信します

ジャンボパケットまたはサイズ超過パケットはエラーパケットと見なされますか。

- インターフェイスは、設定されたMTUを超える受信パケットをドロップし、パケットをエラーとして報告します。

- インターフェイスがジャンボ MTU を伝送するように設定されており、受信したパケットがこの値の範囲内である場合、それらはエラーとしてカウントされません。

ポートが処理できる最小パケットサイズを教えてください。

- 64バイト（L2ヘッダーを含む）は、スイッチが入力で受け入れる最小の有効なパケットサイズです。

- 有線ネットワークで受信されたパケットが 64 バイト未満の場合は、ラントパケットと見なされ、入力でドロップされます。

- パケットが送信されるはずであり、そのパケットが64バイト未満である場合、スイッチは送信の前にパケットを最小64バイトにパディングします。

システム MTU が 9216 バイトで、SVL ヘッダーによってさらに 64 バイト追加される場合は、どうなりますか。

- レイヤ3 IPヘッダーの下のヘッダーは、MTUの計算には含まれません。

- SVLリンクは、9216 + L2ヘッダー+ 64バイトのSVLヘッダーのパケットサイズを送信できます。

IP MTU とは何ですか。

- IP MTU は、IP パケットにのみ適用されます。その他の非IPパケットサイズは、このコマンドでは考慮されません。

- IP MTU は、IP パケットに関するシステム MTU またはポート単位の MTU よりも優先されます。

- IP MTU によって設定される IP パケットの最大サイズを超えるとフラグメント化が必要になります。

- 物理または論理レイヤ3インターフェイスのMTUが1500バイトで、ip mtuが1400バイトの場合、フラグメンテーション境界は、システムまたはポートごとのMTU設定に関係なく、1400バイトになります。

- MTU の値は、ピアルータ/スイッチと一致している必要があります。ピアデバイスが高いMTU値をサポートしていない場合は、IP MTUまたはMTUを使用して両方のデバイス機能を照合します。

- IP MTUが設定されると、デバイスはルーティングプロトコルパケットのサイズを設定されたip mtu値に変更します。一部のルーティングプロトコルは、一致したmtu値を使用してルーティングプロトコルのネイバーシップを確立します。

- 例:

- 例1：インターフェイスIP MTUが500バイトに設定され、インターフェイスMTUがデフォルト（ポート単位のMTUなし）で、システムMTUが9000の場合、インターフェイスMTUは9000バイトになり、IPフラグメンテーションは500バイトになります。

- 例2:GREトンネルは出力インターフェイスであるため、パケットサイズの計算には24バイトのGREヘッダーを考慮する必要があります（ip mtu 1476 + 24バイトのGREヘッダー= 1500の合計MTU）。

システム MTU とポート単位の MTU の違いは何ですか。

- システム MTU は、デバイス全体の MTU を指定するグローバル設定です。これにより、フロントパネルの物理ポートと論理ポートのすべてが、system mtu コマンドで設定された値に変更されます。

- ポート単位のMTUでは、インターフェイス単位でMTU値を設定できます。この設定は、システムMTU設定よりも優先されます。 ポートごとの設定を削除すると、インターフェイスはシステムmtuにフォールバックします。

- 例:

- 例1：システムMTU値が9000に設定され、すべての物理ポートと論理ポートのMTUが9000に設定されている。

- 例2：インターフェイスが4000のMTUで設定され、システムMTUが9000の場合、インターフェイスは4000のMTUを使用し、他のポートはMTU 9000を使用します。

MTU 制限によってフラグメント化はどのような影響を受けますか。

- デバイスは、すでにフラグメント化されたパケットをデータプレーンで正常に転送しますが、デバイスがフラグメント化または再構成の役割を担っている場合、パフォーマンスやリソースの問題が発生する可能性があります。

- フラグメント化は、フラグメント化処理を担当するアプリケーションおよびデバイスの全体的なスループットとパフォーマンスに深刻な影響を与える可能性があります。

- 多くのプラットフォームでは、フラグメント化されたパケットの処理がソフトウェアで行われ、フラグメント化されたパケットのフラグメント化またはアセンブルに多くの CPU サイクルが必要とされます。

- ネットワークで多数のフラグメンテーションが発生する場合は、フラグメンテーションのないエンドツーエンドのパケットフローと一致するように、MTUが適切に調整されていることを確認します。

PMTUD（パス MTU 検出）とは何ですか。

- 前述のように、TCP MSS は TCP 接続の 2 つのエンドポイントにおいてフラグメント化を処理しますが、これら 2 つのエンドポイントの間により小さい MTU リンクがある場合は処理しません。エンドポイント間のパス内でのフラグメンテーションを回避するために、PMTUD が開発されました。パケットの送信元から宛先までのパス上で最小のMTUを動的に決定するために使用されます。

- PMTUD の詳細とトラブルシューティング方法については、『Resolve IPv4 Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPsec』を参照してください。

IPv6 MTU

- IPv6 MTU は IP MTU と同じように機能します。

- 設定するには、インターフェイス設定でip mtuの代わりにipv6 mtuを使用します。

- IPv6 MTUの最小サイズは1280バイトであるのに対し、IPv4は832バイトです

- IPv6 PMTUDはIPv4と同様に動作します。詳細については、『IPルーティングコンフィギュレーションガイド、Cisco IOS® XE Amsterdam 17.3.x（Catalyst 9500スイッチ）』を参照してください。

イーサネットフレーム

標準イーサネットフレーム（Dot1Qなし）、または他のタグ

Dot1Qイーサネットフレーム

MTU の設定と確認

MTU の設定

この設定はグローバルに実行することも、Cisco IOS® XE 17.1.1以降を使用してポート単位のレベルで実行することもできます。ハードウェアがこの設定をサポートしていることを確認します。

- ポート固有の設定を削除すると、ポートはグローバルなsystem mtu設定を使用します

### Global System MTU set to 1800 bytes ###

9500H(config)#system mtu ?

<1500-9216> MTU size in bytes   <-- Size range that is configurable

9500H(config)#system mtu 1800     <-- Set global to 1800 bytes

Global Ethernet MTU is set to 1800 bytes.

Note: this is the Ethernet payload size, not the total

Ethernet frame size, which includes the Ethernet

header/trailer and possibly other tags, such as ISL or

802.1q tags.                     <-- CLI provides information about what is counted as MTU

### Per-Port MTU set to 9216 bytes ###

9500H(config)#int TwentyFiveGigE1/0/1

9500H(config-if)#mtu 9126        <-- Interface specific MTU configuration

MTU の確認

このセクションでは、MTUのソフトウェア設定とハードウェア設定の両方を確認する方法について説明します。

- ソフトウェアで設定されている MTU とハードウェア MTU を確認します。

- ハードウェア MTU がソフトウェアで設定されている MTU と一致していない場合は、トラフィック損失が発生する可能性があります。

ソフトウェア MTU の確認

9500H#show system mtu

Global Ethernet MTU is 1800 bytes.     <-- Global level MTU

9500H#show interfaces mtu

Port         Name              MTU

Twe1/0/1                       9216   <-- Per-Port MTU override

Twe1/0/2                       1800   <-- No per-port MTU uses global MTU

<...snip...>

9500H#show interfaces TwentyFiveGigE 1/0/1 | inc MTU

MTU 9216 bytes, BW 1000000 Kbit/sec, DLY 10 usec,

9500H#show interfaces TwentyFiveGigE 1/0/2 | inc MTU

MTU 1800 bytes, BW 25000000 Kbit/sec, DLY 10 usec,

ハードウェア MTU の確認

9500H#show platform software fed active ifm mappings

Interface                 IF_ID    Inst Asic Core Port SubPort Mac Cntx LPN GPN Type Active

TwentyFiveGigE1/0/1       0x8        1   0   1    20     0      16  4    1   101 NIF  Y  <-- Retrieve the IF_ID for use in the next command

TwentyFiveGigE1/0/2       0x9        1   0   1    21     0      17  5    2   102 NIF  Y

9500H#show platform software fed active ifm if-id 0x8 | inc MTU

Jumbo MTU ............ [9216]  <-- Hardware matches software configuration

9500H#show platform software fed active ifm if-id 0x9 | in MTU

Jumbo MTU ............ [1800]  <-- Hardware matches software configuration

注:「show platform software fed <active|standby>」は使用環境によって異なります。特定のプラットフォームには「show platform hardware fed switch <active|standby|sw_num>」が必要です。

MTU のトラブルシューティング

トポロジ

入力パケットドロップ（入力 MTU を低下させる）

これらのカウンタのいずれかが増加している場合、通常は受信パケットが設定されたMTUを超えて到着したことを意味します。

- 「show interface」コマンドの giants カウンタ

- 「show controller」コマンドの ValidOverSize カウンタ

9500H#show int twentyFiveGigE 1/0/3 | i MTU

MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,

0 runts, 0 giants, 0 throttles                                          <-- No giants counted

9500H#show controllers ethernet-controller twentyFiveGigE 1/0/3 | i ValidOverSize

0 Deferred frames                       0 ValidOverSize frames <-- No giants counted

### 5 pings from neighbor device with MTU 1800 to ingress port MTU 1500 ###

9500H#show int twentyFiveGigE 1/0/3 | i MTU|giant

MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,

0 runts, 5 giants, 0 throttles                                          <-- 5 giants counted

9500H#show controllers ethernet-controller twentyFiveGigE 1/0/3 | i ValidOverSize

0 Deferred frames                       5 ValidOverSize frames <-- 5 giants counted

の詳細show controllers ethernet-controllerコマンド

- 設定されたMTUを超えて到着したパケットがCRCチェックに失敗した場合、そのパケットはInvalidOverSizeとしてカウントされます。

- 設定された MTU を超えないパケットが到達し、CRC チェックに合格しなかった場合、それらは FcsErr としてカウントされます。

9500H#show controllers ethernet-controller twentyFiveGigE 1/0/3 | i Fcs|InvalidOver

0 Good (>1 coll) frames                           0 InvalidOverSize frames <-- MTU too large and bad CRC

0 Gold frames dropped                             0 FcsErr frames          <-- MTU within limits with bad CRC

IP MTU の設定と確認

IP MTU の設定

ここでは、トンネルインターフェイスで IP MTU を設定する方法について説明します。

- IP MTUは、ローカルシステムによって生成されるIPパケットのサイズに影響を与えるように設定したり（ルーティングプロトコルアップデートなど）、フラグメンテーションが発生するサイズを設定するために使用できます。

C9300(config)#interface tunnel 1

C9300(config-if)#ip mtu 1400

interface Tunnel1

ip address 10.11.11.2 255.255.255.252

ip mtu 1400                       <-- IP MTU command sets this line at 1400

ip ospf 1 area 0

tunnel source Loopback0

tunnel destination 192.168.1.1

IP MTU の確認

ソフトウェア IP MTU の確認

C9300#sh ip interface tunnel 1 <-- Show the IP level configuration of the interface

Tunnel1 is up, line protocol is up

Internet address is 10.11.11.2/30

Broadcast address is 255.255.255.255

Address determined by setup command

MTU is 1400 bytes <-- max size of IP packet before fragmentation occurs

ハードウェア IP MTU の確認

C9300#sh platform software fed switch active ifm interfaces tunnel

Interface                         IF_ID               State

----------------------------------------------------------------------

Tunnel1                           0x00000050          READY            <-- Retrieve the IF_ID for use in the next command

C9300#sh platform software fed switch active ifm if-id 0x00000050

Interface IF_ID         : 0x0000000000000050  <-- The interface ID (IF_ID)

Interface Name          : Tunnel1

Interface Block Pointer : 0x7fe98cc2d118

Interface Block State   : READY

Interface State         : Enabled

Interface Status        : ADD, UPD

Interface Ref-Cnt       : 4

Interface Type          : TUNNEL

<...snip...>

Tunnel Sub-mode: 0 [none]

Hw Support : Yes

Tunnel Vrf : 0

IPv4 MTU : 1400                        <-- Hardware matches software configuration

<...snip...>

IP MTU のトラブルシューティング

トポロジ

IP フラグメンテーション

パケットがトンネルインターフェイス経由で送信される場合、フラグメンテーションは、次の例で示す2つの方法で発生する可能性があります。

標準 IP フラグメント化

トンネルカプセル化の前に、MTU に合わせてサイズを削減するために、元のパケットがフラグメント化されます。

- フラグメント化の処理を行うのは入力デバイスだけです。フラグメントは、トンネルのエンドポイントではなく実際のエンドポイントで再構成されます

- この種のパケットフラグメント化では、実行にそれほどリソースが消費されません。

### Tunnel Source Device: Tunnel IP MTU 1400 | Interface MTU 1500 ###

C9300#ping 172.16.1.1 source Loopback 1 size 1500 repeat 10 <-- ping with size over IP MTU 1400

Type escape sequence to abort.

Sending 100, 1500-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:

Packet sent with a source address of 172.16.2.1

!!!!!!!!!!

Success rate is 100 percent (100/100), round-trip min/avg/max = 1/1/1 ms

### Tunnel Destination Device: Ingress Capture Twe1/0/1 ###

9500H#show monitor capture 1

Status Information for Capture 1

Target Type:

Interface: TwentyFiveGigE1/0/1, Direction: IN  <-- Ingress Physical interface

9500H#sh monitor capture 1 buffer br | inc IPv4|ICMP

9  22.285433   172.16.2.1 b^F^R 172.16.1.1 IPv4 1434 Fragmented IP protocol (proto=ICMP 1, off=0, ID=6c03)

10  22.285526   172.16.2.1 b^F^R 172.16.1.1 ICMP 162 Echo (ping) request id=0x0004, seq=0/0, ttl=255

11  22.286295   172.16.2.1 b^F^R 172.16.1.1 IPv4 1434 Fragmented IP protocol (proto=ICMP 1, off=0, ID=6c04)

12  22.286378   172.16.2.1 b^F^R 172.16.1.1 ICMP 162 Echo (ping) request id=0x0004, seq=1/256, ttl=255

<-- Fragmentation occurs on the Inner ICMP packet (proto=ICMP 1)

<-- Fragments are not reassembled until they reach the actual endpoint device 172.16.1.1

トンネルカプセル化後のフラグメント化

カプセル化が発生すると、MTU に合わせてサイズを削減するために実際のトンネルパケットがフラグメント化されますが、それでも MTU に対してサイズが大きすぎることをデバイスが検出する場合があります。

- この場合、トンネルの宛先は、実際の宛先エンドポイントではなく、フラグメントのリアセンブルを担当するデバイスです。

- この問題は、設定が適切ではない場合に発生します。デバイスには、トンネルヘッダーが適用された後に処理できるように、実際のポート単位の MTU またはシステム MTU よりも大きい IP MTU を設定してください。

- この場合、トンネルの送信元は、トンネル自体をフラグメント化する必要があり、トンネルの宛先は、パケットを次のホップまたは宛先に送信するためにトンネルヘッダーをリアセンブルする必要があります。

- この種のヘッダーのフラグメンテーションは、処理のオーバーヘッドを大幅に増加させる可能性があります。これは、処理する必要があるフローのレートによって異なります。

- プラットフォーム、コード、およびトラフィックレートによっては、CoPP クラス「Forus トラフィック」でのパケット損失およびドロップも発生する場合もあります。

### Tunnel Source Device: Tunnel IP MTU 1500 | Interface MTU 1500 ###

C9300(config-if)#ip mtu 1500

%Warning: IP MTU value set 1500 is greater than the current transport value 1476, fragmentation may occur

<-- Device warns the user that this can cause fragmentation (this is a configuration issue)

### Tunnel Destination Device: Ingress Capture Twe1/0/1 ###

9500H#show monitor capture 1

Status Information for Capture 1

Target Type:

Interface: TwentyFiveGigE1/0/1, Direction: IN <-- Ingress Physical interface

9500H#sh monitor capture 1 buffer br | i IPv4|ICMP

1   0.000000  192.168.1.2 b^F^R 192.168.1.1  IPv4 1514 Fragmented IP protocol (proto=Generic Routing Encapsulation 47, off=0, ID=4501)

2   0.000042   172.16.2.1 b^F^R 172.16.1.1   ICMP 60 Echo (ping) request id=0x0005, seq=0/0, ttl=255

3   2.000598  192.168.1.2 b^F^R 192.168.1.1  IPv4 1514 Fragmented IP protocol (proto=Generic Routing Encapsulation 47, off=0, ID=4502)

4   2.000642   172.16.2.1 b^F^R 172.16.1.1   ICMP 60 Echo (ping) request id=0x0005, seq=1/256, ttl=255

<-- Fragmentation has occurred on the outer GRE header(proto=Generic Routing Encapsulation 47)

<-- Fragments must be reassembled at the Tunnel endpoint, in this case the 9500

関連情報

- テクニカル サポートとドキュメント - Cisco Systems

- インターフェイスおよびハードウェアコンポーネント設定ガイド、Cisco IOS® XE Amsterdam 17.3.x（Catalyst 9500スイッチ）

- インターフェイスおよびハードウェアコンポーネント設定ガイド、Cisco IOS® XE Amsterdam 17.3.x（Catalyst 9600スイッチ）

- GRE および IPsec での IP フラグメンテーション、MTU、MSS、PMTUD の問題の解決

Cisco Bug ID

Cisco Bug ID CSCvr84911：リロード後にシステムMTUが無視される

Cisco Bug ID CSCvq30464CAT9400：アクティブになる非アクティブポートにMTU設定が適用されない

Cisco Bug ID CSCvh04282 Cat9300 のデフォルト以外のシステム MTU 設定値がリロード後に適用されない