SNMP RFC、IMPORTS、physAddress 的多个定义

SNMP RFCs, IMPORTS, multiple definitions of physAddress

我一直在查看 SNMP v1 和 v2 RFC,包括 MIB 和 SMI RFC(管理信息库以名为 "Structure of Management Information" 的抽象语法编写)具体而言,我一直在查看文本约定 "physAddress".

这是我正在使用的私有 MIB 的 IMPORT 声明:

 PhysAddress FROM RFC1213-MIB

这里来自 rfc2011 (1996):

 PhysAddress FROM SNMPv2-TC

RFC4181(2005) 指出 SNMPv2-TC 是 RFC2579 (1999)

...并且一些 MIB 编译器不需要 PhysAddress 的 IMPORT 语句。

声明的规范形式是什么?不同的 MIB 编译器是否需要从 RFC2579 而不是 SNMPv2-TC 导入?有规范形式吗?如果有规范形式,它记录在哪里?

规则是对于任何 SNMP MIB 编译器,他们只关心文档中的模块名称。例如,

SNMPv2-TC DEFINITIONS ::= BEGIN

在 RFC 2579 文档中表示它定义了一个名为 SNMPv2-TC 的新模块。

当然你可以导入"RFC2579"但是需要在任何地方定义一个相应的模块(但它在RFC space中从来不是一个有效的模块名称)。

一些编译器,例如 MG-SOFT 的编译器,决定将基本类型视为内置类型,这样产品的用户不必担心从哪里导入它们。这可能会解决一些问题,但也可能导致其他问题。

我想你只是想知道为什么 RFC1213-MIB 模块中还有一个 PhysAdddress。那是因为 RFC1213-MIB 被定义为伴随其他 SNMP v1 组件。

所以给你的提示是,

  1. 非常清楚您要使用哪个 SMI 版本,v1 还是 v2。
  2. 编写 MIB 文档时,仅使用与您选择的 SMI 版本兼容的引用(通过导入)。 RFC1213-MIB 用于 SMI v1,而 SNMPv2-TC 用于 SMI v2。

如果您查看 IETF 或像 Cisco 这样的大公司的标准 MIB 文档,您会发现在大多数情况下它们会遵循提示。