目錄

簡介

必要條件

需求

採用元件

慣例

IfIndex入門

輪詢對象

基於ifIndex輪詢對象

如果表未按ifIndex編制索引或交叉編制索引，則輪詢對象

將BRIDGE-MIB與IF-MIB關聯

相關資訊

簡介

輪詢簡單網路管理協定(SNMP)對象時，您有時必須確切知道輪詢的內容。為了充分理解這一點，您需要知道如何將正在輪詢的對象與您要輪詢的對象相關聯。本文檔介紹了有關如何使用SNMP中的索引將對象分組到表中的基本資訊。

必要條件

需求

本文檔的讀者應瞭解以下主題：

- SNMP一般知識

- 用於通過SNMP查詢Cisco裝置的軟體

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- UCD SNMP版本4.2

- 採用Cisco IOS®軟體版本5.5(7)的Cisco Catalyst 5509

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路正在作用，請確保您已瞭解任何指令可能造成的影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

IfIndex入門

處理SNMP時，首先要學習的內容之一是ifIndex。這是所有對象的主鍵。請考慮將所有介面（物理介面和邏輯介面）劃分並分配值的方法。該值在裝置啟動期間分配，並且不能更改。如果需要為該特定介面輪詢任何資訊，則必須使用該分配值。

IfIndex在IF-MIB(RFC 1213 )中定義的方式如下：

InterfaceIndex ::= TEXTUAL-CONVENTION

DISPLAY-HINT "d"

STATUS       current

DESCRIPTION

"A unique value, greater than zero, for each interface

or interface sub-layer in the managed system.  It is

recommended that values are assigned contiguously

starting from 1.  The value for each interface sub-

layer must remain constant at least from one re-

initialization of the entity's network management

system to the next re-initialization."

SYNTAX       Integer32 (1..2147483647)

對於任何MIB，判斷哪個索引組織表的一種快速方法是檢視表條目：

ifEntry OBJECT-TYPE

SYNTAX      IfEntry

MAX-ACCESS  not-accessible

STATUS      current

DESCRIPTION

"An entry containing management information applicable

to a particular interface."

INDEX   { ifIndex }

::= { ifTable 1 }

給定MIB和表條目，您可以確定如何為表編制索引。下一節將提供ifIndex的示例。

輪詢對象

基於ifIndex輪詢對象

發出snmpwalk命令以輪詢交換器上連線埠7/4的基於ifIndex的對象(ifName)時，會收到以下輸出：

sj-cse-568: snmpwalk 172.16.99.60 public ifname

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.1 = sc0

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = sl0

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.3 = VLAN-1

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.4 = VLAN-1002

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.5 = VLAN-1004

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.6 = VLAN-1005

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.7 = VLAN-1003

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.8 = 7/1

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.9 = 7/2

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.10 = 7/3

!--- This is the relevant line:

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.11 = 7/4

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.12 = 7/5

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.13 = 7/6

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.14 = 7/7

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.15 = 7/8

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.16 = 7/9

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.17 = 7/10

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.18 = 7/11

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.19 = 7/12

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.20 = ATM8/0

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.22 = /A

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.23 = /B

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.24 = Nu0

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.25 = LEC/ATM8/0.10

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.532 = 3/1

ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.533 = 3/2

!--- Output suppressed.

在ifName(路由器上ifDescr)輪詢輸出中，請注意ifName之後每行都附加了一個數字。這是分配給同一行中的實際介面的ifIndex。這意味著輪詢的第二行（埠7/4）分配的ifIndex為11。如果要從ifIndexed對象獲取有關埠7/4的資訊，請使用索引11。這意味著將a.11新增到MIB對象識別符號(OID)的末尾，以檢索該對象對應於相同ifIndex值的例項。

如果表未按ifIndex編制索引或交叉編制索引，則輪詢對象

有時，表不按ifIndex進行索引，例如使用BRIDGE-MIB。此輸出檢查索引方式：

dot1dBasePortEntry OBJECT-TYPE

SYNTAX  Dot1dBasePortEntry

ACCESS  not-accessible

STATUS  mandatory

DESCRIPTION

"A list of information for each port of the

bridge."

REFERENCE

"IEEE 802.1D-1990: Section 6.4.2, 6.6.1"

INDEX  { dot1dBasePort }

::= { dot1dBasePortTable 1 }

該輸出顯示dot1dBasePortEntry是由dot1dBasePort索引的。如何轉換回ifIndex?BRIDGE-MIB訪問名為dot1dBasePortIfIndex的對象。對象以以下方式定義：

dot1dBasePortIfIndex OBJECT-TYPE

SYNTAX  INTEGER

ACCESS  read-only

STATUS  mandatory

DESCRIPTION

"The value of the instance of the ifIndex object,

defined in MIB-II, for the interface corresponding

to this port."

::= { dot1dBasePortEntry 2 }

該輸出顯示了如何從BRIDGE-MIB與IF-MIB關聯。下一個示例顯示了它如何結合在一起。

注意：BRIDGE-MIB是按VLAN構建的，因此社群「public@vlan-id」必須用於非VLAN1環境。

將BRIDGE-MIB與IF-MIB關聯

當您在BRIDGE-MIB上發出snmpwalk時，您將獲得索引的下一個示例輸出。使用dot1dBasePortIfIndex(.1.3.6.1.2.1.17.1.4.1.2)將其對映回ifIndex。一旦您擁有ifIndex，就可以使用它根據ifIndex輪詢其他對象。

sj-cse-568: snmpwalk 172.16.99.60 public .1.3.6.1.2.1.17.1.4.1.2

17.1.4.1.2.203 = 671

17.1.4.1.2.204 = 672

17.1.4.1.2.205 = 673

17.1.4.1.2.206 = 674

17.1.4.1.2.207 = 675

17.1.4.1.2.208 = 676

17.1.4.1.2.209 = 677

17.1.4.1.2.210 = 678

17.1.4.1.2.211 = 679

17.1.4.1.2.212 = 680

17.1.4.1.2.213 = 681

17.1.4.1.2.214 = 682

17.1.4.1.2.215 = 683

17.1.4.1.2.216 = 684

17.1.4.1.2.257 = 581

17.1.4.1.2.385 = 8

17.1.4.1.2.386 = 9

17.1.4.1.2.387 = 10

17.1.4.1.2.388 = 11

17.1.4.1.2.389 = 12

17.1.4.1.2.390 = 13

17.1.4.1.2.391 = 14

17.1.4.1.2.392 = 15

17.1.4.1.2.393 = 16

17.1.4.1.2.394 = 17

17.1.4.1.2.395 = 18

17.1.4.1.2.396 = 19

17.1.4.1.2.449 = 22

粗體文本行(17.1.4.1.2.388 = 11)顯示.388是一個索引。由於您輪詢了BRIDGE-MIB中的dot1dBasePortIfIndex對象，因此。388是dot1dBasePortIfIndex。輸出行中的11實際上是ifIndex。如果從此輪詢和上一個輪詢收集資訊，可以確定埠7/4的ifIndex為11,dot1dBasePortIfIndex（BRIDGE-MIB的索引）為。388。

相關資訊

- 技術支援 - Cisco Systems