Re: [Ntp] [Last-Call] Last Call: <draft-ietf-ntp-yang-data-model-10.txt> (A YANG Data Model for NTP) to Proposed Standard

tom petch <daedulus@btconnect.com> Fri, 19 February 2021 10:30 UTC

Return-Path: <daedulus@btconnect.com>
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 6801A3A1435; Fri, 19 Feb 2021 02:30:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, MSGID_FROM_MTA_HEADER=0.001, NICE_REPLY_A=-0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=btconnect.onmicrosoft.com
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 M2i4TRfZdAtC; Fri, 19 Feb 2021 02:30:46 -0800 (PST)
Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00110.outbound.protection.outlook.com [40.107.0.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DC2053A1431; Fri, 19 Feb 2021 02:30:35 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DRYviKbY6CO4kRFRDhMfs0I0rEikRYUlb8JQHPFU+GV4LsCCr0961tRIkaqm76mxPGo2uk0pdg3tZxoTLMri0JGCAAXkwhxveDImoiczU4SbHhlPpb/Lu4SBLS4UkX1/sLfHBB7H0mP298bO95QnuxM2HBJopPdMntb6LdhfNSCA9Hvufr6tNFsRA0RBgtjw0+h12S5M5bqw58NqQ9TP6iHVrJJfGHHlMxmjH13l9NpQNDcXx6zgnyOYMewLt+fPju45YAVYvlXxyb2ZwrMpJU8e7M+81T6JowR5RIjdqXjHHvQAgKA5O/LhdchZNDQo+lAh6G0GWXtd/KroDn10Dw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ADjVBQQl1riifYpeznggtCnymwnTO/SUQ9L/sJjKpuk=; b=XAn2RCC8BRn4HYFXlx4pBzkVPFTekHDCgWuUsY17g1oYYVveN3Lh04cmVJfapBibGc2rtGl35ktmj3LhtyaUsHJLEjSTgVnP3FTvZj9MkYp9RDy+ENkmBN7THMzk7Ib2jGN35CTk1akmyULfSnW8i+FtagwtRCYdu9vyjdetbpTQdIGymT71xtOo3j/aOMiKZsO0cBGC3EbhH57g9vRKIBwa0hqoKvjkabyuytyXyki1Q+x61jfPoieYlUTESnWtj1+/M07Nk2EI+hw/Y84tCrasW5XnzZjUf4CVcA39iHjREbD68kkQicv7ngJqt3k/U2NKQhFEWNwcf3oDQUmDeg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=btconnect.com; dmarc=pass action=none header.from=btconnect.com; dkim=pass header.d=btconnect.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btconnect.onmicrosoft.com; s=selector2-btconnect-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ADjVBQQl1riifYpeznggtCnymwnTO/SUQ9L/sJjKpuk=; b=m43FUNZ2Bum/fdeWGxF+uRjTEkRIbyvWWfKOEN5enykdxvP5nWrHsZTScddcGGTHv6dbPmR2/o8HtRJzXtOgfaZK/Z7PNADN2rY7mqmyEd+YDOOVyaib0n2s7WTdJTxtwOORYPiqaPH6fVjX0ZlPU4b5a9O4qIfFynB43ZZy5Bk=
Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=btconnect.com;
Received: from DBAPR07MB6695.eurprd07.prod.outlook.com (2603:10a6:10:18a::15) by DB7PR07MB5146.eurprd07.prod.outlook.com (2603:10a6:10:6c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3868.19; Fri, 19 Feb 2021 10:30:32 +0000
Received: from DBAPR07MB6695.eurprd07.prod.outlook.com ([fe80::5d88:40ae:b250:b5c2]) by DBAPR07MB6695.eurprd07.prod.outlook.com ([fe80::5d88:40ae:b250:b5c2%8]) with mapi id 15.20.3890.010; Fri, 19 Feb 2021 10:30:32 +0000
To: Dhruv Dhody <dhruv.ietf@gmail.com>
References: <161195994417.2651.6499166797756243533@ietfa.amsl.com> <CAB75xn5CQr2yg7wWZHj-sJM7WaaTJK5NF0pzzLhqmx5hHf8GiQ@mail.gmail.com> <60266E12.6070207@btconnect.com> <602A611E.4020306@btconnect.com> <CAB75xn7QVL+F_5bQ8roZYakbADgQ06pChb0ei7Oaf0=eqLu7Mg@mail.gmail.com> <602D0CF9.9090404@btconnect.com>
Cc: NTP WG <ntp@ietf.org>, last-call@ietf.org, Ankit Kumar Sinha <ankit.ietf@gmail.com>, ntp-chairs@ietf.org, draft-ietf-ntp-yang-data-model@ietf.org, ek.ietf@gmail.com, Dieter Sibold <dsibold.ietf@gmail.com>
From: tom petch <daedulus@btconnect.com>
Message-ID: <602F9344.7000808@btconnect.com>
Date: Fri, 19 Feb 2021 10:30:28 +0000
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:38.0) Gecko/20100101 Thunderbird/38.5.0
In-Reply-To: <602D0CF9.9090404@btconnect.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Originating-IP: [86.146.121.140]
X-ClientProxiedBy: LO2P123CA0005.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::17) To DBAPR07MB6695.eurprd07.prod.outlook.com (2603:10a6:10:18a::15)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
Received: from [192.168.1.65] (86.146.121.140) by LO2P123CA0005.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.3846.35 via Frontend Transport; Fri, 19 Feb 2021 10:30:31 +0000
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: a9b246bb-dfe8-4465-2616-08d8d4c16235
X-MS-TrafficTypeDiagnostic: DB7PR07MB5146:
X-Microsoft-Antispam-PRVS: <DB7PR07MB51469D6F13957C6971E74D4DC6849@DB7PR07MB5146.eurprd07.prod.outlook.com>
X-MS-Oob-TLC-OOBClassifiers: OLM:2000;
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: LngEPDCblJSVSUbhWeP/p1UQ8X1S3wSKLOLzaaojUlPeAYnHcqLmYv+q2vqzN9o3z9+a+Cs4DT8vqDpvsqz7T2iCNGS1ZD74fZkCj9Em3ve5efgsqLJn4PbScNPzwASLLva9WthPVr0C4xCPLPyQ+5Fbx0aDwICmYvaduglnHAaUfi8Xo1+TlSk9aj8ZPfVVb0GfBzauDYwxI8n61Hd9lR2gEmLvBs1PSq+mSahWLp06g6OToPNUJ5B2rImH+ZlcsK8GURwf72DNDZCMuMju+mEZT7NwalOreJ6uQezUEht9H0nUwq3T4wANAzZ6mGEFp9o6zvV6jW+lr+ilp5qM8pxobWUsE2YQxfrZKr39HgDa0RMaP1qXsy4zW88Rbo9JPj9OJdR+ZKTMnwQ6UFcjujfO8Y4PUWrrDIToKU42WwuJVmPHZIwsLgTvY5o1/Wk5URJRRTaDp8kB0vVdL7UIyBcVo6WthiHarGEsyCOoreoAlFdCi5tXrwVFnKpk1oCq5kpMqoX2u8mny9fvN9AGKbC+B8mXqC/aBsjDGc3EvT8SJZRlMnFWjSmIMTRNEeLJVLs6murusVLT03J9janp7L7DBdwQ5rRswO5fbLM5tSU0/UUVACP6O5vysQKTUSnBVK0+MHNqsMz31Hr3DXz2oQ==
X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR07MB6695.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(376002)(396003)(136003)(39860400002)(346002)(366004)(2906002)(6486002)(53546011)(478600001)(26005)(87266011)(6916009)(16576012)(33656002)(5660300002)(316002)(83380400001)(966005)(2616005)(66946007)(186003)(956004)(66476007)(4326008)(30864003)(54906003)(6666004)(86362001)(45080400002)(66556008)(16526019)(8676002)(36756003)(52116002)(8936002)(21314003); DIR:OUT; SFP:1102;
X-MS-Exchange-AntiSpam-MessageData: m/4hKxJGNyBP3Zs8psskbRuFuxUSaIasHwilpjugPn2dejecqhgeRTtH/N9OMBQw/VEy7tNoWus30mrdOLmWTgb6cxFy6EaqkXeENBl5o/NAgbp9BKybIuLppwJ27NOjZw8WlIlXNqbuJjfPEe/B59k7J9pdtc7vy/MwjX/eQwH1mN3GBYT3OP/R1kjdBYzXkz1Ms5Ln7WqqqcqYbjtE65x7E6LTAlS4FxpOqzHBxfW6qPoRCvQnFCCqr7hNDT/D5tt4zTK+0ZKOtT61sdLrZnCtPqH+lAqV+CJCpI/bqtT0RExGioo1uYHRSSOXs+g+NAAUrNw8qgiXIessvwSwOZnyCqKVX/a8NlEUIEFzOX0u7VwU9o8qNOosA1S96MmC6F8BIN4RmgoQeK6KqvI+2IiY0RnIzgQ/nbAwJHoBY9T9p7Odz7qHn22HiB7PqZZ58VqIdKG5lbd9HW85Wv6xdEVhF4GWW6kGU17Ofm4gbABB0EVaabhidxkYTA0hZQXnUcPresvKRoPqIVaaCvy98ohmk6hltDGt2jCBltY2DLqKNdPQfIUWCK5B4UUnKjsUZ6aOmJjZLAcLFPlaslCW3DVXc+VwDG5JxuEP45VDod7Y7lYt/gJ0P3zJd4jLgYlRWp45Vq31FJoIJQQQULMg6Mig+aqbUF/YOY/vhPjI0qtFx9T3XtymFgFipm4qMHDsAMgtsZmCJPe7QvqdJ4kGht7eBOLOGJ6XdDqXZLfo4Ey3M8a9EQLMMiRegXBwvEhH5MgjM75PyFP76P2a1W+0hyiUTRDLyqRB44YQVHys7dM7TObxQpj1fSW+b+/cXGWfVhO9O46zq2zCclGKzOyh5UA1jOmdUsfKpUvUMRx93d5Lcydk9wCND+OBklVXwaXUc/RjRXzI7Mvf85rjZIfiCogJkzJ3SifkGTw8YhqNjs5rMse8c+/msh4DjTbjFldEQ2V/zPESZVEIg+M3qbG2+bQM9ouIrO/WVqMGydokfWU34D/oIaeLdDVTEOOu3MayfTb9herUPmjmhvs1/cjA3bN5cUYqnmCDQkqc+4OCi9gVszD60riyXVAT/ft7CpPLav8wIXxs3GAx0t4Dtr+y7bWbreTn7+O7Qr+R+RzjbGtnQ0X65gzqbL17vIYvwojEvutqapCdhc5nHEOJ/VJrmfkSBBOkwDwVT6bw5aHZ46lPP73mw8rPyubqq/fHXR3sFGitXJTFSPNIk7xpAYXnd7a+EgmxWSlJLHf9IuGNVKBbiftYxP1nebDVy4EonhYLQMVUlYVzjXlA2UE7aba7fCpmGPMvUS5lAUKwm5rkGbcu3DYPmzKu2/9uSqFyV9zu
X-OriginatorOrg: btconnect.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a9b246bb-dfe8-4465-2616-08d8d4c16235
X-MS-Exchange-CrossTenant-AuthSource: DBAPR07MB6695.eurprd07.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2021 10:30:32.1889 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: cf8853ed-96e5-465b-9185-806bfe185e30
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: mHIj4sKEXs1R+R2DPJAMOpa4d4NbNaDjLzdBAYlsqLiMge8HLF3mfyFu/vgDMdowx98hPGeor7FyHoDSTmmFIw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR07MB5146
Archived-At: <https://mailarchive.ietf.org/arch/msg/ntp/cic2Zrcxo2AWYhT-xxtzR--I62o>
Subject: Re: [Ntp] [Last-Call] Last Call: <draft-ietf-ntp-yang-data-model-10.txt> (A YANG Data Model for NTP) to Proposed Standard
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: Fri, 19 Feb 2021 10:30:57 -0000

