内容

はじめに

前提条件

要件

使用するコンポーネント

ELAMとは何ですか。

トポロジ

入力フォワーディングエンジンの識別

例：ARP ELAMキャプチャ

トリガーの設定

結果の解釈

例：IPv4 ELAMキャプチャ

トリガーの設定

結果の解釈

追加検証(F3 ltl-region)

ELAMバグ

はじめに

このドキュメントでは、Cisco Nexus 7000/7700 F3モジュールでELAM(Embedded Logic Analyzer Module)を実行するために使用する手順について説明します。

前提条件

要件

このドキュメントで説明する情報に進む前に、Cisco Nexusオペレーティングシステム(NX-OS)と基本的なNexusアーキテクチャに精通しておくことをお勧めします。

ELAMは、network-adminロールによってのみ実行できます。network-admin権限を持つユーザとしてログインしていることを確認してください。

使用するコンポーネント

このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。

- Cisco Nexus 7700 シリーズ スイッチ

- Cisco N7700 F3シリーズモジュール（N77-F324FQ-25、24ポート10/40ギガビットイーサネットモジュール）

- Cisco NX-OSバージョン8.4.9

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

ELAMとは何ですか。

ELAMは、中断することなくリアルタイムパケットをキャプチャすることによってネットワーク転送の問題のトラブルシューティングを支援し、パフォーマンスやコントロールプレーンリソースに影響を与えません。ELAMは、Cisco Technical Assistance Center(TAC)のエンジニアが最もよく使用する、強力できめ細かく、干渉しないツールです。ただし、ELAMツールが一度にキャプチャするパケットは1つだけであり、ELAMの開始後に最初に受信するパケットであることを知っておくことが重要です。フローのすべてのパケットをキャプチャする必要がある場合は、SPANまたはERSPANを使用してください。

ELAMは次のような質問に答えることができます。

- 対象のフレームがスイッチに入っているか。

- パケットの送信元のポートとVLANを教えてください。

- 着信パケットの送信元と宛先のMACアドレスは何ですか。

- パケットはどのように書き換えられますか。また、どのポートに送信されますか。

トポロジ

この記事では、N77-F3ポートE5/23に接続されたHost1がトラフィックをHost2に送信します。ELAMは、Host1からHost2への個々のフレームをキャプチャするために使用されます。

N7KでELAMを実行するには、まずnetwork-adminを使用してユーザとしてログインし、次にモジュールに接続する必要があります。

N77-F3# attach module 5

Attaching to module 5 ...

To exit type 'exit', to abort type '$.'

Last login: Thu Jan 18 05:31:04 pst 2024 from 127.1.1.3 on pts/0

入力フォワーディングエンジンの識別

Nexus 7000は完全分散型スイッチとして動作し、入力ラインカードのフォワーディングエンジンによって転送の決定が行われます。

この記事では、対象のトラフィックがポート5/23経由でスイッチに入ることが想定されています。N7Kの例では、mモジュール5 はF3モジュールです。

N77-F3# show module 5

Mod Ports            Module-Type                     Model         Status

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

5     24      10/40 Gbps Ethernet Module        N77-F324FQ-25       ok

Mod Sw Hw

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

5 8.4(9) 1.3

F3モジュールの場合は、内部コード名Flankerのレイヤ2(L2)フォワーディングエンジン(FE)でELAMを実行します。

module-5# show hardware internal dev-port-map

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

CARD_TYPE: 24 port 40G

>Front Panel ports:24

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

Device name                  Dev role           Abbr num_inst:

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

> Flanker Fwd Driver     DEV_LAYER_2_LOOKUP      L2LKP 12

FP port | PHYS | MAC_0 | L2LKP | L3LKP | QUEUE |SWICHF

22                 10     10      10      10      0,1

23                 11     11      11      11      0,1        >>>Port 23 belongs to FE instance 11

24                 11     11      11      11      0,1

+-----------------------------------------------------------------------+

