Re: [Gen-art] Gen-ART Last Call review of draft-ietf-ntp-checksum-trailer-04

Tal Mizrahi <talmi@marvell.com> Sun, 28 February 2016 06:31 UTC

Return-Path: <talmi@marvell.com>
X-Original-To: gen-art@ietfa.amsl.com
Delivered-To: gen-art@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 409191A8842; Sat, 27 Feb 2016 22:31:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.267
X-Spam-Level:
X-Spam-Status: No, score=-2.267 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, IP_NOT_FRIENDLY=0.334, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham
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 cxuNZtZtdy0i; Sat, 27 Feb 2016 22:31:30 -0800 (PST)
Received: from mx0a-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) (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 255E61A87B3; Sat, 27 Feb 2016 22:31:30 -0800 (PST)
Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.15.0.59/8.15.0.59) with SMTP id u1S6U5j8014666; Sat, 27 Feb 2016 22:31:24 -0800
Received: from il-exch02.marvell.com ([199.203.130.102]) by mx0a-0016f401.pphosted.com with ESMTP id 21ba1pj0jq-2 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Sat, 27 Feb 2016 22:31:24 -0800
Received: from IL-EXCH01.marvell.com (10.4.102.220) by IL-EXCH02.marvell.com (10.4.102.221) with Microsoft SMTP Server (TLS) id 15.0.1104.5; Sun, 28 Feb 2016 08:31:21 +0200
Received: from IL-EXCH01.marvell.com ([fe80::5d63:81cd:31e2:fc36]) by IL-EXCH01.marvell.com ([fe80::5d63:81cd:31e2:fc36%20]) with mapi id 15.00.1104.000; Sun, 28 Feb 2016 08:31:21 +0200
From: Tal Mizrahi <talmi@marvell.com>
To: Paul Kyzivat <pkyzivat@alum.mit.edu>, "draft-ietf-ntp-checksum-trailer.all@ietf.org" <draft-ietf-ntp-checksum-trailer.all@ietf.org>
Thread-Topic: [Gen-art] Gen-ART Last Call review of draft-ietf-ntp-checksum-trailer-04
Thread-Index: AQHRbnqDEPnq5jDQbEiEfYS4Ttp+gp88THlwgACSAACABCJswA==
Date: Sun, 28 Feb 2016 06:31:20 +0000
Message-ID: <8d092733b39248d69cad3f935f94a896@IL-EXCH01.marvell.com>
References: <56818AED.8090909@alum.mit.edu> <56CCC3D8.7010600@alum.mit.edu> <1fd008bb55c84958aa1b038fe42bf793@IL-EXCH01.marvell.com> <56CF33EE.8040007@alum.mit.edu>
In-Reply-To: <56CF33EE.8040007@alum.mit.edu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [199.203.130.14]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-02-28_02:, , signatures=0
X-Proofpoint-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1601100000 definitions=main-1602280127
Archived-At: <http://mailarchive.ietf.org/arch/msg/gen-art/Sl-hbbpzty0ud1sSzxTOkj3JE4U>
Cc: General Area Review Team <gen-art@ietf.org>, "Brian Haberman (brian@innovationslab.net)" <brian@innovationslab.net>, "Karen ODonoghue (odonoghue@isoc.org)" <odonoghue@isoc.org>
Subject: Re: [Gen-art] Gen-ART Last Call review of draft-ietf-ntp-checksum-trailer-04
X-BeenThere: gen-art@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "GEN-ART: General Area Review Team" <gen-art.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/gen-art>, <mailto:gen-art-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/gen-art/>
List-Post: <mailto:gen-art@ietf.org>
List-Help: <mailto:gen-art-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/gen-art>, <mailto:gen-art-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 28 Feb 2016 06:31:33 -0000

Hi Paul,



>Isn't this serious? IIUC in many (most?) cases the transmitters and
>intermediate nodes won't know if the receiver supports [NTP-Ext].
>Inserting this for those that don't will deny them of the time they are looking
>for.
>
>Shouldn't there be some discussion of how a decision can be made about
>when to use this in order to avoid breaking receivers?


I believe that the Checksum Complement is most useful in LANs and in locally administered environments, where both client and server are managed by the same administrator. These are the cases where you need a high clock accuracy, and you will want to get the extra juice from hardware timestamping + Checksum Complement.
I believe it is less likely that the Checksum Complement will be used by a client that connects to a random NTP server.

