使用八位字符串的SNMP表索引

时间:2013-07-15 09:03:20

标签: snmp net-snmp asn.1 mib

我正在使用net-snmp处理SNMP代理并为表中保存的数据开发MIB。

我正在考虑使用基于大约15个十进制数字的字符串的表键。

将其作为OCTET STRING索引实施是否合理?

即使我每个八位字节编码2个数字,也只有8个八位字节。

使用OCTET STRING索引,每个八位字节都将作为节点添加到OID。

我知道我可以将其转换为整数,但十进制数字可能有前导零。

对此有任何意见或建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

你可以把零写入OCTET STRINGS,所以是的,你可以这样做。 OCTET STRINGS可以包含二进制数据,并且只是编码到OID中。 Net-SNMP API不仅接受指向char *的指针,还接受返回数据的长度。这是因为在OCTET STRINGS中编码空值是完全合法的。

在OID方面,如果您的字符串由字符A,B 0,D组成,则通常将其编码为:

blah.blah.4.65.66.0.67

其中4是字符串的长度。如果OCTET STRING被标记为IMPLICIT,则4将被省略。

您将十进制数字编码到字符串中,因此您的值将更接近0x15,0x04,0x42等等。这些也很好(您正在构建二进制字符串)。

你是否应该这样做,或者你是否应该将整数本身放在字符串中,这是有争议的,但取决于你正在做什么,以及环境的带宽限制等。