この出力では、ポートE5/23がFEインスタンス11に属していることが明らかです。

レイヤ2(L2)およびレイヤ3(L3)ルックアップの前に、レイヤ2 FEデータバス(DBUS)が元のヘッダー情報を伝送するのに対し、結果バス(RBUS)にはL3およびL2の両方のルックアップの結果が含まれます。ほとんどのトラブルシューティングシナリオでは、レイヤ2 ELAMキャプチャで十分です。

N77-F3# attach module 5

Attaching to module 5 ...

To exit type 'exit', to abort type '$.'

Last login: Thu Jan 18 05:31:04 pst 2024 from 127.1.1.3 on pts/0

module-5# elam asic flanker instance 11

module-5(fln-elam)# ?

layer2 ELAMs for layer 2

layer3 ELAMs for layer 3

module-5(fln-elam)# layer2

例：ARP ELAMキャプチャ

この例では、ポートE5/23にリンクされているVLAN 100上のHost1（IPアドレス192.168.1.1、MACアドレス8c60.4fc7.c5bc）がAddress Resolution Protocol（ARP；アドレス解決プロトコル）要求を送信します。この要求の目的は、同じVLAN 100上のIPアドレス192.168.1.2を持つ別のホストのMACアドレスを解決することです。

トリガーの設定

Flanker ASICは、さまざまなフレームタイプのELAMトリガーをサポートしています。ELAMトリガーはフレームタイプに対応している必要があります。フレームがARPフレームの場合、トリガーもARPオプションに設定する必要があります。ARPフレームは、その他のL2トリガーではキャプチャできません。ELAMを使用してMPLSフレームをキャプチャする場合は、MPLSではなくIPv4またはIPv6を選択します。詳細については、「バグ」セクションを参照してください。

module-5(fln-l2-elam)# trigger dbus ?

arp ARP Frame Format              >>>capture ARP packet. Other L2 does not work for ARP

fc Fc hdr Frame Format

ipv4 IPV4 Frame Format            >>>capture IPv4 frame

ipv6 IPV6 Frame Format            >>>capture IPv6 frame

mpls MPLS

other L2 hdr Frame Format         >>>capture non-ip l2 frame

rarp RARP Frame Format

この例では、フレームはARPフレームのターゲットIPアドレスフィールドに基づいてキャプチャされるため、この値だけが指定されます。

Flankerでは、DBUSとRBUSの両方に対してトリガーを設定する必要があります。RBUSトリガーは簡素化されておりtrig、DBUSトリガーと同じ基準に一致します。

module-5(fln-l2-elam)# trigger dbus arp ingress if target-ip-address 192.168.1.2

module-5(fln-l2-elam)# trigger rbus ingress if trig

これでトリガーが設定されたので、キャプチャを開始できます。

module-5(fln-l2-elam)# start

ELAMがパケットをキャプチャしたかどうかを確認するには、statusコマンドを実行できます。 Armedという用語は、一致するパケットがまだキャプチャされていないことを示します。

module-5(fln-l2-elam)# status

ELAM Slot 5 instance 11: L2 DBUS Configuration: trigger dbus arp ingress if target-ip-address 192.168.1.2

L2 DBUS: Armed                  >>>no matched packet

ELAM Slot 5 instance 11: L2 RBUS Configuration: trigger rbus ingress if trig

L2 RBUS: Armed                  >>>no matched packet

Host1(192.168.1.1)から192.168.1.2にpingします。Host1にはARPエントリがないため、Host1はブロードキャストパケットでARP要求を送信します。FEはARPフレームを受信すると、トリガーをチェックします。一致がある場合、ELAMはこのフレームの転送決定をキャプチャし、ELAMステータスがTriggeredと表示されます。

module-5(fln-l2-elam)# status

ELAM Slot 5 instance 11: L2 DBUS Configuration: trigger dbus arp ingress if target-ip-address 192.168.1.2

