rfc9177v2.txt   rfc9177.txt 
Internet Engineering Task Force (IETF) M. Boucadair Internet Engineering Task Force (IETF) M. Boucadair
Request for Comments: 9177 Orange Request for Comments: 9177 Orange
Category: Standards Track J. Shallow Category: Standards Track J. Shallow
ISSN: 2070-1721 February 2022 ISSN: 2070-1721 March 2022
Constrained Application Protocol (CoAP) Block-Wise Transfer Options Constrained Application Protocol (CoAP) Block-Wise Transfer Options
Supporting Robust Transmission Supporting Robust Transmission
Abstract Abstract
This document specifies alternative Constrained Application Protocol This document specifies alternative Constrained Application Protocol
(CoAP) block-wise transfer options: Q-Block1 and Q-Block2. (CoAP) block-wise transfer options: Q-Block1 and Q-Block2.
These options are similar to, but distinct from, the CoAP Block1 and These options are similar to, but distinct from, the CoAP Block1 and
skipping to change at line 1037 skipping to change at line 1037
Table 3: Congestion Control Parameters Table 3: Congestion Control Parameters
The PROBING_RATE parameter in CoAP indicates the average data rate The PROBING_RATE parameter in CoAP indicates the average data rate
that must not be exceeded by a CoAP endpoint in sending to a peer that must not be exceeded by a CoAP endpoint in sending to a peer
endpoint that does not respond. A single body will be subjected to endpoint that does not respond. A single body will be subjected to
PROBING_RATE (Section 4.7 of [RFC7252]), not the individual packets. PROBING_RATE (Section 4.7 of [RFC7252]), not the individual packets.
If the wait time between sending bodies that are not being responded If the wait time between sending bodies that are not being responded
to based on PROBING_RATE exceeds NON_PROBING_WAIT, then the wait time to based on PROBING_RATE exceeds NON_PROBING_WAIT, then the wait time
is limited to NON_PROBING_WAIT. is limited to NON_PROBING_WAIT.
Note: For the particular DOTS application, PROBING_RATE and other | Note: For the particular DOTS application, PROBING_RATE and
transmission parameters are negotiated between peers. Even when | other transmission parameters are negotiated between peers.
not negotiated, the DOTS application uses customized defaults, as | Even when not negotiated, the DOTS application uses customized
discussed in Section 4.5.2 of [RFC9132]. Note that MAX_PAYLOADS, | defaults, as discussed in Section 4.5.2 of [RFC9132]. Note
NON_MAX_RETRANSMIT, NON_TIMEOUT, NON_PROBING_WAIT, and | that MAX_PAYLOADS, NON_MAX_RETRANSMIT, NON_TIMEOUT,
NON_PARTIAL_TIMEOUT can be negotiated between DOTS peers, e.g., as | NON_PROBING_WAIT, and NON_PARTIAL_TIMEOUT can be negotiated
per [DOTS-QUICK-BLOCKS]. When explicit values are configured for | between DOTS peers, e.g., as per [DOTS-QUICK-BLOCKS]. When
NON_PROBING_WAIT and NON_PARTIAL_TIMEOUT, these values are used | explicit values are configured for NON_PROBING_WAIT and
without applying any jitter. | NON_PARTIAL_TIMEOUT, these values are used without applying any
| jitter.
Each NON 4.08 (Request Entity Incomplete) response is subject to Each NON 4.08 (Request Entity Incomplete) response is subject to
PROBING_RATE. PROBING_RATE.
Each NON GET or FETCH request using a Q-Block2 option is subject to Each NON GET or FETCH request using a Q-Block2 option is subject to
PROBING_RATE. PROBING_RATE.
As the sending of many payloads of a single body may itself cause As the sending of many payloads of a single body may itself cause
congestion, after transmission of every MAX_PAYLOADS_SET of a single congestion, after transmission of every MAX_PAYLOADS_SET of a single
body, a delay of NON_TIMEOUT_RANDOM MUST be introduced before sending body, a delay of NON_TIMEOUT_RANDOM MUST be introduced before sending
skipping to change at line 1083 skipping to change at line 1084
(Continue) response code for the latest payload sent, then the client (Continue) response code for the latest payload sent, then the client
can continue to send the next MAX_PAYLOADS_SET without any further can continue to send the next MAX_PAYLOADS_SET without any further
delay. If the server responds with a 4.08 (Request Entity delay. If the server responds with a 4.08 (Request Entity
Incomplete) response code, then the missing payloads SHOULD be Incomplete) response code, then the missing payloads SHOULD be
retransmitted before going into another NON_TIMEOUT_RANDOM delay retransmitted before going into another NON_TIMEOUT_RANDOM delay
prior to sending the next set of payloads. prior to sending the next set of payloads.
For the server receiving NON Q-Block1 requests, it SHOULD send back a For the server receiving NON Q-Block1 requests, it SHOULD send back a
2.31 (Continue) response code on receipt of all of the 2.31 (Continue) response code on receipt of all of the
MAX_PAYLOADS_SET to prevent the client unnecessarily delaying the MAX_PAYLOADS_SET to prevent the client unnecessarily delaying the
transer of remaing blocks. If not all of the MAX_PAYLOADS_SET were transfer of remaing blocks. If not all of the MAX_PAYLOADS_SET were
received, the server SHOULD delay for NON_RECEIVE_TIMEOUT received, the server SHOULD delay for NON_RECEIVE_TIMEOUT
(exponentially scaled based on the repeat request count for a (exponentially scaled based on the repeat request count for a
payload) before sending the 4.08 (Request Entity Incomplete) response payload) before sending the 4.08 (Request Entity Incomplete) response
code for the missing payload(s). If all of the MAX_PAYLOADS_SET were code for the missing payload(s). If all of the MAX_PAYLOADS_SET were
received and a 2.31 (Continue) response code had been sent, but no received and a 2.31 (Continue) response code had been sent, but no
more payloads were received for NON_RECEIVE_TIMEOUT (exponentially more payloads were received for NON_RECEIVE_TIMEOUT (exponentially
scaled), the server SHOULD send a 4.08 (Request Entity Incomplete) scaled), the server SHOULD send a 4.08 (Request Entity Incomplete)
response detailing the missing payloads after the block number that response detailing the missing payloads after the block number that
was indicated in the sent 2.31 (Continue) response code. If the was indicated in the sent 2.31 (Continue) response code. If the
repeat response count of the 4.08 (Request Entity Incomplete) exceeds repeat response count of the 4.08 (Request Entity Incomplete) exceeds
 End of changes. 3 change blocks. 
11 lines changed or deleted 12 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/