GetBulkRequest PDU的应用

    假设GetBulkRequest PDU变量绑定表中有L个变量,“非重复数”字段的值为N, “最大后继数”的值为M,则R=L-N个变量应该返回最多M个词典后继。
GetBulkRequest
  SNMPv2的一个主要改进是GetBulkRequest PDU。这个PDU的目的是尽量减少查询大量管理信息时所进行的协议交换次数。GetBulkRequest PDU允许SNMPv2管理者请求得到在给定的条件下尽可能大的应答。
  GetBulkRequest操作利用与GetNextRequest相同的选择原则,即总是顺序选择下一个对象。不同的是,利用GetBulkRequest,可以选择多个后继对象。
  GetBulkRequest操作的基本工作过程如下:GetBulkRequest在变量绑定字段中放入一个(N+R)个变量名的清单。对于前N个变量名,查询方式与GetNextRequest相同。即,对清单中的每个变量名,返回它的下一个变量名和它的值,如果没有后继变量,则返回原变量名和一个endOfMibView的值。
    GetBulkRequest PDU有两个其他PDU所没有的字段,non-repeaters和max-repetitions。 non-repeaters字段指出只返回一个后继变量的变量数。max-repetitions字段指出其他 的变量应返回的最大的后继变量数。为了说明算法,我们定义:
L = 变量绑定字段中的变量名数量
N = 只返回一个后继变量的变量名数
R = 返回多个后继变量的变量名数
M = 最大返回的后继变量数

  在上述变量之间存在以下关系:
N = MAX [MIN(non-reperters, L),0]
M = MAX [max-repetitions,0]
R = L - N

  如果N大于0,则前N个变量与GetNextRequest一样被应答。如果R大于0并且M大于0, 则对应后面的R个变量,返回M个后继变量。即,对于每个变量:
·获得给定变量的后继变量的值;
·获得下一个后继变量的值;
·反复执行上一步,直至获得M个对象实例。
  如果在上面的过程中的某一点,已经没有后继变量,则返回endOfMibView值,在变 量名处,返回最后一个后继变量,如果没有后继变量,则返回请求中的变量名。
  利用这个规则,能够产生的name-value对的数量是N+(M×R)。后面的(M×R)对在应 答PDU中的顺序可描述为:
  for i : = 1 to M do
   for r : = 1 to R do
   retrieve  i-th successor of (N+r)-th variable

  即,返回的后继变量是一行一行的,而不是先返回第一个变量的所有后继变量,再 返回第二个变量的所有后继变量,等等。 GetBulkRequest操作解除了SNMP的一个主要限制,即不能有效地检索大块数据。此外, 利用这个功能可以减小管理应用程序的规模。管理应用程序自身不需要关心组装在一起 的请求的细节。不需要执行一个试验过程来确认请求PDU中的name-value对的最佳数量。 并且,即使GetBulkRequest发出的请求过大,代理者也会尽量多地返回数据不是简单地 返回一个tooBig的错误消息。为了获得缺少的数据,管理者只需简单地重发请求,而不 必将原来的请求改装为小的请求序列。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值