最大伝送単位(MTU)は、インターフェイスがフラグメント化することなく送信できるパケットの最大サイズを定義します。MTU よりも大きい IP パケットは、IP フラグメント化の手順を経ることが必要です。
Cisco ATM ルータ インターフェイスは、64 から 17966 バイトまでの MTU をサポートします。各インターフェイスは、デフォルトの最大パケットサイズをサポートします。たとえば、ATM インターフェイス プロセッサ(AIP)とネットワーク プロセッサ モジュール(NP)ではデフォルトの最大値は 9288 バイトで、PA-A3 と PA-A2 ポート アダプタでは 4470 です。
このドキュメントは ATM インターフェイスのデフォルトの MTU 値をレビューし、ルータが AAL5 オーバーサイズ SDU と AAL5 長さ違反カウンタをカウントアップする場合について説明しています。
このドキュメントに特有の要件はありません。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
ドキュメント表記の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
ほとんどの Cisco ATM ルータ インターフェイスはデフォルト MTU サイズの4470 バイトを使用します。自律スイッチングのFiber Distributed Data Interface(FDDI)とHigh Speed Serial Interface(HSSI)への共通するためこの数字が選択されるようになります。
インターフェイス設定モードで mtu コマンドを使用してデフォルト以外の値を設定します。サブインターフェイス のMTU値、メインインターフェースのMTU値がサブインターフェイスよりも大きいか、または同じである時にサポートします。
7200#show interface atm 3/0 ATM3/0 is up, line protocol is up Hardware is ENHANCED ATM PA Internet address is 1.1.1.1/8 MTU 4470 bytes, sub MTU 1500, BW 149760 Kbit, DLY 80 usec, reliability 255/255, txload 1/255, rxload 1/255
show atm interface atm コマンドを使用して現在設定されている値を表示します。
7200#show atm interface atm 3/0 Interface ATM3/0: AAL enabled: AAL5 , Maximum VCs: 4096, Current VCCs: 2 Maximum Transmit Channels: 0 Max. Datagram Size: 4528 PLIM Type: SONET - 155000Kbps, TX clocking: LINE Cell-payload scrambling: ON sts-stream scrambling: ON 8359 input, 8495 output, 0 IN fast, 0 OUT fast, 0 out drop Avail bw = 155000 Config. is ACTIVE
show interface atm コマンドは、パケットサイズのディスカッションに関係のある 2 つのカウンタを太字でハイライト表示して報告します。
7200#show interface atm1/ima0 ATM1/IMA0.1 is up, line protocol is up Hardware is ATM IMA MTU 4470 bytes, BW 6000 Kbit, DLY 20000 usec, reliability 255/255, txload 1/255, rxload 2/255 Encapsulation ATM 1382 packets input, 399282 bytes 1558 packets output,205883 bytes 0 OAM cells input, 0 OAM cells output AAL5 CRC errors : 280 AAL5 SAR Timeouts : 0 AAL5 Oversized SDUs : 0 AAL5 length violation : 210285 AAL5 CPI Error : 302
どちらのカウンタも ATM アダプテーション レイヤ 5(AAL5)を示します。 これらは ATM スタックの Common Part Convergence Sublayer(CPCS)で、ルーティングまたはブリッジングされたプロトコル データ ユニット(PDU)をカプセル化します。RFC 1483は 、次の図に示すようにAAL5トレーラの形式を定義します。
AAL5 トレーラにある 2 バイト長さフィールドは、CPCS-PDU ペイロード フィールドのサイズを示します。2 バイトは 16 ビットまたは最大長さ値の 65,535 (216)オクテットです。
MTU は、レイヤ 3 データグラムのサイズを定義します。AAL5 の service data unit(SDU; サービス データ ユニット)は、レイヤ 3 のデータグラムにオプションの論理リンク制御副層/サブネットワーク アクセス プロトコル(LLC/SNAP)ヘッダーを追加したものとして定義されています。AAL5 PDU は、結合 AAL5 SDU に 8 バイト AAL5 トレーラを加えて定義されます。したがって、9180 の MTU は、9180 バイトの AAL5 SDU と 8 バイト AAL5 トレーラを加えた 9188 バイトの AAL5 PDU を作成します。
ATM インターフェイスが MTU よりも大きいパケットを受信した場合、ルータは Oversized SDU カウンタをカウントアップします。Oversize SDUsカウンタは、RFC 1695で定義されています 。
aal5VccOverSizedSDUs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of AAL5 CPCS PDUs discarded on this AAL5 VCC at the interface associated with an AAL5 entity because the AAL5 SDUs were too large." ::= { aal5VccEntry 5 }
RFC 1695 では、次に示すオブジェクト ID を使用して、伝送および受信 SDU のサイズを別々に設定できます。
atmVccAal5CpcsTransmitSduSize OBJECT-TYPE SYNTAX INTEGER (1..65535) MAX-ACCESS read-create STATUS current DESCRIPTION "An instance of this object only exists when the local VCL end-point is also the VCC end-point, and AAL5 is in use. The maximum AAL5 CPCS SDU size in octets that is supported on the transmit direction of this VCC." DEFVAL { 9188 } := { atmVclEntry 9 } atmVccAal5CpcsReceiveSduSize OBJECT-TYPE SYNTAX INTEGER (1..65535) MAX-ACCESS read-create STATUS current DESCRIPTION "An instance of this object only exists when the local VCL end-point is also the VCC end-point, and AAL5 is in use. The maximum AAL5 CPCS SDU size in octets that is supported on the receive direction of this VCC." DEFVAL { 9188 } ::= { atmVclEntry 10 }
RFC 1695 に従う ATM インターフェイスでも、オーバーサイズ SDU エラーを検出したときに ifInErrors カウンタが増加します。これは RFC で定義されている 2 つのカウンタの CRC-32 と SAR タイムアウト エラーに追加されます。
ルータは、MTU とは関係なく再構成したパケットの算出サイズが AAL5 長さフィールドで受信した値に一致させることができない場合に、AAL5 長さ違反カウンタをカウントアップします。これらの違反がどのようにして発生するかを理解するには、受信側 ATM インターフェイスがどのようにしてフレームの最後のセルを認識したかを理解する必要があります。
セル ヘッダーには、3 ビットの Payload Type Identifier(PTI; ペイロード タイプ識別子)フィールドが含まれています。これら 3 つのビットは次のことを示します。
ビット 1 — セルにユーザ データまたは管理データを含ませるかどうかを示す。
ビット 2 — 送信中のセルに輻輳が発生しているかどうかを示します。
ビット 3 — セルが高レイヤ データ フレームの最後のセルかどうかを示す。1 に設定した場合、このビットは End Of Marker(EOM)と呼ばれます。
001 または 011 の PTI 値は、AAL5 PDU の最後のセルにマークを付けて受信側 ATM インターフェイスに再構成を開始するように伝えます。輻輳またはエラー状態の間に、ATM リンクは最後のセルをドロップする場合があります。その結果として受信側インターフェイスは、2 番目の AAL5 パケットの最後のマーカ セルを受信するまで再構成を開始しないため長さ違反を生じます。
場合によって、ルータはAAL5の 長さ違反カウンタはAAL5のCRC エラー カウンタより小さな値を報告する場合があります。この条件が発生するのは、再構成したパケットにはATM インターフェイスが長さ違反を宣言 し、CRC を確認せずにパケットをドロップするためです。ATM インターフェイスが CRC を検査するのは、パケットサイズが AAL5 長さフィールドに一致することを確認したあとのみです。
ネットワーク上の複数のインターフェイスに一貫した最大サイズの MTU を使用すると、次のような利点があります。
フラグメント化の減少または排除。大きな MTU は、フラグメンテーションを排除して TCP のパフォーマンスを向上させることができます。したがって、ネットワーク ファイル システム(NFS)などのアプリケーションでは、8 KB 程度の大きなネイティブ MTU の利点を活用できます。
パケット バッファ プールのサイズを Cisco 7500 シリーズ プラットフォームの Route Switch Processor(RSP)にあるパケット メモリ(MEMD)に分割して最適化する。このプラットフォームで、MTU はバッファの分割を行う際に重要な役割を果たします。具体的には、このプラットフォームは MTU をベースにした 4 つのバッファ プールを作成するバッファ分割アルゴリズムを使用します。すべてのインターフェイスが同じ MTU を使用すると、ルータは同じサイズのバッファで大きなプールを作成します。このプラットフォームで大きく広範囲に及ぶさまざまな MTU を使用すると、Cisco IOS ® ソフトウェアは大きなバッファを小さな数に分割することを余儀なくされ、ほかのインターフェイスに影響を及ぼす場合があります。7500 シリーズ プラットフォームでは、MTU を調整することで、入力の無視によるエラーの数が少なくなります。「「"%RSP-3-RESTART:cBus Complex」の原因
注:元々は、AIPは9180のMTUをサポートしていました。その原因を知るには、アーキテクチャを理解する必要があります。ATM インターフェイスがアクティブ同時仮想回線(VC)のアドバタイズ最大数をサポートできるのは、統計の多重化と、いくつかの再構成を同時に行うことができるようなパケットバッファを十分に所有していることに基づきます。シスコでは、AIP での MTU サイズをおよそ 9000 バイトに制限して、アドバタイズされるアクティブ VC 値を最大 2000 までサポートします。
処理するパケット数を最少化することによって、ルータの性能を向上させます。ルータの性能の損失のほとんどは、「伝送したバイト」よりも「処理したパケット」に関係します。ルータは一般的に、割り込みモードで伝送パケットを処理します。CPU の速度が速いと必ずしも割り込み中心の操作が速くなるというわけではありませんが、MTU が大きいと性能が高くなる場合があります。
次の表に、データグラム サイズに関する Request For Comment(RFC)を一覧表示します。
注:テーブル内のすべてのリンクはRFC1483です 。
Request For Comment(RFC) | 説明 |
---|---|
RFC 791 | IP フラグメント化の手順を定義する。 |
RFC 1191およ びRFC 1435 | インターネットで IP フラグメント化を減少させる重要なメカニズムであるパス MTU ディスカバリを定義する。ATM は、イーサネットや FDDI のような他のテクノロジーとはまったく異なるデフォルト MTU サイズを使用するため、このメカニズムは重要です。 |
RFC 1209 | 9180 オクテットの SMDS における IP MTU を指定する。インターネット技術特別調査委員会(IETF)は、この値とRFCを使用して、RFC 2225で定義されているように、IP over ATM AAL5のMTUを9180オクテットに設定しました 。 |
RFC 1626およ びRFC 2225 | 相手先選択接続 (SVC) に ATM シグナリング プロトコルを使用して、ATM インターフェイスが AAL CPCS-SDU サイズの取り決めを試みる必要のあるほかのアイテムを指定します。 |
RFC 791では 、IPフラグメンテーションを定義し、「Total length is less or equal the maximum transmission unit(MTU;最大伝送ユニット)の場合、このデータグラムをデータグラム処理の次のステップに送信します。それ以外の場合は、データグラムを 2 つのフラグメントに分割し、1 番めのフラグメントを最大サイズにして、2 番めのフラグメントを残りのデータグラムにします。
debug ip packet {host access-list}コマンドの出力には、2つのホスト192.168.1.51と192.168.1.254の間のpingがキャプチャされます。各パケットに対して、ルータは2つのフラグメントを受信したことが報告されます。1 つは長さが 1500 バイトで、もう 1 つは長さが 48 バイトです。
注意:debugコマンドを発行する前に、「debugコマンドの重要な情報」を参照してください。
*Mar 28 09:59:27.002: IP: s=192.168.1.51 (ATM4/0.3), d=192.168.1.254, len 1500, rcvd 4 *Mar 28 09:59:27.002: IP: recv fragment from 192.168.1.51 offset 0 bytes *Mar 28 09:59:27.002: IP: s=192.168.1.51 (ATM4/0.3), d=192.168.1.254, len 48, rcvd 4 *Mar 28 09:59:27.002: IP: recv fragment from 192.168.1.51 offset 1480 bytes
ルータはエコー応答で応答して 2 つのフラグメントを送信中であることを報告します。
*Mar 28 09:59:27.002: ICMP: echo reply sent, src 192.168.1.254, dst 192.168.1.51 *Mar 28 09:59:27.002: IP: s=192.168.1.254 (local), d=192.168.1.51 (ATM4/0.3), len 1528, sending *Mar 28 09:59:27.002: IP: s=192.168.1.254 (local), d=192.168.1.51 (ATM4/0.3), len 1500, sending fragment *Mar 28 09:59:27.006: IP: s=192.168.1.254 (local), d=192.168.1.51 (ATM4/0.3), len 48, sending last fragment
Cisco Catalyst 5000 と 6000 スイッチのギガビット イーサネット インターフェイスは、MTU が 9,216 バイトの巨大フレームをサポートします。Catalyst ATM モジュールにおける巨大フレームのサポートは、進行中です(Cisco バグ ID CSCdp00676 を経由)。
巨大フレームを最初からサポートできないのは、すべての VC をサポートするバッファの最大数が原因です。CLI を使用して MTU のサイズを変更したときに、モジュールが起動して変更がなかった場合は、最大フレーム サイズ(9218 バイト)が初期化されます。
巨大フレームのサポートは、8510 のギガビット イーサネット カードでは調査中です。8540 の ATM ルータ モジュール 2 (ARM2)は、現在は構成可能な MTU のサイズをサポートします。
12.1(10)E より前の Cisco IOS ソフトウェア リリースでは、Catalyst ATM モジュールがコマンドラインで MTU コマンドを受け付けます。最大値は 9218 バイトです。ただし、巨大フレーム サポートをしない場合は、この構成変更は誤りです。巨大フレームがサポートされていなかったのは、VC でサポートされていたバッファの最大数が不足していたためです。
ATM#show interface atm0 ATM0 is down, line protocol is down Hardware is Catalyst 5000 ATM MTU 1584 bytes, sub MTU 0, BW 156250 Kbit, DLY 80 usec, rely 255/255, load 1/255 Encapsulation ATM, loopback not set, keepalive not supported Encapsulation(s): AAL5, PVC mode 4096 maximum active VCs, 1024 VCs per VP, 0 current VCCs VC idle disconnect time: 300 seconds Signaling vc = 1, vpi = 0, vci = 5 UNI Version = 3.1, Link Side = user PHY Type : SINGLE PHY; Link Status: DOWN [snip]
LANE バージョン 1 仕様には、SETUP メッセージに AAL パラメータ Information Element(IE)を含ませることが必要です。 この IE では、発呼側または発信元 ATM インターフェイスは、順方向最大 CPCS-SDU サイズおよび逆方向最大 CPCS-SDU サイズを指定する必要があります。サポートされるAAL5 SDUの最大オクテット値は1516、4544、9234、および18190です。Cisco IOSソフトウェアリリース12.1(10)Eでは、LECは最大9218バイト8のフレームを4転送8できます。
巨大フレームのサポートは、すでに 8540 拡張ギガビット イーサネット ラインカードのロードマップに含まれています。8510 のギガビット イーサネット カードにおけるこのようなサポートは調査中です。8540 の ATM ルータ モジュール 2(ARM2)は、設定可能な MTU のサイズをサポートします。
データグラムのサイズに問題の症状がある場合には、トラブルシューティングの範囲を狭めるために、次に示す手順に従います。
正確な MTU がメイン インターフェイスとサブインターフェイスにあることを確認する。
ある一定のパケットサイズよりも大きい PING が失敗した場合は、問題がトラフィック シェーピングに関係している場合がある。「ATM VC の VBR-nrt サービス カテゴリとトラフィック シェーピングについて」を参照してください。パケットが発信元ルータを出たことを確認するか、または次に示すコマンドを使用して送信先ルータを入力するか、あるいはその両方を行います。
debug ip packet(ホスト アクセス リストだけ)
注意:このデバッグでは、実稼働出力に大量の出力が生成される場合があります。このデバッグを有効にする場合は、特に注意してください。
debug atm packet interface atm mod/port vpi vci
debug atm errors
show interface atm の出力にgiants カウンタで 0 以外の値をチェックする。巨大カウンタは PING を行うとカウントアップしますか。
show buffers コマンドを実行して、ミスと失敗カウンタで 0 以外の値を検索する。特にルータを PING したり、システム バッファを使用する場合には、カウンタがカウントアップされているかどうかを判定します。詳細については「バッファのチューニング」を参照してください。
7500#show buffers Buffer elements: 499 in free list (500 max allowed) 913677 hits, 0 misses, 0 created Public buffer pools: Small buffers, 104 bytes (total 480, permanent 480): 474 in free list (20 min, 1000 max allowed) 1036212 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Middle buffers, 600 bytes (total 360, permanent 360): 358 in free list (20 min, 800 max allowed) 635809 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Big buffers, 1524 bytes (total 360, permanent 360): 360 in free list (10 min, 1200 max allowed) 23457 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) VeryBig buffers, 4520 bytes (total 40, permanent 40): 40 in free list (5 min, 1200 max allowed) 8969 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Large buffers, 5024 bytes (total 40, permanent 40): 40 in free list (3 min, 120 max allowed) 0 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Huge buffers, 18024 bytes (total 4, permanent 0): 3 in free list (3 min, 52 max allowed) 0 hits, 1 misses, 427 trims, 431 created 0 failures (0 no memory)
show ip interface atm コマンドを実行して Cisco Express Forwarding(CEF)がイネーブルかどうかを判定する。イネーブルであれば、隣接関係エントリを参照して送信先への MTU のサイズを検査します。
router#show adj atm 5/0.1 interface Protocol Interface Address IP ATM5/0.1 point2point(6) 0 packets, 0 bytes 00040000 AAAA030000000800 CEF expires: 00:02:49 refresh: 00:00:49 ATM-PVC never Fast adjacency enabled IP redirect enabled IP mtu 4470 (0x0) Fixup disabled
Cisco bug ID CSCdv42095 (登録ユーザ専用)は、MTU がブリッジ インターフェイスで 1502 バイトよりも小さく設定された場合に、1498 バイトよりも大きいパケットで失敗する PING の問題を解決します。最大パケットのサイズは、MTU と同じ数に最大 ATM カプセル化のバイト数を加えた数にまで変更できます。回避策として MTU を 1502 に設定します。