SNMPD not responding sometimes even though it is up and running

"Sekhar Reddy Ravi-G20226" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
> Hi All,
> 
> Sometimes SNMPD is not responding to snmp requests even though it is
> up and running,  SNMPD is queuing all the requests without processing
> as netsnmp_processing_set  and agent_delegated_list are not getting
> unset. However SNMPD is able to send traps originated by subagent. 
> 
> We are using Net-snmp-5.2.2 as master and subagent. We have 
> 1) Applications which does set and walk operations on our enterprise
> mib 
> 2) Monitoring application which does get operation on  OID
> 1.3.6.1.2.1.1.3.0 (sysUpTime) every 10secs
> 3) Applications which sends number of traps due to changes in the
> system
>  
> Our analysis:
> When the problem occurred we are doing walks on our enterprise MIB
> followed by set operation, when getnext operation is done
> agent_delegated_list is set and it did not get unset. After this when
> set operation is done  in netsnmp_handle_request Snmpd checks if
> agent_delegated_list is set, as it is not unset set request is getting
> queued and as set operation is not processed netsnmp_processing_set
> is not getting unset. For all the further queries SNMPD first checks
> whether netsnmp_processing_set   is set , as this not is unset all the
> requests are getting queued up without getting processed
> 
> So the root cause seems to be agent_delegated_list field not getting
> unset, even I did not see any pending timers in the alarm list
>  
> This problem is coming very frequently. Can you please help us if this
> kind of problem is seen earlier and any help on this will be
> appreciated.
> 
> 
> gdb) p *netsnmp_processing_set->pdu
> $6 = {version = 1, command = 163, reqid = 34644814, msgid = 0, transid
> = 5095,    
>   sessid = 0, errstat = 0, errindex = 0, time = 0, flags = 0,
>   securityModel = 2, securityLevel = 1, msgParseModel = 0,
>   transport_data = 0x100b5ac0, transport_data_length = 16,
>   tDomain = 0xfe893c4, tDomainLen = 7, variables = 0x100ca7e0,
>   community = 0x10084050 "public", community_len = 6, enterprise =
> 0x0,
>   enterprise_length = 0, trap_type = 0, specific_type = 0,
>   agent_addr = "\000\000\000", contextEngineID = 0x0,
> contextEngineIDLen = 0,
>   contextName = 0x100b92f8 "", contextNameLen = 0, securityEngineID =
> 0x0,
>   securityEngineIDLen = 0, securityName = 0x0, securityNameLen = 0,
>   priority = 0, range_subid = 0, securityStateRef = 0x0}
> (gdb)
> 
> (gdb) p *agent_delegated_list->pdu
> $4 = {version = 1, command = 161, reqid = 1989587127, msgid = 0,
>   transid = 2658, sessid = 0, errstat = 0, errindex = 0, time = 0,
> flags = 0,
>   securityModel = 2, securityLevel = 1, msgParseModel = 0,
>   transport_data = 0x100cc2f8, transport_data_length = 16,
>   tDomain = 0xfe893c4, tDomainLen = 7, variables = 0x100ccf38,
>   community = 0x100cc2e8 "public", community_len = 6, enterprise =
> 0x0,
>   enterprise_length = 0, trap_type = 0, specific_type = 0,
>   agent_addr = "\000\000\000", contextEngineID = 0x0,
> contextEngineIDLen = 0,
>   contextName = 0x100cc3e0 "", contextNameLen = 0, securityEngineID =
> 0x0,
>   securityEngineIDLen = 0, securityName = 0x0, securityNameLen = 0,
>   priority = 0, range_subid = 0, securityStateRef = 0x0}
> 
> 
> Code snippet:
> netsnmp_handle_request(netsnmp_agent_session *asp, int status)
> {
>     /*
>      * if this isn't a delegated request trying to finish,
>      * processing of a set request should not start until all
>      * delegated requests have completed, and no other new requests
>      * should be processed until the set request completes.
>      */
>     if ((0 == netsnmp_check_delegated_chain_for(asp)) &&
>         (asp != netsnmp_processing_set)) {
>         /*
>          * if we are processing a set and this is not a delegated
>          * request, queue the request
>          */
>         if (netsnmp_processing_set) {
>             netsnmp_add_queued(asp);
>             DEBUGMSGTL(("snmp_agent",
>                         "request queued while processing set, "
>                         "asp = %08p\n", asp));
>             return 1;
>         }
>         /*
>          * check for set request
>          */
>         if (asp->pdu->command == SNMP_MSG_SET) {
>             netsnmp_processing_set = asp;
> 
>             /*
>              * if there are delegated requests, we must wait for them
>              * to finish.
>              */
>             if (agent_delegated_list) {
>                 DEBUGMSGTL(("snmp_agent", "SET request queued while "
>                             "delegated requests finish, asp = %08p\n",
>                             asp));
>                 netsnmp_add_queued(asp);
>                 return 1;
>             }
> 
> 
> 
> Thanks,
> Ravi

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace

_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.