RE: USM time windows check question

"Wijnen, Bert (Bert)" <[email protected]>
Newsgroups gmane.ietf.snmpv3
Message-ID <7D5D48D2CAA3D84C813F5B154F43B155989778@nl0006exch001u.nl.lucent.com>
OK, here is my assessment.

- Strange CG system. In the first 30 secs it lags 5 seconds
  In the next 300 secs it lags 200 secs (I would have expected 50)
  But... it does not matter to the problem at hand. I just noticed.

- I think the behaviour that results from following the steps as
  outlined in 3414 is correct and if you reverse the sequence,
  then you get incorrect behaviour. It allows the CG SNMP engine
  to come back in sync with the (lagging) CR without having to
  go through an elaborate resync process. Remember that the msg
  was authenticated, so no matter what you do, the message does
  contain the correct CR engineTime, and a resync will not change
  that.

I think that the CR should have responded with a Not-In-Time-Window
error. This is according to sect 3.2.7(a), 3rd bullet. The 
received new request is >+150 seconds according to its local
(authoritative) notion of the egineTime.

So that should have caused the CG SNMP engine to re-sync with the 
CR SNMP Engine. 

We can now wonder if the CG SNMP Engine should still accept this 
response (that should never have been send by a compliant CR).
Some considerations:
- is it realistic to assume that the CR lags so badly in time so
  as to lag 2 seconds every 3 seconds of real time?
- the message is authenticated, we have had no other communication
  with the CR and so, the response MUST (by definition) contain
  the authoritate engineTime of the CR.
- If we do reject it because our time runs (correct or faster) then
  we end up rejecting this response, we do the more complicate resync
  hoopla/polka and the end result is that we find out that the
  authortative value is indeed 100. So with that we send another
  request to the agent and now succeed. Sounds like a lot of
  extra work for nothing, no? And that is what you get if you do
  step 3.2.7b.2 first
So I think the behaviour as per 3414 is correct, or at least acceptable,
cause it does not create a problem at the CG end.

Now let us first change your scenario, such that the CR would not
cause a not-in-time-window response. 
- Let us define t2 as t1+150 seconds
- Let us assume that the CR has lagged 
  have passed
- That is, I believe that the response in

Now, w.r.t. to your claim that a message would never be considered
out-of-time window. In fact it will, but that would happen if
some old response comes back. Let us say at t3 (+600 seconds), 
you have another good CG-CR interaction and the B' and C values
get set to 200. Now let us assume that after that response t1 comes
back once more. Then B<C and so it skips step 3.7.2b.1 and runs
into the not-in-time-window. (see also 2nd para on page 30).

Hope this helps... 
Bert 

