目錄

簡介

背景資訊

ELAM挑戰

ELAM基礎知識

ELAM工作流

集中轉發與分散式轉發

資料匯流排(DBUS)和結果匯流排(RBUS)

本機目標邏輯(LTL)

泛洪位

ELAM示例

內部ASIC名稱

使用ELAM的其他方式

相關資訊

簡介

本文說明什麼是嵌入式邏輯分析器模組(ELAM)、它的缺點以及如何最好地使用它。

背景資訊

隨著網路裝置和協定複雜性的增加，發現網路問題的根源會變得極其困難。通常，您必須確定在特定裝置上是否正確接收和轉發幀。有幾種捕獲工具、調試和技巧可用於幫助回答此問題。但是，並非所有協定都可以在生產網路中運行或可用。

ELAM是一個工程工具，使您能夠檢視思科ASIC的內部情況並瞭解資料包如何轉發。它嵌入轉發管道中，可以即時捕獲資料包，而不會中斷效能或控制平面資源。有助於回答以下問題：

- 封包是否已到達轉送引擎(FE)?

- 資料包是在哪個埠和VLAN上接收的？

- 資料包如何顯示(第2層(L2) — 第4層(L4)資料)?

- 資料包是如何更改的，它傳送到哪裡？

ELAM功能極其強大、顆粒度極高，且無入侵性。對於在硬體交換平台上工作的思科技術協助中心(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)以及Nexus 7000系列交換機平台上執行ELAM所需的基礎知識。

ELAM工作流

如前所述，ELAM依賴於底層硬體；因此，CLI語法取決於使用的硬體。但是，每個平台都遵循類似的工作流程，如下圖所示：

附註：請參閱ELAM示例部分以瞭解此工作流如何應用於不同的平台。

以下四個步驟（將在本節稍後進一步詳述）描述了工作流：

1. 確定預期的入口FE。當平台有多個FE時，確定對要捕獲的資料包做出轉發決策的FE至關重要。在正確的FE上配置ELAM。

2. 配置ELAM觸發器。您必須使用特定於要捕獲的資料包的詳細資訊來配置觸發器。常見觸發器包括源和目標IP地址或L4埠號。ELAM允許指定多個欄位，並對配置的所有欄位執行邏輯AND。

3. 啟動ELAM。

4. 等待ELAM觸發並顯示結果。

集中轉發與分散式轉發

要執行ELAM，您必須完成的第一步是確定正確的FE。採用傳統或集中轉發(CFC)線卡的6500使用集中轉發，由活動管理引擎做出轉發決策。對於在經典或CFC線路卡上輸入的資料包，必須在活動管理引擎上執行ELAM。

使用啟用分散式轉發(DFC)的線卡，轉發決策由線卡上的FE本地做出，而無需管理引擎。對於輸入DFC線卡的資料包，您必須線上卡本身上執行ELAM。

對於Nexus 7000系列交換機平台，所有線卡都完全分佈。此外，大多數線卡都有多個FE。設定ELAM時，必須知道接收資料包的埠，並確定對映到該埠的FE。

有關硬體和轉發架構的其他資訊，請參閱以下Cisco Live 365文章：

- BRKARC-3465 Cisco Catalyst 6500交換機架構

- BRKARC-3470 - Cisco Nexus 7000交換器架構

資料匯流排(DBUS)和結果匯流排(RBUS)

DBUS包含FE用來做出轉發決策的資訊。它包含多個特定於平台的內部欄位，以及幀的報頭資訊。檢視DBUS以幫助確定接收資料包的位置以及資料包L2-L4資訊。

RBUS包含FE做出的轉發決策。檢視RBUS以幫助確定幀是否被更改以及幀被傳送到何處。

本機目標邏輯(LTL)

LTL是用於表示埠或埠組的索引。源LTL索引和目標LTL索引顯示接收幀的位置和傳送位置。

附註：不同的平台和管理引擎使用不同的命令來解碼LTL值。

泛洪位

LTL值顯示為五個或更少的十六進位制數（例如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的示例，請訪問以下連結：

- 採用Supervisor Engine 720 ELAM的Catalyst 6500系列交換器程式

- 採用Supervisor Engine 2T ELAM的Catalyst 6500系列交換器程式

- Nexus 7000 M系列模組ELAM程式

- Nexus 7000 M3模組ELAM程式

- Nexus 7000 F1模組ELAM程式

- Nexus 7000 F2模組ELAM程式

- Nexus 6000交換機ELAM概述

內部ASIC名稱

作為參考，下表列出了為每種模組型別分配給ELAM的內部ASIC名稱：

平台

模組型別

內部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

Clipper

Nexus 7000

F3

側翼

Nexus 6000

不適用

比格蘇爾

使用ELAM的其他方式

還有一種更便於客戶使用ELAM的方法。在Cisco IOS®版本12.2(50)SY和更新版本中，思科為執行Sup2T的6500新增了show platform datapath命令。 此命令使用ELAM來擷取和顯示特定封包的轉送結果。

針對Nexus 7000系列交換器平台，在Cisco IOS版本6.2(2)中新增了易於使用的指令碼elame，以便利用ELAM:

N7KA# source sys/elame

elam helper, version 1.015

Usage:

elame [<src>] <dest> [vlan <vlan#>] [vrf <vrf_name>] [int <interface> | vdc] [trace]

在輸出中：

- <src>和<dest>是1.2.3.4格式的IPV4地址。

- <vlan>和<interface>表示輸入VLAN/介面。

- vdc指示當前虛擬裝置環境(VDC)中的所有ELAM均已被使用。

- [trace]表示系統保留揮發性(elame.log)中所有輸出的記錄。

請注意，此時在F3模組和其他N77xx線路卡上不支援elame指令碼。為改進Elame指令碼，已歸檔幾個增強錯誤，而該指令碼仍由業務部門檢視。

- 思科錯誤ID CSCuy42559

- 思科錯誤ID CSCuw60869

附註：Elam是一種內部工具，只能在TAC/BU監督下使用。

相關資訊

- BRKARC-2011 — 思科交換機和路由器故障排除工具概述 — Cisco Live 365

- 技術支援與文件 - Cisco Systems