-13 looks better

Perhaps a comment for the AD.  You have added a reference for MD5 which 
I think necessary but as Informative which I find debatable given its 
use to generate a 32-bit identifier from a IPv6 address, ie its use is 
going to go up and up, not fade away.  I am aware that the RFC is 
Informational not Standards Track so a Normative Reference would be a 
downref which needs calling out in a Last Call which means a new Last 
Call.  (Given the number of changes made since -10, perhaps that is not 
such a left field idea:-)  The reference in RFC5905 is Normative.  Like 
I say, one for the AD.

Hash algorilthms - a minefield.  You have lots of choice but that 
increases the probability of incompatability between client and server. 
  One is good, obsolescent and now recommended is good, but a choice of 
eight without even including SHA3?  I note too that the Netconf WG 
regard SHA1 as obsolete.

Access mode I think deserves more text, a sub-section in s.5, not just a 
mention.  Authors vary as to how much text there is in a YANG I-D but I 
think that the better ones have more rather than less, bridging the gap 
from protocol specification to YANG module, and, as you have seen, I 
went looking in the RFC for an explanation, which was a waste of time:-) 
  And I really do not understand the text.
'can be performed on the local NTP service'
I find ambiguous.  Does it mean that the entity in which this YANG 
module is will send such requests? Or does it mean that the entity will 
respond to such requests?  And how does that vary with server, client, 
peer?  I cannot tell from the I-D.

