We were using Adventnet snmp to generate agent code with our MIB file and would configure/register it as a subagent to the Windows OS snmp service. We are planning for alternatives to Adventnet & have come across SNMP4J.
I have run AgentPro with our MIB file & was able to generate the agent code. I am trying to find information on how this agent can be registered to Windows snmp service.
Can you please guide me to any documentation/resource that could help achieve this. Also, do you support other OS as well?
The Windows OS SNMP service does not implement the IETF standard subagent protocol AgentX. Thus, SNMP4J-Agent(X) cannot directly be used as subagent for the Microsoft SNMP service “master” agent.
There are basically two options:
Replace the Windows SNMP service completely by a standard conforming agent, like SNMP4J-AgentX master agent. Then you can run any AgentX capable subagent with that master and you have appropriate security in place.
Use AGENT++ and adapt the sources of the AGENT++Win32 to make a AGENT++ agent capable to run as a Windows subagent: AGENT++ Download Archive (scroll to the bottom of that page). This library has not been updated for a long while but could be a good starting point (same is IMHO true for the Windows SNMP agent). If you are interested in that, I could relicense the package under Apache 2 License so that you are able to copy code from it or update it (preferred, of course) without intellectual property problems.
Buy using SNMP4J-AgentX or AgentX++ as subagent framework, you can run your agent on many systems. It would not be possible to write a complete list
I discussed your suggestions with my Product Management team and they had few questions. Can you please help me with the answers.
We would like to have a seamless upgrade for our customers. Adventnet provided a dll (probably extending the SNMP Extension Agent API) & a exe which would register our subagent to Windows SNMP service. Will you be able to help us with such solution, so that for customers who do not want to move away from Native SNMP service yet would continue to use it.
For customers who are willing to move to a master agent, we would be recommending SNMP4J-AgentX. I believe SNMPv3 is supported?
Currently we support Linux(RHEL) & Solaris. I understand your previous post mentioned that SNMP4J subagent can be registered to these native OS master agents. Is my understanding correct?
As written before, I can license the Windows subagent DLL code “AGENT-Win32” under the Apache 2 license. That will enable you to modify it and adapt it to current Windows versions and the current AGENT++. That API will not work with SNMP-Agent(X) and I expect the effort to adapt it to Java for not being economical. Because of the architecture and insufficient security of the Windows native SNMP agent, I will not create an API for it to SNMP4J-Agent now/in the future.
Yes, if those master agents support AgentX (what they normally do, because those master agent’s are typically based on NET-SNMP). But even then, I would recommend using the SNMP4J-AgentX master agent, because it is multi-threaded and does not have some bugs in the sub-agent communication, that were not fixed in NET-SNMP master for years (I have not retested those in the past few years, but I doubt that they have been fixed, because they had been there for more than 10 years before).
Thanks for the clarification. Can you please help me with the following question
Our customers can have multiple subagents from multiple systems residing on the same OS m/c.
If these subagents are as per the RFC standards, there should not be any complexity in registering them with SNMP4J-AgentX master agent. Is my understanding correct? They can all register and co-exists.
Yes, that is correct. If the subagents are from different vendors each subagent should use their own (exclusive) OID subtree below ‘enterprises’. Then you do not need to configure priorities for the registration process of the subagents.
All the subagents could even run on different machines and OS using TCP transport. Unix domain sockets are only supported by AgentX++ not SNMP4J-AgentX but that will be added soon with the next major version that will require Java 17(16) to implement that functionality.