L2 DBUS: Triggered              >>Packet hit

ELAM Slot 5 instance 11: L2 RBUS Configuration: trigger rbus ingress if trig

L2 RBUS: Triggered              >>Packet hit

結果の解釈

結果は、DBUSとRBUSが同じパケットをキャプチャした場合にのみ有効です。したがって、DBUSとRBUSの結果の両方でシーケンス番号を確認する必要があります。一致しない場合は、再起動して、一致するまで再度キャプチャできます。

module-5(fln-l2-elam)# show dbus | in seq

sequence-number : 0x7 vl : 0x0

module-5(fln-l2-elam)# show rbus | in seq

l2-rbus-trigger : 0x1 sequence-number : 0x7

書き換えの前にデータが含まれているため、最初にDBUS出力を確認することをお勧めします。次に、ARP ELAMキャプチャの例を示します。出力が一部省略されていることに注意してください。

module-5(fln-l2-elam)# show dbus

cp = 0x20c6ad1c, buf = 0x20c6ad1c, end = 0x20c7706c

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

Flanker Instance 11 - Capture Buffer On L2 DBUS:

<snip>

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

L2 DBUS PRS MLH ARP/RARP

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

valid : 0x1                                    requst-response : 0x1    >>>ARP request

(1:for ARP request,2: for ARP reply, 3:for RARP request, 4:for RARP reply)

port-id : 0x0                                 last-ethertype : 0x806    >>>Ethernet type, 0x0806 means ARP

packet-type : 0x0                              l2-length-check : 0x0    >>>0 for ingress, 1 for egress

vqi : 0x0                                       packet-length : 0x40    >>>L2 ethernet frame totally length 64 byte

vlan : 0x64                                  destination-index : 0x0    >>>VLAN100

source-index : 0xb79                               bundle-port : 0x0    >>>source port ltl index

status-is-1q : 0x0                                 trill-encap : 0x0    >>>0 means frame without vlan tag

sender-ip-address: 192.168.1.1                                          >>>sender-ip-address in ARP header

target-ip-address: 192.168.1.2                                          >>>target-ip-address in ARP header

sender-mac-address : 8c60.4fc7.c5bc                                     >>>sender-mac-address in ARP header

target-mac-address : ffff.ffff.ffff                                     >>>target-mac-address in ARP header

destination-mac-address : ffff.ffff.ffff                                >>>sestination mac in ethernet header

source-mac-address : 8c60.4fc7.c5bc                                     >>>source mac in ethernet header

DBUSデータから、送信元MACアドレスが8c60.4fc7.c5bc、宛先MACアドレスがffff.ffff.ffffのフレームがVLAN100(vlan:0x64)で受信されたことを確認できます。また、これはIP 192.168.1.1から発信されたARP要求フレームであることもわかります。

フレームを受信したポートを確認するには、PIXM(Port Index Manager)コマンドを使用します。このコマンドは、前面ポートまたは前面ポートのグループへのLocal Target Logic(LTL)のマッピングを表示します。

N77-F3# show system internal pixm info ltl 0xb79

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

Type LTL

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

PHY_PORT Eth5/23

FLOOD_W_FPOE 0xc031

出力から、source-index 0xb79がポートE5/23にマッピングされていることがわかります。これにより、フレームがポートE5/23で受信されていることが確認されます。

ELAMが対象フレームをキャプチャしたことを確認した後、RBUSデータを使用して転送の決定の結果を確認できます（出力の一部は省略されています）。

module-5(fln-l2-elam)# show rbus

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

L2 RBUS INGRESS CONTENT

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

di-ltl-index : 0xc031                        l3-multicast-di : 0xc00    >>> destination ltl index

source-index : 0xb79                         vlan : 0x64                >>> vlan id after rewritten

vqi : 0x0                                    di2-valid : 0x0            >>> use l3-multicast-di as di if this is 1

routed-frame : 0x0                           copy-cause : 0x0           >>> 0x0 means N7K performs layer 2 switching

