Re: [core] AD review of draft-ietf-core-new-block-09

Francesca Palombini <francesca.palombini@ericsson.com> Wed, 14 April 2021 12:58 UTC

Return-Path: <francesca.palombini@ericsson.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 914A73A0E0B; Wed, 14 Apr 2021 05:58:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.102
X-Spam-Level:
X-Spam-Status: No, score=-2.102 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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=ericsson.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 RhdaGMweW93x; Wed, 14 Apr 2021 05:58:22 -0700 (PDT)
Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60082.outbound.protection.outlook.com [40.107.6.82]) (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 B9FBE3A0E3A; Wed, 14 Apr 2021 05:58:02 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OMumRlU+cDwtnF8GGQJhH+18lAoL19cAluuU+BP7LJduxNSjdz2EdGgmdr8qLdCcYqB2J+7cEVCIAftvTtQTNwhzfB9cfFMNEyyFjR8xnv6Pz4SZ9DhJAbU6JQ3gQWrCa4Sagis/xQKJxYwA4kbqRFWuE5/w77j6fAzium7D7czoCnmK4rGnuJfekYu/7ygKxnRlXHXsqP4T8lbKDRPQuO1gu+Lxf9Pfifw1y9BaO6t7GaI3NCXCAN+TQnBKsCnJ3nu3KM1tETn/xVsqRxsNops5waS20f/glM81KbvMNzQx4Lt71FFPtq+Qeni3R7W+yah04Ent0Z1qnKVNcQzuRw==
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=BC0hoFEcX8OTNkSWixF4+qY9eTAIrecndcSJVcEH4bg=; b=lxmK5iGHUYTnNLpkK5hw4Ka16215HVNY5Yq3Fbj4jrI1MqgbY6wd445RfH+2MWm0hJ++S80JfsWQilN9V7bYJZ/+rhsrek3lRanl1etuQo0YtLgdlUGdoBkTvoq0SsEk4IgCQ0TLBs+40qrblI4MjboOriTcavlnAt9q1qGYsBXzmKNhfNOV+Lht3Rkk6sljVthURwudiIuvEMHskfSLds0JE0Pv44P7CltDCMa4rrX+kWU7lKYOyIpnQr1nlko/4NRtvckk0w0nJ8KroLYu0QK2gGs2sIeDFjXockx/zKqy4vxA7QkunX8UYwmqrUBCEHy5IXnxWjTej6nanmKoxQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BC0hoFEcX8OTNkSWixF4+qY9eTAIrecndcSJVcEH4bg=; b=GhtNVVzp/2z/9RX65GIAcZvuC3TQSeIKpyMNPk7UXNQDVelHff4rEZH8K6K/zdQWGyGwi9VsG4ZG04hdUHDoi+oA24TLN3fbUOU4KCWRIr55pIi3c0+KD2EemK/riio+FnCVR++IsngENsE4PVHffoQZSVJBowljidY5K0LfPYw=
Received: from HE1PR07MB4217.eurprd07.prod.outlook.com (2603:10a6:7:96::33) by HE1PR07MB3339.eurprd07.prod.outlook.com (2603:10a6:7:35::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.10; Wed, 14 Apr 2021 12:57:59 +0000
Received: from HE1PR07MB4217.eurprd07.prod.outlook.com ([fe80::593:f4fd:94e3:d90b]) by HE1PR07MB4217.eurprd07.prod.outlook.com ([fe80::593:f4fd:94e3:d90b%6]) with mapi id 15.20.4042.016; Wed, 14 Apr 2021 12:57:59 +0000
From: Francesca Palombini <francesca.palombini@ericsson.com>
To: "mohamed.boucadair@orange.com" <mohamed.boucadair@orange.com>
CC: "core@ietf.org" <core@ietf.org>, "draft-ietf-core-new-block@ietf.org" <draft-ietf-core-new-block@ietf.org>
Thread-Topic: AD review of draft-ietf-core-new-block-09
Thread-Index: AQHXKMAB96eXAzct4U2xMq7Yy2g+ZqqnH+rQgA0LswA=
Date: Wed, 14 Apr 2021 12:57:59 +0000
Message-ID: <922BEA47-DD6A-41E5-96FF-2436ABDDBE65@ericsson.com>
References: <836C3253-EBED-4758-9B07-6AEF91784DAD@ericsson.com> <6260_1617721331_606C77F3_6260_205_9_787AE7BB302AE849A7480A190F8B933035364693@OPEXCAUBMA2.corporate.adroot.infra.ftgroup>
In-Reply-To: <6260_1617721331_606C77F3_6260_205_9_787AE7BB302AE849A7480A190F8B933035364693@OPEXCAUBMA2.corporate.adroot.infra.ftgroup>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/16.47.21031401
authentication-results: orange.com; dkim=none (message not signed) header.d=none;orange.com; dmarc=none action=none header.from=ericsson.com;
x-originating-ip: [2001:1ba8:147a:eb00:a846:77bb:6fc5:8663]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 735010b0-5cef-4eba-1f7e-08d8ff44ee87
x-ms-traffictypediagnostic: HE1PR07MB3339:
x-microsoft-antispam-prvs: <HE1PR07MB3339B6EE38F16CFE7DF07FC9984E9@HE1PR07MB3339.eurprd07.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: SRxRJCDiIxf29NN0VkkPV012fO0C5NBpgHgPaEwtCs2Yy4f4RXK5ZxM+c7abTkjzK7njJUCPSiJAs1mpokFhh9PiZcHLRGtqBlATPB0GlniSfw6OZYKjbuJZ2gxkOlmxSB4P15BHPl0bCkbNIZC7eQdZS2WO801vL+iOqJMesr/WmLf8roq38hUVMFw22TFBFeKqA055LGchm6PuwIROq0xNdwHI+VQV8P7uFaHhj5ASiebHBdM7DT9OBm4IVdXU+gYHCXwOM05/olYV2oaHc4ZAbTa9om4vQA233wI/kM6No5wpTu7TWmkuKlgLVf/hUbH7dxjh3jqwChpbV+kp5sVf36aydNYHYzfUrRm6b638jOCbYrMhUlGJEBSumyyjcLQBO5UmxBQKlxirfXu8JC/KJIXOxR+Sn7gt66DXCwioUdIqsiplKkM0HbBjy9a37Ns38xB+GOYyz1xLWyZemWFx4X4PoArvyl+Zu7ptXOoyUYpYOA/t8kfGCxoVtaz/ell2xWlaPRf7UJ/281PxhGTijPHALgm/2n8MTpOybeJsm0BcSP7z7sIN+mfDg9QgUoD38dep86xWIzeCs1Duq1CCMBqCz/pHrdk9Zy68hsFECTzbhwJ1wY0GG1e4Xw3qv0se6RyOohCZ5n35YMdOErRQHkI9xr69hxolVGXyTY0+tvgc3hGsoYHkYx83J5Xws96NIxGZnrZu9LBYg2ev6OrJ46vY6lyHLYwO5jYtmUM=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:HE1PR07MB4217.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(396003)(366004)(136003)(39860400002)(36756003)(38100700002)(30864003)(6512007)(44832011)(8676002)(966005)(8936002)(2906002)(33656002)(6506007)(76116006)(4326008)(71200400001)(66446008)(5660300002)(54906003)(186003)(86362001)(122000001)(64756008)(83380400001)(66556008)(478600001)(66476007)(66946007)(6486002)(2616005)(6916009)(316002)(45980500001)(559001)(579004); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata: Daw0R40wFkIX1Rp2iEQlUkxYpFn/qM4dF9eoxO9t/k398c0zXyw9RaSRYQ7VCIrd1fAhqcrHAKkd40YX15XBMl3psuHOzkMQxnhB161jnUOVi6685OPAYO2MDSkos/AiEWvxUfg1H5roQx3cL9HKAdabrv4nGHHcJikZfvs4/JR4wBll5BwQ7B3gz8Z3cbrpE/n3D33K9dgXTypLMPm5ndcGF7PPCVtDivCYXv0sZPyVvIulBpRKrKUvk/LP7lzkw2WkKP5SwsFJvCOYAmAfL0+0XwjZYFHQTQI+O33lm3Fj4zVGgcw8xQr8MLQbyF5PZmN3ZhE4Hy/qKERYunzMJt6Kemwx4l6utR6WBvVJOhS4b543b/7esvT02bO5YydMcqHiwR3uLpIyMFm1y/skPkDbpwMhNrIYuLM5la0T+Iab8PYcTW9ZpfpWI7sDkZNLSrNreUGbXrZVNUSK8mMEqZZij5MlSHjw6rTIx51g/gJfUmBzIQfY8WEG/nf/G5geznvYmDeND8t2XawgczKy/ceINHpjfVpbpszUjnCQ59VorF+Y0UbMNLQZv0isiZc3aJYpVcHzL78xbX5+bWOzQMSWoSQejAkWfbi4qxCD6uG3Vi7efkOHa0x9A5QuXdwEJVxPJVZxFtWysP/dNXfecD1srwWglQYSh/9lQjeHNn7FzE7ZoNcDUvYYVyR+CSQ37ra5Fx2uzoBfMypCpc3Ru3yDHoGsuJCI9siF9H5+thmQHlUdllJADxC4pX6T9tSZiDac9GwkZ4UNEKP0RtLknhR1ljjkI6YbHSzz9zMKMQaheXrGmDv2uNWQVj027PFS8I1UZBQPF3RRLMx5sPdQ162SQIb0p/3MigYGuCel7duzLAzg2lx7O3FD/NOdMBf2WfpN0HHfgG5H56htsLdQkhVX24xY1CWcj8A15RijLQ0mlVO2molexIA4MtP8V/ubQP0lNO8TAmV4sS4Zuu5dfjhD7UjCTG5RqkZKnsZzE6+bOKbtOu9WapXY1eHJzfEgc7jTOQD3KZeTqeKU9mAV9sX0XSy6IhpIQBizWUx/QpnQ3LB4Ozmui629vyvDFKwS7+fb0zui6gADoCGBkjiZM7+Hro5QMtxswI55oAwus4c1KN77UOwr0BuVzzz2yAXCB4uV7npivJ0nju2a4ERWIiXMJOvuXVFGr7IU6I/xXTm7Xn+ZIBvYZjyLZuRRoAhy1c/8LPdt7TY2Nc7/qZzw/xxbemIXisHYk+/VEAxsbMdgZ2ij1lUhnFkhSwxQ0OJEjBXwms3z394Geo2cAa3d0cwsOmbLu+lvgQHiRKxMZzxWZkjJEMZg0P/vcusgEPOKr2W2tdM/0yMfZsnomDs9LRhmPeV0vx/4KGWDizkg5jfi9j4AV/5GQZDXNrLVcIEECPDj4xrImxbsULx+Hu4/BQ==
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="utf-8"
Content-ID: <AE10152575F17847996F3E7FD1519CDF@eurprd07.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: ericsson.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: HE1PR07MB4217.eurprd07.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 735010b0-5cef-4eba-1f7e-08d8ff44ee87
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2021 12:57:59.5938 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 5tJgnxD4gLwgQnQXklXOZmqA6YzPGtXUDiGKVNp3/Cgm8E/4ynQ8eQRFfH3plYean7pEpjmftFoyivtbMASrNvWkjBPW6IhGFpVQ1RHn1+BjRxhmgUJBTFwd5obs7Fu4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR07MB3339
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/nG1lCt51gYk1pDlwQADbWJhmoeE>
Subject: Re: [core] AD review of draft-ietf-core-new-block-09
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: Wed, 14 Apr 2021 12:58:28 -0000

Hi Jon, Med!

Thank you for answering my questions and addressing my comments.

I will start IETF Last Call while we finish talking over the couple of issues left (which are minor, see inline). Feel free to post an update to the document, either right now or as soon as we are done with my review.

Thanks,
Francesca

On 06/04/2021, 17:02, "mohamed.boucadair@orange.com" <mohamed.boucadair@orange.com> wrote:
>Hi Francesca,
>
>Thank you for the review.
>
>Changes can be tracked at: https://protect2.fireeye.com/v1/url?k=48d42782-174f1e80-48d46719-869a14f4b08c-cb0b0b2867ee4cc6&q=1&e=f6649557-ada9-4d88-ab0a-b8a1509d8016&u=https%3A%2F%2Ftinyurl.com%2Fnew-block-latest.
>
>Please find our replies inline.
>
>Cheers,
>Jon & Med
>
>> -----Message d'origine-----
>> De : core [mailto:core-bounces@ietf.org] De la part de Francesca
>> Palombini
>> Envoyé : samedi 3 avril 2021 21:32
>> À : draft-ietf-core-new-block-09.all@ietf.org
>> Cc : core@ietf.org
>> Objet : [core] AD review of draft-ietf-core-new-block-09
>>
>> Thanks for the work on this document.  I have a number of comments
>> about things that I think need clarification or rewording in my
>> review below, so I’m setting the state on the document to “revised I-
>> D needed”, and hope we can get an update solving those before we move
>> to IETF last call.  Please keep me in the "to" field to make sure I
>> see any reply.
>>
>> Please note that the comments are reported while reading the document
>> from top to bottom - some comments could be avoided by referencing
>> the right sections or restructuring the document. If I notice that
>> this is the case, I make a suggestion in the comment - if I do miss
>> something that is explained later on, please consider the comment a
>> suggestion to add a reference to improve readability and add
>> clarifications.
>>
>> General:
>>
>> 1.
>> [FP]: Throughout the text, it seems that "payload" is used as a
>> synonym to "CoAP request/response" or "block". This is incorrect and
>> should be fixed. (See for example "received payload")
>>
>
>[Med] The definition we are using is called out in the text:
>
  >"The terms "payload" and "body" are defined in [RFC7959].  The term
   >"payload" is thus used for the content of a single CoAP message
   >(i.e., a single block being transferred)"
>

FP: Yes, they are defined, but I still have a problem with how they are used, in particular as a synonym to "CoAP request". One example in the comment below.

>> -----
>>
>> 2.
>> [FP]: Throughout the document, SHOULD is used without explanation of
>> why the recommendation is just that - a recommendation - and not a
>> requirement. There needs to be more clarification to implementers
>> when it is ok and can be expected to deviate from the
>> recommendations. I noted those that jumped to my attention, but I
>> suspect a general re-read of the document with this comment in mind
>> should be done, as there might be more I missed.
>>
>
>[Med] Will double check. Thanks.
>

FP: Thank you! (FYI, this comes up a lot during IESG evaluation, so better to address it now!)

>> =====
>>
>> Section 1:
>>
>> 3.
>>    o  They can operate in environments where packet loss is highly
>>       asymmetrical.
>>
>> [FP]: Please clarify: Block1 and Block2 can also be used in
>> environments where packet loss is asymmetrical. What do these new
>> options add in that case?
>
>[Med] Please refer to the introduction where this is introduced. See for example:
>
   >There is a requirement for these blocks of data to be transmitted at
   >higher rates under network conditions where there may be asymmetrical
   >transient packet loss (i.e., responses may get dropped).  An example
   >is when a network is subject to a Distributed Denial of Service
   >(DDoS) attack and there is a need for DDoS mitigation agents relying
   >upon CoAP to communicate with each other (e.g.,
   >[RFC8782][I-D.ietf-dots-telemetry]).  As a reminder, [RFC7959]
   >recommends the use of Confirmable (CON) responses to handle potential
   >packet loss.  However, such a recommendation does not work with a
   >flooded pipe DDoS situation.
>

FP: This is more of an editorial clarification: I was looking for a more explicit statement about Q-Block1 and Q-Block2 having higher transmission rates; how the bullet point is stated "they can operate" does not explain why they are a good fit for cases where packet loss is asymmetrical (and to be nit-picking, Block1 and Block2 strictly speaking can also be used, but probably with worse results, which is what should be highlighted here).

>>
>> -----
>>
>> 4.
>>    o  To reduce the transmission times for CON transmission of large
>>       bodies, NSTART needs to be increased from 1, but this affects
>>
>> [FP]: NSTART appears here for the first time, please add a reference
>> to where this is defined (fw reference to a section of this
>> specification or to a different document).
>
>[Med] This is already cited in the OLD text:
>
   >o  To reduce the transmission times for CON transmission of large
      >bodies, NSTART needs to be increased from 1, but this affects
      >congestion control where other parameters need to be tuned
      >(Section 4.7 of [RFC7252]).
       >^^^^^^^^^^^^^^^^^^^^^^^^
>>

FP: My mistake, I took the referenece as a pointer to the other parameters, didn't check for NSTART. That's good enough.

>> -----
>>
>> 5.
>>    Block2 Options when the different transmission properties are
>>    required.  If the new options are not supported by a peer, then
>>
>> [FP]: I hope these transmission properties are explained into detail
>> later on. If so, please add a fw reference. If not, please clarify
>> what these properties are.
>>
>
>[Med] Added a pointer to Section 3.1.
>

FP: Thanks.

>> -----
>>
>> 6.
>>    The No-Response Option was considered but was abandoned as it does
>>
>> [FP]: No-Response Option needs a reference.
>
>[Med] Done.
>

FP: Thanks.

>>
>> =====
>>
>> Section 2:
>>
>> 7.
>> [FP]: Because of the way the document is structured, the subsections
>> of section 1 use terminology that is given for granted, and mentioned
>> in section 2. This create some confusion in the reader. I suggest to
>> re-structure the sections so that Terminology is right after 1.
>> Introduction and before 1.1
>>
>
>[Med] Fair comment. Rearranged the text.
>

FP: Looks good.

>> =====
>>
>> Section 3:
>>
>> 8.
>>    The Content-Format Option applies to the body, not to the payload
>>    (i.e., it must be the same for all payloads of the same body).
>>
>> [FP]: I think this is missing that the previous sentence is true
>> "when present together with the Q-Block1 or Q-Block2 Option".
>
>[Med] Sure, this is only if it is present. FWIW, we are using the same wording as in RFC7959:
>
   >"The Content-Format Option applies to the body, not to the
   >payload; in particular, the boundaries between the blocks may be in
   >places that are not separating whole units in terms of the structure,
   >encoding, or content-coding used by the Content-Format."
>
>We can add a "when present" if you think this is more accurate.
>

FP: It can't hurt to be explicit, IMO.

>>
>> -----
>>
>> 9.
>>    include the Q-Block2 Option in a GET or similar request, the Q-
>> Block2
>>    Option in a PUT or similar request, or the Q-Block1 Option in a
>> PUT
>>    or similar request so that the server knows that the client
>> supports
>>
>> [FP]: I am confused by the meaning of "similar request": what is
>> considered a similar request to a GET request?
>
>[Med] We meant similar requests that are used to retrieve the representation of a resource. We have FETCH in mind but we also wanted a text that is future proof if such similar requests are defined in the future.

FP: I see - then I would suggest adding "such as FETCH, for example", which gives the reader the intuition of what a "similar request" is without over specifying.

>
>How is a PUT request
>> different from a GET request? Additionally, how does the client
>> decides if it needs to include a Q-Block1 or Q-Block2 Option in a PUT
>> (or similar) request to indicate support for these two options?
>>
>
>[Med] This can be driven by a local configuration knob, triggered by an application (DOTS, for example), etc. How this is done, is out of the scope of the spec.

FP: Makes sense. Could you add this sentence to the document for clarification?

>
>> -----
>>
>> 10.
>>    Note that if Q-Block1 or Q-Block2 Options are included in a packet
>> as
>>    Inner options, Block1 or Block2 Options MUST NOT be included as
>> Inner
>>    options.  Similarly there MUST NOT be a mix of Q-Block and Block
>> for
>>
>> [FP]: Maybe this is described later on, but - what is the node to do
>> if it receives a message with both? Is the message to be rejected
>> with an error? This should be clarified.
>
>[Med] Good catch. Added a sentence to indicate that 4.02 (Bad Option) is used in such case.
>

FP: Ok, thanks.

>>
>> -----
>>
>> 11.
>>    being transferred.  It is also used to identify a particular
>> payload
>>    of a body that needs to be retransmitted.  The Request-Tag is
>> opaque,
>>
>> [FP]: If it is the same for all the requests carrying one same body,
>> how does it identify one particular payload?
>
>[Med] After reading this, we agree the sentence is confusing. We meant that it is ALSO a required information to identify a missing block. That identification requires additional information (block number). Because this is detailed when describing 4.08, we suggest to delete this sentence.
>

FP: I concur, OK with deleting.

>Also I am assuming that
>> "a particular payload of a body" means a block of the body - if that
>> is not correct, I think the "payload of a body" should be rephrased.
>
>[Med] The use is aligned with the definition:
>
>" The term
   >"payload" is thus used for the content of a single CoAP message
   >(i.e., a single block being transferred), while the term "body" is
   >used for the entire resource representation that is being transferred
   >in a block-wise fashion."
>

FP: This is where we disagree - a payload is a payload of a single CoAP message, as you state above. A payload "of a body" does not make sense; "a block of a body" would make sense. What I am getting at is that a body is not made of payloads, they are 2 parallel concepts. This is really minor clarification, and will let it go if the wg does not think it's important, but I believe it's important to use the correct terminology and hope I explained my problem here.

>>
>> -----
>>
>> 12.
>>    Each individual payload of the body is treated as a new request
>>    (Section 5).
>>
>> [FP]: Again, I suspect the meaning of this sentence will be clarified
>> in section 5, but I think it is incorrect to say that each payload is
>> treated as a new request - each payload is treated as a payload.
>
>[Med] As indicated above, the wording assumes the following:
>
>" "payload" is thus used for the content of a single CoAP message"
                             >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>

FP: right, payload is used for the content, i.e. the resource representation (and when the block options are used, a block of the resource representation), not the whole CoAP request, which includes the payload but also CoAP code, options etc. This is again a simple terminology issue.

>I
>> think this needs to be rephrased, but at this point in the text I
>> can't say what the intent of this sentence was, so can't suggest a
>> rephrasing.
>>
>
>[Med] The main message here is that each individual message is to be treated as a new request, and be thus assigned a new token as per draft-ietf-core-echo-request-tag-12#section-4.
>
>We used to have token details included here, but given the comments we received from the WG, we discuss token issue in a separate section that is called in the text you quoted: Section 5.
>
>> -----
>>
>> 13.
>>       and that the resource was created.  The token used SHOULD be
>> from
>>       the last received payload.  The client should then release all
>> of
>>
>> [FP]: I think it would be worth to highlight that the last received
>> block is not necessarily the block with the highest block number.
>> (note this appears in more than one occurrence)
>
>[Med] No problem to mention it: "Note that the last received payload may not be the one with the highest block number."
>
>We don't think it is worth to restate it for each code, though.

FP: Looks good to me.

>
>>
>> -----
>>
>> 14.
>>       M bit set) have been successfully received.  The token used
>> SHOULD
>>       be from the last received payload.
>>
>> [FP]: "SHOULD" must be motivated: why is this not a MUST? What are
>> the conditions where it is acceptable that the token is different
>> from the one in the request with the last received payload? (note:
>> several occurrences)
>>
>
>[Med] We do already have this text to explain the rationale for SHOULD:  
>
   >"Note that the use of any received token with the same
   >Request-Tag would work, but providing the one used in the last
   >received payload will aid any troubleshooting.  The client will use
   >the token to determine what was the previously sent request to obtain
   >the Request-Tag value to be used."
>
>The same applies for the other occurrences you pointer to.
>

FP: I think that in this case, since it is not strictly necessary for interoperability that the token used is the one from the last received request, BCP 14 SHOULD is maybe not the correct term. This could be instead rephrased with something on the sort of: "The token used MUST be one received from a request using the same Request-Tag. However, it is desirable to provide the one used in the last received request, since that will aid any troubleshooting."

>> -----
>>
>> 15.
>>       A response using this Response Code SHOULD NOT be generated for
>>       every received Q-Block1 Option request.  It SHOULD only be
>>       generated when all the payload requests are Non-confirmable and
>> a
>>       set of MAX_PAYLOADS (Section 6.2) payloads have been received
>> by
>>       the server.
>>
>>       It SHOULD NOT be generated for CON.
>>
>> [FP]: Same remark as previous comment - please motivate why this is
>> SHOULD and is not MUST. When using SHOULD, guidance should be given
>> to implementers about in which case it is ok to deviate from the
>> recommendations.
>
>[Med] The text does not use "MUST NOT" for the first part of the text you quoted because there might be situations where MAX_PAYLOADS is set to 1. This is discussed in in 6.2:
>
   >are no other network issues over that period, then the value of
   >MAX_PAYLOADS can be reduced by 1 at a time (to a minimum of 1)
>

FP: Ok, thanks for clarifying, can we move/add the reference to 6.2 here?

>The second SHOULD is not a MUST because sending a "continue" signal is an optimization and that the peer endpoint will send the next set of blocks after a timer is reached. This is discussed in 6.2:
>
   >For the server receiving NON Q-Block1 requests, it SHOULD send back a
   >2.31 (Continue) Response Code on receipt of all of the MAX_PAYLOADS
   >payloads to prevent the client unnecessarily delaying.  Otherwise the
   >server SHOULD delay for NON_RECEIVE_TIMEOUT (exponentially scaled
   >based on the repeat request count for a payload), before sending the
   >4.08 (Request Entity Incomplete) Response Code for the missing
   >payload(s).
>

FP: Thanks for clarifying. I would clarify that this reference is where motivation is given, but I'll leave that up to you.

>>
>> -----
>>
>> 16.
>>    SHOULD "forget" all tracked tokens associated with the body's
>>
>>    token in the 4.08 (Request Entity Incomplete) response.  The
>> server
>>    on receipt of the reset message SHOULD delete the partial body.
>>
>>    it SHOULD ignore the payload of the packet, but MUST still respond
>> as
>>
>>    A server SHOULD only maintain a partial body (missing payloads)
>> for
>>
>> [FP]: Same remark for the use of SHOULD. (I stopped nothing this down
>> at this point in the review, but noted this in the general comments
>> above)
>
>[Med] Point taken. Will double check and tweak the text as appropriate.
>

FP: Thank you. As a pointer, please remember how SHOULD is defined:

3. SHOULD   This word, or the adjective "RECOMMENDED", mean that there
   may exist valid reasons in particular circumstances to ignore a
   particular item, but the full implications must be understood and
   carefully weighed before choosing a different course.

And that it is not the same as "it would be best, but if you can't oh well". If that is the meaning you want to give to it, then BCP 14 is probably not the right term.

>>
>> -----
>>
>> 17.
>>    unset.  It is permissible to set the M bit to request this and
>>    missing blocks from this MAX_PAYLOADS set.  Further considerations
>>
>> [FP]: "this and missing blocks" is unclear to me. Could you clarify?
>>
>
>[Med] We meant **this block and later blocks from** the current set. This is discussed in the first part of 3.4.
>
>Reworded as it seems this is confusing for you.
>

FP: Thanks, yes it's clearer.

>> -----
>>
>> 18.
>>    The requested missing block numbers MUST have an increasing block
>>    number in each additional Q-Block2 Option with no duplicates.  The
>>
>> [FP]: What is the reason for mandating that the blocks requested must
>> be in order (increasing block number)?
>>
>
>[Med] This is a way to force the client to check for duplicates and remove them. This also helps with troubleshooting.

FP: I see. Could this clarification be added here?

>
>> -----
>>
>> 19.
>>    packet.  The server acknowledges the initial request using an ACK
>>    with the payload, and then sends the subsequent payloads as CON
>>
>> [FP]: I suspect that this means that the first response (containing
>> the first block) is piggybacked on an ACK, see 5.2.1 of RFC 7252.
>> That is though not always the case, see 5.2.2. I think this option of
>> piggybacked should be kept, but from the text it sounds like it is
>> the only option, so I believe some rephrasing to clarify that might
>> be necessary.
>>
>
>[Med] Changed to: "Typically, the server acknowledges ..."

FP: Thanks.

>
>> -----
>>
>> 20.
>>    The ETag Option should not be used in the request for missing
>> blocks
>>
>>    client should treat the partial body with the old ETag as no
>> longer
>>
>>    response, the client should remove any partially received body
>> held
>>
>> [FP]: Why not replace the should (resp should not) with MUST (resp
>> MUST NOT)?
>>
>
>[Med] We used to have "MUST NOT" but removed it to address this valid comment received during the WGLC:
>
>==
>* "The ETag Option MUST NOT be used": This is more a factural than a
  >normative statement; it *can* not be used there as the server would
  >respond thusly. It may be used, but then that indicates that the
  >client is trying to verify a freshness. (However, the client should
  >not *start* sending an ETag once it learned the current resource's
  >ETag when still attempting to pull out more blocks, but that's also not
  >a normative requirement but a consequence of those two requests not
  >being matchable any more.)
>==
>

FP: I see, thanks for clarifying. I think I was considering if this should be BCP 14 statement and you explained to me why it isn't. I think that without the context you just explained to me this might come up again in IESG evaluation.. but I am fine with it.

>> =====
>>
>> 21.
>> Section 4:
>>
>>    encoded as a CBOR Sequence [RFC8742].  It comprises of one or more
>>    CBOR encoded [RFC8949] missing block numbers.  The missing block
>>
>> [FP]: I suggest to change to " missing block numbers encoded as CBOR
>> unsigned integers [RFC8949]."
>>
>
>[Med] OK.
>

FP: Thanks.

>> -----
>>
>> 22.
>>    response when created by the server; the client SHOULD drop any
>>    duplicates in the same 4.08 (Request Entity Incomplete) response.
>>
>> [FP]: I think that "drop" here might be confusing, since the client
>> is not dropping a packet - suggestion to change to "ignore".
>>
>
>[Med] Fixed, thanks.
>

FP: Ack.

>> -----
>>
>> 23.
>>    The Content-Format Option (Section 5.10.3 of [RFC7252]) MUST be
>> used
>>    in the 4.08 (Request Entity Incomplete) response.  It MUST be set
>> to
>>    "application/missing-blocks+cbor-seq" (Section 11.3).
>>
>> [FP]: This is in direct contradiction with the following paragraph
>> from a previous section:
>>
>>       This Response Code returned without Content-Type "application/
>>       missing-blocks+cbor-seq" (Section 11.3) is handled as in
>>       Section 2.9.2 [RFC7959].
>>
>
>[Med] That text is a reminder of the base 4.08 behavior that we are updating in this spec.  
>

FP: Ah, thanks for clarifying, yes it makes sense.

>> -----
>>
>> 24.
>>    Request-Tag would work, but providing the one used in the last
>>
>> [FP]: Suggestion to rephrase "would work" to "would allow to identify
>> the correct body" (or something similar).
>>
>
>[Med] Changed to "would be acceptable".

FP: Looks good.

>
>> -----
>>
>> 25.
>>    single packet.  If this is the case, then the server can send
>>    subsequent 4.08 (Request Entity Incomplete) responses containing
>> the
>>    missing other blocks on receipt of a new request providing a
>> missing
>>    payload with the same Request-Tag.
>>
>> [FP]: Just another check: is it specified anywhere that reception of
>> an error response does not mean the client should stop sending
>> requests when Q-Block options are used? If not, it would be good to
>> explicitly state that.
>>
>
>[Med] There is text in 3.3 to indicate the behavior when a given error is received. We updated 4.08 text with this NEW sentence:
>
>"Such message must not treated by the client as a fatal error."  
>

FP: Great, thank you.

>> -----
>>
>> 26.
>>    The missing blocks MUST be reported in ascending order without any
>>    duplicates.  The client SHOULD silently drop 4.08 (Request Entity
>>
>> [FP]: Same question: why does order matter?
>>
>
>[Med] Same answer as above: ease troubleshooting and have a way to force the server to detect/remove duplicates.
>

FP: This could point to the previous section where this will be (hopefully) clarified.

>> =====
>>
>> Section 5:
>>
>> 27.
>>    Implementation Note:  To minimize on the number of tokens that
>> have
>>       to be tracked by clients, it is suggested that the bottom 32
>> bits
>>       is kept the same for the same body and the upper 32 bits
>> contains
>>       the current body's request number (incrementing every request,
>>       including every re-transmit).  This allows the client to be
>>
>> [FP]: This seems to imply that tokens are always 8 bytes, which is
>> not necessarily the case. I suggest to add "in the case the token is
>> 8 bytes".
>>
>
>[Med] OK. Update the text to mention that the use of 8-byte tokens allows to minimize the number of tokens to be tracked by clients.  
>

FP: Great, thanks.

>> =====
>>
>> Section 6:
>>
>> 28.
>>    control parameters will need to be tuned to cover this change.
>> This
>>    tuning is out of scope of this document as it is expected that all
>>    requests and responses using Q-Block1 and Q-Block2 will be Non-
>>    confirmable.
>>
>> [FP]: "it is expected ... Non-confirmable" Where does this come from?
>> Maybe I misunderstand this sentence, could you please expand?
>>
>
>[Med] This is actually referring to the applicability scope of the document, especially this part:
>
   >The mechanism specified in this document provides
   >roughly similar features to the Block1/Block2 Options.  It provides
   >additional properties that are tailored towards the intended use case
   >of Non-Confirmable transmission.  Concretely, this mechanism
   >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   >primarily targets applications such as DDoS Open Threat Signaling
   >(DOTS) that cannot use CON responses to handle potential packet loss^
               >^^^^^^^^^^^^^^^^^^^^^^^^^^
   >and that support application-specific mechanisms to assess whether
   >the remote peer is able to handle the messages sent by a CoAP
   >endpoint (e.g., DOTS heartbeats in Section 4.7 of [RFC8782]).
>
>
>Added a pointer to that section.
>

FP: I knew I missed something... thank you for adding the pointer.

>> =====
>>
>> Section 9:
>>
>> 29.
>>             +--------->| [[Payloads 3 - 9 not detailed]]
>>
>> [FP]: Minor: I think it would make more sense to change "3 - 9" to "2
>> - 8" (and same for examples below)
>>
>
>[Med] I prefer the current one where we count payloads from 1, not from 0. Of course, payload 1 corresponds to the one with block num=0.
>

FP: Ok, as you prefer.

>> -----
>>
>> Thank you for the examples! Very clear and easy to follow.
>>
>> -----
>>
>> 30.
>>            +--------->| NON PUT /path M:0x1f T:0xef RT=11
>> QB1:12/0/1024
>>            |   ...    |
>>         [[NON_RECEIVE_TIMEOUT (server) delay expires]]
>>            |     [[The server realizes a block is still missing and
>> asks
>>            |        for the missing one]]
>>            |<---------+ NON 4.08 M:0x92 T:0xef [Missing 10]
>>
>> [FP]: I am not sure this is already stated somewhere, and if so
>> please ignore this comment, but there should be some considerations
>> about NON_RECEIVE_TIMEOUT in comparison to the client's CoAP timer to
>> deal with the response: what I am thinking about is the scenario from
>> the following example, where the client has for some reason discarded
>> the token 0xef (for example to free up space) and is unable to
>> process the 4.08 response from the server correctly, since it doesn't
>> know with which request it associates with. What happens then? I
>> assume the server should try again and then eventually stop and
>> release the partial body. Is this described?
>
>[Med] If the token is unknown for whatever reason, then the client should be sending a RST for the unknown token. We have the following:
>
   >If the client elects to stop the transmission of a complete body, it
   >SHOULD "forget" all tracked tokens associated with the body's
   >Request-Tag so that a reset message is generated for the invalid
   >token in the 4.08 (Request Entity Incomplete) response.  The server
   >on receipt of the reset message SHOULD delete the partial body.
>
>RFC7252, Section 5.3.2 says:
>
   >In case a message carrying a response is unexpected (the client is
   >not waiting for a response from the identified endpoint, at the
   >endpoint addressed, and/or with the given token), the response is
   >rejected (Sections 4.2 and 4.3).
>

FP: right. I think what I was missing while reading the paragraph above is "stop the transmission of a complete body _by the server_" as the first time I read this I assumed it wanted to stop transmission from itself (which with the following sentences made little sense, I agree).

>>
>> -----
>>
>> 31.
>>           |<---------+ [[Payloads 3 - 8 not detailed]]
>>
>> [FP]: This is inconsistent and should be either 3 - 9 or 2 - 8 as
>> noted above.
>>
>
>[Med] Why?
>
>Payload 9 is indicated in the example:
>
            >+--------->| [[Payloads 3 - 8 not detailed]]
            >+--------->| NON PUT /path M:0x19 T:0xe9 RT=11 QB1:8/1/1024
>

FP: Sorry, hard to understand which one I was referring to without the context :) I meant this one: 

          |     X<---+ NON 2.05 M:0xa2 T:0xf0 O:1236 ET=23 QB2:1/1/1024
          |<---------+ [[Payloads 3 - 8 not detailed]]
          |     X<---+ NON 2.05 M:0xaa T:0xf0 O:1236 ET=23 QB2:9/1/1024

