| < draft-bormann-core-cocoa-01.txt | draft-bormann-core-cocoa-02.txt > | |||
|---|---|---|---|---|
| CoRE Working Group C. Bormann | CoRE Working Group C. Bormann | |||
| Internet-Draft Universitaet Bremen TZI | Internet-Draft Universitaet Bremen TZI | |||
| Intended status: Informational February 14, 2014 | Intended status: Informational A. Betzler | |||
| Expires: August 18, 2014 | Expires: January 4, 2015 C. Gomez | |||
| I. Demirkol | ||||
| Universitat Politecnica de Catalunya/Fundacio i2CAT | ||||
| July 03, 2014 | ||||
| CoAP Simple Congestion Control/Advanced | CoAP Simple Congestion Control/Advanced | |||
| draft-bormann-core-cocoa-01 | draft-bormann-core-cocoa-02 | |||
| Abstract | Abstract | |||
| The CoAP protocol needs to be implemented in such a way that it does | The CoAP protocol needs to be implemented in such a way that it does | |||
| not cause persistent congestion on the network it uses. The CoRE | not cause persistent congestion on the network it uses. The CoRE | |||
| CoAP specification defines basic behavior that exhibits low risk of | CoAP specification defines basic behavior that exhibits low risk of | |||
| congestion with minimal implementation requirements. It also leaves | congestion with minimal implementation requirements. It also leaves | |||
| room for combining the base specification with advanced congestion | room for combining the base specification with advanced congestion | |||
| control mechanisms with higher performance. | control mechanisms with higher performance. | |||
| This specification defines some simple advanced CoRE Congestion | This specification defines some simple advanced CoRE Congestion | |||
| Control mechanisms, Simple CoCoA. In the present version -01, it is | Control mechanisms, Simple CoCoA. In the present version -02, it is | |||
| already making use of some input from simulations, but might still | making use of input from simulations and experiments in real | |||
| benefit from simplifying it further. | networks. The specification might still benefit from simplifying it | |||
| further. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on August 18, 2014. | This Internet-Draft will expire on January 4, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Context . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Context . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Advanced CoAP Congestion Control: RTO Estimation . . . . . . 3 | 3. Advanced CoAP Congestion Control: RTO Estimation . . . . . . 4 | |||
| 3.1. Blind RTO Estimate . . . . . . . . . . . . . . . . . . . 4 | 3.1. Blind RTO Estimate . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Measured RTO Estimate . . . . . . . . . . . . . . . . . . 4 | 3.2. Measured RTO Estimate . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2.1. Modifications to the algorithm of RFC 6298 . . . . . 5 | 3.2.1. Modifications to the algorithm of RFC 6298 . . . . . 5 | |||
| 3.2.2. Discussion . . . . . . . . . . . . . . . . . . . . . 5 | 3.2.2. Discussion . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.3. Lifetime, Aging . . . . . . . . . . . . . . . . . . . . . 5 | 3.3. Lifetime, Aging . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Advanced CoAP Congestion Control: Non-Confirmables . . . . . 6 | 4. Advanced CoAP Congestion Control: Non-Confirmables . . . . . 6 | |||
| 4.1. Discussion . . . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Discussion . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 8 | 8.2. Informative References . . . . . . . . . . . . . . . . . 8 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1. Introduction | 1. Introduction | |||
| (See Abstract.) | (See Abstract.) | |||
| Extended rationale for this specification can be found in | Extended rationale for this specification can be found in | |||
| [I-D.bormann-core-congestion-control] and | [I-D.bormann-core-congestion-control] and | |||
| [I-D.eggert-core-congestion-control], as well as in the minutes of | [I-D.eggert-core-congestion-control], as well as in the minutes of | |||
| the IETF 84 CoRE WG meetings. | the IETF 84 CoRE WG meetings. | |||
| 1.1. Terminology | 1.1. Terminology | |||
| This specification uses terms from [I-D.ietf-core-coap]. In | This specification uses terms from [RFC7252]. In addition, it | |||
| addition, it defines the following terminology: | defines the following terminology: | |||
| Initiator: The endpoint that sends the message that initiates an | Initiator: The endpoint that sends the message that initiates an | |||
| exchange. E.g., the party that sends a confirmable message, or a | exchange. E.g., the party that sends a confirmable message, or a | |||
| non-confirmable message conveying a request. | non-confirmable message conveying a request. | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119] when they | document are to be interpreted as described in [RFC2119] when they | |||
| appear in ALL CAPS. These words may also appear in this document in | appear in ALL CAPS. These words may also appear in this document in | |||
| lower case as plain English words, absent their normative meanings. | lower case as plain English words, absent their normative meanings. | |||
| skipping to change at page 3, line 22 ¶ | skipping to change at page 3, line 34 ¶ | |||
| sense as a synonym for "octet". | sense as a synonym for "octet". | |||
| 2. Context | 2. Context | |||
| In the Vancouver IETF 84 CoRE meeting, a path forward was defined | In the Vancouver IETF 84 CoRE meeting, a path forward was defined | |||
| that includes a very simple basic scheme (lock-step with a number of | that includes a very simple basic scheme (lock-step with a number of | |||
| parallel exchanges of 1) in the base specification together with | parallel exchanges of 1) in the base specification together with | |||
| performance-enhancing advanced mechanisms. | performance-enhancing advanced mechanisms. | |||
| The present specification is based on the approved text in the | The present specification is based on the approved text in the | |||
| [I-D.ietf-core-coap] base specification. It is making use of the | [RFC7252] base specification. It is making use of the text that | |||
| text that permits advanced congestion control mechanisms and allows | permits advanced congestion control mechanisms and allows them to | |||
| them to change protocol parameters, including NSTART and the binary | change protocol parameters, including NSTART and the binary | |||
| exponential backoff mechanism. Note that Section 4.8 of | exponential backoff mechanism. Note that Section 4.8 of [RFC7252] | |||
| [I-D.ietf-core-coap] limits the leeway that implementations have in | limits the leeway that implementations have in changing the CoRE | |||
| changing the CoRE protocol parameters. | protocol parameters. | |||
| The present specification also assumes that, outside of exchanges, | The present specification also assumes that, outside of exchanges, | |||
| non-confirmable messages can only be used at a limited rate without | non-confirmable messages can only be used at a limited rate without | |||
| an advanced congestion control mechanism (this is mainly relevant for | an advanced congestion control mechanism (this is mainly relevant for | |||
| -observe). It is also intended to address the [RFC5405] guideline | -observe). It is also intended to address the [RFC5405] guideline | |||
| about combining congestion control state for a destination; and to | about combining congestion control state for a destination; and to | |||
| clarify its meaning for CoAP using the definition of an endpoint. | clarify its meaning for CoAP using the definition of an endpoint. | |||
| The present specification does not address multicast or dithering | The present specification does not address multicast or dithering | |||
| beyond basic retransmission dithering. | beyond basic retransmission dithering. | |||
| 3. Advanced CoAP Congestion Control: RTO Estimation | 3. Advanced CoAP Congestion Control: RTO Estimation | |||
| For an initiator that plans to make multiple requests to one | For an initiator that plans to make multiple requests to one | |||
| destination endpoint, it may be worthwhile to make RTT measurements | destination endpoint, it may be worthwhile to make RTT measurements | |||
| in order to obtain a better RTO estimation than that implied by the | in order to obtain a better RTO estimation than that implied by the | |||
| default initial timeout of 2 to 3 s. This is based on the usual | default initial timeout of 2 to 3 s. This is based on the usual | |||
| algorithms for RTO estimation [RFC6298], with appropriately extended | algorithms for RTO estimation [RFC6298], with appropriately extended | |||
| default/base values, as proposed in Section 3.2.1. Note that such a | default/base values, as proposed in Section 3.2.1. Note that such a | |||
| mechanism must, during idle periods, decay RTT estimates that are | mechanism must, during idle periods, decay RTO estimates that are | |||
| shorter than the basic RTT estimate back to the basic RTT estimate, | shorter or longer than the basic RTO estimate back to the basic RTO | |||
| until fresh measurements become available again, as proposed in | estimate, until fresh measurements become available again, as | |||
| Section 3.3. | proposed in Section 3.3. | |||
| One important consideration not relevant for TCP is the fact that a | One important consideration not relevant for TCP is the fact that a | |||
| CoAP round-trip may include application processing time, which may be | CoAP round-trip may include application processing time, which may be | |||
| hard to predict, and may differ between different resources available | hard to predict, and may differ between different resources available | |||
| at the same endpoint. Servers will only trigger their early ACKs | at the same endpoint. Also, for communications with networks of | |||
| (with a non-piggybacked response to be sent later) based on the | constrained devices that apply radio duty cycling, large and variable | |||
| default timers, e.g. after 1 s. A client that has arrived at a RTO | round-trip times are likely to be observed. Servers will only | |||
| estimate shorter than 1 s SHOULD therefore use a larger backoff | trigger their early ACKs (with a non-piggybacked response to be sent | |||
| factor for retransmissions to avoid expending all of its | later) based on the default timers, e.g. after 1 s. A client that | |||
| retransmissions in the default interval of 2 to 3 s. A proposal for | has arrived at a RTO estimate shorter than 1 s SHOULD therefore use a | |||
| a mechanism with variable backoff factors is presented in | larger backoff factor for retransmissions to avoid expending all of | |||
| its retransmissions in the default interval of 2 to 3 s. A proposal | ||||
| for a mechanism with variable backoff factors is presented in | ||||
| Section 3.2.1. | Section 3.2.1. | |||
| It may also be worthwhile to do RTT estimates not just based on | It may also be worthwhile to do RTT estimates not just based on | |||
| information measured from a single destination endpoint, but also | information measured from a single destination endpoint, but also | |||
| based on entire hosts (IP addresses) and/or complete prefixes (e.g., | based on entire hosts (IP addresses) and/or complete prefixes (e.g., | |||
| maintain an RTT estimate for a whole /64). The exact way this can be | maintain an RTT estimate for a whole /64). The exact way this can be | |||
| used to reduce the amount of state in an initiator is for further | used to reduce the amount of state in an initiator is for further | |||
| study. | study. | |||
| 3.1. Blind RTO Estimate | 3.1. Blind RTO Estimate | |||
| The initial RTO estimate for an endpoint is set to 2 seconds. | The initial RTO estimate for an endpoint is set to 2 seconds. | |||
| If only the initial RTO estimate is available, the RTO estimate for | If only the initial RTO estimate is available, the RTO estimate for | |||
| each of up to NSTART exchanges started in parallel is set to 1 s | each of up to NSTART exchanges started in parallel is set to 2 s | |||
| times 2 to the power of the number of parallel exchanges, e.g. if two | times the number of parallel exchanges, e.g. if two exchanges are | |||
| exchanges are already running, the initial RTO estimate for an | already running, the initial RTO estimate for an additional exchange | |||
| additional exchange is 8 seconds. | is 6 seconds. | |||
| The binary exponential backoff is truncated at 32 seconds. Similar | ||||
| to the way retransmissions are handled in the base specification, | ||||
| they are dithered between 1 x RTO and ACK_RANDOM_FACTOR x RTO. | ||||
| 3.2. Measured RTO Estimate | 3.2. Measured RTO Estimate | |||
| The RTO estimator runs two copies of the algorithm defined in | The RTO estimator runs two copies of the algorithm defined in | |||
| [RFC6298], as modified in Section 3.2.1: One copy for exchanges that | [RFC6298], as modified in Section 3.2.1: One copy for exchanges that | |||
| complete on initial transmissions (the "strong estimator"), and one | complete on initial transmissions (the "strong estimator"), and one | |||
| copy for exchanges that have run into retransmissions (the "weak | copy for exchanges that have run into retransmissions, where only the | |||
| estimator"). For the latter, there is some ambiguity whether a | first two retransmissions are considered (the "weak estimator"). For | |||
| response is based on the initial transmission or any retransmission. | the latter, there is some ambiguity whether a response is based on | |||
| For the purposes of the weak estimator, the time from the initial | the initial transmission or the retransmissions. For the purposes of | |||
| transmission counts. | the weak estimator, the time from the initial transmission counts. | |||
| Responses obtained after the third retransmission are not used to | ||||
| update an estimator. | ||||
| The overall RTO estimate is a exponentially weighted moving average | The overall RTO estimate is an exponentially weighted moving average | |||
| (alpha = 0.5) computed of the strong and the weak estimator, which is | (alpha = 0.5) computed of the strong and the weak estimator, which is | |||
| evolved after each contribution to the weak estimator or to the | evolved after each contribution to the weak estimator (1) or to the | |||
| strong estimator, from the estimator that made the most recent | strong estimator (2), from the estimator that made the most recent | |||
| contribution: | contribution: | |||
| RTO_overall_ := 0.5 * RTO_recent_ + 0.5 * RTO_overall_ | RTO_overall_ := 0.25 * RTO_weak_ + 0.75 * RTO_overall_ (1) | |||
| (Note that the contributionof the weak estimator may be too big in | RTO_overall_ := 0.5 * RTO_strong_ + 0.5 * RTO_overall_ (2) | |||
| naturally lossy networks. TBD.) | ||||
| (Splitting this update into the two cases avoids making the | ||||
| contribution of the weak estimator too big in naturally lossy | ||||
| networks.) | ||||
| 3.2.1. Modifications to the algorithm of RFC 6298 | 3.2.1. Modifications to the algorithm of RFC 6298 | |||
| This subsection presents three modifications that must be applied to | This subsection presents three modifications that must be applied to | |||
| the algorithm of [RFC6298] as per this document. The first two | the algorithm of [RFC6298] as per this document. The first two | |||
| recommend new parameter settings. The third one is the variable | recommend new parameter settings. The third one is the variable | |||
| backoff factor mechanism. | backoff factor mechanism. | |||
| The initial value for each of the two RTO estimators is 2 s. | The initial value for each of the two RTO estimators is 2 s. | |||
| For the weak estimator, the factor K (the RTT variance multiplier) is | For the weak estimator, the factor K (the RTT variance multiplier) is | |||
| set to 1 instead of 4. This is necessary to avoid a strong increase | set to 1 instead of 4. This is necessary to avoid a strong increase | |||
| of the RTO in the case that the RTTVAR value is very large, which may | of the RTO in the case that the RTTVAR value is very large, which may | |||
| be the case if a weak RTT measurement is obtained after one or more | be the case if a weak RTT measurement is obtained after one or more | |||
| retransmissions. | retransmissions. | |||
| If an RTO estimation is lower than 1 s or higher than 8 s, instead of | If an RTO estimation is lower than 1 s or higher than 3 s, instead of | |||
| applying a binary backoff factor in both cases, a variable backoff | applying a binary backoff factor in both cases, a variable backoff | |||
| factor is used. For RTO estimations below 1 s, the RTO for a | factor is used. For RTO estimations below 1 s, the RTO for a | |||
| retransmission is multiplied by 3, while for estimations above 8 s, | retransmission is multiplied by 3, while for estimations above 3 s, | |||
| the RTO is multiplied only by 1.3 (this initial choice of numbers to | the RTO is multiplied only by 1.5 (this updated choice of numbers to | |||
| be verified by more simulations). This helps to avoid that exchanges | be verified by more simulations). This helps to avoid that exchanges | |||
| with small initial RTOs use up all retransmissions in a short | with small initial RTOs use up all retransmissions in a short | |||
| interval of time and exchanges with large initial RTOs may not be | interval of time and exchanges with large initial RTOs may not be | |||
| able to carry out all retransmissions within MAX_TRANSMIT_WAIT | able to carry out all retransmissions within MAX_TRANSMIT_WAIT | |||
| (93 s). | (93 s). | |||
| The binary exponential backoff is truncated at 32 seconds. Similar | ||||
| to the way retransmissions are handled in the base specification, | ||||
| they are dithered between 1 x RTO and ACK_RANDOM_FACTOR x RTO. | ||||
| 3.2.2. Discussion | 3.2.2. Discussion | |||
| In contrast to [RFC6298], this algorithm attempts to make use of | In contrast to [RFC6298], this algorithm attempts to make use of | |||
| ambiguous information from retransmissions. This is motivated by the | ambiguous information from retransmissions. This is motivated by the | |||
| high non-congestion loss rates expected in constrained node networks, | high non-congestion loss rates expected in constrained node networks, | |||
| and the need to update the RTO estimators even in the presence of | and the need to update the RTO estimators even in the presence of | |||
| loss. Additional investigation is required to determine whether this | loss. Additional investigation is required to determine whether this | |||
| is indeed justified. | is indeed justified. | |||
| 3.3. Lifetime, Aging | 3.3. Lifetime, Aging | |||
| skipping to change at page 6, line 4 ¶ | skipping to change at page 6, line 23 ¶ | |||
| 3.2.2. Discussion | 3.2.2. Discussion | |||
| In contrast to [RFC6298], this algorithm attempts to make use of | In contrast to [RFC6298], this algorithm attempts to make use of | |||
| ambiguous information from retransmissions. This is motivated by the | ambiguous information from retransmissions. This is motivated by the | |||
| high non-congestion loss rates expected in constrained node networks, | high non-congestion loss rates expected in constrained node networks, | |||
| and the need to update the RTO estimators even in the presence of | and the need to update the RTO estimators even in the presence of | |||
| loss. Additional investigation is required to determine whether this | loss. Additional investigation is required to determine whether this | |||
| is indeed justified. | is indeed justified. | |||
| 3.3. Lifetime, Aging | 3.3. Lifetime, Aging | |||
| The state of the RTO estimators for an endpoint SHOULD be kept as | The state of the RTO estimators for an endpoint SHOULD be kept as | |||
| long as possible. If other state is kept for the endpoint (such as a | long as possible. If other state is kept for the endpoint (such as a | |||
| DTLS connection), it is very strongly RECOMMENDED to keep the RTO | DTLS connection), it is very strongly RECOMMENDED to keep the RTO | |||
| state alive at least as long as this other state. It MUST be kept | state alive at least as long as this other state. It MUST be kept | |||
| for at least 255 s. | for at least 255 s. | |||
| If an estimator has a value that is lower than 1 s, and it is left | If an estimator has a value that is lower than 1 s, and it is left | |||
| without further update for a time that is more than 16 times its | without further update for 16 times its current value, the RTO | |||
| current value, its value is doubled. | estimate is doubled. If an estimator has a value that is higher than | |||
| 3 s, and it is left without further update for 4 times its current | ||||
| value, the RTO estimate is set to be | ||||
| (It is allowed to implement this cumulatively at the time it is used | RTO_overall_ := 1 s + (0.5 * RTO_overall_) | |||
| next, possibly approximating multiple doublings by replacing the | ||||
| value with 1/8th of the time that has elapsed since the last update. | (Note that, instead of running a timer, it is possible to implement | |||
| Alternatively, simple estimators can be simply updated to 1 s after | these RTO aging calculations cumulatively at the time the estimator | |||
| being without update for a time that is more than 16 times its value, | is used next.) | |||
| or, even simpler, be clamped at 1 s or above.) | ||||
| 4. Advanced CoAP Congestion Control: Non-Confirmables | 4. Advanced CoAP Congestion Control: Non-Confirmables | |||
| (TO DO: Align this with final consensus on -observe!) | (TO DO: Align this with final consensus on -observe!) | |||
| A CoAP endpoint MUST NOT send non-confirmables to another CoAP | A CoAP endpoint MUST NOT send non-confirmables to another CoAP | |||
| endpoint at a rate higher than defined by this document. Independent | endpoint at a rate higher than defined by this document. Independent | |||
| of any congestion control mechanisms, a CoAP endpoint can always send | of any congestion control mechanisms, a CoAP endpoint can always send | |||
| non-confirmables if their rate does not exceed 1 B/s. | non-confirmables if their rate does not exceed 1 B/s. | |||
| skipping to change at page 7, line 4 ¶ | skipping to change at page 7, line 24 ¶ | |||
| confirmable. | confirmable. | |||
| 2. The confirmable messages must be sent under an RTO estimator, as | 2. The confirmable messages must be sent under an RTO estimator, as | |||
| specified in Section 3. | specified in Section 3. | |||
| 3. The packet rate of non-confirmable messages cannot exceed 1/RTO, | 3. The packet rate of non-confirmable messages cannot exceed 1/RTO, | |||
| where RTO is the overall RTO estimator value at the time the non- | where RTO is the overall RTO estimator value at the time the non- | |||
| confirmable packet is sent. | confirmable packet is sent. | |||
| 4.1. Discussion | 4.1. Discussion | |||
| This is relatively conservative. More advanced versions of this | This is relatively conservative. More advanced versions of this | |||
| algorithm could run a TFRC-style Loss Event Rate calculator [RFC5348] | algorithm could run a TFRC-style Loss Event Rate calculator [RFC5348] | |||
| and apply the TCP equation to achieve a higher rate than 1/RTO. | and apply the TCP equation to achieve a higher rate than 1/RTO. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| This document makes no requirements on IANA. (This section to be | This document makes no requirements on IANA. (This section to be | |||
| removed by RFC editor.) | removed by RFC editor.) | |||
| 6. Security Considerations | 6. Security Considerations | |||
| (TBD. The security considerations of, e.g., [RFC5681], [RFC2914], | (TBD. The security considerations of, e.g., [RFC5681], [RFC2914], | |||
| and [RFC5405] apply. Some issues are already discussed in the | and [RFC5405] apply. Some issues are already discussed in the | |||
| security considerations of [I-D.ietf-core-coap].) | security considerations of [RFC7252].) | |||
| 7. Acknowledgements | 7. Acknowledgements | |||
| The first document to examine CoAP congestion control issues in | The first document to examine CoAP congestion control issues in | |||
| detail was [I-D.eggert-core-congestion-control], to which this draft | detail was [I-D.eggert-core-congestion-control], to which this draft | |||
| owes a lot. | owes a lot. | |||
| Michael Scharf did a review of CoAP congestion control issues that | Michael Scharf did a review of CoAP congestion control issues that | |||
| asked a lot of good questions. Several Transport Area | asked a lot of good questions. Several Transport Area | |||
| representatives made further significant inputs this discussion | representatives made further significant inputs this discussion | |||
| during IETF84, including Lars Eggert, Michael Scharf, and David | during IETF84, including Lars Eggert, Michael Scharf, and David | |||
| Black. Andrew McGregor, Eric Rescorla, Richard Kelsey, Ed Beroset, | Black. Andrew McGregor, Eric Rescorla, Richard Kelsey, Ed Beroset, | |||
| Jari Arkko, Zach Shelby, Matthias Kovatsch and many others provided | Jari Arkko, Zach Shelby, Matthias Kovatsch and many others provided | |||
| very useful additions. Carles Gomez, August Betzler and Ilker | very useful additions. | |||
| Demirkol provided a first detailed review of the present document; | ||||
| August provided simulation results that shaped some of the | Authors from Universitat Politecnica de Catalunya have been supported | |||
| recommendations here but also indicate a need for further effort. | in part by the Spanish Government's Ministerio de Economia y | |||
| Competitividad through projects TEC2009-11453 and TEC2012-32531, and | ||||
| FEDER. | ||||
| 8. References | 8. References | |||
| 8.1. Normative References | 8.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, RFC | [RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, RFC | |||
| 2914, September 2000. | 2914, September 2000. | |||
| [RFC5405] Eggert, L. and G. Fairhurst, "Unicast UDP Usage Guidelines | [RFC5405] Eggert, L. and G. Fairhurst, "Unicast UDP Usage Guidelines | |||
| for Application Designers", BCP 145, RFC 5405, November | for Application Designers", BCP 145, RFC 5405, November | |||
| 2008. | 2008. | |||
| [RFC6298] Paxson, V., Allman, M., Chu, J., and M. Sargent, | [RFC6298] Paxson, V., Allman, M., Chu, J., and M. Sargent, | |||
| "Computing TCP's Retransmission Timer", RFC 6298, June | "Computing TCP's Retransmission Timer", RFC 6298, June | |||
| 2011. | 2011. | |||
| [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained | ||||
| Application Protocol (CoAP)", RFC 7252, June 2014. | ||||
| 8.2. Informative References | 8.2. Informative References | |||
| [I-D.bormann-core-congestion-control] | [I-D.bormann-core-congestion-control] | |||
| Bormann, C. and K. Hartke, "Congestion Control Principles | Bormann, C. and K. Hartke, "Congestion Control Principles | |||
| for CoAP", draft-bormann-core-congestion-control-02 (work | for CoAP", draft-bormann-core-congestion-control-02 (work | |||
| in progress), July 2012. | in progress), July 2012. | |||
| [I-D.eggert-core-congestion-control] | [I-D.eggert-core-congestion-control] | |||
| Eggert, L., "Congestion Control for the Constrained | Eggert, L., "Congestion Control for the Constrained | |||
| Application Protocol (CoAP)", draft-eggert-core- | Application Protocol (CoAP)", draft-eggert-core- | |||
| congestion-control-01 (work in progress), January 2011. | congestion-control-01 (work in progress), January 2011. | |||
| [I-D.ietf-core-coap] | ||||
| Shelby, Z., Hartke, K., and C. Bormann, "Constrained | ||||
| Application Protocol (CoAP)", draft-ietf-core-coap-18 | ||||
| (work in progress), June 2013. | ||||
| [I-D.ietf-core-observe] | [I-D.ietf-core-observe] | |||
| Hartke, K., "Observing Resources in CoAP", draft-ietf- | Hartke, K., "Observing Resources in CoAP", draft-ietf- | |||
| core-observe-11 (work in progress), October 2013. | core-observe-14 (work in progress), June 2014. | |||
| [RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP | [RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP | |||
| Friendly Rate Control (TFRC): Protocol Specification", RFC | Friendly Rate Control (TFRC): Protocol Specification", RFC | |||
| 5348, September 2008. | 5348, September 2008. | |||
| [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion | [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion | |||
| Control", RFC 5681, September 2009. | Control", RFC 5681, September 2009. | |||
| Author's Address | Authors' Addresses | |||
| Carsten Bormann | Carsten Bormann | |||
| Universitaet Bremen TZI | Universitaet Bremen TZI | |||
| Postfach 330440 | Postfach 330440 | |||
| Bremen D-28359 | Bremen D-28359 | |||
| Germany | Germany | |||
| Phone: +49-421-218-63921 | Phone: +49-421-218-63921 | |||
| Email: cabo@tzi.org | Email: cabo@tzi.org | |||
| August Betzler | ||||
| Universitat Politecnica de Catalunya/Fundacio i2CAT | ||||
| Departament d'Enginyeria Telematica | ||||
| C/Jordi Girona, 1-3 | ||||
| Barcelona 08034 | ||||
| Spain | ||||
| Email: august.betzler@entel.upc.edu | ||||
| Carles Gomez | ||||
| Universitat Politecnica de Catalunya/Fundacio i2CAT | ||||
| Escola d'Enginyeria de Telecomunicacio i Aeroespacial | ||||
| de Castelldefels | ||||
| C/Esteve Terradas, 7 | ||||
| Castelldefels 08860 | ||||
| Spain | ||||
| Phone: +34-93-413-7206 | ||||
| Email: carlesgo@entel.upc.edu | ||||
| Ilker Demirkol | ||||
| Universitat Politecnica de Catalunya/Fundacio i2CAT | ||||
| Departament d'Enginyeria Telematica | ||||
| C/Jordi Girona, 1-3 | ||||
| Barcelona 08034 | ||||
| Spain | ||||
| Email: ilker.demirkol@entel.upc.edu | ||||
| End of changes. 35 change blocks. | ||||
| 77 lines changed or deleted | 91 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/ | ||||