Internet DRAFT - draft-greevenbosch-core-block-minimum-time
draft-greevenbosch-core-block-minimum-time
core B. Greevenbosch
Internet-Draft Huawei Technologies
Intended status: Informational July 9, 2012
Expires: January 10, 2013
CoAP Minimum Block Time
draft-greevenbosch-core-block-minimum-time-00
Abstract
This document defines an "MinimumBlockTime" option for CoAP, which
can be used to negotiate the minimum time between two subsequent
block requests. It can be used for overload and congestion control.
Greevenbosch Expires January 10, 2013 [Page 1]
Internet-Draft CoAP Minimum Block Time July 2012
Note
Discussion and suggestions for improvement are requested, and should
be sent to core@ietf.org.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 10, 2013.
Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Greevenbosch Expires January 10, 2013 [Page 2]
Internet-Draft CoAP Minimum Block Time July 2012
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Requirements notation . . . . . . . . . . . . . . . . . . . . 5
3. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 6
4. The "MinimumBlockTime" option . . . . . . . . . . . . . . . . 7
5. Legacy behaviour . . . . . . . . . . . . . . . . . . . . . . . 8
6. Open issues . . . . . . . . . . . . . . . . . . . . . . . . . 9
7. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8. Security Considerations . . . . . . . . . . . . . . . . . . . 11
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13
11. Normative References . . . . . . . . . . . . . . . . . . . . . 14
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 15
Greevenbosch Expires January 10, 2013 [Page 3]
Internet-Draft CoAP Minimum Block Time July 2012
1. Introduction
The Constrained Application Protocol (CoAP) [I-D.ietf-core-coap] is a
RESTful protocol for constrained nodes and networks. In
[I-D.ietf-core-block], the block mechanism for block-wise
transmission of data is defined.
This document defines a "MinimumBlockTime" option, which can be used
to negotiate the minimum time between two subsequent block requests.
Negotiating the minimum time between the block requests can be used
to limit the associated traffic, providing a mechanism for congestion
control. In addition, it allows very constrained servers to limit
the number of requests they receive within a certain time period,
preventing them from becoming overloaded.
Greevenbosch Expires January 10, 2013 [Page 4]
Internet-Draft CoAP Minimum Block Time July 2012
2. Requirements notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
Greevenbosch Expires January 10, 2013 [Page 5]
Internet-Draft CoAP Minimum Block Time July 2012
3. Definitions
Block transaction
The block-wise transmission of a single resource, between a unique
client and server pair.
Two subsequent requests
In this document, the phrase "two subsequent requests" indicates
two requests in a same block transaction, in which one follows the
other, without other requests from the same block transaction in
between. Notice that the difference between the block numbers of
the two subsequent requests does not have to be one, although most
often this will be the case.
Block time
The time between two subsequent requests in a block transaction.
Block speed
The multiplicative inverse of the block time.
Greevenbosch Expires January 10, 2013 [Page 6]
Internet-Draft CoAP Minimum Block Time July 2012
4. The "MinimumBlockTime" option
+------+-----+------------------+--------+--------+---------+
| Type | C/E | Name | Format | Length | Default |
+------+-----+------------------+--------+--------+---------+
| TBD | E | MinimumBlockTime | uint | 0-2B | 0 |
+------+-----+------------------+--------+--------+---------+
Table 1: The "MinimumBlockTime" option
The "MinimumBlockTime" option is an elective option, which is used to
negotiate the minimum time in milliseconds that a client needs to
wait between sending two subsequent block requests.
In the remainder of this section, it is assumed that both the client
and the server support the "MinimumBlockTime" option.
If the client includes a "Block1" or "Block2" option in its first
request in a block transaction, it SHOULD include the
"MinimumBlockTime" option in that first request too. The server
SHOULD include the "MinimumBlockTime" option in its first block
response.
In a block request, the option's value T_C indicates the minimum
block time in ms that the client can support.
In a block response, the option's value T_S indicates the minimum
block time in ms that the server can support.
The client SHALL wait at least T_S ms between sending two subsequent
block requests.
The following MUST hold: T_S <= T_C.
The "MinimumBlockTime" option has a default value 0. A value T_S=0
indicates the server does not put any restrictions on the block
speed. A value T_C=0 indicates that the client prefers to send the
requests as quickly as possible.
Greevenbosch Expires January 10, 2013 [Page 7]
Internet-Draft CoAP Minimum Block Time July 2012
5. Legacy behaviour
It is possible that either the client or server does not support the
"MinimumBlockTime" option. If the client does not support the
option, then obviously it cannot take the server's preference into
account. Similarly if the server does not support the option, it
cannot use it to restrict the block speed.
In either case, or their combination, the client will choose the
block speed as it prefers. This corresponds to the case T_S=0.
To allow the server to distinguish between a client that supports the
"MinimumBlockTime" option but wants to signal T_C=0, and a client
that does not support the "MinimumBlockTime" option, it is
RECOMMENDED for the compliant client to include option in the first
request in a Block transaction, even when the client wants to signal
T_C=0.
Greevenbosch Expires January 10, 2013 [Page 8]
Internet-Draft CoAP Minimum Block Time July 2012
6. Open issues
For longer block transactions, there may be value in allowing updates
of the block speed during a block transaction. We should consider
whether increasing efficiency will justify the extra complexity.
Greevenbosch Expires January 10, 2013 [Page 9]
Internet-Draft CoAP Minimum Block Time July 2012
7. Example
Figure 1 contains an example of a block transaction with the
"MinimumBlockTime" option. The client indicates its supported
minimum block time as 200ms. The associated block speed is too high
for the server, so the server indicates a minimum block time of
300ms. The client obeys this value for the rest of the transaction.
CLIENT SERVER
| |
/ | CON [MID=1234], GET, /status, N=0, T_C = 200 ----> |
| | |
300ms | <---- ACK [MID=1234], 2.05 Content, N=0, T_S = 300 |
| | |
\ / | CON [MID=1235], GET, /status, N=1 ----> |
| | |
300ms| <---- ACK [MID=1235], 2.05 Content, N=1 |
| | |
/ \ | CON [MID=1234], GET, /status, N=2 ----> |
| | |
300ms | <---- ACK [MID=1234], 2.05 Content, N=2 |
| | |
\ | CON [MID=1235], GET, /status, N=3 ----> |
: :
: ... :
: :
Figure 1: Example of transaction with "MinimumBlockTime"
Greevenbosch Expires January 10, 2013 [Page 10]
Internet-Draft CoAP Minimum Block Time July 2012
8. Security Considerations
By modifying the value of the "MinimumBlockTime" option to a higher
value, a man-in-the-middle could increase the time used to perform a
block transaction. When the client encounters a response with a too
high "MinimumBlockTime" value, it MAY abort the transaction, and try
to reinitiate it. However, to prevent overloading the server, the
client MUST limit the number of these reinitiations.
By decreasing the value of the "MinimumBlockTime" option, the man-in-
the-middle can induce the client to send block requests at a speed
too high for the server. The server should be prepared for this, for
example by discarding requests that cannot be processed. This is
similar to the case where the server or client does not support the
"MinimumBlockTime" option.
Greevenbosch Expires January 10, 2013 [Page 11]
Internet-Draft CoAP Minimum Block Time July 2012
9. IANA Considerations
This draft adds the following option numbers to the CoAP Option
Numbers registry of [I-D.ietf-core-coap].
+----------------+------------------+-----------+
| Number | Name | Reference |
+----------------+------------------+-----------+
| TBD (elective) | MinimumBlockTime | [RFCXXXX] |
+----------------+------------------+-----------+
Table 2: CoAP option numbers
Greevenbosch Expires January 10, 2013 [Page 12]
Internet-Draft CoAP Minimum Block Time July 2012
10. Acknowledgements
The author would like to thank Kepeng Li for his ideas and feedback.
Greevenbosch Expires January 10, 2013 [Page 13]
Internet-Draft CoAP Minimum Block Time July 2012
11. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[I-D.ietf-core-block]
Shelby, Z. and C. Bormann, "Constrained Application
Protocol (CoAP)", draft-ietf-core-block-08 (work in
progress), February 2012.
[I-D.ietf-core-coap]
Shelby, Z., Hartke, K., Bormann, C., and B. Frank,
"Constrained Application Protocol (CoAP)",
draft-ietf-core-coap-10 (work in progress), March 2012.
Greevenbosch Expires January 10, 2013 [Page 14]
Internet-Draft CoAP Minimum Block Time July 2012
Author's Address
Bert Greevenbosch
Huawei Technologies Co., Ltd.
Huawei Industrial Base
Bantian, Longgang District
Shenzhen 518129
P.R. China
Phone: +86-755-28978088
Email: bert.greevenbosch@huawei.com
Greevenbosch Expires January 10, 2013 [Page 15]