2013-12-18 89 views
4

我发送SNMP getBulkRequest,使用基于一些第三方库(如agent ++,snmp ++等)的专有SNMP浏览器以及多个OID(例如,
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.5
.1.3.6.1.2.1.1.6
.1.3.6.1.2.1.1.4具有多个OID的SNMP getBulkRequest - 哪个返回的响应OID顺序?

它是保证返回的set (如果存在具有这种前缀的OID)将会以完全相同的顺序返回?

例如
.1.3.6.1.2.1.1.1.0
.1.3.6.1.2.1.1.5.0
.1.3.6.1.2.1.1.6.0
.1.3.6.1.2.1.1.4.0


欢迎提供任何有关此问题的解答,文档链接和提示。


UPDATE:非重读= 0,MaxRepetitions> = 1

回答

6

假设代理正确实施,那么是的,尽管它可能是一个更清晰一点说全返回集合的响应PDU由请求中每个OID的单个结果集组成,并且这些单独的结果集按照请求中给出的相同顺序返回。每个单独的结果集表现为零或更多(取决于非中继器和最大重复字段的值)get-next请求。

如果您的非中继器为N,则响应中的前N个OID将与请求中的前N个OID相对应,每个OID的行为类似于单个下一个请求(返回下一个更大的OID或endOfMibView异常if没有了)。请求中的其余OID受最大重复次数限制。

如果您的最大重复次数是M,那么请求中的每个剩余OID的行为将类似于0..M下一个请求(从请求OID返回M到下一个更大的OID;如果没有M更大,那么在请求中的下一个OID产生的OID之前,会有一些较小的数字,然后是endOfMibView异常。

[这也意味着如果非中继器和最大重复均为0,则结果为空集;或者如果最大重复次数为0且非中继器小于请求中OID的数量,则对于那些超过非中继器的请求OID,将不会返回任何内容。]

如果在处理代理程序不能在不超过其消息大小限制的情况下向响应添加任何更多结果,则处理停止并且代理程序将返回迄今为止获得的部分结果。

参考:RFC 3416 section 4.2.3

+0

这是可用于GetRequest与更多的OID呢? – ALZ

+0

我怀疑你是在问太大的回应。我想我可能错误地记录了特定实现的内部处理。 GetBulk将返回部分结果,但错误状态tooBig。 对于其他请求,它是全或全无。如果响应超出代理的邮件大小限制,它们将返回太大的空变量绑定列表。 –