RBUSデータから、フレームがVLAN 100(0x64)でスイッチされていることを確認できます。di-ltl-indexから出力ポートを判別するには、pixmコマンドを再度使用します。

N77-F3# show system internal pixm info ltl 0xc031

Member info

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

IFIDX LTL

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

Eth5/24 0x0b78

Eth5/23 0x0b79

出力は、ポートE5/23とE5/24がどちらもLTL 0xc031に属していることを示しています。ARPパケットはこれらの両方のポートに切り替わります。E5/23から受信されるため、E5/24からのみ送信されます。

例：IPv4 ELAMキャプチャ

ipv4 l3 elam

この例では、VLAN 100上のHost1(IPアドレス192.168.1.1/24、MACアドレス8c60.4fc7.c5bc)がポートE5/23に接続され、Internet Control Message Protocol(ICMP)要求をHost2に送信します。Host2のIPアドレスは192.168.2.2/24で、別のVLAN(VLAN200)にあります。

トリガーの設定

この例では、Host1とHost2が異なるVLANにあるため、Host1からHost2へのICMPパケットはN77-F3上のレイヤ3を介してルーティングされます。レイヤ2 ELAMは、ICMP要求パケットをキャプチャするために使用されます。

送信元IP(192.168.1.2)と宛先IP(192.168.2.2)の両方がDBUSトリガーとして組み合わされます。ELAMは、すべてのトリガーに一致するパケットのみをキャプチャします。

N77-F3# attach module 5

Attaching to module 5 ...

To exit type 'exit', to abort type '$.'

Last login: Thu Jan 18 11:19:46 pst 2024 from 127.1.1.3 on pts/0

module-5# elam asic flanker instance 11

module-5(fln-elam)# layer2

module-5(fln-l2-elam)# trigger dbus ipv4 ingress if destination-ipv4-address 192.168.2.2 source-ipv4-address 192.168.1.2

module-5(fln-l2-elam)# trigger rbus ingress if trig

module-5(fln-l2-elam)# start

module-5(fln-l2-elam)# status

ELAM Slot 5 instance 11: L2 DBUS Configuration: trigger dbus ipv4 ingress if destination-ipv4-address 192.168.2.2 source-ipv4-address 192.168.1.2

L2 DBUS: Armed

ELAM Slot 5 instance 11: L2 RBUS Configuration: trigger rbus ingress if trig

L2 RBUS: Armed

Host1(192.168.1.2)からHost2(192.168.2.2)へのpingを開始します。トリガーに一致するパケットがFEインスタンス11で受信されると、ELAMステータスはTriggeredと表示されます。

module-5(fln-l2-elam)# status

ELAM Slot 5 instance 11: L2 DBUS Configuration: trigger dbus ipv4 ingress if destination-ipv4-address 192.168.2.2 source-ipv4-address 192.168.1.2

L2 DBUS: Triggered

ELAM Slot 5 instance 11: L2 RBUS Configuration: trigger rbus ingress if trig

L2 RBUS: Triggered

結果の解釈

RBUSとDBUSのシーケンス番号が同じであることを確認します。この手順は、すべてのキャプチャに必要です。

module-5(fln-l2-elam)# show dbus | in seq

sequence-number : 0x74 vl : 0x0

module-5(fln-l2-elam)# show rbus | in seq

l2-rbus-trigger : 0x1 sequence-number : 0x74      >>same sequence number, valid elam result

次に、IPv4 ICMP ELAMキャプチャの例を示します。出力が一部省略されていることに注意してください。

module-5(fln-l2-elam)# show dbus

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

L2 DBUS PRS MLH IPV4

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

l4-protocol : 0x1                                           df : 0x0    >>>L4 protocol id, 1 means icmp packet

ttl : 0xff                                   l3-packet-length : 0x54    >>>ip total length is 84 in this packet, ttl is 255

