我想:我有一个具有以下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”的值“”,其中不清楚它是指左侧还是右侧(恕我直言它是右侧)。左侧是索引表的唯一主键,右侧是任意的虚拟值,或者是什么?也许主要的设计缺陷是接口的数据应该由唯一接口名称由可能随时改变索引来访问,而不是(索引仍可使用枚举可用的名称)。
我的问题是有什么样的目的,而不是它没有什么目的。 –