Having said that, I agree that this should be reflected in the draft, and thus I suggest the following text for Section 3.3:

"The behavior defined in this document does not impose new requirements on the reception of NTP packets beyond the requirements defined in [NTP-Ext]. Note that, as defined in [NTP-Ext], a host that receives an NTP message with an unknown extension field SHOULD ignore the extension field and MAY drop the packet if policy requires it. Thus, transmitters and intermediate nodes that support the Checksum Complement can transparently interoperate with receivers that are not Checksum-Complement-compliant, as long as these receivers ignore unknown extension fields. It is noted that existing implementations that discard packets with unknown extension fields cannot interoperate with transmitters that use the Checksum Complement. 

It should be noted that when hardware-based timestamping is used, it will likely be used at both ends, and thus both hosts that take part in the protocol will support the functionality described in this memo. If only one of the hosts uses hardware-based timestamping, then the Checksum Complement can only be used if it is known that the peer host can accept the Checksum Complement."



>I think so. However the erratam also has exactly the text I was hoping to find
>describing how extensions and the mac are parsed out of the packet by the
>receiver, and I don't see that in [NTP-Ext]. In principle it is not necessary (it is
>an exercise for the reader to figure out how to do this) but having it ensures
>that developers get it right.
>
>Is there a reason why [NTP-Ext] doesn't also pick that up from the erratam?
>(Of course that has no bearing on *this* draft.)

Actually, [NTP-Ext] uses the exact text from the erratum (with some additional text in the middle).


Best regards,
Tal.




