はじめに
このドキュメントでは、を使用するための一般的なガイドラインについて説明します。 debug
コマンドには、 debug ip packet
コマンドをCisco IOS®プラットフォームで使用できます。
前提条件
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
このページでは、Cisco IOSプラットフォームで使用可能なデバッグを使用するための一般的なガイドラインと、 debug ip packet
コマンドと条件付きデバッグを使用します。
注:このドキュメントでは、特定のdebugコマンドの使用方法と出力の解釈方法については説明していません。特定の debug コマンドの詳細については、該当する『Cisco Debug Command Reference』マニュアルを参照してください。
出力は debug
特権EXECコマンドは、一般的なプロトコルステータスやネットワークアクティビティに関連するさまざまなインターネットワーキングイベントを含む診断情報を提供します。
警告
利用 debug
コマンドを使用するときは注意が必要です。一般に、これらのコマンドは、特定の障害をトラブルシューティングする場合に限り、必ずルータの技術サポート担当者の指示に従って使用することをお勧めします。
インターネットワークに高い負荷が生じているときにデバッグを有効にすると、ルータの動作が中断する場合があります。そのため、ロギングが有効な場合、コンソール ポートがログ メッセージで過負荷になるとアクセス サーバは断続的にフリーズする可能性があります。
開始する前に、 debug
コマンドを使用する場合は、このコマンドが生成できる出力とそれにかかる時間を常に考慮してください。たとえば、ルータに1つのBasic Rate Interface(BRI;基本速度インターフェイス)がある場合は、 debug isdn q931
システムに悪影響を及ぼすことはありません。しかし、フルE1設定のAS5800で同じデバッグを実行すると、おそらく大量の入力が生成されてハングし、応答が停止する可能性があります。
デバッグを行う前に、 show processes cpu
コマンドを使用して、アップグレードを実行します。デバッグを開始する前に、CPU を十分に使用できることを確認します。高い CPU 負荷に対処する方法の詳細については、『Cisco ルータの CPU 使用率が高い場合のトラブルシューティング』を参照してください。たとえば、Cisco 7200ルータにブリッジングを実行するATMインターフェイスがある場合、設定されたサブインターフェイスの量によっては、ルータの再起動でCPUの多くを使用できます。これは、各 Virtual Circuit(VC; 仮想回線)に Bridge Protocol Data Unit(BPDU; ブリッジ プロトコル データ ユニット)パケットを生成する必要があるためです。このような重大な時間帯にデバッグを開始すると、CPU使用率が大幅に上昇し、ハングやネットワーク接続の喪失が発生する可能性があります。
注:デバッグの実行中、特にデバッグの負荷が高いときには、通常はルータのプロンプトは表示されません。しかし、ほとんどの場合、no debug all または undebug all コマンドを使用してデバッグを中止できます。デバッグの安全な使用方法の詳細については、「デバッグ出力の取得」セクションを参照してください。
デバッグを行う前に
上記の内容に加えて、デバッグがプラットフォームの安定性に与える影響についても、必ず把握してください。また、ルータのどのインターフェイスに接続する必要があるかを考慮する必要があります。このセクションでは、いくつかのガイドラインを示します。
デバッグ出力の取得
ルータはデバッグ出力を、コンソール ポート、aux ポート、および vty ポートなどさまざまなインターフェイスに表示できます。ルータは、内部バッファへのメッセージを外部 UNIX syslog サーバへログすることもできます。次に、各方式の手順と注意事項について説明します。
コンソール ポート
コンソールから通常の設定で接続しているときは、特別な作業を行う必要はありません。デバッグ出力は自動的に表示される必要があります。ただし、 logging console level
は望ましい設定になっており、ロギングが無効になっていないこと。 no logging console
コマンドを使用して、アップグレードを実行します。
警告:ルータのコンソールポートに対する過剰なデバッグが原因でハングする場合があります。これは、ルータが自動的にコンソール出力を他のルータ機能より優先するためです。そのため、ルータがコンソールポートに対して大きなデバッグ出力を処理している場合は、ハングする可能性があります。そのためデバッグ出力が多過ぎる場合は、vty(telnet)ポートまたはログ バッファを使用してデバッグを行います。詳細については、次に説明します。
注:コンソールポートのロギングは、デフォルトで有効になっています。そのため、ユーザが実際には他のポートや方法(Aux、vty、バッファなど)を使用して出力結果を取得する場合でも、コンソール ポートは常にデバッグ出力を処理しています。そのため、シスコでは、通常の稼働状況では常に no logging console コマンドを有効にしておいて、デバッグ出力の取得には別の方法を使用することをお勧めします。コンソールを使用する必要がある状況では、一時的に logging console をオンに戻します。
Aux ポート
補助ポート経由で接続している場合は、 terminal monitor
コマンドを使用して、アップグレードを実行します。また、 no logging on
コマンドがルータでアクティブになっていない。
注:AUXポートを使用してルータを監視している場合、ルータがリブートしても、AUXポートにはブートシーケンスの出力が表示されないことに注意してください。ブート シーケンスを表示するには、コンソール ポートに接続します。
VTY ポート
補助ポートまたはTelnet経由で接続している場合は、 terminal monitor
コマンドを使用して、アップグレードを実行します。また、 no logging on
コマンドが使用されていない。
内部バッファへのメッセージのロギング
デフォルトのロギング デバイスはコンソールです。他のデバイスを指定しない限り、すべてのメッセージはコンソールに表示されます。
メッセージを内部バッファにログするには、 logging buffered
ルータ設定コマンドを使用します。このコマンドの全構文は次のとおりです。
logging buffered
no logging buffered
「 logging buffered
コマンドは、ログメッセージをコンソールに書き込むのではなく、内部バッファにコピーします。バッファは実際には循環しており、新しいメッセージによって古いメッセージが上書きされます。バッファに記録されたメッセージを表示するには、特権EXECコマンドを使用します show logging
を参照。最初に表示されるメッセージは、バッファ内で最も古いメッセージです。バッファのサイズを指定できるだけでなく、ログされるメッセージの重大度も指定できます。
注:バッファサイズを入力する前に、ボックスで十分なメモリが使用可能であることを確認してください。Cisco IOSの使用 show proc mem
コマンドを発行して、使用可能なメモリを確認します。
「 no logging buffered
コマンドはバッファの使用を取り消し、メッセージをコンソールに書き込みます(デフォルト)。
メッセージの UNIX Syslog サーバへのロギング
メッセージを syslog サーバ ホストにログするには、logging ルータ設定コマンドを使用します。このコマンドの全構文は次のとおりです。
logging
no logging
「logging
コマンドは、ロギングメッセージを受信するsyslogサーバホストを指定します。引数 <ip-address> は、ホストの IP アドレスです。このコマンドを何度も発行すると、ロギング メッセージを受信する syslog サーバのリストが作成されます。
「 no logging
コマンドは、指定されたアドレスのsyslogサーバをsyslogのリストから削除します。
その他のデバッグ前作業
-
使用するターミナル エミュレータ ソフトウェア(HyperTerminal など)をセットアップして、デバッグ出力をファイルに取り込みます。たとえば、HyperTerminalでは、Transfer
をクリックし、 Capture Text
を選択し、適切なオプションを選択します。詳細は、『ハイパーターミナルからのテキスト出力のキャプチャ』を参照してください。その他のターミナル エミュレーション ソフトウェアについては、付属のマニュアルを参照してください。
-
ミリ秒(ミリ秒)のタイムスタンプを有効にするには、 service timestamps
コマンドにより、WLC CLI で明確に示されます。
router(config)#service timestamps debug datetime msec
router(config)#service timestamps log datetime msec
これらのコマンドはタイム スタンプを MMM DD HH:MM:SS の形式でデバッグに追加し、日付と時間をシステム クロックに従って表示します。システム クロックをまだ設定していない場合は、日付と時刻の前にアスタリスク(*)が表示されて日付と時刻が正確でないことが示されます。
一般にはミリ秒のタイムスタンプを設定することをお勧めします。これによりデバッグ出力を見るときにより明確になります。タイムスタンプをミリ秒に設定すると、相互に関連しているさまざまなデバッグ イベントのタイミングをより明確に知ることができます。ただし、コンソールポートから大量のメッセージが出力される場合は、イベントの実際のタイミングと関連付けることはできません。たとえば、 debug x25
すべて200個のVCがあるボックス上にあり、出力はバッファに記録されます( no logging console
と logging buffered
コマンドを使用)、デバッグ出力(バッファ内)に表示されるタイムスタンプは、パケットがインターフェイスを通過した正確な時刻ではありません。そのため、ミリ秒のタイムスタンプはパフォーマンス問題を検査するために使用するのではなく、イベントがいつ発生したかに関する関連情報を取得するために使用します。
デバッグを中止するには
デバッグを停止するには、no debug all
またはundebug all
コマンドを発行します。次のコマンドを使用して、デバッグがオフになっていることを確認しますshow debug
を参照。
次のコマンドを使用します no logging console
と terminal no monitor
出力がコンソールに出力されないようにするだけであり、それぞれAuxまたはvtyが出力されないようにします。デバッグは停止されないため、ルータのリソースは消費されています。
debug ip packet コマンドの使用
「 debug ip packet
コマンドは、ルータによってファーストスイッチングされないパケットに関する情報を生成します。しかし、すべてのパケットの出力を作成するため、出力は大規模になりルータがハングする可能性があります。このため、使用するのは debug ip packet
このセクションで説明する最も厳密なコントロールの下で行います。
出力を制限する最良の方法 debug ip packet
は、デバッグにリンクされたアクセスリストを作成することです。アクセスリストの基準に一致するパケットだけが、 debug ip packet
を参照。このアクセス リストをインターフェイスに適用する必要はありません。デバッグ操作に適用します。
使用前 debugging ip packet
を参照してください。ルータはデフォルトでファーストスイッチングを実行しているか、そのように設定されている場合はCEFスイッチングを実行している可能性があります。これは、これらの技法が設定されていると、パケットはプロセッサに送られず、そのためデバッグには何も表示されないことを示します。これが機能するには、次のコマンドを使用して、ルータのファーストスイッチングを無効にする必要があります。 no ip route-cache
(ユニキャストパケットの場合)または no ip mroute-cache
(マルチキャストパケット用)。これは、トラフィックが流れるべきインターフェイスに適用する必要があります。これを確認するには、 show ip route
コマンドを使用して、アップグレードを実行します。
警告
-
ファースト スイッチングを無効にしているルータが大量のパケットを処理すると、CPU の使用率が瞬間的に上昇し、ハングしたりピアへの接続が不通になったりする場合があります。
-
Multi Protocol Label Switching(MPLS)を実行しているルータのファースト スイッチングを無効にしないでください。MPLS は CEF と併用されます。したがって、インターフェイス上のファースト スイッチングを無効にすると重大な影響を与える場合があります。
次のシナリオ例を考えてみましょう。
ルータ 122 には、次のアクセス リストが設定されています。
access-list 105 permit icmp host 10.10.10.2 host 10.1.1.1
access-list 105 permit icmp host 10.1.1.1 host 10.10.10.2
このアクセスリストでは、ホストrouter_121(IPアドレス10.10.10.2)からホストrouter_123(IPアドレス10.1.1.1)へのインターネット制御メッセージプロトコル(ICMP)パケットが許可されます。また、逆方向も許可されます。いずれかの方向のパケットを許可することが重要です。許可しないと、ルータは戻りのICMPパケットをドロップできます。
router_122 の 1 つのインターフェイスだけでファースト スイッチングを解除します。つまり、パケットをインターセプトするCisco IOSの観点から見ると、そのインターフェイス宛てのパケットのデバッグ情報しか表示されないということです。デバッグの観点から見ると、そのようなパケットは「d=」付きで表示されます。他のインターフェイスではファーストスイッチングをオフにしていないため、戻りのパケットは debug ip packet
を参照。次の出力に、ファースト スイッチングを無効にする方法を示します。
router_122(config)#interface virtual-template 1
router_122(config-if)#no ip route-cache
router_122(config-if)#end
次にライセンス認証を行う必要があります debug ip packet
(アクセスリスト105)を使用します。
router_122# debug ip packet detail 105
IP packet debugging is on (detailed) for access list 105
router_122#
00:10:01: IP: s=10.1.1.1 (Serial3/0), d=10.10.10.2 (Virtual-Access1),
g=10.10.10.2, len 100, forward
00:10:01: ICMP type=0, code=0
! -- ICMP packet from 10.1.1.1 to 10.10.10.2.
! -- This packet is displayed because it matches the
! -- source and destination requirements in access list 105
00:10:01: IP: s=10.1.1.1 (Serial3/0), d=10.10.10.2 (Virtual-Access1),
g=10.10.10.2, len 100, forward
00:10:01: ICMP type=0, code=0
00:10:01: IP: s=10.1.1.1 (Serial3/0), d=10.10.10.2 (Virtual-Access1),
g=10.10.10.2, len 100, forward
00:10:01: ICMP type=0, code=0
次に、他のインターフェイス(router_122)のファーストスイッチングを削除します。つまり、これら2つのインターフェイスを通過するすべてのパケットは、現在はパケット交換されています(これは、 debug ip packet
router_122(config)#interface serial 3/0
router_122(config-if)#no ip route-cache
router_122(config-if)#end
router_122#
00:11:57: IP: s=10.10.10.2 (Virtual-Access1), d=10.1.1.1
(Serial3/0), g=172.16.1.6, len 100, forward
00:11:57: ICMP type=8, code=0
! -- ICMP packet (echo) from 10.10.10.2 to 10.1.1.1
00:11:57: IP: s=10.1.1.1 (Serial3/0), d=10.10.10.2 (Virtual-Access1),
g=10.10.10.2, len 100, forward
00:11:57: ICMP type=0, code=0
! -- ICMP return packet (echo-reply) from 10.1.1.1 to 10.10.10.2
00:11:57: IP: s=10.10.10.2 (Virtual-Access1), d=10.1.1.1 (Serial3/0),
g=172.16.1.6, len 100, forward
00:11:57: ICMP type=8, code=0
00:11:57: IP: s=10.1.1.1 (Serial3/0), d=10.10.10.2 (Virtual-Access1),
g=10.10.10.2, len 100, forward
00:11:57: ICMP type=0, code=0
debug ip packet の出力には、アクセス リストの条件に一致しないパケットは表示されないことに注意してください。この手順のその他の情報については、『ping および traceroute コマンドについて』を参照してください。
アクセス リストの作成方法についての詳細は、『標準 IP アクセス リスト ロギング』を参照してください。
条件付きで起動されるデバッグ
デバッグの条件付き起動機能を有効にすると、ルータはルータを指定したインターフェイスで出入りするパケットのデバッグ メッセージを生成します。このルータは別のインターフェイスに出入りするパケットのデバッグ出力を生成しません。
条件付きデバッグの簡単な実装を確認します。次に示すルータ(trabol)には、HDLCカプセル化を実行している2つのインターフェイス(serial 0とserial 3)があります。
通常の debug serial interface
コマンドを発行して、すべてのインターフェイスで受信されたHDLCキープアライブを確認します。キープアライブを両方のインターフェイスで確認できます。
traxbol#debug serial interface
Serial network interface debugging is on
traxbol#
*Mar 8 09:42:34.851: Serial0: HDLC myseq 28, mineseen 28*, yourseen 41, line up
! -- HDLC keeplaive on interface Serial 0
*Mar 8 09:42:34.855: Serial3: HDLC myseq 26, mineseen 26*, yourseen 27, line up
! -- HDLC keeplaive on interface Serial 3
*Mar 8 09:42:44.851: Serial0: HDLC myseq 29, mineseen 29*, yourseen 42, line up
*Mar 8 09:42:44.855: Serial3: HDLC myseq 27, mineseen 27*, yourseen 28, line up
インターフェイス シリアル 3 の条件付きデバッグを有効にします。インターフェイス シリアル 3 のデバッグ情報だけが表示されるようにします。 debug interface <interface_type interface_number >
コマンドを使用して、アップグレードを実行します。
traxbol#debug interface serial 3
Condition 1 set
show debug condition
コマンドを発行して、条件付きデバッグがアクティブであることを確認します。インターフェイス シリアル 3 の条件が有効なことに注意してください。
traxbol#show debug condition
Condition 1: interface Se3 (1 flags triggered)
Flags: Se3
traxbol#
今度はインターフェイス シリアル 3 のデバッグだけが表示されていることに注意してください。
*Mar 8 09:43:04.855: Serial3: HDLC myseq 29, mineseen 29*, yourseen 30, line up
*Mar 8 09:43:14.855: Serial3: HDLC myseq 30, mineseen 30*, yourseen 31, line up
undebug interface <interface_type interface_number>
コマンドを発行して、条件付きデバッグを削除します。条件付きの起動を解除する前に、(undebug all などを使用して)デバッグをオフにしておくことをお勧めします。これは、条件が解除されたときデバッグ出力が集中するのを回避するためです。
traxbol#undebug interface serial 3
This condition is the last interface condition set.
Removing all conditions can cause a flood of debugging
messages to result, unless specific debugging flags
are first removed.
Proceed with removal? [yes/no]: y
Condition 1 has been removed
traxbol
今度は、シリアル 0 とシリアル 3 の両インターフェイスのデバッグが表示されていることに注意してください。
*Mar 8 09:43:34.927: Serial3: HDLC myseq 32, mineseen 32*, yourseen 33, line up
*Mar 8 09:43:44.923: Serial0: HDLC myseq 35, mineseen 35*, yourseen 48, line up
警告:一部のデバッグ操作は、それ自体が条件付きです。1 つの例としては ATM デバッグがあります。ATMデバッグでは、デバッグを有効にするインターフェイスを明示的に指定する必要があります。すべてのATMインターフェイスでデバッグを有効にして条件を指定する必要はありません。
次のセクションでは、ATM パケット デバッグを 1 つのサブインターフェイスに制限する正しい方法を説明します。
arielle-nrp2#debug atm packet interface atm 0/0/0.1
!--- Note that you explicitly specify the sub-interface to be used for debugging
ATM packets debugging is on
Displaying packets on interface ATM0/0/0.1 only
arielle-nrp2#
*Dec 21 10:16:51.891: ATM0/0/0.1(O):
VCD:0x1 VPI:0x1 VCI:0x21 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:0007
Length:0x278
*Dec 21 10:16:51.891: 0000 FFFF FFFF FFFF 0010 7BB9 BDC4 0800 4500 025C 01FE
0000 FF11 61C8 0A30
*Dec 21 10:16:51.891: 4B9B FFFF FFFF 0044 0043 0248 0000 0101 0600 0015 23B7
0000 8000 0000 0000
*Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0010 7BB9 BDC3 0000 0000
0000 0000 0000 0000
*Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000
*Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000
*Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000
*Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000
*Dec 21 10:16:51.895: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000
*Dec 21 10:16:51.895:
arielle-nrp2#
イネーブルにしようとすると、 atm debugging
(条件が適用された)すべてのインターフェイスで、ルータに多数のATMサブインターフェイスがある場合はハングする可能性があります。ここで示されているのは ATM デバッグの誤った方法の一例です。
この場合には条件が適用されていることがわかりますが、効果がないこともわかります。別のインターフェイスからのパケットも確認できます。この実験シナリオでは、インターフェイスは 2 つだけでトラフィックもほとんどありません。インターフェイスの数が多いと、すべてのインターフェイスのデバッグ出力は極端に高くなり、ルータが停止する原因になります。
arielle-nrp2#show debugging condition
Condition 1: interface AT0/0/0.1 (1 flags triggered)
Flags: AT0/0/0.1
! -- A condition for a specific interface.
arielle-nrp2#debug atm packet
ATM packets debugging is on
Displaying all ATM packets
arielle-nrp2#
*Dec 21 10:22:06.727: ATM0/0/0.2(O):
! -- You see debugs from interface ATM0/0/0/.2, even though the condition
! -- specified ONLY AT0/0/0.1
VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2
TYPE:000E Length:0x2F
*Dec 21 10:22:06.727: 0000 0000 0180 0000 107B B9BD C400 0000 0080
0000 107B B9BD C480 0800 0014
*Dec 21 10:22:06.727: 0002 000F 0000
*Dec 21 10:22:06.727: un a
*Dec 21 10:22:08.727: ATM0/0/0.2(O):
VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2
TYPE:000E Length:0x2F
*Dec 21 10:22:08.727: 0000 0000 0180 0000 107B B9BD C400 0000 0080
0000 107B B9BD C480 0800 0014
*Dec 21 10:22:08.727: 0002 000F 0000
*Dec 21 10:22:08.727: ll
*Dec 21 10:22:10.727: ATM0/0/0.2(O):
VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2
TYPE:000E Length:0x2F
*Dec 21 10:22:10.727: 0000 0000 0080 0000 107B B9BD C400 0000 0080
0000 107B B9BD C480 0800 0014
*Dec 21 10:22:10.727: 0002 000F 0000
*Dec 21 10:22:10.727:
*Dec 21 10:22:12.727: ATM0/0/0.2(O):
VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2
TYPE:000E Length:0x2F
*Dec 21 10:22:12.727: 0000 0000 0080 0000 107B B9BD C400 0000 0080
0000 107B B9BD C480 0800 0014
*Dec 21 10:22:12.727: 0002 000F 0000
*Dec 21 10:22:12.727:
*Dec 21 10:22:13.931: ATM0/0/0.1(O):
!--- You also see debugs for interface ATM0/0/0.1 as you wanted.
VCD:0x1 VPI:0x1 VCI:0x21 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2
TYPE:0007 Length:0x278
*Dec 21 10:22:13.931: 0000 FFFF FFFF FFFF 0010 7BB9 BDC4 0800 4500
025C 027F 0000 FF11 6147 0A30
*Dec 21 10:22:13.931: 4B9B FFFF FFFF 0044 0043 0248 0000 0101 0600
001A 4481 0000 8000 0000 0000
*Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0010 7BB9 BDC3
0000 0000 0000 0000 0000 0000
*Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
*Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
*Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
*Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
*Dec 21 10:22:13.935: 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
関連情報