はじめに
このドキュメントでは、Catalyst 9000シリーズスイッチの最大伝送ユニット(MTU)を理解し、トラブルシューティングする方法について説明します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの情報は、次のハードウェアのバージョンに基づくものです。
- C9200
- C9300
- C9400
- C9500
- C9600
注:グローバルコマンドsystem mtuを使用して、デバイス上のすべてのインターフェイスに対して同時に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(POS;ネットワーク上のパケット全体)がワイヤーにバンピングされます。
インターフェイスで処理されるパケット長を教えてください。
- Catalyst 9000 スイッチでは、64 ~ 9238 バイトのパケットサイズが処理されます。
デフォルトの MTU とは何ですか。
- デフォルトのMTUは、ユーザ設定の前にスイッチが設定されるMTUです。
- Catalyst 9000スイッチのデフォルトのMTUは1500バイトです。
- イーサネットポートは、1500バイトのレイヤ3パケットとレイヤ2ヘッダーを転送します。
MTU チェックは、入力と出力のどちらで行われますか。
出力:MTUは最大伝送ユニットです。これは出力チェックであり、フラグメント化または送信を現状のまま行うか、廃棄するかの決定は、出力に対して行われます。
- ポートMTUがルーティングされるパケット長よりも大きい場合、パケットはそのまま送信されます。
- パケットが出力ポートのMTUよりも大きい場合、および出力ポートが
- レイヤ3ポートでは、パケットはMTUに従ってフラグメント化されます。
- 出力ポートがレイヤ 2 ポートの場合、パケットはドロップされます(フラグメント化はレイヤ 3 でのみ行われます)。
注:パケットのIPヘッダー内でDo not Fragment(DNF)ビットが設定されていて、ポートMTUがルーティング対象パケットより小さい場合、パケットはドロップされます
入力:インターフェイスに到着するパケットに対してもMTUチェックが実行されます。
- インターフェイスが設定されたMTUを超えてパケットを受信すると、これらのパケットはオーバーサイズパケットとして扱われ、廃棄されます。
ジャンボパケットとは何ですか。
- Catalyst 9000スイッチでは、1500バイトを超えるものはすべてジャイアントパケットまたはジャンボパケットです。
- 例1:インターフェイスMTUが9216バイトのジャンボフレームサイズを転送するように設定されている場合、9216バイト+レイヤ2ヘッダーのフレームを受け入れるか、または送信します。
- 例2:インターフェイスMTUが5000バイトのジャンボフレームサイズを転送するように設定されている場合、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トンネルは出力インターフェイスであるため、パケットサイズの計算にはGREヘッダーの24バイトを考慮する必要があります(ip mtu 1476 + 24バイトGREヘッダー=合計MTU 1500)。
システム 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 検出)とは何ですか。
IPv6 MTU
イーサネットフレーム
Dot1Qなどのタグを持たない標準イーサネットフレーム。
Dot1Qイーサネットフレーム
MTU の設定と確認
MTU の設定
この設定はグローバルに実行することも、Cisco IOS® XE 17.1.1以降を使用してポート単位で実行することもできます。ハードウェアがこの設定をサポートしていることを確認します。
- ポート固有の設定を削除すると、ポートはグローバルなシステム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 の確認
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コマンドのジャイアントカウンタ。
- 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 Class 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 Bug ID
Cisco Bug ID CSCvr84911:リロード後にシステムMTUが無視される。
Cisco Bug ID CSCvq30464:アクティブになる非アクティブポートにMTU設定が適用されていない。
Cisco Bug ID CSCvh04282 Cat9300のデフォルト以外のシステムMTU設定値は、リロード後は考慮されません。
関連情報