>-----Original Message-----
>From: Paul Kyzivat [mailto:pkyzivat@alum.mit.edu]
>Sent: Thursday, February 25, 2016 7:04 PM
>To: Tal Mizrahi; draft-ietf-ntp-checksum-trailer.all@ietf.org
>Cc: General Area Review Team; Brian Haberman (brian@innovationslab.net);
>Suresh Krishnan; Karen ODonoghue (odonoghue@isoc.org)
>Subject: Re: [Gen-art] Gen-ART Last Call review of draft-ietf-ntp-checksum-
>trailer-04
>
>Tal,
>
>Please see inline.
>
>On 2/25/16 1:37 AM, Tal Mizrahi wrote:
>> Hi Paul,
>>
>> Many thanks for the thorough review.
>>
>> Please find my responses to the major comments below. The next version of
>the draft will address these comments, as well as the ones you specified as
>'minor'.
>>
>>
>>> (1) Major:
>>>
>>> Section 3.3 references [NTP-Ext] (draft-ietf-ntp-extension-field) as
>>> justification for why existing implementations won't have any trouble
>>> with this extension. But some (most?) existing implementations won't
>>> comply with [NTP-Ext], but rather only with RFC5905. This section
>>> doesn't explain how
>>> *those* implementations will behave. ISTM there is some possibility
>>> that they won't behave well.
>>
>> I agree that Section 3.3. should be clarified. An existing implementation
>(whether it complies to [NTP-Ext] or not) that receives a Checksum
>Complement has two options: (i) ignore it, or (ii) drop the packet. While (i) is
>interoperable with the current draft, (ii) is not. I suggest the following text for
>Section 3.3:
>>
>> "The behavior defined in this document does not impose new requirements
>on the reception of NTP packets beyond the requirements defined in [NTP-
>Ext]. Note that, as defined in [NTP-Ext], a host that receives an NTP message
>with an unknown extension field SHOULD ignore the extension field and MAY
>drop the packet if policy requires it. Thus, transmitters and intermediate nodes
>that support the Checksum Complement can transparently interoperate with
>receivers that are not Checksum-Complement-compliant, as long as these
>receivers ignore the Checksum Complement extension field. It is noted that
>existing implementations that discard packets with unknown extension fields
>cannot interoperate with transmitters that use the Checksum Complement."
>
>Isn't this serious? IIUC in many (most?) cases the transmitters and
>intermediate nodes won't know if the receiver supports [NTP-Ext].
>Inserting this for those that don't will deny them of the time they are looking
>for.
>
>Shouldn't there be some discussion of how a decision can be made about
>when to use this in order to avoid breaking receivers?
>
>>> (2) Major:
>>>
>>> Section 3.2 says:
>>>
>>>       This length guarantees that the host that receives the packet
>>>       parses it correctly, whether the packet includes a MAC or not.
>>>       [NTP-Ext] provides further details about the length of an
>>>       extension field in the absence of a MAC.
>>>
>>> I am not reviewing [NTP-Ext], but I consulted it in an attempt to
>>> understand. I found this logic, and the references, to be confusing
>>> and seemingly
>>> contradictory:
>>>
>>> In [NTP-Ext] I find:
>>>
>>>     ... However, a MAC is
>>>     not mandatory after an extension field; an NTPv4 packet can include
>>>     one or more extension fields without including a MAC (Section 7.5 of
>>>     [RFC5905]).
>>>
>>> While section 7.5 of [RFC5905] contradicts that:
>>>
>>>     In NTPv4, one or more extension fields can be inserted after the
>>>     header and before the MAC, which is always present when an extension
>>>     field is present.
>>>
>>
>> Please note that this paragraph in RFC5905 was corrected by erratum 3627
>(https://www.rfc-editor.org/errata_search.php?rfc=5905), and the corrected
>text is:
>>
>> In NTPv4, one or more extension fields can be inserted after the
>> header and before the MAC, if a MAC is present. If a MAC is not
>> present, one or more extension fields can be inserted after the
>> header, according to the following rules:
>> o If the packet includes a single extension field, the length of the
>>    extension  field MUST be at least 7 words, i.e., at least 28 octets.
>> o If the packet includes more than one extension field, the length of
>>    the last extension field MUST be at least 28 octets. The length of
>>    the other extension fields in this case MUST be at least 16 octets
>>    each.
>
>I missed the errata. I agree that it covers the issue.
>
>>> The text that allows extension fields without a MAC is an update to
>>> RFC5905 in section 3 of [NTP-Ext]. But that isn't very clear about
>>> how one is expected to decipher this. I *think* the intended logic is:
>>>
>>>     If the packet length is more that 24 bytes in excess of the size
>>>     of a packet with no extensions or MAC, then it must contain at
>>>     least one extension. In that case, process extensions until the
>>>     remaining size of the packet is less or equal to 24. Then, if bytes
>>>     remain process them as a MAC.
>>>
>>> IMO this draft should not progress until this is specified
>>> *somewhere*, probably in [NTP-Ext].
>>>
>>> [IMO this technique is a horrible hack. I hope there was no better
>>> backward compatible alternative. But this comment isn't a formal part
>>> of this review.]
>>
>>
>> I agree that this logic is far from intuitive, and is defined for the sake of
>backward compatibility.
>> The text in [NTP-Ext] is:
>>
>>     If a MAC is not present, one or more extension fields can be inserted
>>     after the header, according to the following rules:
>>
>>     o  If the packet includes a single extension field, the length of the
>>        extension field MUST be at least 7 words, i.e., at least 28
>>        octets.
>>
>>     o  If the packet includes more than one extension field, the length
>>        of the last extension field MUST be at least 28 octets. The length
>>        of the other extension fields in this case MUST be at least 16
>>        octets each.
>>
>>
>> I believe the current text in [NTP-Ext] is correct, and consistent with erratum
>3627.
>> Please let us know if you think this is not the case.
>
>I think so. However the erratam also has exactly the text I was hoping to find
>describing how extensions and the mac are parsed out of the packet by the
>receiver, and I don't see that in [NTP-Ext]. In principle it is not necessary (it is
>an exercise for the reader to figure out how to do this) but having it ensures
>that developers get it right.
>
>Is there a reason why [NTP-Ext] doesn't also pick that up from the erratam?
>(Of course that has no bearing on *this* draft.)
>
>	Thanks,
>	Paul
>
>>> -----Original Message-----
>>> From: Paul Kyzivat [mailto:pkyzivat@alum.mit.edu]
>>> Sent: Tuesday, February 23, 2016 10:41 PM
>>> To: draft-ietf-ntp-checksum-trailer.all@ietf.org
>>> Cc: General Area Review Team
>>> Subject: [Gen-art] Gen-ART Last Call review of
>>> draft-ietf-ntp-checksum-trailer-
>>> 04
>>>
>>> I am the assigned Gen-ART reviewer for this draft. The General Area
>>> Review Team (Gen-ART) reviews all IETF documents being processed by
>>> the IESG for the IETF Chair. Please treat these comments just like
>>> any other last call comments. For more information, please see the
>>> FAQ at <http://wiki.tools.ietf.org/area/gen/trac/wiki/GenArtfaq>.
>>>
>>> Document: draft-ietf-ntp-checksum-trailer-04
>>> Reviewer: Paul Kyzivat
>>> Review Date: 2016-02-23
>>> IETF LC End Date: 2016-03-01
>>> IESG Telechat date: 2016-03-03
>>>
>>> Summary:
>>>
>>> This draft is on the right track but has open issues, described in the review.
>>>
>>> Major: 2
>>> Minor: 3
>>> Nits:  1
>>>
>>> (1) Major:
>>>
>>> Section 3.3 references [NTP-Ext] (draft-ietf-ntp-extension-field) as
>>> justification for why existing implementations won't have any trouble
>>> with this extension. But some (most?) existing implementations won't
>>> comply with [NTP-Ext], but rather only with RFC5905. This section
>>> doesn't explain how
>>> *those* implementations will behave. ISTM there is some possibility
>>> that they won't behave well.
>>>
>>> (2) Major:
>>>
>>> Section 3.2 says:
>>>
>>>       This length guarantees that the host that receives the packet
>>>       parses it correctly, whether the packet includes a MAC or not.
>>>       [NTP-Ext] provides further details about the length of an
>>>       extension field in the absence of a MAC.
>>>
>>> I am not reviewing [NTP-Ext], but I consulted it in an attempt to
>>> understand. I found this logic, and the references, to be confusing
>>> and seemingly
>>> contradictory:
>>>
>>> In [NTP-Ext] I find:
>>>
>>>     ... However, a MAC is
>>>     not mandatory after an extension field; an NTPv4 packet can include
>>>     one or more extension fields without including a MAC (Section 7.5 of
>>>     [RFC5905]).
>>>
>>> While section 7.5 of [RFC5905] contradicts that:
>>>
>>>     In NTPv4, one or more extension fields can be inserted after the
>>>     header and before the MAC, which is always present when an extension
>>>     field is present.
>>>
>>> The text that allows extension fields without a MAC is an update to
>>> RFC5905 in section 3 of [NTP-Ext]. But that isn't very clear about
>>> how one is expected to decipher this. I *think* the intended logic is:
>>>
>>>     If the packet length is more that 24 bytes in excess of the size
>>>     of a packet with no extensions or MAC, then it must contain at
>>>     least one extension. In that case, process extensions until the
>>>     remaining size of the packet is less or equal to 24. Then, if bytes
>>>     remain process them as a MAC.
>>>
>>> IMO this draft should not progress until this is specified
>>> *somewhere*, probably in [NTP-Ext].
>>>
>>> [IMO this technique is a horrible hack. I hope there was no better
>>> backward compatible alternative. But this comment isn't a formal part
>>> of this review.]
>>>
>>> (3) Minor:
>>>
>>> Section 3.2 says:
>>>
>>> The extension field includes 22 octets of padding. This field SHOULD
>>> be set to 0, and SHOULD be ignored by the recipient.
>>>
>>> In my experience SHOULD is dangerous when not explained. I would
>>> recommend either changing it to MUST or providing an explanation of
>>> conditions that would justify violating the SHOULD.
>>>
>>> (4) Minor:
>>>
>>> While section 3.2 carefully defines the format of the Checksum
>>> Complement option, it never specifies how the content of that field is
>generated or used.
>>> An example of that calculation is shown in appendix A, but that isn't
>>> normative. A normative specification of the content of the field is needed.
>>> IIUC it is to simply be ignored by the recipient.
>>> It would be good to say that too.
>>>
>>> (4) Minor:
>>>
>>> This document has a normative reference to RFC5905 and an informative
>>> reference to [NTP-Ext]. But [NTP-Ext] has normative updates to
>>> RFC5905 and this document has dependencies on those changes, so it
>>> needs a normative reference to that document.
>>>
>>> (6) Nit/Question:
>>>
>>> In section 3.1, IIUC the timestamp engine will need to know that the
>>> Checksum Complement field is present before it updates the packet. Is
>>> it assumed that engine will assume that to be so, and will not be
>>> invoked unless it is? It might be helpful to say something about
>>> this. If not, I don't see how it can work.
>>
>>