identity broadcast-client could do with mode 6 to bring it in line with 
other identity

s.8.5
You slip in a version 3 which I guarantee will attract the attention of 
an AD!.  You mentioned earlier that you intended the module to work with 
V3 which I did not pick up from reading the I-D.  If that is your 
intention, then I think that this needs calling out, perhaps in the 
Introduction as well as the text preceding s.8.5

Tom Petch

On 17/02/2021 12:32, tom petch wrote:
> On 17/02/2021 11:34, Dhruv Dhody wrote:
>> Hi Tom,
>>
>> We have posted another update.
>>
>> Updated: https://datatracker.ietf.org/doc/draft-ietf-ntp-yang-data-model/
>> Diff: https://www.ietf.org/rfcdiff?url2=draft-ietf-ntp-yang-data-model-13
>
> Indeed and I have downloaded it.  I will look at Friday or perhaps
> Thursday.  I am conscious that the Last Call period has expired and that
> sometimes ADs press the 'Go' button while I am still thinking:-(  Ben
> did provide a link to text he had crafted about non-cryptographic use of
> MD5 which I rather liked - up to you whether or not you want it include it.
>
> Tom Petch
>
>
>>
>> As suggested by Ben, added a YANG feature for MD5.
>>
>> Further details -
>>
>>
>>> s.6
>>> /For this reason, this YANG module allow/
>>> For this reason, this YANG module allows/
>>>
>>
>> Updated
>>
>>> s.7
>>> This has lost its two character margin, needs insetting
>>>
>>
>> Not sure where. I did run "pyang -f yang --keep-comments
>> --yang-line-length 69"
>>
>>> typedef refid I like, much clearer, but perhaps could do with a
>>> reference for MD5, RFC1321
>>>
>>
>> I added the reference around the new MD5 feature (as suggested by Ben)
>> and not at refid.
>>
>>> /Discountinuities in the value/Discontinuities in the value/
>>> in three places
>>>
>>
>> Updated.
>>
>>> when 'false() = boolean(/sys:system/sys:ntp)' {
>>> I am sure that this is valid but is not something I am used to seeing.
>>> An aspect of YANG that I have never understood is when you have to spell
>>> things out and when they are implicit and I think that all you need
>>> here is
>>> when not <presence container>
>>> but would want to verify that with a YANG doctor
>>>
>>
>> I have used when presence before but not sure what is the best way for
>> "when not presence" and didn't see it before :)
>>
>>> The definition of each possible values:/
>>> The definition of each possible value:/
>>>
>>
>> Updated.
>>
>>>         leaf poll {
>>>           type uint8;
>>> This seems wrong to me.  Looking at s.7.3
>>>      Poll: 8-bit signed integer representing the maximum interval
>>> between
>>>      successive messages, in log2 seconds.  Suggested default limits for
>>>      minimum and maximum poll intervals are 6 and 10, respectively.
>>> ie signed integer and not uint
>>>
>>
>> int8 is better, updated.
>>
>>> TTL good to have the reference - I was barking up the wrong tree
>>>
>>> I note
>>> #define TTLMAX          8       /* max ttl manycast */
>>> I assume that this is a matter of choice - I see 255 in examples which
>>> is at the other end of the spectrum
>>>
>>
>> Updated example.
>>
>>>             leaf beacon {
>>>               type uint8;
>>> I cannot find a definition of this in the RFC (which I think a defect in
>>> the RFC).  Reverse engineering the code I see beacon compared to
>>> unreach, which is defined, as
>>>      unreach: integer representing the number of seconds the server has
>>>      been unreachable
>>> which suggests that beacon is a number of seconds, and not a log base 2
>>> value or a counter; is this right? (The RFC should say IMHO)
>>>
>>
>> Yes, it is not log2. I have added more text in the description.
>>
>>> s.8
>>> /for illustration purporses./for illustration purposes./
>>>
>>
>> Updated.
>>
>>>
>>> I have run out of time but have made a second pass.  Some aspects still
>>> confuse me, where I cannot be sure of the correlation between YANG and
>>> RFC, notable time and mode; I want the words to be identical and they
>>> are not!
>>>
>>>     identity access-mode {
>>> I do not understand. The RFC has protocol, association and packet modes
>>> but not access mode.  This is perhaps section 3, but I am uncertain, the
>>> terminology is not quite the same, which is perhaps ok for an NTP
>>> expert, which I am not, but not in a technical specification IMHO.
>>>
>>
>> The access-mode is related to the ACL. It is not related to
>> association and packet modes. The RFC does not go into detail but
>> mentions its use in Section 9.2.
>>
>>> Thus you derive
>>>     identity query-access-mode {
>>> but searching the RFC only yields a match in Security.  I want the terms
>>> to be identical!
>>>
>>
>> This is not mentioned, but the granularity comes from the existing ACL
>> configurations with NTP.
>>
>>> In contrast, association mode is in the RFC and so I can see
>>>     identity broadcast-client {
>>> which lacks a value for mode - perhaps 6.  But I would still like a
>>> reference to section 3 for these.
>>>
>>
>> I have made an update and aligned it as per the RFC
>>
>>>
>>>     identity ntp-sync-state {
>>> is again troublesome.  The RFC has
>>> #define NSET     0       /* clock never set */
>>> #define FSET     1       /* frequency set from file */
>>> #define SPIK     2       /* spike detected */
>>> #define FREQ     3       /* frequency mode */
>>> #define SYNC     4       /* clock synchronized */
>>> whereas the I-D has
>>>     identity clock-not-set {
>>>     identity freq-set-by-cfg {
>>>     identity clock-set {
>>>     identity freq-not-determined {
>>>     identity clock-synchronized {
>>>     identity spike {
>>> which is close but I want them to be identical or a note saying how they
>>> are different.
>>>
>>
>> Updated
>>
>>>
>>> Then what is the difference between this and
>>>     identity clock-state {
>>> which has
>>>     identity synchronized {
>>>     identity unsynchronized {
>>> Why have both?
>>>
>>
>> I have added the description to say one is a higher-level state and
>> another a granular one.
>>
>>> Other thoughts
>>>
>>> I wonder about the role of
>>>     identity aes-cmac {
>>>       base key-chain:crypto-algorithm;
>>> What does it add that a direct reference to AES-CMAC does not have? Why
>>> import key-chain.  I am not saying it has no value but am unclear of
>>> that value.  And
>>>       leaf algorithm {
>>> could do with a reference for AES-CMAC.
>>>
>>
>> We are no longer using key-chain to make sure we could use the YANG
>> feature for MD5.
>>
>>> Some authors include the prefix on the module in the list of prefix;
>>> seems logical.
>>>
>>>      typedef refid
>>> MD5 could do with a reference.
>>>
>>>           leaf clock-stratum {
>>> What is syspeer? I do not see it in the RFC:-)
>>>
>>
>> Updated.
>>
>>>           leaf clock-precision {
>>> should be signed not unsigned I think
>>>
>>
>> Updated.
>>
>>> leaf poll
>>> is indeed poll in section 7.3 but I wonder why  13.1 uses hpoll?
>>> Probably a comment on the RFC and not on the I-D.
>>>
>>
>> Hal provided the details.
>>
>>> With ones from my previous post, below, that is it!
>>>
>>> Tom Petch
>>>
>>
>> Thanks!
>> Dhruv & Ankit
>>
>> On Mon, Feb 15, 2021 at 5:25 PM tom petch <daedulus@btconnect.com> wrote:
>>>
>>> On 12/02/2021 12:01, tom petch wrote:
>>>> On 11/02/2021 09:39, Dhruv Dhody wrote:
>>>>> Hi Tom,
>>>>>
>>>>> Thanks for your review. I have posted an updated version of the YANG.
>>>>>
>>>>> https://datatracker.ietf.org/doc/draft-ietf-ntp-yang-data-model/
>>>>> https://www.ietf.org/rfcdiff?url1=draft-ietf-ntp-yang-data-model-10&url2=draft-ietf-ntp-yang-data-model-12
>>>>>
>>>>>
>>>>
>>>> That was quick!  I have done a first pass but have yet to chase down
>>>> the
>>>> references and one at least looks odd to me. I expect to complete the
>>>> process on Monday am GMT.
>>>
>>> Ian
>>>
>>> I have run out of time but have made a second pass.  Some aspects still
>>> confuse me, where I cannot be sure of the correlation between YANG and
>>> RFC, notable time and mode; I want the words to be identical and they
>>> are not!
>>>
>>>     identity access-mode {
>>> I do not understand. The RFC has protocol, association and packet modes
>>> but not access mode.  This is perhaps section 3, but I am uncertain, the
>>> terminology is not quite the same, which is perhaps ok for an NTP
>>> expert, which I am not, but not in a technical specification IMHO.
>>>
>>> Thus you derive
>>>     identity query-access-mode {
>>> but searching the RFC only yields a match in Security.  I want the terms
>>> to be identical!
>>>
>>> In contrast, association mode is in the RFC and so I can see
>>>     identity broadcast-client {
>>> which lacks a value for mode - perhaps 6.  But I would still like a
>>> reference to section 3 for these.
>>>
>>>
>>>     identity ntp-sync-state {
>>> is again troublesome.  The RFC has
>>> #define NSET     0       /* clock never set */
>>> #define FSET     1       /* frequency set from file */
>>> #define SPIK     2       /* spike detected */
>>> #define FREQ     3       /* frequency mode */
>>> #define SYNC     4       /* clock synchronized */
>>> whereas the I-D has
>>>     identity clock-not-set {
>>>     identity freq-set-by-cfg {
>>>     identity clock-set {
>>>     identity freq-not-determined {
>>>     identity clock-synchronized {
>>>     identity spike {
>>> which is close but I want them to be identical or a note saying how they
>>> are different.
>>>
>>>
>>> Then what is the difference between this and
>>>     identity clock-state {
>>> which has
>>>     identity synchronized {
>>>     identity unsynchronized {
>>> Why have both?
>>>
>>> Other thoughts
>>>
>>> I wonder about the role of
>>>     identity aes-cmac {
>>>       base key-chain:crypto-algorithm;
>>> What does it add that a direct reference to AES-CMAC does not have? Why
>>> import key-chain.  I am not saying it has no value but am unclear of
>>> that value.  And
>>>       leaf algorithm {
>>> could do with a reference for AES-CMAC.
>>>
>>> Some authors include the prefix on the module in the list of prefix;
>>> seems logical.
>>>
>>>      typedef refid
>>> MD5 could do with a reference.
>>>
>>>           leaf clock-stratum {
>>> What is syspeer? I do not see it in the RFC:-)
>>>
>>>           leaf clock-precision {
>>> should be signed not unsigned I think
>>>
>>> leaf poll
>>> is indeed poll in section 7.3 but I wonder why  13.1 uses hpoll?
>>> Probably a comment on the RFC and not on the I-D.
>>>
>>> With ones from my previous post, below, that is it!
>>>
>>> Tom Petch
>>>
>>>> Meanwhile,
>>>>
>>>> s.6
>>>> /For this reason, this YANG module allow/
>>>> For this reason, this YANG module allows/
>>>>
>>>> s.7
>>>> This has lost its two character margin, needs insetting
>>>>
>>>> typedef refid I like, much clearer, but perhaps could do with a
>>>> reference for MD5, RFC1321
>>>>
>>>> /Discountinuities in the value/Discontinuities in the value/
>>>> in three places
>>>>
>>>> when 'false() = boolean(/sys:system/sys:ntp)' {
>>>> I am sure that this is valid but is not something I am used to seeing.
>>>> An aspect of YANG that I have never understood is when you have to
>>>> spell
>>>> things out and when they are implicit and I think that all you need
>>>> here is
>>>> when not <presence container>
>>>> but would want to verify that with a YANG doctor
>>>>
>>>> The definition of each possible values:/
>>>> The definition of each possible value:/
>>>>
>>>>         leaf poll {
>>>>           type uint8;
>>>> This seems wrong to me.  Looking at s.7.3
>>>>      Poll: 8-bit signed integer representing the maximum interval
>>>> between
>>>>      successive messages, in log2 seconds.  Suggested default limits
>>>> for
>>>>      minimum and maximum poll intervals are 6 and 10, respectively.
>>>> ie signed integer and not uint
>>>>
>>>> TTL good to have the reference - I was barking up the wrong tree
>>>>
>>>> I note
>>>> #define TTLMAX          8       /* max ttl manycast */
>>>> I assume that this is a matter of choice - I see 255 in examples which
>>>> is at the other end of the spectrum
>>>>
>>>>             leaf beacon {
>>>>               type uint8;
>>>> I cannot find a definition of this in the RFC (which I think a
>>>> defect in
>>>> the RFC).  Reverse engineering the code I see beacon compared to
>>>> unreach, which is defined, as
>>>>      unreach: integer representing the number of seconds the server has
>>>>      been unreachable
>>>> which suggests that beacon is a number of seconds, and not a log base 2
>>>> value or a counter; is this right? (The RFC should say IMHO)
>>>>
>>>> s.8
>>>> /for illustration purporses./for illustration purposes./
>>>>
>>>>
>>>> Back on Monday, all being well
>>>>
>>>> I got a bounce message last time from Yi saying on holiday until 22nd
>>>> February.
>>>>
>>>> Tom Petch.
>>>>
>>>>
>>>>> Please find my consolidated response below -
>>>>>
>>>>> Email 1:
>>>>> ========
>>>>>
>>>>> On Mon, Feb 8, 2021 at 5:52 PM tom petch <daedulus@btconnect.com>
>>>>> wrote:
>>>>>>
>>>>>> I have two main problems and a lot of lesser ones with this I-D;
>>>>>> given
>>>>>> the number, about 50, I am not optimistic that a single cycle of
>>>>>> revision will see them addressed.
>>>>>>
>>>>>> I see a potential loophole in the security which I will post
>>>>>> separately
>>>>>> since the audience is likely to be different.
>>>>>>
>>>>>> References are missing or not specific enough so when I try to
>>>>>> compare
>>>>>> values in the I-D with those of the protocol, either I cannot find
>>>>>> them
>>>>>> or they seem to be different. Giving values to enumerations is
>>>>>> unusual
>>>>>> in YANG, since NETCONF does not transmit them, and their presence
>>>>>> suggests that they are protocol values, in which case I want to
>>>>>> see what
>>>>>> the protocol says.  A reference to a 110 page I-D, with two updating
>>>>>> I-D, is inadequate IMO - section numbers are needed in every case.
>>>>>>
>>>>>
>>>>> I have added section numbers in most of the cases.
>>>>> I have changed enums to identity.
>>>>>
>>>>>> Introduction
>>>>>> should mention support, or lack thereof, for NMDA
>>>>>>
>>>>>
>>>>> Its present in Section 1.1 already, I have added keyword NMDA as well
>>>>> now.
>>>>>
>>>>>> 1.4.  Prefixes in Data Node Names
>>>>>>               | ianach    | iana-crypt-hash          | [RFC7317] |
>>>>>> the reference is wrong; this is an IANA- maintained module so the
>>>>>> reference must be to the IANA website
>>>>>>
>>>>>
>>>>> No longer using ianach in this update.
>>>>>
>>>>>> 1.5.  Refrences in the Model
>>>>>> /Refrences/References/
>>>>>> /refrenced in /referenced in /
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>> 2.  NTP data model
>>>>>>
>>>>>> I do not see the value of a condensed model followed immediately by a
>>>>>> full model. Perhaps the full model should be an Appendix although at
>>>>>> less than three pages, this is quite small and would be ok on its own
>>>>>> IMHO.
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>> 4.  Relationship with RFC 7317
>>>>>> /supports per-interface configurations /
>>>>>> support per-interface configuration/
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>> 5.  Access Rules
>>>>>> /refer access-mode) and attach different acl-rule/
>>>>>> see access-mode) and attach a different acl-rule/
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>> 6.  Key Management
>>>>>> /32-bits unsigned /32-bit unsigned/
>>>>>>
>>>>>> /this YANG modules/this YANG module/
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>> NTP association (for example unicast-server),
>>>>>> /specefied/specified/
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>> 7.  NTP YANG Module
>>>>>>
>>>>>>        import iana-crypt-hash {
>>>>>>         reference         "RFC 7317: A YANG Data Model for System
>>>>>> Management";
>>>>>> wrong reference - this module is IANA-maintained so the reference
>>>>>> must
>>>>>> be to the IANA website
>>>>>>
>>>>>
>>>>> Not using iana-crypt-hash anymore!
>>>>>
>>>>>>        contact
>>>>>>           WG List:  <mailto: ntpwg@lists.ntp.org
>>>>>> this is not the address I see on the datatracker
>>>>>>
>>>>>> the I-D has five editors but there are only two here
>>>>>>
>>>>>
>>>>> There are 2 co-authors marked as editors. RFC 8407 says the document
>>>>> author or editor contact information needs to be present.
>>>>>
>>>>>>        typedef access-mode {
>>>>>> I cannot find this in RFC5905
>>>>>>
>>>>>
>>>>> Section 9.2 and Appendix A.5.4. I have added section number in
>>>>> reference.
>>>>>
>>>>>>        typedef association-mode {
>>>>>> this I can find but it ranges from 0 to 7 whereas the I-D has 0 to 4
>>>>>> - is
>>>>>> this intended?
>>>>>>
>>>>>
>>>>> Changed to identity.
>>>>>
>>>>>>        typedef ntp-sync-state {
>>>>>> this I cannot find; a search for 'spike' yields a value of 2 in the
>>>>>> RFC, 5 here - is this intended?
>>>>>>
>>>>>
>>>>> Instead of enum and values, changed to identity.
>>>>>
>>>>>>                 effect in XXX seconds.";
>>>>>> for what value of XXX?
>>>>>>
>>>>>
>>>>> Removed.
>>>>>
>>>>>>          leaf packet-sent {
>>>>>>          leaf packet-received {
>>>>>>          leaf packet-dropped {
>>>>>>               discontinuities in the value of sysUpTime.";
>>>>>> those who have been involved with network management for ten years or
>>>>>> less will likely not recognise this object.  You could add a
>>>>>> reference
>>>>>> but I suggest you replace it with a YANG-based approach; see for
>>>>>> example
>>>>>> how draft-ietf-ospf-yang handles discontinuities
>>>>>>
>>>>>
>>>>> Updated as suggested.
>>>>>
>>>>>
>>>>>>              leaf access-mode {
>>>>>> /defination/definition/
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>>              leaf clock-refid {
>>>>>> ...                         reference clock of the peer to
>>>>>>                   which clock is synchronized.";
>>>>>>
>>>>>> I do not understand this.  Presumably this corresponds to
>>>>>>                  type string {
>>>>>>                    length "4";
>>>>>> from the three type union but what object is this?
>>>>>>
>>>>>
>>>>> I created a typedef and cleaned it up. This is as described in Section
>>>>> 7.3 of RFC5905 under Reference ID.
>>>>>
>>>>>>              leaf clock-offset {
>>>>>> examples could do with units to make it clear that it is '1.232mS'
>>>>>> and
>>>>>> not '1.232s'
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>>            leaf address {
>>>>>>              type inet:host;
>>>>>> this includes the domain name, which I see no mention of in the RFC
>>>>>>
>>>>>
>>>>> Changed to inet:ip-address
>>>>>
>>>>>>          list associations {
>>>>>>               /and isconfigured is required/and isconfigured are
>>>>>> required/
>>>>>>
>>>>>>            leaf address {
>>>>>>              type inet:host;
>>>>>> as above, the description seems to ignore the option of the domain
>>>>>> name
>>>>>>
>>>>>>            leaf refid {
>>>>>> same union as for leaf clock-refid, but a completely different
>>>>>> description, neither of which I understand.
>>>>>>
>>>>>
>>>>> Updated (all of the above).
>>>>>
>>>>>>                   '20.1.1.1'
>>>>>> this address would appear to be assigned to Microsoft, not an
>>>>>> affiliation I see among the authors.  Is the company ok with this?
>>>>>>
>>>>>
>>>>> Updated to 203.0.113.1
>>>>>
>>>>>>            leaf reach {
>>>>>>              type uint8;
>>>>>> is this the 8-bit p.reach shift register? reference needed (again:-)
>>>>>>
>>>>>>            leaf unreach {
>>>>>> ditto
>>>>>>
>>>>>
>>>>> Added.
>>>>>
>>>>>>            leaf poll {
>>>>>>              type uint8;
>>>>>>              units "seconds";
>>>>>>              description
>>>>>>                "The polling interval for current association";
>>>>>> is there a useful default?  2s appears in the RFC in places
>>>>>>
>>>>>
>>>>> No default in this case.
>>>>>
>>>>>>            leaf offset {
>>>>>> as above, the example values would be clearer with units
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>>            leaf transmit-time {
>>>>>>              type yang:date-and-time;
>>>>>>              description
>>>>>>                "This is the local time, in timestamp format,
>>>>>>                 at which the NTP packet departed the peer(T3).
>>>>>>                 If the peer becomes unreachable the value is set to
>>>>>> zero.";
>>>>>> I think, but am not sure, that a yang:date-and-time can never be
>>>>>> set to
>>>>>> zero, the syntax does not allow it; the usual approach with YANG is a
>>>>>> union with another type which can indicate a special condition - int,
>>>>>> boolean, etc
>>>>>>
>>>>>>            leaf input-time {
>>>>>>              type yang:date-and-time;
>>>>>> ditto
>>>>>>
>>>>>
>>>>> Thanks, updated as per your suggestion.
>>>>>
>>>>>>                leaf ttl {
>>>>>>                  type uint8;
>>>>>>                  description
>>>>>>                    "Specifies the time to live (TTL)
>>>>>> TTL does not exist in IPv6
>>>>>>
>>>>>
>>>>> This TTL is not related to IP. See section 3.1 for manycast and
>>>>> updated with reference.
>>>>>
>>>>>>                uses common-attributes {
>>>>>>                  description
>>>>>> /attribute like/attributes such as/
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>>                leaf ttl {
>>>>>>                  type uint8;
>>>>>>                  description
>>>>>>                    "Specifies the maximum time to live (TTL) for
>>>>>> TTL does not exist in IPv6
>>>>>>
>>>>>
>>>>> As above.
>>>>>
>>>>>>                uses common-attributes {
>>>>>> /attributes like/attributes such as/
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>>                leaf beacon {
>>>>>> what are the units and is there a default? Is there a maximum of
>>>>>> 15?  As
>>>>>> ever, a reference could tell me.
>>>>>>
>>>>>
>>>>> Added reference
>>>>>
>>>>>> 8.  Usage Example
>>>>>> lots of examples but none for IPv6 or JSON
>>>>>>
>>>>>
>>>>> Added one IPv6. I dont think we need add one for JSON as well.
>>>>>
>>>>>> 8.1
>>>>>>         <sys:ntp xmlns:sys="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> sys: is a defined prefix and must not be re-used
>>>>>>
>>>>>
>>>>> Oops, updated here and all other instance!
>>>>>
>>>>>>             <refid>20.1.1.1</refid>
>>>>>> as above, is Microsoft ok with this?
>>>>>>
>>>>>
>>>>> Updated to 203.0.113.1
>>>>>
>>>>>> 8.2
>>>>>>           <sys:ntp xmlns:sys="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> sys: is a defined prefix and must not be re-used
>>>>>>
>>>>>> 8.3
>>>>>>           <sys:ntp xmlns:sys="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> sys: is a defined prefix and must not be re-used
>>>>>>
>>>>>> 8.4
>>>>>>           <sys:ntp xmlns:sys="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> sys: is a defined prefix and must not be re-used
>>>>>>
>>>>>> 8.5
>>>>>>     "224.1.1.1"
>>>>>> would appear to be a reserved address.  Other RFC used 224.0.1.1
>>>>>>
>>>>>
>>>>> Updated
>>>>>
>>>>>>           <sys:ntp xmlns:sys="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> and again, twice
>>>>>>
>>>>>>                 <address>224.1.1.1</address>
>>>>>> as above
>>>>>>
>>>>>> 8.6
>>>>>>     "224.1.1.1"
>>>>>> as above
>>>>>>
>>>>>>            <sys:ntp xmlns:sys="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> as above, twice
>>>>>>
>>>>>> 8.7
>>>>>>         <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> as above
>>>>>>
>>>>>> 8.8
>>>>>>         <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> as above
>>>>>>
>>>>>>             <refid>20.1.1.1</refid>
>>>>>> as above
>>>>>>
>>>>>> 8.9
>>>>>>         <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
>>>>>> as above
>>>>>>
>>>>>
>>>>> Updated in all cases.
>>>>>
>>>>>> 12.2
>>>>>>       [RFC7317]  Bierman, A. and M. Bjorklund, "A YANG Data Model
>>>>>> wrong reference in the wrong place
>>>>>> this is an IANA-maintained module and so the reference must be to the
>>>>>> IANA website; and since the module is imported, the reference must be
>>>>>> Normative.
>>>>>>
>>>>>
>>>>> No longer using iana-crypt-hash.
>>>>>
>>>>>> Tom Petch
>>>>>>
>>>>>>
>>>>>> ----- Original Message -----
>>>>>> From: "The IESG" <iesg-secretary@ietf.org>
>>>>>> To: "IETF-Announce" <ietf-announce@ietf.org>
>>>>>> Cc: <ek.ietf@gmail.com>; <ntp-chairs@ietf.org>; <ntp@ietf.org>;
>>>>>> <dsibold.ietf@gmail.com>; <draft-ietf-ntp-yang-data-model@ietf.org>
>>>>>> Sent: Friday, January 29, 2021 10:39 PM
>>>>>> Subject: Last Call: <draft-ietf-ntp-yang-data-model-10.txt> (A
>>>>>> YANG Data
>>>>>> Model for NTP) to Proposed Standard
>>>>>>
>>>>>
>>>>>
>>>>> Email 2:
>>>>> ========
>>>>>
>>>>> On Mon, Feb 8, 2021 at 6:07 PM tom petch <daedulus@btconnect.com>
>>>>> wrote:
>>>>>>
>>>>>> This is my second response to this Last Call, about a possible
>>>>>> security
>>>>>> issue.
>>>>>>
>>>>>> RFC8573 seems clear that MD5 must not be used to effect security
>>>>>> for NTP
>>>>>> but this I-D imports iana-crypt-hash which allows MD5 without any
>>>>>> restriction, so is MD5 allowed or not?
>>>>>>
>>>>>> There are features defined which allow the hash in iana-crypt-hash
>>>>>> to be
>>>>>> restricted but this I-D does not use them.
>>>>>>
>>>>>> Probably iana-crypt-hash should be updated - I will raise that on the
>>>>>> NETMOD WG list.
>>>>>>
>>>>>
>>>>> No longer using iana-crypt-hash, instead made this change to allow all
>>>>> sort of key formats -
>>>>>
>>>>> OLD:
>>>>> |     +--rw key?         ianach:crypt-hash
>>>>> NEW:
>>>>> |     +--rw key
>>>>> |     |  +--rw (key-string-style)?
>>>>> |     |     +--:(keystring)
>>>>> |     |     |  +--rw keystring?            string
>>>>> |     |     +--:(hexadecimal) {hex-key-string}?
>>>>> |     |        +--rw hexadecimal-string?   yang:hex-string
>>>>> END
>>>>>
>>>>> The comment related to use of MD5 still applies. I have not yet added
>>>>> a check for the algorithm. I have updated the description and security
>>>>> consideration to highligh that MD5 is depricated as per RFC 8573. Lets
>>>>> see what the IESG suggests...
>>>>>
>>>>>> The I-D also uses MD5 in a way that would appear not to be security
>>>>>> related, to hash an IPv6 address.
>>>>>>
>>>>>
>>>>> This is as per RFC 5905 - "If using the IPv6 address family, it is the
>>>>> first four octets of the MD5 hash of the IPv6 address."
>>>>>
>>>>>> In passing, this I-D has three references to RFC7317.  This is
>>>>>> wrong -
>>>>>> the module is IANA-maintained and so the references should be to the
>>>>>> IANA website.
>>>>>>
>>>>>
>>>>> No longer using iana-crypt-hash.
>>>>>
>>>>>> The secdir reviewer might be interested in my thoughts.
>>>>>>
>>>>>> Tom Petch
>>>>>
>>>>>
>>>>> Email 3:
>>>>> ========
>>>>>
>>>>> On Tue, Feb 9, 2021 at 4:40 PM tom petch <daedulus@btconnect.com>
>>>>> wrote:
>>>>>>
>>>>>> A separate thought to my previous two.
>>>>>>
>>>>>> Section 4 is very keen that this I-D and the system module which
>>>>>> configures ntp SHOULD NOT coexist but this is not enforced by the
>>>>>> YANG.
>>>>>>
>>>>>> It could be.  Import the system module and make the presence
>>>>>> container
>>>>>> in this I-D dependent on the absence of the presence container in
>>>>>> /system/ntp.
>>>>>>
>>>>>
>>>>> Updated as per your suggestion!
>>>>>
>>>>> ====
>>>>>
>>>>> Thanks again for your detailed review. It has improved the YANG model
>>>>> significantly!
>>>>>
>>>>> Thanks!
>>>>> Dhruv & Ankit
>>>>>
>>>>> On Sat, Jan 30, 2021 at 4:09 AM The IESG <iesg-secretary@ietf.org>
>>>>> wrote:
>>>>>>
>>>>>
>> .
>>