port-id : 0x0                                 last-ethertype : 0x800    >>>Ethernet type, 0x0800 means IPv4

vqi : 0x0                                       packet-length : 0x66    >>>L2 frame length field

vlan : 0x64                                  destination-index : 0x0    >>>vlan id 100

source-index : 0xb79                               bundle-port : 0x0    >>>source port ltl index

status-is-1q : 0x1                                 trill-encap : 0x0    >>>1 means frame with vlan tag

source-ipv4-address: 192.168.1.2                                        >>>Packet source IP

destination-ipv4-address: 192.168.2.2                                   >>>Packet destination IP

destination-mac-address : 003a.9c40.8ac3                                >>>Packet destination mac

source-mac-address : 8c60.4fc7.c5bc                                     >>>Packet source mac

DBUSデータから、送信元IPが192.168.1.2、宛先IPが192.168.2.2であるパケットがVLAN100(vlan:0x64)で受信されたことを確認できます。また、これがIPv4 ICMPパケットであることもわかります。

フレームを受信したポートを確認するには、PIXM(Port Index Manager)コマンドを実行します。このコマンドは、前面ポートまたは前面ポートのグループへのLocal Target Logic(LTL)のマッピングを表示します。

N77-F3# show system internal pixm info ltl 0xb79

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

Type LTL

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

PHY_PORT Eth5/23

FLOOD_W_FPOE 0xc032

FLOOD_W_FPOE 0xc031

FLOOD_W_FPOE 0xc029

この出力は、0xb79のsource-indexがポートE5/23にマッピングされていることを示しています。これにより、フレームがポートE5/23で受信されたことを確認できます。

ELAMが対象のICMPパケットをキャプチャしたことを確認したら、RBUSデータを使用して転送の決定の結果を確認できます（出力の一部が省略されています）。RBUSデータから、フレームがVLAN 100(0x64)からVLAN200にルーティングされていることがわかります。

module-5(fln-l2-elam)# show rbus

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

L2 RBUS INGRESS CONTENT

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

segment-id-valid : 0x0                                 ttl-out : 0xfe      >>>TTL is 254

di-ltl-index : 0xb78                            l3-multicast-di : 0x0      >>>destination port ltl

source-index : 0xb79                                      vlan : 0xc8      >>>vlan id is 200

routed-frame : 0x1                                   copy-cause : 0x0      >>>routed on N7K

di-ltl-indexから出力ポートを判別するには、PIXMコマンドを実行します。出力は、出力ポートがE5/24であることを示しています。

N77-F3# show system internal pixm info ltl 0xb78

Member info

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

Type LTL

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

PHY_PORT Eth5/24

FLOOD_W_FPOE 0xc032

FLOOD_W_FPOE 0xc031

FLOOD_W_FPOE 0xc029

追加検証(F3 ltl-region)

このコマンドの出力は、物理ポートと一致しない場合のLTLの目的を理解するのに役立ちます。例としては、ドロップLTLやインバンドLTLがあります。

N77-F3# show system internal pixm info ltl-region

===========================================================

PIXM VDC 1 LTL MAP Version: 3

Description: LTL Map for Crossbow

===========================================================

LTL_TYPE SIZE START END

========================================================================

LIBLTLMAP_LTL_TYPE_SUP_ETH_INBAND 64 0xc00 0xc3f

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

LIBLTLMAP_LTL_TYPE_DROP_DI_WO_HW_BITSET 0xcae

LIBLTLMAP_LTL_TYPE_DROP_DI 0xcad

ELAMバグ

Cisco Bug ID

バグタイトル

修正バージョン

Cisco Bug ID CSCux73273

F3のELAMに対するMPLSトリガーが機能していない

修正済みバージョンはありません。回避策を使用してください

Cisco Bug ID CSCvm65736

N7k:ELAMリリーストリガーclp_elamクラッシュ/LCリロード

7.3(3)D1(1)、8.2(3)または8.3(2)