概要
このドキュメントでは、Embedded Logic Analyzer Module(ELAM)とその短所、最適な使用法について説明します。
背景情報
ネットワークデバイスとプロトコルの複雑さが増すと、ネットワークの問題の原因を見つけることは非常に困難になります。フレームが特定のデバイスで受信され、正しく転送されているかどうかを確認する必要があります。この質問に答えるために、いくつかのキャプチャツール、デバッグ、およびテクニックを使用できます。ただし、実稼働ネットワーク上で実行できるとは限りません。
ELAMは、Cisco ASICの内部を調べてパケットの転送方法を理解できるエンジニアリングツールです。転送パイプラインに組み込まれ、パフォーマンスやコントロールプレーンリソースを中断することなく、パケットをリアルタイムでキャプチャできます。次のような質問に答えるのに役立ちます。
- パケットはフォワーディングエンジン(FE)に到達しましたか。
- パケットはどのポートとVLANで受信されますか。
- パケットはどのように表示されますか(レイヤ2(L2) – レイヤ4(L4)データ)。
- パケットはどのように変更され、どこに送信されますか。
ELAMは非常に強力で粒度が高く、非侵入型です。これは、ハードウェアスイッチングプラットフォームで作業するCisco Technical Assistance Center(TAC)エンジニアにとって貴重なトラブルシューティングツールです。
ELAMの課題
ELAMは、内部使用の診断ツールとして設計されました。CLI構文ではCisco ASICの内部コード名を使用するため、ELAMデータの解釈にはハードウェア固有のアーキテクチャおよび転送情報が必要です。これらの詳細の多くは、シスコのデバイスをクラス最高の状態にするシスコ独自の内部機能を公開しているため、説明できません。
このような理由から、ELAMは顧客がサポートする機能ではなく、内部使用の診断ツールとして残っています。外部設定ガイドはなく、構文と操作は予告なくバージョンごとに変更されることがあります。
これらの課題と免責事項を考慮すると、ELAMが現在説明されている理由は次のとおりです。
- 最初に、TACエンジニアが問題を切り分けるためにELAMを使用することは非常に一般的です。問題が断続的に発生する場合は、TACからELAMの実行を要求されることがあります。これらの手順は影響を受けないことと、根本原因の分析にどのように役立つかについて理解することが重要です。
- また、問題の切り分けに役立つ他のツールが利用できないことがあります。たとえば、SPAN、ACLヒット、または侵入的なデバッグの実稼働時間中に設定変更が許可されていない場合です。TACに連絡する時間がない可能性があり、ELAMは最後の手段として非常に役立つツールです。
ELAMの基本
ELAMは、各プラットフォームのアーキテクチャに関する完全な知識がなくても実行できます。このセクションでは、Cisco Catalyst 6500および7600シリーズスイッチプラットフォーム(それぞれ単に6500および7600)でELAMを実行するために必要な基本について説明します。
ELAMワークフロー
前述したように、ELAMは基盤となるハードウェアに依存します。したがって、CLI構文は使用中のハードウェアによって異なります。ただし、次の図に示すように、各プラットフォームは同様のワークフローに従います。
注:このワークフローが異なるプラットフォームに適用される方法については、「ELAMの例」のセクションを参照してください。
このセクションの後半で詳しく説明する次の4つの手順で、ワークフローについて説明します。
- 予想される入力FEを特定します。プラットフォームに複数のFEがある場合、キャプチャするパケットの転送決定を行うFEを特定することが重要です。正しいFEでELAMを設定します。
- ELAMトリガーを設定します。キャプチャするパケットに固有の詳細を含むトリガーを設定する必要があります。一般的なトリガーには、送信元と宛先のIPアドレスまたはL4ポート番号が含まれます。ELAMでは、複数のフィールドを指定でき、設定されたすべてのフィールドで論理ANDを実行します。
- ELAMを起動します。
- ELAMがトリガーされるのを待ち、結果を表示します。
集中型と分散型の転送
ELAMを実行するために完了する必要がある最初のステップは、正しいFEを特定することです。クラシックラインカードまたは中央集中型フォワーディング(CFC)ラインカードを搭載した6500では、中央集中型フォワーディングが使用されます。この場合、アクティブ側スーパーバイザがフォワーディングに関する決定を行います。クラシックまたはCFCラインカードで入力するパケットの場合は、アクティブ側スーパーバイザでELAMを実行する必要があります。
Distributed Forwarding(DFC)対応のラインカードでは、転送の決定はスーパーバイザを使用せずに、ラインカード上のFEによってローカルに行われます。入力DFCラインカードのパケットの場合は、ラインカード自体でELAMを実行する必要があります。
Nexus 7000シリーズスイッチプラットフォームでは、すべてのラインカードが完全に分散されています。さらに、ほとんどのラインカードには複数のFEがあります。ELAMを設定するときは、パケットが受信されるポートを認識し、そのポートにマッピングされるFEを判別する必要があります。
ハードウェアおよび転送アーキテクチャの詳細については、次のCisco Live 365記事を参照してください。
データバス(DBUS)および結果バス(RBUS)
DBUSには、転送の決定にFEが使用する情報が含まれています。フレームのヘッダー情報とともに、プラットフォーム固有の複数の内部フィールドが含まれます。DBUSを表示して、パケットの受信場所とパケットL2-L4情報を確認します。
RBUSには、FEによって行われた転送決定が含まれます。RBUSを表示して、フレームが変更されたかどうか、およびフレームの送信先を確認します。
ローカルターゲットロジック(LTL)
LTLは、ポートまたはポートグループを表すために使用されるインデックスです。送信元LTLインデックスと宛先LTLインデックスは、フレームが受信された場所と送信先を示します。
注:プラットフォームやスーパーバイザによって、LTL値をデコードするために異なるコマンドが使用されます。
フラッドビット
LTL値は5つ以下の16進数(0xa2cなど)で表示されます。 フラッドビットは、LTLの結果の16番目のビットです。通常、RBUSは宛先LTLインデックスを持つフィールドを表示し、フラッドビット用に別のフィールドを持ちます。正しいLTLのためにこれらの結果をマージすることが重要です。以下に、いくつかの例を示します。
RBUS:
FLOOD ........................... [1] = 1
DEST_INDEX ...................... [19] = 0x48
この例では、宛先LTLインデックスは0x48です。フラッドビットは1なので、LTLの16番目のビットを1に設定する必要があります。
0x00048 = 0000 0000 0000 0100 1000
|
+---- Flood bit, set to 1 = 0x08048
フラッドビットを計算すると、宛先インデックスは0x8048になります。
ELAMの例
これらの例の目的は、ELAMを使用して基本的なIPv4またはIPV6ユニキャストフローを検証する方法を説明することです。このドキュメントの「ELAMの課題」セクションで説明されているように、マルチキャスト、トンネル、MPLSの再循環など、すべての内部フィールドやパケットタイプを説明することは現実的ではありません。
さまざまなデバイスでのELAMの使用例については、次のリンクを参照してください。
内部ASIC名
参照として、各モジュールタイプのELAMに割り当てられた内部ASIC名を次の表に示します。
Platform |
モジュールタイプ |
内部ASIC名 |
Catalyst 6500/Cisco 7600 |
Sup720(PFC3、DFC3) |
スーパーマン |
Catalyst 6500 |
Sup2T(PFC4、DFC4) |
恵礼香 |
Nexus 7000 |
Mシリーズ(M1およびM2) |
恵礼香 |
Nexus 7000 |
M3モジュール |
F4 |
Nexus 7000 |
F1 |
オリオン |
Nexus 7000 |
F2 |
クリッパー |
Nexus 7000 |
F3 |
フランカー |
Nexus 6000 |
N/A |
ビグスル |
ELAMのその他の使用方法
ELAMを使用する方法は、より顧客に優しい方法です。Cisco IOS®リリース12.2(50)SY以降では、Supervisor Engine 2T(Sup2T)を実行する6500に対してshow platform datapathコマンドを追加しました。 このコマンドは、ELAMを使用して、特定のパケットの転送結果をキャプチャして表示します。
Nexus 7000シリーズスイッチプラットフォームの場合、ELAMを活用するために、使いやすいスクリプトelameがCisco IOSリリース6.2で追加されました。
N7KA# source sys/elame
elam helper, version 1.015
Usage:
elame [<src>] <dest> [vlan <vlan#>] [vrf <vrf_name>] [int <interface> | vdc] [trace]
出力:
- <src>と<dest>はIPV4アドレスで、形式は1.2.3.4です。
- <vlan>と<interface>は入力VLAN/インターフェイスを示します。
- vdcは、現在の仮想デバイスコンテキスト(VDC)内のすべてのELAMが使用されていることを示します。
- [trace]は、システムが揮発性(elame.log)のすべての出力を記録していることを示します。
この時点では、F3モジュールやその他のN77xxラインカードではelameスクリプトはサポートされていません。Elameスクリプトを改善するために、いくつかの機能拡張のバグが報告されており、それはまだ事業部門によって検討されています。
注:Elamは内部ツールであり、TAC/BUの監視下でのみ使用する必要があります。
関連情報