> -----Original Message-----
> From: Bob Natale [mailto:[email protected]]
> Sent: zaterdag 4 januari 2003 22:29
> To: Wijnen, Bert (Bert)
> Cc: [email protected]
> Subject: RE: USM time windows check question
> 
> 
> At 1/4/2003:07:30 AM, Wijnen, Bert (Bert) wrote:
> 
> Hi Bert,
> 
> Please refer to the data at:
> 
>    http://www.winsnmp.com/TimeWindow-Debug.htm
> 
> Ok...I hope I'm not wasting people's time with this...
> and I *really* hope it's not some stupid oversight on my
> part :-(...but we have been debugging a customer problem
> report for a scenario in which our WinSNMP SNMPv3 stuff
> powers a command generator (CG) app interacting with
> a v3 command responder (CR) app from another source
> and this particular CR has some (known) problems with
> its implementation of engineTime and appears to run on
> a system whose clock runs slower than the system which 
> hosts the CG app.  Due to customer circumstances, we
> have to accept these attributes of the problem space
> for now.  The known problems with the CR's implementation
> of engineTime are blatant but are thought to be not
> immediately material to the problem scenario discussed
> herein (but might affect other aspects of the problem).
> 
> The customer/problem thing is, of course, a matter for
> the parties involved and not the IETF community.  However,
> this particular problem scenario caused us to review more
> closely our relatively very tight implementation of RFC3414
> and that review has revealed a *possible* problem with the
> spec.  (Also, in doing related research we found secondary
> sources and other implementation code that specifically
> avoided the "tight" implementation approach wrt RFC3414 3.2.7b).)
> 
> So, please look at the data in the (html) spreadsheet URL'd
> above.  I've tried to keep the details as simple as possible.
> Think of the three "Events" (columns t0, t1, and t2) as as
> three separate CG Request messages happening at times t0 = 0,
> t1 = t0 + 30 seconds, and t2 = t1 + 300 seconds.  Event t0
> includes Report-based engine discovery and initial time sync
> with the CR.
> 
> Ok...remembering that the CR in this case runs consistently
> slower than the CG...it appears that the protocol attribute
> values at t2 lead to the CR's response being accepted as
> valid (within Time-Window) if 3.2.7b.1} is executed before
> 3.2.7b.2), whereas the response is considered outside the
> Time-Window if 3.2.7b.2) is executed first.  The latter
> result looks like the "right" one in this case...?  The
> items in red and green font color in column t2 are highlighted
> as the suspect problems.
> 
> It is also clear from this spreadsheet that the tests in
> rows 16 and 17 (from 7b.2) can never fail if the sets in
> rows 10 and 11 (from 7b.1) are executed first, leaving
> only the case where the local notion of snmpEngineBoots
> now equals the latch value where Not-In-Time-Window will
> be asserted (in this problem scenario...in which the CR's
> clock advances but at a rate consistently behind the CG's
> clock).
> 
> For ease of reference, I am including the text of RFC3414
> 3.2.7b after my .sig below.
> 
> Perhaps I have mis-interpreted the text?
> 
> Perhaps I have erred in translating the text to the
> operations/values in rows 6 thru 18 of the spreadsheet...?
> 
> Perhaps I have overlooked some other part of the spec that
> would nullify the conditions set out for one or both of
> columns t1 or t2?
> 
> Perhaps I am mis-interpreting my own data?
> 
> I feel like it's a lot to ask, but I would appreciate
> anyone's assessment re the above.  And despite what I
> said at the outset, I really do hope that I end up with
> egg on my face here!
> 
> Cheers,
> 
> BobN
> ----- From RFC3414 -----
>    7)  If the securityLevel indicates an authenticated 
> message, then the
>        local values of snmpEngineBoots, snmpEngineTime and
>        latestReceivedEngineTime corresponding to the value of the
>        msgAuthoritativeEngineID field are extracted from the Local
>        Configuration Datastore.
> 
>        a) If the extracted value of msgAuthoritativeEngineID 
> is the same
>           as the value of snmpEngineID of the processing SNMP engine
>           (meaning this is the authoritative SNMP engine), then if any
>           of the following conditions is true, then the message is
>           considered to be outside of the Time Window:
> 
>           - the local value of snmpEngineBoots is 2147483647;
> 
>           - the value of the msgAuthoritativeEngineBoots field differs
>             from the local value of snmpEngineBoots; or,
> 
>           - the value of the msgAuthoritativeEngineTime field differs
>             from the local notion of snmpEngineTime by more 
> than +/- 150
>             seconds.
> 
>           If the message is considered to be outside of the 
> Time Window
>           then the usmStatsNotInTimeWindows counter is incremented and
>           an error indication (notInTimeWindow) together with the OID,
>           the value of the incremented counter, and an indication that
>           the error must be reported with a securityLevel of 
> authNoPriv,
>           is returned to the calling module
> 
>        b) If the extracted value of msgAuthoritativeEngineID 
> is not the
>           same as the value snmpEngineID of the processing SNMP engine
>           (meaning this is not the authoritative SNMP engine), then:
> 
>           1) if at least one of the following conditions is true:
> 
>              - the extracted value of the msgAuthoritativeEngineBoots
>                field is greater than the local notion of the value of
>                snmpEngineBoots; or,
> 
>              - the extracted value of the msgAuthoritativeEngineBoots
>                field is equal to the local notion of the value of
>                snmpEngineBoots, and the extracted value of
>                msgAuthoritativeEngineTime field is greater than the
>                value of latestReceivedEngineTime,
> 
>              then the LCD entry corresponding to the 
> extracted value of
>              the msgAuthoritativeEngineID field is updated, 
> by setting:
> 
>              - the local notion of the value of snmpEngineBoots to the
>                value of the msgAuthoritativeEngineBoots field,
> 
>              - the local notion of the value of snmpEngineTime to the
>                value of the msgAuthoritativeEngineTime field, and
> 
>              - the latestReceivedEngineTime to the value of 
> the value of
>                the msgAuthoritativeEngineTime field.
> 
>           2) if any of the following conditions is true, then the
>              message is considered to be outside of the Time Window:
> 
>              - the local notion of the value of snmpEngineBoots is
>                2147483647;
> 
>              - the value of the msgAuthoritativeEngineBoots field is
>                less than the local notion of the value of
>                snmpEngineBoots; or,
> 
>              - the value of the msgAuthoritativeEngineBoots field is
>                equal to the local notion of the value of 
> snmpEngineBoots
>                and the value of the 
> msgAuthoritativeEngineTime field is
>                more than 150 seconds less than the local notion of the
>                value of snmpEngineTime.
> 
>              If the message is considered to be outside of the Time
>              Window then an error indication (notInTimeWindow) is
>              returned to the calling module.
> 
>              Note that this means that a too old (possibly replayed)
>              message has been detected and is deemed unauthentic.
> 
>              Note that this procedure allows for the value of
>              msgAuthoritativeEngineBoots in the message to be greater
>              than the local notion of the value of snmpEngineBoots to
>              allow for received messages to be accepted as authentic
>              when received from an authoritative SNMP engine that has
>              re-booted since the receiving SNMP engine last
>              (re-)synchronized.
> ----- End of excerpt from RFC3414 -----
> >Inline
> >
> >> -----Original Message-----
> >> From: Bob Natale [mailto:[email protected]]
> >> Sent: zaterdag 4 januari 2003 9:38
> >> 
> >> Hi,
> >> 
> >> In considering RFC3414 Sec 3.2.7b, I am curious
> >> as to whether the ordering of the sub-sections
> >> 1) and 2) has any significance...?  That is,
> >> is that ordering supposed to indicate that the
> >> tests and actions in 1) should be performed
> >> first and then the tests and actions in 2) should
> >> be performed...?
> >> 
> >I think so, as I think all the steps are to be executed 
> >in the sequence as documented. It is maybe possible that 
> >other sequences are valid too... but we have all been 
> >evaluating this sequence and we have done interoeprability
> >testing using this sequence.
> >
> >> Common-sense would suggest that the ordering
> >> means something (generally we do step 1 before
> >> step 2), but there are some reasons for thinking
> >> that might not apply here.  :-)
> >
> >I'd like to understand the reasons why you think it may 
> >not apply in this case.
> >
> >> First, there is no "then" or "else" prefixed to
> >> 2)...suggesting that the two sets of tests and
> >> actions are performed independently.
> >
> >Well, none (or very few) of our numbered sequenced 
> >statemens start with "then"... so why would we do it
> >in this case?
> >
> >> Second, as it
> >> turns out, however, the two sets of "if" conditions
> >> are not mutually exclusive and for certain values
> >> of the subject variables, performing 1) before 2)
> >> can lead to invalid, but unavoidable, results.
> >> (It's late here now, so I'm going to skip laying
> >> out a detailed example...but if anyone thinks it's
> >> necessary, I'll add it in a follow-up.)
> >> 
> >Pls post an example where you think we come to 
> >invalid results. I am not saying this is not true, 
> >but I believe we have gone through this a number of 
> >times in the past, and I think we came to the 
> >conclusion that this is what needs to be done.
> >We still may have overlooked a specific case, so
> >I'd love to hear it.
> >
> >> The bottom line is that I think the tests and
> >> actions described in 2) need to be performed
> >> before those in 1) and that this ordering and
> >> the specific dependency need to be spelled out
> >> in any future revision of the spec.  That is,
> >> the time window check should be done before
> >> checks that might lead to updating the local
> >> record of the authEngine's timeliness variables.
> >> Doing them in reverse order (i.e., as currently
> >> ordered in the spec) can lead to situations in
> >> which otherwise out of time window messages
> >> morph into valid messages or, at the very least,
> >> inappropriately lead to "updates" of the local
> >> record of the authEngine's timeliness variables.
> >> 
> >Pls do realize, that at this point (3.2.7b) we are
> >dealing with an authenticated message. So this MUST 
> >be the real value that the AUTHORITATIVE engine
> >tells us about, no? So what is wrong with using that
> >value to update our local notion at the 
> >non-AUTHORITATIVE side of the communication?
> >
> >Bert
> >> I will appreciate any and all feedback on this
> >> topic.
> >> 
> >> Cheers,
> >> 
> >> BobN
>
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.