A question
Alex Finogenov
afinogenov____malibunet.com
Tue Nov 20 03:10:21 CET 2001
Frank,
Why? RFC1905 in Section 4.2.2 states:
...
If the processing of any variable binding fails for a reason other
than listed above, then the Response-PDU is re-formatted with the
same values in its request-id and variable-bindings fields as the
received GetNextRequest-PDU, with the value of its error-status field
set to `genErr', and the value of its error-index field is set to the
index of the failed variable binding.
I believe that the failures I am describing fall under this category, so it
is OK to return GenErr. It is obviously an agent's implementation detail
what the agent does after sending the GenErr reply.
Thanks,
Alex
> -----Original Message-----
> From: Frank.Fock____t-online.de [mailto:Frank.Fock____t-online.de]
> Sent: Monday, November 19, 2001 3:16 PM
> To: Alex Finogenov
> Cc: agentpp-dl____agentpp.com
> Subject: Re: A question
>
>
> Alex,
>
> Caution! Please note that an agent MUST NOT return any error on a
> GETNEXT or GETBULK operation! This is a requirement of SNMP.
> Thus, it is perfectly correct, how your agent is currently operating.
>
> The extra CPU time has to be spend for be compliant to the SNMP
> standard. It would make much trouble in a management system, if you
> return an error in a walk. How should the management system guess
> the next OID that it can use to proceed successfully in a walk? This
> will take much more time in the management system than skipping those
> objects you cannot retrieve within your update method.
>
> Best regards,
> Frank
>
>
> Alex Finogenov wrote:
>
> > Frank,
> >
> > The problem is mostly with GETNEXT & GETBULK, and I do
> believe that a lot of
> > CPU time and other resources are wasted. The reason for
> this is that if the
> > process of accessing persistent values in the overloaded
> MibTable::update()
> > fails and the respective table rows are not populated, the
> agent continues
> > to walk the MIB through other tables until it either
> succeeds in loading a
> > table, or hits the EndOfMib. This will potentially involve
> retrieving
> > database objects that have nothing to do with a particular
> SNMP request, and
> > thus will result in pure waste of all resources (CPU.
> network, etc.) In case
> > of access failure to the entire database (i.e. subsequently
> to every table),
> > this may slow down the agent's response time significantly.
> Thus I think it
> > is important to be able to quit after a failure in the
> update() ASAP.
> >
> > A similar MibTable::update() failure for a SET request is
> not a matter of
> > concern, because as you mentioned, in MibTable::update() I
> set the error and
> > check it in my implementation of the overloaded
> > MibTable::prepare_set_request(), whose interface DOES allow
> to return an
> > error. Even in the worst case this situation may not result
> in any serious
> > waste of resources.
> >
> > Maybe it does make sense to have a "way out" in
> MibTable::update() to return
> > a failure, at least for the sake of GETNEXT and GETBULK?
> >
> > Thanks,
> > Alex
>
>
More information about the AGENTPP
mailing list