SNMP MIB 设计,具有字符串索引的优点

SNMP MIB 设计,具有字符串索引的优点

我正在设计一个 SNMPv2 MIB,用于管理一组随时间变化的资源。它们的唯一标识符是一个字符串。我将创建一个表

resourceName
resourceDescription
resourceAttr1
etc

我看到了该表索引的替代方案:

  1. 添加生成的数字索引字段
  2. 使用名称

我寻求建议,看看应该使用哪种替代方案(或者其他选项)。我没有在现实世界中使用 SNMP 管理系统的经验,因此很难评估这种选择的实际影响。

各自的优缺点:

生成的数字索引

优点:

很简单。只需获取我的资源列表,索引值来自序列中的位置。

缺点:

索引值随时间变化不稳定。资源列表将按名称的字母顺序排列,因此资源的添加可能会插入到列表中间,删除也会改变列表中后面项目的索引值。

我看到类似这样的问题索引不稳定确实会导致一些问题。接口 MIB 被设计为使用人工、不稳定的整数索引,而不是唯一接口标识符。在该示例中,不稳定发生在代理重新启动的罕见情况下,在我的例子中,每当创建资源时,不稳定就会更频繁地发生。那么为什么不使用:

唯一字符串索引

优点:它很稳定,我们可以通过它的名称访问资源。

缺点:从字符串索引派生出的 oid 是一串编码字符。如所述这里所得到的结果是难以理解的。

例如,在 21.15.9.1 的 usmUserTable 中,用户名“alice”的唯一指示 usmUserTable 可能是 OID 片段 97.108.105.99.101,代表字母 alice 的 ASCII 码

更糟糕的是,SNMPv2 要求将索引项标记为不可访问,因此不会在 SNMP GET 中返回 - 其思想是索引值在 OID 中表示。我想我可以通过添加一个额外的列来解决最后一点。

我的猜测是,我应该遵循看似普遍的做法,使用数字索引,并假设人们会解决不稳定性问题。同意吗?

相关内容