Re: [Ntp] NTPv5 Loop Detection without Stratum - Why do we want this?

Danny Mayer <mayer@pdmconsulting.net> Sun, 18 September 2022 16:08 UTC

Return-Path: <mayer@pdmconsulting.net>
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 0D454C14CE20 for <ntp@ietfa.amsl.com>; Sun, 18 Sep 2022 09:08:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.108
X-Spam-Level:
X-Spam-Status: No, score=-1.108 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, NICE_REPLY_A=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, RDNS_NONE=0.793, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_PERMERROR=0.01] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id klDZamoOCGXr for <ntp@ietfa.amsl.com>; Sun, 18 Sep 2022 09:08:12 -0700 (PDT)
Received: from chessie.everett.org (unknown [IPv6:2001:470:1:205::234]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 29E8DC14F74D for <ntp@ietf.org>; Sun, 18 Sep 2022 09:07:58 -0700 (PDT)
Received: from [192.168.1.156] (pool-108-26-202-2.bstnma.fios.verizon.net [108.26.202.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by chessie.everett.org (Postfix) with ESMTPSA id 4MVt4n2HX6zMP8M; Sun, 18 Sep 2022 16:07:53 +0000 (UTC)
Message-ID: <796c33e6-02dc-0665-c8a2-a143f9100bdd@pdmconsulting.net>
Date: Sun, 18 Sep 2022 12:07:50 -0400
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.13.0
Content-Language: en-US
To: Miroslav Lichvar <mlichvar@redhat.com>
Cc: kristof.teichel=40ptb.de@dmarc.ietf.org, "ntp@ietf.org" <ntp@ietf.org>, Heiko Gerstung <heiko.gerstung=40meinberg.de@dmarc.ietf.org>
References: <DA1F1664-8A84-4197-844A-CA7E8DAA36B8@meinberg.de> <OF43150191.DABAA331-ONC12588B5.00362DC0-C12588B5.003861AF@ptb.de> <YxckOm2+TD3tTPN4@localhost> <7d7f0656-2fd2-b781-4913-526a4be8cb62@pdmconsulting.net> <Yxg4Cba58hI/aPKw@localhost> <aba44bbc-2204-735e-daff-a29a59dac9da@pdmconsulting.net> <YxmKlSVTzOQah/nc@localhost> <10b1b402-9386-4fb3-4297-38d31bdc5c96@pdmconsulting.net> <Yx8I6sTGKTLKJr8c@localhost>
From: Danny Mayer <mayer@pdmconsulting.net>
In-Reply-To: <Yx8I6sTGKTLKJr8c@localhost>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/ntp/sPaeSgv7XzwsfkPn9PT_xdR0q_k>
Subject: Re: [Ntp] NTPv5 Loop Detection without Stratum - Why do we want this?
X-BeenThere: ntp@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Network Time Protocol <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: Sun, 18 Sep 2022 16:08:16 -0000

On 9/12/22 6:24 AM, Miroslav Lichvar wrote:
> On Thu, Sep 08, 2022 at 06:18:24PM -0400, Danny Mayer wrote:
>> On 9/8/22 2:24 AM, Miroslav Lichvar wrote:
>>> An NTP client can select multiple sources at the same time for its
>>> synchronization. Look for "combine" in the NTP RFCs. With the "ntpq
>>> peers" command you would see sources marked with the * and + symbols.
>> Only is chosen (marked with a *). The + ones are possible candidates.
> Only one is chosen to be the system peer (*), which determines stratum
> and other values of the client, but other sources can pass the
> clustering algorithm and be combined with the system peer for
> synchronization. They have the + symbol.

NTP looks at the selected candidates and chooses what it considers the 
best at that time. Only one source is the chosen system which as you 
note is marked as the one with the asterisk (*). You can only find that 
out with ntpq (mode 6) queries. That becomes the reference ID for any 
downstream NTP servers. I'm not sure what you are trying to point out.


>
> Sources that don't pass the clustering algorithm have the - symbol.
> They are not used for synchronization.
>
>>>>> In orphan mode stratum is interpreted differently. Symmetric mode or
>>>>> client/server mode makes no difference.
>>>> There is no symmetric mode for client/server. A client is by definition one
>>>> stratum value larger than the server. Peers can have the same stratum.
>>> This is about the onwire protocol, not about source selection or
>>> synchronization. A client polling a server can have a smaller, equal,
>>> or higher stratum than the server.
>> That's irrelevant. You are polling a server for time, what you do with it
>> depends on the analysis done on the packets.
> Right. So can you explain where measurements made in symmetric mode
> are handled differently than in client/server mode? A pointer to the
> RFC or code is sufficient.
The NTP reference implementation does this.
>
>>> Two client/server associations in opposite directions provide the same
>>> functionality as a symmetric association, except the number of
>>> exchanged messages is doubled, it's much easier to implement and
>>> understand, and there are no replay attacks.
>> That's a naive assumption. You can send any kind of replay no matter what
>> the mode of the packet. Why do you think that you are sending twice as many
>> packets in a symmetric association?
> In symmetric mode each packet is a request and response at the same
> time, i.e. the number of messages is halved when compared to two
> client/server associations.
No. See the source code.
>
> As the responses follow the polling interval and are not send
> immediately when the request is received, this makes the symmetric
> mode susceptible to replay attacks. In client/server mode each request
> has its own response, independently from the polling of the other
> client/server association.
Not true. You misunderstand how symmetric mode works.
>
>>>>> If a local stratum-1 server had a poor reference clock (e.g. a GPS
>>>>> receiver without PPS), it would be better to use a distant server with
>>>>> higher stratum, i.e. stratum doesn't say much about accuracy.
>>>> Then it wouldn't be a stratum-1 server any more.
>>> What it would be?
>> I can only assume you have not read Section 3 of RFC5905 which tells you the
>> answer.
> Which part exactly?
>
> In Section 3 I see: "Primary servers are assigned stratum one"
>
> That is, a server that uses a poor reference clock is still stratum
> one. A client which polls multiple servers would likely prefer a
> different server, possibly with a higher stratum.
>
A stratum-1 server that decides that it's reference clock is not 
reliable, or unavailable, is no longer a stratum-1 server, it's just a 
downstream server from it's selected server and is a stratum lower than 
that server. I'm not sure what your question is since it's very basic to 
NTP.

Danny