2011-06-06 103 views
1

我有一些問題:信息代理的SNMP

在我的系統(ES窗),有許多DLL擴展代理連接使用SNMP服務

當一個請求到達服務SNMP「SNMP.EXE 「它將請求發送給所有代理或只有一個?

我怎麼知道他們哪一個可以回答請求?

感謝

回答

1

主要代理的工作就是辦理登記的SNMP和每個DLL將註冊它能夠服務的信息。 SNMP中的信息以OID表示的樹形結構註冊。該代理非常聰明,可以根據所詢問的傳入OID知道哪個DLL(或子代理)能夠提供請求。

您可能會考慮閱讀描述「AgentX」協議的RFC2741。雖然這是談論協議而不是DLL,但它在底層工作的基本方式應該非常相似。

+0

+1我globaly同意一件事的的AgentX是從微軟的方式允許MIB擴展conceptualy不同。 AgentX在他自己的進程中通過soket鏈接到主代理。如果在擴展代理中發生錯誤,Microsoft SNMP代理就會失效。 – JPBlanc 2011-06-08 08:23:41

+0

肯定是真的。插件交互非常不同,實際交換數據。但是,主循環如何決定問誰是基本相同的:他們持有一個註冊列表,並試圖找出如何確定哪個子部分(不管它是用代碼,子代理還是插件構建的)來發送問題。 AgentX RFC實際上很好地描述了這種架構。 – 2011-06-08 14:00:08

+0

是的,我在Net-SNMP的頂部寫了一個AgentX,我同意你的看法,全局的概念是相似的,但技術結果是不同的。我只寫了允許知道哪些OID由DLL提供服務的包裝器。 – JPBlanc 2011-06-09 03:42:02

1

@我的回覆是OK。這只是一個補充。正如在 「How to add an SNMP extension agent to the NT registry」 discribed,你可以找到在由一箇中指出的註冊表項的DLL擴展:

的Windows Server NT4到Windows Server 2003 R2(Workstatio,W2K,XP):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameter\ExtensionAgents 

Begining的Windows 2008(Vista中):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SNMP\Parameters\ExtensionAgents 

每個DLL暴露SnmpExtensionInit函數報告supportedView爲OID。

BOOL WINAPI SnmpExtensionInit (DWORD dwTimeZeroReference, 
           HANDLE *hPollForTrapEvent, 
           AsnObjectIdentifier *supportedView); 

我寫一個包裝程序,只是加載DLL並調用函數報告響應,你可以下載和試用​​如果你想。對不起,該網站是法文,但EXE文件中的字符串是英文的。

enter image description here