我想:我有一個具有以下SNMP MIB條目的設備:什麼是SNMP的IF-MIB ::的ifIndex的IF-MIB :: ifTable中的含義是什麼?
IF-MIB::ifNumber.0 = INTEGER: 46
IF-MIB::ifIndex.805306369 = INTEGER: 805306369
IF-MIB::ifIndex.805306370 = INTEGER: 805306370
....
IF-MIB::ifIndex.1073741861 = INTEGER: 1073741861
IF-MIB::ifIndex.1073741862 = INTEGER: 1073741862
IF-MIB::ifIndex.1073741863 = INTEGER: 1073741863
snmptranslate -IR -Td ifIndex
說:
IF-MIB::ifIndex
ifIndex OBJECT-TYPE
-- FROM IF-MIB
-- TEXTUAL CONVENTION InterfaceIndex
SYNTAX Integer32 (1..2147483647)
DISPLAY-HINT "d"
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A unique value, greater than zero, for each interface. 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."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) interfaces(2) ifTable(2) ifEntry(1) 1 }
但我真的不明白的的意思是什麼。我的期望是第一個數字應該從1開始,將邏輯數字映射到某個物理數字。
我的猜測是,一些執行者也說不明白什麼應該做;-)
閱讀RFC 2863(或RFC 2233中),形勢變得撲朔迷離,甚至更多: 「它值1之間的範圍ifNumber的價值。(......)「
」本備忘錄採取的辦法就是刪除要求 說的ifIndex的值必須小於ifNumber, 的價值,並保留ifNumber其目前的定義「。
「這個解決方法還導致的可能性‘在 ifTable中孔’,即,ifTable中 概念行的ifIndex值不一定是連續的,但SNMP的的GetNext(和GETBULK) 操作容易地與涉及這樣的洞。「
「的 接口的的ifIndex值的用於恆常要求(再初始化之間)通過要求後的界面 被動態移除,其ifIndex的值不被重新使用由 不同動態添加滿足接口,直到網絡管理系統的以下 重新初始化之後,這避免了 需要的ifIndex值的分配(提前)對可能被動態地添加所有可能 接口「。
我認爲混亂的一部分來自於「ifIndex」的值「」,其中不清楚它是指左側還是右側(恕我直言它是右側)。左側是索引表的唯一主鍵,右側是任意的虛擬值,或者是什麼?也許主要的設計缺陷是接口的數據應該由唯一接口名稱由可能隨時改變索引來訪問,而不是(索引仍可使用枚舉可用的名稱)。
我的問題是有什麼樣的目的,而不是它沒有什麼目的。 –