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

Francesca Palombini <francesca.palombini@ericsson.com> Sat, 03 April 2021 19:32 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 F27013A1135 for <core@ietfa.amsl.com>; Sat, 3 Apr 2021 12:32:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.101
X-Spam-Level:
X-Spam-Status: No, score=-2.101 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_DNSWL_BLOCKED=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=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 K7ACdgOsausb for <core@ietfa.amsl.com>; Sat, 3 Apr 2021 12:31:59 -0700 (PDT)
Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40044.outbound.protection.outlook.com [40.107.4.44]) (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 0137E3A1133 for <core@ietf.org>; Sat, 3 Apr 2021 12:31:58 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Co3BNTOUIA601dLyONirvSLdKQzEt+X7XTbf7L8dZ1kCDFxQh4q+ljo+gdIMCaNhjG+f+KvDI8/+DJUGK2RzWEwLDwFE5jbDJqHrG7AIUGCJiYCZUD2GYLoZ9p5DuOYHCTv0LENMhErMnj6ZrQi/KnhgjBsKceADTVxM75gJzPUrK/cTzqG0N/xGgkm4irC/xSO1Nw6OYoFzHd52VkxtruTFTtCM/0ipkZYn5G7lpURG6zEV+NAmUfATuN3HZUwvA/iHC6/b+b3hTgYqCsWkutEboLfjgCRuJrlJDA/31Rn+97wZrGjxtpTo91ln8y58MbYBsr0/U4AZdxClSOtwQw==
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=xmKA8qlB1tWQAwiny7Yb8LAsJWB9hF4+Kuq/grwRIPU=; b=mW5c7dm+yMthw56xGnSL6Vsp4urmNqbnijY3hW35Iivs205MTn7iQ1ROWCMTb8WJIlVP4cZMTpVs+/p9sebi/P8YB+OeY/fWaxEIQrLCFz3ifSe5ooKdBPyK9HpykfM//doPC7vq8W2HdahDvZQLNJItWJlDyYO3mPg85SN5mqS26kpeloPfUAxFJm33I4vNKr1J0alU1Z6GcUyryYZb4QxtNTpSdcal+rGHu8EwrUi8fFiq+Kt42pUk/SOn1844XQG2YfUUcPA0lP3TU0srDaTXKTP+CP99XcqaX8Lsu9AMHyJRE9eTCyq0wd6swPraddLBdYmsFmDR62sSP2lBzQ==
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=xmKA8qlB1tWQAwiny7Yb8LAsJWB9hF4+Kuq/grwRIPU=; b=qYReFrpOYeyXWYR/UOyb0nvqw3UlHG0MIggrua1zquzXSzmIa169TaUyOdXXD+CEJd4+rpVtZOcOEA5TE6VUc1aekqZHdg7fKjCpgwiYU8wG5cE911ETCZXT0UT2jsLZuq5FTRDKZtlROyeKUZ6NF4DfaH9kFrZWkJqR8IE5x7w=
Received: from HE1PR07MB4217.eurprd07.prod.outlook.com (2603:10a6:7:96::33) by HE1PR0701MB2266.eurprd07.prod.outlook.com (2603:10a6:3:2c::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.8; Sat, 3 Apr 2021 19:31:55 +0000
Received: from HE1PR07MB4217.eurprd07.prod.outlook.com ([fe80::593:f4fd:94e3:d90b]) by HE1PR07MB4217.eurprd07.prod.outlook.com ([fe80::593:f4fd:94e3:d90b%5]) with mapi id 15.20.4020.013; Sat, 3 Apr 2021 19:31:55 +0000
From: Francesca Palombini <francesca.palombini@ericsson.com>
To: "draft-ietf-core-new-block-09.all@ietf.org" <draft-ietf-core-new-block-09.all@ietf.org>
CC: "core@ietf.org" <core@ietf.org>
Thread-Topic: AD review of draft-ietf-core-new-block-09
Thread-Index: AQHXKMAB96eXAzct4U2xMq7Yy2g+Zg==
Date: Sat, 3 Apr 2021 19:31:55 +0000
Message-ID: <836C3253-EBED-4758-9B07-6AEF91784DAD@ericsson.com>
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: ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=none action=none header.from=ericsson.com;
x-originating-ip: [62.63.203.117]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 688a6fc5-abd5-415c-5f07-08d8f6d72409
x-ms-traffictypediagnostic: HE1PR0701MB2266:
x-microsoft-antispam-prvs: <HE1PR0701MB2266FD75A264F898DCC9EFB998799@HE1PR0701MB2266.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: e+HWh6EUhbrgKLs0u2T/Moz9Wjq3endpzMyC9hixQy6fiVhgdDS28+O0dYlG1iKWiRlya0csj2923HYzbuRq3CiJ04gU2qsnqzlv62mYPXqpGMmpgmqSVU69iNrSn7Z0VC1wGgDCpXl1ehNIbPTiqRrlixcKnryY7SYYYi4DqKUXmvXIiL50MzhSf/Gqq9rRHsXbKroJQ/oNJeYsgwhe8K3ZMcNSeeyvJ6w96mySaEsyGQ6lEunNjYXtOcHh2iOhC0JFa+lr4R5/6sIim2s5hOojH9DCCq+2v5+kb1W73ADO2v8v1LzpZTK634UoVBxJpyqVMlt3n0pWmzC+cbYS7VDj4PuCa00jE0Xz2G6Bsg38D2ij3tujIorGdWoFEsrHHEd2NrtGDJ6sVLvtU0kD6mP38VrWF0rrmUpzoWmdzztnhkZuh96Bs8OljU/MnzbslkIJL1kD7K5GqyiYlsV8BpBDsklPNVw2B9+nrabRz+ywaum1KKpUOX3eObARsVMYJ44k9UMVE92zh7Dg5QrokchOmSk/UVHUMoT6gkVlYTjZ3Jo8ubHY4nYYnN+wuQh7W2a98YRjtdZ1n3Lj2VmqSPqEYXSPb3NmluF0dIP1eFzIxlUkVy+m4F+Dg4z5kewZ3TonH5HIIIDRekwmdWVxc/c30bSc38X5vxT8pqTilr46Fyh6V9VI7+XaxNC8CAS9
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)(346002)(136003)(366004)(376002)(39860400002)(396003)(71200400001)(450100002)(30864003)(44832011)(6486002)(66476007)(64756008)(6506007)(8676002)(91956017)(6916009)(66946007)(8936002)(38100700001)(66446008)(83380400001)(6512007)(36756003)(26005)(2616005)(5660300002)(2906002)(76116006)(86362001)(186003)(478600001)(4326008)(316002)(33656002)(66556008)(45980500001); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata: =?utf-8?B?NzVqTndYVmhwa0p1SXh3SWtzY3plVmN2SldUQXFneDllZWZiSThjNjNrZi9a?= =?utf-8?B?K0JsVGRSd05TUWY5Y09RR25qUGtzVTV1OW1WYVRvb2t6NVUzS1ZucnovNk9r?= =?utf-8?B?WHBUTjcwcXdRUzJXZEdlcFpLOU52QzI1MjVJZ3JoTithb0I1MG1pN3R6QXRL?= =?utf-8?B?K0dJbnJROSt3THhGMkdpcjR6WElSZkpxTHJZSGRPK1JMeEluL2lER0dnb3lR?= =?utf-8?B?M0RKUzFjdVA5VENxM0JsVEpXb1BNeVQvb3FqcW5PYngralk1TjJ2bUsxZjhQ?= =?utf-8?B?UlBqTHA4ZGROVWx2KzF4dGluRll1c2hBVnVqV1YxVUxKVXlsQy90VTcrMFBp?= =?utf-8?B?UUhwbTk3M29sVk1CbU1NSGFNK0ZaSm5PTTE1VnprRHlZY3Y5L1V5TXIva1Vm?= =?utf-8?B?cDFMZmZkaGk0YnRVYXdBUzQyQ0RsdS9mM0lmVnM5VlNhQlRvamtkc0xJZmNI?= =?utf-8?B?d2piKy9ML2VnQWNrUjRKdlVBWUp3SzlJc0VxUTdPZnE1aHVSUkdITzRBc3Bp?= =?utf-8?B?ejhybE1ZaDRkcU8ybTNsM1poUytxNUZuUEpRQnFKaXJLb2JYM3hqa3BWdGNU?= =?utf-8?B?NVNXVHFLeFpOZ004MS9yUGMrdW9mMHJySnBEZlprbWxVNGtmNG9URUJ0VG5L?= =?utf-8?B?aTJXYlBJeURQcy9hMEVsVUZIMGtEa2hianFzSEJLQk1CVTRraDRkRjlCUW1R?= =?utf-8?B?L0J5bS9neklGODNrR29pSkpYeUpTWW1FYlRrSWJmT2dOeDIvcUdNYVdqd0FH?= =?utf-8?B?SGJ5NnZKM3ZjWUl0MzEzN2xObDhuVENPd3JhSkltTWszditNQWxibXNWdHcv?= =?utf-8?B?SFVwYmxLc0FzSnp4aGRLQXRRYi9pZGxOUTJuWmNFcU1uRHZVVkE5Uzh5K3cv?= =?utf-8?B?QmsxcG1ieFJMS2lkUzVvZTZodjl6TFk5SjI2R0FmY2tmaGl4YjJUbThnbk9C?= =?utf-8?B?Z3IvVHZyNkRJT0hBQnVpQ1FzWXc5WVpaaElLMDEvTms2SEpYRTR4T2dQY3VO?= =?utf-8?B?dFJNQzR1cCtzL1QwZ1RBcUJ6Yko3WFEvM2FXK2VEWVhEZUJJMWlyajcxVmto?= =?utf-8?B?dGI4RlkzUER2L0REYUtrZTVwcURDNE8xeWFYOVd0WjJkNDhtNXRHNjJ5RXZx?= =?utf-8?B?bWcrNjY5Zm1mQTl0SFRkQWY0K1ZNSjNMSHVLVUtuYTdHcGI3V1BCay9PWUU2?= =?utf-8?B?RnNTMGwrM3BuNGhnVjU1VHFFdlY1a3JPN2ZqUFQ2ZE1kb21mNlA5eFlkZWY2?= =?utf-8?B?bnBJdXpoK01NY0cyblNkbVYrWXNGYlJNdjJSZ2o1Rkt6YlJNUEI3SU1lSERL?= =?utf-8?B?ejM2ekxwb2szMGZ2cml6bGhzVHphWVRxL0Z1K2VlU0piYmg4UExLdk9hZ2xM?= =?utf-8?B?Q0cvQ3hVSW5BLzFEM2k0SGEvZVh0SjlkdDR1YlM1YUwvMzNmR3lrZlVvd1VD?= =?utf-8?B?MVkrTVV1L2x6NVhUZUV2MTdUcXhZQldsUW50a1hLZUloSXZFbkFETVBoWCt1?= =?utf-8?B?WlJLRU1Yb0p0RXRrNFJXSzZuODlwLytycTBCQzlOaVU0MHltbVUxZzdLK0Vn?= =?utf-8?B?YTBKaXNUTkZIeDhDWlZUNXdaWWpwbXkyb3MrTGpSWU5RcEc4MG15RjJ3bWNX?= =?utf-8?B?bk4rWWZXaitYYWhubFFBWUtqYjhvUjhxTGpBcS95V1VHK3dFclU5NDFPaG9o?= =?utf-8?B?QUI3MlMwZDhPV1phYjY5V2dua29oREUwYmM4VmhmWG9PcHZJV1dvTnozSUFE?= =?utf-8?Q?M8fYZs57KyacR7n21+T7Qh6YQBpXGCaJxAmOQz5?=
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="utf-8"
Content-ID: <56B34613F576F548AB899380F9C5AEC9@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: 688a6fc5-abd5-415c-5f07-08d8f6d72409
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Apr 2021 19:31:55.4681 (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: u8SY+alLVFfqH7/QZ3XMbjqMId5HvI0iHIAixmhKj7V2ju+Nl+TG8FWTd9wtXwvrHPgTSt5hVcYJUBnp7Cf8s3uF8tHeSZtSggZqoifFJKWKEAofBpDhqOabERWbHgyB
X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0701MB2266
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/ECAmbqzqu90-dfUHvvwN7rza3mY>
Subject: [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: Sat, 03 Apr 2021 19:32:04 -0000

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")

-----

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.

=====

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? 

-----

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).

-----

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.

-----

6.
   The No-Response Option was considered but was abandoned as it does

[FP]: No-Response Option needs a reference.

=====

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

=====

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".

-----

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? 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?

-----

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.

-----

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? 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.

-----

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. 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.

-----

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)

-----

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)

-----

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.

-----

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)

-----

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?

-----

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)?

-----

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.

-----

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)?

=====

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]."

-----

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".

-----

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].

-----

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).

-----

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.

-----

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? 

=====

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".

=====

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?

=====

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)

-----

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?

-----

31.
          |<---------+ [[Payloads 3 - 8 not detailed]]

[FP]: This is inconsistent and should be either 3 - 9 or 2 - 8 as noted above.

-----

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

[FP]: In fact, if I understand correctly this could either be a request for the missing block from the second set of blocks, 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?

=====

Francesca