I think this should be 3 - 9 if you keep the current notattion

>> -----
>>
>> 32.
>> [FP]: Figure 16: I am not sure how the server knows which block the
>> client is requesting when it sends the following message:
>>
>>           +--------->| NON FETCH /path M:0x58 T:0xc8 RT=31
>> QB2:1/0/1024
>>
>
>[Med] It is only asking for Block 1.
>
>> [FP]: In fact, if I understand correctly this could either be a
>> request for the missing block from the second set of blocks,
>
>[Med] ... which would be QB2:10/0/1024 or anything up to QB2:9/0/1024 for a missing block in the second MAX_PAYLOADS set.
>
>or the
>> client could have not received block 1 from the previous set of
>> blocks and could be requesting the same as in:
>>
>>           +--------->| NON FETCH /path M:0x57 T:0xc7 RT=31
>> QB2:1/0/1024
>>
>> [FP]: If all the following responses from the server would have been
>> lost. The two requests contain the same RT. What am I missing?
>
>[Med] Each client request needs to have an unique Token, hence the increment to T:0xc8.
>
>

FP: Right, thanks for clarifying.

>_________________________________________________________________________________________________________________________
>
>Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
>pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
>a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
>Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>
>This message and its attachments may contain confidential or privileged information that may be protected by law;
>they should not be distributed, used or copied without authorisation.
>If you have received this email in error, please notify the sender and delete this message and its attachments.
>As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>Thank you.
>