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 组件。
所以给你的提示是,
- 非常清楚您要使用哪个 SMI 版本,v1 还是 v2。
- 编写 MIB 文档时,仅使用与您选择的 SMI 版本兼容的引用(通过导入)。
RFC1213-MIB
用于 SMI v1,而 SNMPv2-TC
用于 SMI v2。
如果您查看 IETF 或像 Cisco 这样的大公司的标准 MIB 文档,您会发现在大多数情况下它们会遵循提示。
我一直在查看 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 组件。
所以给你的提示是,
- 非常清楚您要使用哪个 SMI 版本,v1 还是 v2。
- 编写 MIB 文档时,仅使用与您选择的 SMI 版本兼容的引用(通过导入)。
RFC1213-MIB
用于 SMI v1,而SNMPv2-TC
用于 SMI v2。
如果您查看 IETF 或像 Cisco 这样的大公司的标准 MIB 文档,您会发现在大多数情况下它们会遵循提示。