Re: [Ntp] Objections to the current language in draft-ietf-data-minimization

Harlan Stenn <stenn@nwtime.org> Wed, 27 March 2019 10:59 UTC

Return-Path: <stenn@nwtime.org>
X-Original-To: ntp@ietfa.amsl.com
Delivered-To: ntp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 571991202A9 for <ntp@ietfa.amsl.com>; Wed, 27 Mar 2019 03:59:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id d7G71wPg_NbZ for <ntp@ietfa.amsl.com>; Wed, 27 Mar 2019 03:59:31 -0700 (PDT)
Received: from chessie.everett.org (chessie.everett.org [IPv6:2001:470:1:205::234]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2895F1202A1 for <ntp@ietf.org>; Wed, 27 Mar 2019 03:59:31 -0700 (PDT)
Received: from [10.208.75.157] (75-139-194-196.dhcp.knwc.wa.charter.com [75.139.194.196]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by chessie.everett.org (Postfix) with ESMTPSA id 44TlPZ4BQ3zL7N; Wed, 27 Mar 2019 10:59:30 +0000 (UTC)
To: ntp@ietf.org
References: <8b9e85cb-3d6a-4e71-cbe7-9956e301a22d@nwtime.org> <842ee1b2-25a1-f9b8-a2db-571c4103b386@meinberg.de> <c4800444-5d26-9ba0-c4c7-c7c84235795c@nwtime.org> <abb5c516-d2a1-b43c-4631-3e4d6430987c@meinberg.de>
From: Harlan Stenn <stenn@nwtime.org>
Openpgp: preference=signencrypt
Autocrypt: addr=stenn@nwtime.org; prefer-encrypt=mutual; keydata= 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
Message-ID: <f9b6303d-2eed-fc37-bbc4-7e2898fa4cbd@nwtime.org>
Date: Wed, 27 Mar 2019 03:59:28 -0700
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.3
MIME-Version: 1.0
In-Reply-To: <abb5c516-d2a1-b43c-4631-3e4d6430987c@meinberg.de>
Content-Type: text/plain; charset="utf-8"
Content-Language: en-US
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/ntp/ukzfekDuaVRsYbaEy9X3aTRXeX4>
Subject: Re: [Ntp] Objections to the current language in draft-ietf-data-minimization
X-BeenThere: ntp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <ntp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ntp>, <mailto:ntp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ntp/>
List-Post: <mailto:ntp@ietf.org>
List-Help: <mailto:ntp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ntp>, <mailto:ntp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 27 Mar 2019 10:59:34 -0000


On 3/26/2019 5:29 AM, Martin Burnicki wrote:
> Harlan Stenn wrote:
>> On 3/26/2019 3:26 AM, Martin Burnicki wrote:
>>> Harlan Stenn wrote:
> [...]
>>>> For better or worse, a noticeable group of time server operators now
>>>> offer leap-smeared time in response to NTP mode 3 (client) requests.
>>>> Sometimes this is what the clients want, sometimes it is not.
>>>
>>> The question is whether it is important what the client wants.
>>
>> I submit it will be important to the operator of the client, and that
>> may or may not be the same organization that operates the servers.
>>
>> What would happen if some of the general pool operators decided to offer
>> leap smearing?
> 
> I think I've read in the advices for pool servers that they should *not
> at all* use smeared time, so by definition no pool servers should
> provide smeared time.
> 
> I also think the pool maintainers pretty much know that this would be
> very dangerous, and will not allow for a mixed pool.

I'm not suggesting a mixed pool.

But I can certainly see the use by a vendor pool to have that pool offer
whatever time they choose, or have *.smeared.ntp.org as servers that are
known to smear the same way.

> In the past it happened that some pool servers were stratum-2 servers
> that synchronized to Google's smearing servers. This is clearly a
> misconfiguration (intentionally or not), and I think the pool's
> monitoring system should try to detect this and kick them out of the pool.
> 
> Of course the problem remains for clients which have just recently
> received the IP address of affected servers from the pool's DNS system.
> 
>> Compare this to the vendors Foo, and Bar, who have separately arranged
>> to offer foo.pool.ntp.org and bar.pool.ntp.org.  If Foo decides its
>> clients should use correct time, they have their pool servers offer
>> correct time.  If Bar decides its clients should use leap smeared time,
>> they have their pool servers offer that.
> 
> No, if the pool should support leap smearing then an extra pool should
> be set up with a different name. In addition, if this happened at all,
> vendors Foo, and Bar would have to agree *how* their servers smear the
> time: which interval, which shape, only before the LS or symmetrically, ...
> 
> Otherwise this would cause even more confusion than it does now.

Agreed.

> [...]
>>> Agreed. What should the server do if the client doesn't accept a
>>> proposed poll interval? There are lots of simple, dump clients out there
>>> where I doubt they can and do change the poll interval at all.
>>
>> All we can do is make a good-faith offer.  This satisfies our
>> responsibility *to* the client.  We are not responsible *for* the
>> client's behavior.  If the client doesn't honor our poll request and
>> doesn't sync well enough, then if the client doesn't care then ... they
>> don't care.  If the clients *do* care they have an opportunity to make a
>> different choice.
> 
> This is fine since it's optional and compatible with simple client
> implementations.
> 
> [...]
>>>> - Does the client want leap-smeared time?
>>>
>>> Is it important what the client wants?
>>> Or just what the operator has decided to enforce?
>>
>> It depends.  I touched on this above.  And sometimes servers will send
>> client requests to monitor and track other systems.
> 
> This is again a completely different scenario since monitoring results
> are normally not used to discipline the own system time.

Of course.  But if there are systems that are communicating with each
other using modes 3/4, implementing this proposal will wipe out most all
of the data in the mode 3 query.

It's about information, not actual time synchronization.

>> One of my goals here is to give the recipient of these responses the
>> tools and information that will allow them to make choices that are
>> right for them.
>>
>>>> - Should the server respond with correct, or leap-smeared time?
>>>
>>> IMO, if the server has been configured to provide leap-smeared time then
>>> it should do so by default, but eventually there may be exceptions. See
>>> below.
>>
>> :)
>>
>> And what happens if a server operator changes their mind about this at
>> some point in the future?
> 
> Public server shouldn't smear at all,

Many agree with you, including me.  But that doesn't stop an increasing
number of Very Big Players from doing it anyway.

> and if the operator of a private server decides
> to change this he should know which clients are affected.

I'm not so sure about this.  How can the operator of a private server be
expected to know or care who is contacting it?

> It's the same if an operator decides to let his server start smearing
> leap seconds.

>>>> This leads to the follow-on questions:
>>>>
>>>> - How can the client know if it's getting correct, or leap-smeared time?
>>>
>>> If the server supports this (e.g. current ntpd does), the client can
>>> *optionally* check the refid received from the server and see that it's
>>> the special "smear REFID". This should be just informational.
>>
>> Yes.
>>
>>>> - How can one tell if a client is following a leap-smearing server?
>>>
>>> Again, if the client detects the "smear REFID" received from its system
>>> peer a monitoring program like ntpq could display the appropriate
>>> information.
>>
>> This goes to the SUGGESTED-REFID.  Even if it's not used, I currently
>> believe that if ntpd in 4.4.0 syncs to a leap-smearing source, even if
>> that source does not use SUGGEST-REFID, there will be code to make sure
>> that the client's published system peer is a leap-smear REFID, for the
>> following reasons:
>>
>> - it shows up in ntpq.
>> - it allows the 2nd half of the leap smear to be applied as expected.
> 
> The question is of legacy NTP clients would put the "smear REFID" into
> packets sent to the server. If they don't do so then your proposal will
> cause problems.

OK, and I am genuinely curious how big a problem it will be.  Especially
since Somebody had to decide what server to connect to.

Remember, in the case you describe it appears to be pretty clear that
highly accurate and well-synchronized time is not very important.  Do
you disagree?  And the problem you are talking about is that after the
leap second event, eventually the client will correct a half-second of
offset.  That might happen immediately (in the case of behavior like
sntp), or it could take ~6 poll intervals.

>>>> If the client sends a packet
>>>> with LI=0x3, the server SHOULD also respond with correct time with an LI
>>>> value of 0x0, 0x1, or 0x2.
>>>
>>> No, here I disagree. If the client sends leap bits 0x3 this means it is
>>> currently not synchronized, and the server may be the only time source
>>> the client has. If the server operator has decided to let the server
>>> smear the leap second then it should really do so in this case.
>>
>> I considered this case, and this is why I made the decision I wrote above.
>>
>> If the client is able to handle the leap second then we should give it
>> the opportunity to do so.  There's a chance the client will iburst, so
>> it will likely sync after 6 of the 8 iburst polls.  In this case, the
>> 7th poll will contain either LI=0, meaning it doesn't believe that a
>> leap event is pending, or it will send LI=1.  As soon as it sends either
>> of these, the server knows how to respond to the client.  And if the
>> time is close enough or in the leap smear period, the server may well be
>> telling the client to use a shorter poll interval, so even if the client
>> went from LI=3 to LI=0 it will continue to use a shorter poll interval
>> and shift from correct time to smeared time.
> 
> And how do you know from the beginning if a client uses iburst?

As a server I have no idea.  But if it's running ntpd or similar, it
will still sync up in about 6 polls, no matter what the poll interval is.

> What if a simple client always just sends LI 0x03?

Then it will get the documented response.

>> I even think I have a way to help this along even better, with an update
>> to the EXTENDED-INFORMATION extension field.
>>
>>>> If the client sends its request with an LI value of 0x0 before leap
>>>> smearing starts, the server SHOULD respond with correct time with an LI
>>>> value of 0x0, 0x1, or 0x2.
>>>
>>> No. If the server has been configured to smear the time and hide the
>>> leap second then it should do so by default, which also means *not* to
>>> send a leap second warning to a client unless the client clearly
>>> indicates in its request that it anyway knows about the upcoming leap
>>> second. Only in this case the server should send the leap second warning
>>> flag 0x1 or 0x2 and true UTC instead of smeared time.
>>
>> If you want your server to ALWAYS send smeared time, then you are right.
> 
> That's the intended behavior when using leap second smearing.

There's what the server intends, and what the client intends.  They may
or may not be the same...

>> If you want your server to offer correct time to clients that know how
>> to handle the leap second and smeared time to clients that do not state
>> they know how to handle a leap second, then I probably disagree with you
>> and I'd appreciate our discussing this more so we can come to an agreement.
> 
> My main goals would be to not break compatibility with existing clients,
> don't make configuration more complex than absolutely necessary, and
> only if possible without side affects provide optional ways to improve
> the client's behavior and resulting accuracy.

If you know your clients and how they will behave, in what way does this
proposal do worse than what you have now?

I'm pretty certain that with what I've described, you can set up your
system to behave exactly same way with the new code that you have it
behave with the old code.

And if it behaves the same way, where is the problem?

Do you disagree?

>>>> If the client sends its request with an LI
>>>> value of 0x0 *during* a leap smear correction, the server SHOULD respond
>>>> with leap-smeared time and an LI value of 0x0, and MAY respond with
>>>> correct time and an LI value of 0x1 or 0x2.
>>>
>>> No. IMO, if the client sends leap bits 0x0 or 0x3 then the server MUST
>>> NOT respond with correct time and an LI value of 0x1 or 0x2 if it has
>>> been configured to smear the leap second.
>>
>> I do see your point and I remember thinking about this a lot, and there
>> was a reason I wrote what I did.  That reason could be as simple as
>> "SHOULD" means "you really really should do this, unless you have a Good
>> Reason not to, in which case you MAY respond with LI=[12] and correct
>> time." Put another way, I'm leaving an "escape hatch" for the
>> possibility that there's a special case that hasn't been considered.
>>
>>>> Furthermore, responses containing leap-smeared time SHOULD include a
>>>> REFID that identifies the "system peer" as a leap-smeared source.  See
>>>> draft-stenn-ntp-leap-smear-refid for more information.  This response
>>>> also SHOULD include a SUGGESTED-REFID extension field, as described by
>>>> draft-stenn-ntp-suggest-refid, to make it obvious that the system is
>>>> following leap-smeared time.  These points address the  two follow-on
>>>> questions.
>>>
>>> This is a good idea, but older clients or other client implementations
>>> may not recognize the LEAP-SMEAR-REFID as a special case, and they may
>>> not even accept a response from a server that has an extension field
>>> they don't expect.
>>
>> Agreed, and that's what the I-DO EF is for.  If the client sends this,
>> the server knows what the client can accept.
>>
>> It's been my experience that we don't want to send unsolicited EFs in
>> server responses.
> 
> That's what I meant.
> 
>>> So eventually extension field handling should be mandatory for v5 of the
>>> NTP protocol, and only if a v5 client request is received the server
>>> should append that extension field.
>>
>> Agreed.
>>
>>> BTW, is there a common place to collect suggestions for v5 of the NTP
>>> protocol?
>>
>> I have a list of our ideas, and I'm happy to set up a place for it.
> 
> That would be appreciated.

OK, I've started that process going.

>>>> The LEAP-SMEAR-REFID and SUGGESTED-REFID extensions have another key
>>>> role during the application of a leap smear - that of making sure the
>>>> system behaves properly during the last half of the 12/12 leap smear
>>>> correction.
>>>>
>>>> Once the leap second has applied, the LI value for correct time reverts
>>>> to 0x0.  When a leap smearing client asks for time during the second
>>>> phase of this correction, it will be sending its requests with LI=0x0,
>>>> as *all* time requests from a leap-smearing client will contain LI=0x0
>>>> when a leap event is not pending.  But in this case, how does the server
>>>> know it should continue sending leap-smeared time, as opposed to correct
>>>> time?  The answer is that the client requests include the client's
>>>> REFID, which in this case SHOULD be a LEAP-SMEAR-REFID.
>>>>
>>>> When a server receives a mode 3 (client) request containing a
>>>> LEAP-SMEAR-REFID during the second phase of a leap-smear correction, the
>>>> server SHOULD respond with leap-smeared time and a LEAP-SMEAR-REFID as
>>>> the SUGGESTED-REFID.
>>>
>>> Of course, the server should continue to send smeared time and the
>>> LEAP-SMEAR-REFID as long as smearing is still in progress, but as I've
>>> mentioned before, it should not append an extension field by default if
>>> the client request is protocol v3 or v4.
>>
>> Certainly not for v3, as EFs didn't exist there.  I'm fine with sending
>> known-allowed EFs in v4 responses.
> 
> Which EF discussed here is known-allow for all or non-current NTPv4
> implementations?

I-DO is the proposal that makes this easy, at least for folks who use
the chalkboard we set up to track EF proposals.  I addressed this with
part of draft-stenn-ntp-extension-fields, but the WG decided that the
proposal was not worth pursuing.

>>> However, if the server *only* responds with leap-smeared time if it
>>> receives the LEAP-SMEAR-REFID from the client then I'd expect that this
>>> *breaks compatibility* with many simple client implementations that are
>>> out in the wild. If such clients won't send this special REFID then they
>>> would get non-smeared time back from the server after the leap second
>>> has occurred, which may cause a 0.5 s time step on the client.
>>
>> Yes.  And in that case there are several options to avoid this problem:
>>
>> - configure the clients to query servers that will give them the time
>> they want (there are several ways to do this),
> 
> That's the basic idea. If the client just has to use smeared time I
> configure a server that provides it, and if I don#t want this I choose a
> "normal" server. This doesn't require any tricks.

Yes.

>> - get motivated to upgrade the client software after the next leap second.
> 
> I think you know this is often not possible due to various reasons.

Of course.  But eventually it works out.

>>> I don't think this consistent with the original idea of leap smearing,
>>> which should explicitly avoid time steps.
>>
>> Yes, but if the client is following a regular server they'll step by a
>> second.  If they follow a leap smear server then they won't step.  And
>> if they follow a "new style" server that offers smeared time to folks
>> who only send a leap smear refid in the last half of the correction then
>> they'll step a half-second correction.
> 
> Yes, and the operators of the client machine will be happy if they
> configured leap smearing to avoid time steps, and now the time sis
> stepped in spite of the smearing.
> 
> Sorry Harlan, but this sounds pretty error prone.

Nobody has to use any of it.  And sure, it's possible to configure
things in a way that causes trouble.

But I'm pretty sure that this proposal gives people the server mechanism
(choices) they need to select the policy they want, and the clients
remain perfectly free and capable to select whatever servers they want.

But please show me how what I'm proposing is *worse* that what we have now.

> Martin
> 

-- 
Harlan Stenn, Network Time Foundation
http://nwtime.org - be a Member!