[core] draft-ietf-core-echo-request-tag -14 and Block2

supjps-ietf@jpshallow.com Mon, 20 December 2021 16:29 UTC

Return-Path: <jon.shallow@jpshallow.com>
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 E04443A1067 for <core@ietfa.amsl.com>; Mon, 20 Dec 2021 08:29:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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 nz1ZS5eDrRIC for <core@ietfa.amsl.com>; Mon, 20 Dec 2021 08:29:40 -0800 (PST)
Received: from mail.jpshallow.com (mail.jpshallow.com [217.40.240.153]) (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 D666C3A1066 for <core@ietf.org>; Mon, 20 Dec 2021 08:29:39 -0800 (PST)
Received: from mail2.jpshallow.com ([192.168.0.3] helo=N01332) by mail.jpshallow.com with esmtp (Exim 4.92.3) (envelope-from <jon.shallow@jpshallow.com>) id 1mzLXZ-0006Le-Vy for core@ietf.org; Mon, 20 Dec 2021 16:29:34 +0000
From: supjps-ietf@jpshallow.com
To: core@ietf.org
Date: Mon, 20 Dec 2021 16:29:40 -0000
Message-ID: <269201d7f5be$c94dcef0$5be96cd0$@jpshallow.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_2693_01D7F5BE.C94EB950"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: Adf1vshJNGc75PGbQqaRUljVR+kGug==
Content-Language: en-gb
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/-tLhjchnfq1LI6HYmbZHgW-0RrI>
Subject: [core] draft-ietf-core-echo-request-tag -14 and Block2
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.29
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: Mon, 20 Dec 2021 16:29:43 -0000

Hi there,

 

I have run into an issue where multiple CoAP requests (not needing Block1)
to the same resource trigger potentially different responses that require
the use of Block2. If the responses overlap, then there is confusion as to
how to pull back the correct response to match the request.  For example
(grossly simplifying things)

POST /api/<service>/read   payload = { 'offset': 0, 'count': 1200 }

POST /api/<service>/read   payload = { 'offset': 2000, 'count': 1300 }
Or

FETCH /api/<service>/read   payload = { 'offset': 0, 'count': 1200 }

FETCH /api/<service>/read   payload = { 'offset': 2000, 'count': 1300 }
 

RFC7959 2.4 rightly states

   The Block2 Option provides no way for a single endpoint to perform

   multiple concurrently proceeding block-wise response payload transfer

   (e.g., GET) operations to the same resource.  This is rarely a

   requirement, but as a workaround, a client may vary the cache key

   (e.g., by using one of several URIs accessing resources with the same

   semantics, or by varying a proxy-safe elective option).

 

Which then brings in the possible use of Request-Tag option in the request
as a proxy-safe elective option. However.

draft-ietf-core-echo-request-tag -14 3.2 states

   The Request-Tag option is only used in requests that

   carry the Block1 option, and in Block2 requests following these.

 

Which implies that the examples above need to contain the Block1 option in
the first instance if there is any suspicion that Block2 is needed in the
response.

 

Then draft-ietf-core-echo-request-tag -14 3.4 states

   Note that Request-Tag options can be present in request messages that

   carry no Block option (for example, because a Request-Tag unaware

   proxy reassembled them), and MUST be ignored in those.

 

Apart from being hard to parse (what does "those" refer to?), this tells me
that Servers MUST ignore requests that have no Block option - so, I cannot
just add the Request-tag option to a request on the off-chance there may be
a Block2 needed response.

 

Is there a good reason for this MUST?

 

If it is too late for the draft to be updated, the only easy way forward
that I can see is to add in an unneeded Block1 to the request, or to add in
a Block2 option to the request so the Request-Tag can be used even if the
response fits into a single payload.

 

I have raised this as Issue #77
https://github.com/core-wg/echo-request-tag/issues/77 .

 

Regards

 

Jon