附录A. 消除snmpTargetAddrTimeout和snmpTargetAddrRetryCount的歧义 (Disambiguating snmpTargetAddrTimeout and snmpTargetAddrRetryCount)
需要清楚地理解snmpTargetAddrTimeout和snmpTargetAddrRetryCount对象的语义以避免混淆。
当用于生成命令请求或通知请求时:
-
snmpTargetAddrTimeout指定在将请求视为超时之前等待响应的最长时间(以百分之一秒为单位)。
-
snmpTargetAddrRetryCount指定在放弃之前重试请求的次数。
例如,假设应用程序向目标发送通知请求,其中snmpTargetAddrTimeout = 1500(15秒)且snmpTargetAddrRetryCount = 3。如果在15秒内未收到响应,则重试该请求。此过程继续进行,直到收到响应或请求已被尝试总共4次(初始尝试加上3次重试)。因此,等待响应的最长时间为60秒(4×15秒),假设没有网络延迟。
当用于生成通知(陷阱或未确认的通知)时:
-
snmpTargetAddrTimeout不使用,因为不期望响应。
-
snmpTargetAddrRetryCount也不使用,因为通知发送一次且不重试。
重要的是要注意,这些参数仅适用于发送期望响应的消息(命令请求和通知请求)。它们不适用于陷阱通知,陷阱通知是未确认的。
此外,实现应该意识到这些超时和重试值与底层传输协议的可靠性特性相互作用。对于不可靠的传输(如UDP),这些参数提供重试机制。对于可靠的传输(如TCP),传输协议本身可能处理重试,并且这些参数可能具有不同或有限的适用性。
要记住的关键点是:
- 超时值: 等待单个响应尝试的时间量。
- 重试计数: 初始尝试失败后的附加尝试次数。
- 总尝试次数: 始终比重试计数多一次(初始尝试+重试)。
- 范围: 仅适用于期望响应的操作(命令请求、通知请求)。
- 不适用: 不适用于陷阱通知或传输处理重试的可靠传输上的操作。
通过理解这些语义,应用程序可以正确配置目标参数以实现可靠和高效的SNMP操作。