Hi Frank, first of all thank you for the quick reply. I try to give you some more details about my issue: As you could check in my lines of code I've implemented (or I tried to implement) an SNMP Agent v3. I registered all my private OIDs and I've also implemented all the mib-2/system OIDs (sysName, sysDescription, etc). So you can "get" any the system OIDs and get/set all my enterprise OIDs (as well you can SnmpWalk, GetNext, etc). This works well. Some software like "Whats Up Gold" in order to connect to a SNMP device uses such a "SNMP Network Discovery" where they poll all the subnet addresses looking for a SNMP Device. I've tried with a Cisco router (SNMPv3 and authentication) and the application discovers it immediately, but when I try on my device the software cannot discover it. As well if I use the "Network Discovery" function if the iReasoning MIB Browser (with the one I can work perfectly in terms of SnmpGet, SnmpSet and so on). At this point I ask myself if I should register some other mandatory OIDs (not only the system OIDs) to let my device to be automatically discovered or I miss to implement in my software something important. I hope I could give some more indications and thank once more. Best Regards Denis
-----Messaggio originale----- Da: SNMP4J [mailto:[email protected]] Per conto di Frank Fock Inviato: giovedì 17 settembre 2015 22:05 A: [email protected] Oggetto: Re: [SNMP4J] SNMP4J Agent cannot be discovered (Netwrok Discovery) Hi Denis, Before I can answer your question, I need to know what you exactly mean by "Network Discovery"? Often IP multi-cast was used for that. Nowadays this is often no longer possible because switches/router/firewalls block multi-cast packets for security reasons. In addition, multi-cast works only with SNMPv1 and v2c (community based) and SNMPv3 with noAuthNoPriv. Best regards, Frank Am 17.09.2015 um 11:14 schrieb Denis Ioan: > Hi to everybody, > I'm new to the SNMP protocol but I had to implement an Agent in v3. > Using SNMP4J I've implemented and all works fine except the agent > cannot be discovered automatically from the Network Discovery functions. > I guess I forgot to insert something in the configuration. I post here > the Agent class and the way I use it in the software: > > public class SNMPAgent extends BaseAgent { > > private final String GROUP_NAME = "v3group"; > > private String address; > private String baseOID; > private String securityName; // User > private String SHAPassword; > private String AES128Passphrase; > private String trapIPAddress; > private String trapPort; > > /** > * > * @param address > * @throws IOException > */ > public SNMPAgent(String address, String baseOID, > String securityName, String SHAPassword, String > AES128Passphrase, String trapIPAddress, String trapPort) throws > IOException { > > /** > * Creates a base agent with boot-counter, config file, > and a > * CommandProcessor for processing SNMP requests. > Parameters: > * "bootCounterFile" - a file with serialized > boot-counter information > * (read/write). If the file does not exist it is created > on shutdown of > * the agent. "configFile" - a file with serialized > configuration > * information (read/write). If the file does not exist > it is created on > * shutdown of the agent. "commandProcessor" - the > CommandProcessor > * instance that handles the SNMP requests. > */ > super(new File("conf.agent"), new File("bootCounter.agent"), > new CommandProcessor( > new > OctetString(MPv3.createLocalEngineID()))); > > this.address = address; > this.baseOID = baseOID; > this.securityName = securityName; > this.SHAPassword = SHAPassword; > this.AES128Passphrase = AES128Passphrase; > this.trapIPAddress = trapIPAddress; > this.trapPort = trapPort; > > } > > /** > * Adds community to security name mappings needed for SNMPv1 and > SNMPv2c. > */ > @Override > protected void addCommunities(SnmpCommunityMIB communityMIB) { > > } > > /** > * Adds initial notification targets and filters. > */ > @Override > protected void addNotificationTargets(final SnmpTargetMIB targetMIB, > final SnmpNotificationMIB notificationMIB) { > } > > /** > * Adds all the necessary initial users to the USM. > */ > @Override > protected void addUsmUser(USM usm) > { > UsmUser user = new UsmUser( > new OctetString(securityName), > AuthSHA.ID, > new OctetString(SHAPassword), > PrivAES128.ID, > new OctetString(AES128Passphrase) > ); > > usm.addUser(user.getSecurityName(), null, user); > } > > /** > * Adds initial VACM configuration. > */ > @Override > protected void addViews(VacmMIB vacm) > { > vacm.addGroup( > SecurityModel.SECURITY_MODEL_USM, > new OctetString(securityName), > new OctetString(GROUP_NAME), > StorageType.nonVolatile > ); > > vacm.addAccess( > new OctetString(GROUP_NAME), > new OctetString(), > SecurityModel.SECURITY_MODEL_USM, > SecurityLevel.AUTH_PRIV, > MutableVACM.VACM_MATCH_EXACT, > new OctetString("fullReadView"), > new OctetString("fullWriteView"), > new OctetString("fullNotifyView"), > StorageType.nonVolatile > ); > > vacm.addViewTreeFamily( > new OctetString("fullReadView"), > new OID(baseOID), > new OctetString(), > VacmMIB.vacmViewIncluded, > StorageType.nonVolatile > ); > > vacm.addViewTreeFamily( > new OctetString("fullWriteView"), > new OID(baseOID), > new OctetString(), > VacmMIB.vacmViewIncluded, > StorageType.nonVolatile > ); > > vacm.addViewTreeFamily(new OctetString("fullReadView"), new > OID("1.3"), > new OctetString(), VacmMIB.vacmViewIncluded, > StorageType.nonVolatile); > } > > /** > * Unregister the basic MIB modules from the agent's MOServer. > */ > @Override > protected void unregisterManagedObjects() { > // TODO Auto-generated method stub > > } > > /** > * Register additional managed objects at the agent's server. > */ > @Override > protected void registerManagedObjects() { > // TODO Auto-generated method stub > > } > > protected void initTransportMappings() throws IOException { > transportMappings = new TransportMapping[1]; > Address addr = GenericAddress.parse(address); > TransportMapping tm = TransportMappings.getInstance() > .createTransportMapping(addr); > transportMappings[0] = tm; > } > > /** > * Start method invokes some initialization methods needed to > start the > * agent > * > * @throws IOException > */ > public void start() throws IOException { > > init(); > // This method reads some old config from a file and causes > // unexpected behavior. > // loadConfig(ImportModes.REPLACE_CREATE); > addShutdownHook(); > //getServer().addContext(new OctetString("public")); > finishInit(); > run(); > sendColdStartNotification(); > } > > /** > * Clients can register the MO they need > */ > public void registerManagedObject(ManagedObject mo) { > try { > server.register(mo, null); > } catch (DuplicateRegistrationException ex) { > throw new RuntimeException(ex); > } > } > > public void unregisterManagedObject(MOGroup moGroup) { > moGroup.unregisterMOs(server, getContext(moGroup)); > } > > } > > I user the Agent in this way: > > > agent = new SNMPAgent( > LOCALHOST + '/' + configuration.getAgentSnmpPort(), > configuration.getAgentBaseOID(), > configuration.getAgentSnmpUser(), > configuration.getAgentSHAPassword(), > configuration.getAgentAES128PassPhrase(), > configuration.getTrapDestIPAddress(), > configuration.getTrapPort()); > > agent.start(); > > // Since BaseAgent registers some mibs by default we need to unregister > // one before we register our own sysDescr. Normally you would > // override that method and register the mibs that you need > agent.unregisterManagedObject(agent.getSnmpv2MIB()); > > // Register a system description, use one from you product environment > // to test with > > agent.registerManagedObject(MOCreator.createReadOnly(sysDescr,SYS_DESC > RIPTION)); > > agent.registerManagedObject(MOCreator.createReadOnly(sysObjectID, new > OID(configuration.getAgentBaseOID()))); > > agent.registerManagedObject(MOCreator.createReadOnly(sysContact,SYS_CO > NTACT)); > > agent.registerManagedObject(MOCreator.createReadOnly(sysName,SYS_NAME) > ); > > agent.registerManagedObject(MOCreator.createReadOnly(sysLocation,SYS_L > OCATION)); > > agent.registerManagedObject(MOCreator.createReadOnly(sysServices,SYS_S > ERVICES)); > > MOSSysUpTime = MOCreator.createReadWrite(sysUpTime, new > TimeTicks((long)0)); > agent.registerManagedObject(MOSSysUpTime); > > > I thank you in advance everybody will answer me. > Denis > > > > _______________________________________________ > SNMP4J mailing list > [email protected] > https://oosnmp.net/mailman/listinfo/snmp4j -- --- AGENT++ Maximilian-Kolbe-Str. 10 73257 Koengen, Germany https://agentpp.com Phone: +49 7024 8688230 Fax: +49 7024 8688231 _______________________________________________ SNMP4J mailing list [email protected] https://oosnmp.net/mailman/listinfo/snmp4j _______________________________________________ SNMP4J mailing list [email protected] https://oosnmp.net/mailman/listinfo/snmp4j
