Windows Snmp Management API — время ожидания/повторной попытки Snmp не работает

Я заметил какое-то странное поведение связи по протоколу snmp при использовании MS SNMP Mgmt Api с точки зрения тайм-аута и повторных попыток. Мне было интересно, поддерживается ли API управления в Win Server 2008 R1 x64. Моя программа представляет собой 64-битный агент расширения snmp на С++, который также использует API-интерфейс mgmt для связи с другими агентами.

Это мой псевдокод:

SnmpMgrOpen(ip address, 150ms timeout, 3 retries)
start = getTickCount()
result = SnmpMgrRequest(get request with 3 or 4 OIDs)
finish = getTickCount()
if (result == some error)
{
     log Error including total time (i.e finish - start ticks)
}
SnmpMgrClose()

Когда время ожидания вызова snmpMgrRequest истекает, общее время составляет от 1014 мс до 5000 мс. Если я устанавливаю повторы на 0, общее время по-прежнему составляет от 1014 мс до 5000 мс.

Я ожидаю, что с повторными попытками до 0 время ожидания SnmpMgrRequest истекает в течение 150 мс. Документация, кажется, подразумевает это. Я что-то упустил, есть ли минимальный период ожидания не менее секунды? Что может быть причиной такого поведения?

Любая помощь будет принята с благодарностью. Я здесь заблудился.

[email protected]


person 98 Coder    schedule 13.02.2011    source источник


Ответы (1)


Исходя из моего опыта работы с SNMP на платформах Windows, минимальное значение времени ожидания составляет 1 секунду. Таким образом, даже если вы установите любое значение ниже этого, по умолчанию оно будет равно 1 секунде.

Также используемое значение тайм-аута удваивается для каждой повторной попытки. Таким образом, с конфигурацией 150 мс 3 повтора в худшем случае вы получите неудачный ответ на запрос через 1 + 2 + 2 + 2 = 7 секунд.

Надеюсь, это поможет.

person binarious    schedule 06.04.2011