Re: [core] Incoming AD review of draft-ietf-core-block-19

Carsten Bormann <cabo@tzi.org> Thu, 21 April 2016 06:14 UTC

Return-Path: <cabo@tzi.org>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D5C9212D1A9 for <core@ietfa.amsl.com>; Wed, 20 Apr 2016 23:14:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7] 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 LpK2slmyKtMT for <core@ietfa.amsl.com>; Wed, 20 Apr 2016 23:14:33 -0700 (PDT)
Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [IPv6:2001:4b98:c:538::197]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3D56F12D698 for <core@ietf.org>; Wed, 20 Apr 2016 23:14:33 -0700 (PDT)
Received: from mfilter44-d.gandi.net (mfilter44-d.gandi.net [217.70.178.175]) by relay5-d.mail.gandi.net (Postfix) with ESMTP id B65EE41C09B; Thu, 21 Apr 2016 08:14:31 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at mfilter44-d.gandi.net
Received: from relay5-d.mail.gandi.net ([IPv6:::ffff:217.70.183.197]) by mfilter44-d.gandi.net (mfilter44-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id ryOHSO3NEG_i; Thu, 21 Apr 2016 08:14:30 +0200 (CEST)
X-Originating-IP: 93.199.242.26
Received: from nar-3.local (p5DC7F21A.dip0.t-ipconnect.de [93.199.242.26]) (Authenticated sender: cabo@cabo.im) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 5D41441C088; Thu, 21 Apr 2016 08:14:29 +0200 (CEST)
Message-ID: <57186FC3.9010405@tzi.org>
Date: Thu, 21 Apr 2016 08:14:27 +0200
From: Carsten Bormann <cabo@tzi.org>
User-Agent: Postbox 4.0.8 (Macintosh/20151105)
MIME-Version: 1.0
To: Alexey Melnikov <alexey.melnikov@isode.com>
References: <5707D6F8.40000@isode.com>
In-Reply-To: <5707D6F8.40000@isode.com>
X-Enigmail-Version: 1.2.3
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/core/l7zWCZGvpp9unO8HTs5v9CKMiSw>
Cc: core@ietf.org
Subject: Re: [core] Incoming AD review of draft-ietf-core-block-19
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core/>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Apr 2016 06:14:35 -0000

Alexey Melnikov wrote:
> Hi,
> I am mostly happy with this document, but I have a few comments/questions:
> 
> On page 11:
> 
>    Clients that want to retrieve
>    all blocks of a resource SHOULD strive to do so without undue delay.
> 
> This is not an interoperability issue and it would be impossible to
> verify compliance with it, unless you have a number that specifies what
> is "undue delay". So I think you shouldn't use RFC 2119 SHOULD here.
> Just use lowercased "should" instead.

Indeed, you cannot measure compliance with this SHOULD.  I still think
that it is important for interoperability to point out that clients will
have more successful exchanges if they heed this.  (From an
interoperability point of view, this is a statement that relieves
servers of a potential onus to somehow cater for clients that don't.)

> Similarly, in 2.5:
> 
>    Clients SHOULD strive to send all blocks of a
>    request without undue delay.
> 
> (Similar text in 2.6)

(Ditto.)

> In 2.9.2:
> 
> Should probably also mention that this response code is also used for
>  mismatching content-format options

That is one way to see this; section 2.3 takes the view that mismatching
content-formats aren't reassembled into one body in the first place so
an incomplete body is the result of not having all parts.
(I added back reference in the editor's draft.)

> In 2.10:
> 
>    A response with a Block1 Option in control usage
>    with the M bit set invalidates cached responses for the target URI.
> 
> Can you explain the reason for this?


If the M bit had not been set the response would have been a final
response and would be used to update the cache entries for this URI.
Now, with the M bit set, we know that there will be a final response
later, but we don't know what that will be.  Continuing to serve a
previous response from the cache doesn't sound right.  But then, it
could be argued that the server just promised to perform the request
atomically later, so nothing has happened yet.  Good question.

> 
> In 3.2:
> 
>    A stateless server that simply builds/updates the resource in place
>    (statelessly) may indicate this by not setting the more bit in the
>    response (Figure 8); in this case, the response codes are valid
>    separately for each block being updated.
> 
> What is the behaviour of both the client and the server if PUT on a
> particular block fails? Is this clear enough in the document?

In the stateless case, the resource is now probably broken (unless the
resource is somehow intrinsically robust to this case).  The client
should not be using the resource (e.g., try to initiate a firmware
update from an image it just has been building).  The server is
stateless with respect to individual requests, so it is patiently
sitting there for the broken resource to be mended.

> Other questions I have after reviewing the document. If I missed where
> they are answered, please point me out to existing text in the document
> or another RFC:
> 
> Is there a special error for block size mismatch between multiple requests?

A block size mismatch is not an error (maybe I don't understand the
question).

> As block2 is a critical option, how can a server know if a particular
> client supports this option?

The assumption here is that CoAP clients generally do, unless they are
very specialized and never have to deal with non-trivial amounts of
information (such as a /.well-known/core).

Grüße, Carsten