| < draft-ietf-6lo-fragment-recovery-00.txt | draft-ietf-6lo-fragment-recovery-01.txt > | |||
|---|---|---|---|---|
| 6lo P. Thubert, Ed. | 6lo P. Thubert, Ed. | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Updates: 4944 (if approved) September 20, 2018 | Updates: 4944 (if approved) January 22, 2019 | |||
| Intended status: Standards Track | Intended status: Standards Track | |||
| Expires: March 29, 2019 | Expires: July 26, 2019 | |||
| 6LoWPAN Selective Fragment Recovery | 6LoWPAN Selective Fragment Recovery | |||
| draft-ietf-6lo-fragment-recovery-00 | draft-ietf-6lo-fragment-recovery-01 | |||
| Abstract | Abstract | |||
| This draft updates RFC 4944 with a simple protocol to recover | This draft updates RFC 4944 with a simple protocol to recover | |||
| individual fragments across a route-over mesh network, with a minimal | individual fragments across a route-over mesh network, with a minimal | |||
| flow control to protect the network against bloat. | flow control to protect the network against bloat. | |||
| 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 | |||
| skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 33 ¶ | |||
| 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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 December 29, 2018. | This Internet-Draft will expire on July 26, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://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 | |||
| 2. Updating RFC 4944 . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Updating RFC 4944 . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Updating draft-watteyne-6lo-minimal-fragment . . . . . . . . 4 | 2.1. Updating draft-watteyne-6lo-minimal-fragment . . . . . . 4 | |||
| 4. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Slack in the First Fragment . . . . . . . . . . . . . . . 4 | |||
| 4.1. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.3. Modifying the First Fragment . . . . . . . . . . . . . . 5 | |||
| 4.2. References . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.3. 6LoWPAN Acronyms . . . . . . . . . . . . . . . . . . . . 4 | 3.1. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.4. Referenced Work . . . . . . . . . . . . . . . . . . . . . 5 | 3.2. References . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.5. New Terms . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.3. 6LoWPAN Acronyms . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. New Dispatch types and headers . . . . . . . . . . . . . . . 6 | 3.4. Referenced Work . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5.1. Recoverable Fragment Dispatch type and Header . . . . . . 7 | 3.5. New Terms . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5.2. RFRAG Acknowledgment Dispatch type and Header . . . . . . 9 | 4. New Dispatch types and headers . . . . . . . . . . . . . . . 7 | |||
| 6. Fragments Recovery . . . . . . . . . . . . . . . . . . . . . 10 | 4.1. Recoverable Fragment Dispatch type and Header . . . . . . 8 | |||
| 7. Forwarding Fragments . . . . . . . . . . . . . . . . . . . . 12 | 4.2. RFRAG Acknowledgment Dispatch type and Header . . . . . . 9 | |||
| 7.1. Upon the first fragment . . . . . . . . . . . . . . . . . 12 | 5. Fragments Recovery . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 7.2. Upon the next fragments . . . . . . . . . . . . . . . . . 13 | 6. Forwarding Fragments . . . . . . . . . . . . . . . . . . . . 13 | |||
| 7.3. Upon the RFRAG Acknowledgments . . . . . . . . . . . . . 13 | 6.1. Upon the first fragment . . . . . . . . . . . . . . . . . 13 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 6.2. Upon the next fragments . . . . . . . . . . . . . . . . . 13 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 6.3. Upon the RFRAG Acknowledgments . . . . . . . . . . . . . 14 | |||
| 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 14 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 15 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| Appendix A. Rationale . . . . . . . . . . . . . . . . . . . . . 17 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 15 | |||
| Appendix B. Requirements . . . . . . . . . . . . . . . . . . . . 18 | 10.2. Informative References . . . . . . . . . . . . . . . . . 16 | |||
| Appendix C. Considerations On Flow Control . . . . . . . . . . . 19 | Appendix A. Rationale . . . . . . . . . . . . . . . . . . . . . 18 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 20 | Appendix B. Requirements . . . . . . . . . . . . . . . . . . . . 19 | |||
| Appendix C. Considerations On Flow Control . . . . . . . . . . . 20 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 1. Introduction | 1. Introduction | |||
| In most Low Power and Lossy Network (LLN) applications, the bulk of | In most Low Power and Lossy Network (LLN) applications, the bulk of | |||
| the traffic consists of small chunks of data (in the order few bytes | the traffic consists of small chunks of data (in the order few bytes | |||
| to a few tens of bytes) at a time. Given that an IEEE Std. 802.15.4 | to a few tens of bytes) at a time. Given that an IEEE Std. 802.15.4 | |||
| [IEEE.802.15.4] frame can carry 74 bytes or more in all cases, | [IEEE.802.15.4] frame can carry 74 bytes or more in all cases, | |||
| fragmentation is usually not required. However, and though this | fragmentation is usually not required. However, and though this | |||
| happens only occasionally, a number of mission critical applications | happens only occasionally, a number of mission critical applications | |||
| do require the capability to transfer larger chunks of data, for | do require the capability to transfer larger chunks of data, for | |||
| skipping to change at page 3, line 51 ¶ | skipping to change at page 4, line 5 ¶ | |||
| in Appendix B. | in Appendix B. | |||
| 2. Updating RFC 4944 | 2. Updating RFC 4944 | |||
| This specification updates the fragmentation mechanism that is | This specification updates the fragmentation mechanism that is | |||
| specified in "Transmission of IPv6 Packets over IEEE 802.15.4 | specified in "Transmission of IPv6 Packets over IEEE 802.15.4 | |||
| Networks" [RFC4944] for use in route-over LLNs by providing a model | Networks" [RFC4944] for use in route-over LLNs by providing a model | |||
| where fragments can be forwarded end-to-end across a 6LoWPAN LLN, and | where fragments can be forwarded end-to-end across a 6LoWPAN LLN, and | |||
| where fragments that are lost on the way can be recovered | where fragments that are lost on the way can be recovered | |||
| individually. A new format for fragment is introduces and new | individually. A new format for fragment is introduces and new | |||
| dispatch types are defined in Section 5. | dispatch types are defined in Section 4. | |||
| 3. Updating draft-watteyne-6lo-minimal-fragment | [RFC8138] allows to modifies the size of a packet en-route by | |||
| removing the consumed hops in a compressed Routing Header. It | ||||
| results that the fragment_offset and datagram_size cannot be signaled | ||||
| in the uncompressed form. This specification expresses those fields | ||||
| in the compressed form and allows to modify them en-route (see | ||||
| Section 2.3. | ||||
| Note that consistantly with in Section 2 of [RFC6282] for the | ||||
| fragmentation mechanism described in Section 5.3 of [RFC4944], any | ||||
| header that cannot fit within the first fragment MUST NOT be | ||||
| compressed when using the fragmentation mechanism described in this | ||||
| specification. | ||||
| 2.1. Updating draft-watteyne-6lo-minimal-fragment | ||||
| This specification updates the fragment forwarding mechanism | This specification updates the fragment forwarding mechanism | |||
| specified in "LLN Minimal Fragment Forwarding" | specified in "LLN Minimal Fragment Forwarding" | |||
| [I-D.watteyne-6lo-minimal-fragment] by providing additional events to | [I-D.watteyne-6lo-minimal-fragment] by providing additional | |||
| iprove the management of the Virtual Reassembly Buffer (VRB). | operations to improve the management of the Virtual Reassembly Buffer | |||
| (VRB). | ||||
| 2.2. Slack in the First Fragment | ||||
| At the time of this writing, [I-D.watteyne-6lo-minimal-fragment] | At the time of this writing, [I-D.watteyne-6lo-minimal-fragment] | |||
| allows for refragmenting in intermediate nodes, meaning that some | allows for refragmenting in intermediate nodes, meaning that some | |||
| bytes from a given fragment may be left in the VRB to be added to the | bytes from a given fragment may be left in the VRB to be added to the | |||
| next fragment. The reason for this to happen would be the need for | next fragment. The reason for this to happen would be the need for | |||
| space in the outgoing fragment that was not needed in the incoming | space in the outgoing fragment that was not needed in the incoming | |||
| fragment, for instance because the 6LoWPAN Header Compression is not | fragment, for instance because the 6LoWPAN Header Compression is not | |||
| as efficient on the outgoing link, e.g., if the IID of the source | as efficient on the outgoing link, e.g., if the Interface ID (IID) of | |||
| IPv6 address is elided on the first hop because it matches the MAC | the source IPv6 address is elided by the originator on the first hop | |||
| address, but cannot be on the next hops. This specification does not | because it matches the source MAC address, but cannot be on the next | |||
| allow this since fragments are recovered end-to-end. This means that | hops because the source MAC address changes. | |||
| the fragments that contain 6LoWPAN-compressed data must have enough | ||||
| slack in them to enable a lesser efficient compression in the next | ||||
| hops to still fit in one frame. | ||||
| 4. Terminology | This specification cannot allow this operation since fragments are | |||
| recovered end-to-end based on the fragment number. This means that | ||||
| the fragments that contain a 6LoWPAN-compressed header MUST have | ||||
| enough slack to enable a less efficient compression in the next hops | ||||
| that still fits in one MAC frame. For instance, if the IID of the | ||||
| source IPv6 address is elided by the originator, then it MUST compute | ||||
| the fragment_size as if the MTU was 8 bytes less. This way, the next | ||||
| hop can restore the source IID to the first fragment without | ||||
| impacting the second fragment. | ||||
| 4.1. BCP 14 | 2.3. Modifying the First Fragment | |||
| The compression of the Hop Limit, of the source and destination | ||||
| addresses, and of the Routing Header may change en route in a Route- | ||||
| Over mesh network. If the size of the first fragment is modified, | ||||
| then the intermediate node MUST adapt te datagram_size to reflect | ||||
| that difference. | ||||
| The intermediate node MUSt also save the difference of datagram_size | ||||
| of the first fragment in the VRB, and add it to the datagram_size and | ||||
| to the fragment_offset of all the subsequent fragments for that | ||||
| datagram. | ||||
| 3. Terminology | ||||
| 3.1. BCP 14 | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119][RFC8174] when, and only when, they appear in all | 14 [RFC2119][RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 4.2. References | 3.2. References | |||
| In this document, readers will encounter terms and concepts that are | In this document, readers will encounter terms and concepts that are | |||
| discussed in the following documents: | discussed in the following documents: | |||
| o "Problem Statement and Requirements for IPv6 over Low-Power | o "Problem Statement and Requirements for IPv6 over Low-Power | |||
| Wireless Personal Area Network (6LoWPAN) Routing" [RFC6606] | Wireless Personal Area Network (6LoWPAN) Routing" [RFC6606] | |||
| 4.3. 6LoWPAN Acronyms | 3.3. 6LoWPAN Acronyms | |||
| This document uses the following acronyms: | This document uses the following acronyms: | |||
| 6BBR: 6LoWPAN Backbone Router | 6BBR: 6LoWPAN Backbone Router | |||
| 6LBR: 6LoWPAN Border Router | 6LBR: 6LoWPAN Border Router | |||
| 6LN: 6LoWPAN Node | 6LN: 6LoWPAN Node | |||
| 6LR: 6LoWPAN Router | 6LR: 6LoWPAN Router | |||
| LLN: Low-Power and Lossy Network | LLN: Low-Power and Lossy Network | |||
| 4.4. Referenced Work | 3.4. Referenced Work | |||
| Past experience with fragmentation has shown that miss-associated or | Past experience with fragmentation has shown that miss-associated or | |||
| lost fragments can lead to poor network behavior and, occasionally, | lost fragments can lead to poor network behavior and, occasionally, | |||
| trouble at application layer. The reader is encouraged to read "IPv4 | trouble at application layer. The reader is encouraged to read "IPv4 | |||
| Reassembly Errors at High Data Rates" [RFC4963] and follow the | Reassembly Errors at High Data Rates" [RFC4963] and follow the | |||
| references for more information. | references for more information. | |||
| That experience led to the definition of "Path MTU discovery" | That experience led to the definition of "Path MTU discovery" | |||
| [RFC8201] (PMTUD) protocol that limits fragmentation over the | [RFC8201] (PMTUD) protocol that limits fragmentation over the | |||
| Internet. | Internet. | |||
| skipping to change at page 6, line 5 ¶ | skipping to change at page 6, line 46 ¶ | |||
| MPLS technique is leveraged in the present specification to forward | MPLS technique is leveraged in the present specification to forward | |||
| fragments that actually do not have a network layer header, since the | fragments that actually do not have a network layer header, since the | |||
| fragmentation occurs below IP. | fragmentation occurs below IP. | |||
| "LLN Minimal Fragment Forwarding" [I-D.watteyne-6lo-minimal-fragment] | "LLN Minimal Fragment Forwarding" [I-D.watteyne-6lo-minimal-fragment] | |||
| introduces the concept of a Virtual Reassembly Buffer (VRB) and an | introduces the concept of a Virtual Reassembly Buffer (VRB) and an | |||
| associated technique to forward fragments as they come, using the | associated technique to forward fragments as they come, using the | |||
| datagram_tag as a label in a fashion similar to MLPS. This | datagram_tag as a label in a fashion similar to MLPS. This | |||
| specification reuses that technique with slightly modified controls. | specification reuses that technique with slightly modified controls. | |||
| 4.5. New Terms | 3.5. New Terms | |||
| This specification uses the following terms: | This specification uses the following terms: | |||
| 6LoWPAN endpoints | 6LoWPAN endpoints | |||
| The LLN nodes in charge of generating or expanding a 6LoWPAN | The LLN nodes in charge of generating or expanding a 6LoWPAN | |||
| header from/to a full IPv6 packet. The 6LoWPAN endpoints are the | header from/to a full IPv6 packet. The 6LoWPAN endpoints are the | |||
| points where fragmentation and reassembly take place. | points where fragmentation and reassembly take place. | |||
| 5. New Dispatch types and headers | 4. New Dispatch types and headers | |||
| This specification enables the 6LoWPAN fragmentation sublayer to | This specification enables the 6LoWPAN fragmentation sublayer to | |||
| provide an MTU up to 2048 bytes to the upper layer, which can be the | provide an MTU up to 2048 bytes to the upper layer, which can be the | |||
| 6LoWPAN Header Compression sublayer that is defined in the | 6LoWPAN Header Compression sublayer that is defined in the | |||
| "Compression Format for IPv6 Datagrams" [RFC6282] specification. In | "Compression Format for IPv6 Datagrams" [RFC6282] specification. In | |||
| order to achieve this, this specification enables the fragmentation | order to achieve this, this specification enables the fragmentation | |||
| and the reliable transmission of fragments over a multihop 6LoWPAN | and the reliable transmission of fragments over a multihop 6LoWPAN | |||
| mesh network. | mesh network. | |||
| This specification provides a technique that is derived from MPLS in | This specification provides a technique that is derived from MPLS in | |||
| skipping to change at page 7, line 20 ¶ | skipping to change at page 8, line 5 ¶ | |||
| | 11 101011 | RFRAG-ECHO - RFRAG Ack with ECN Echo | | | 11 101011 | RFRAG-ECHO - RFRAG Ack with ECN Echo | | |||
| +------------+------------------------------------------+ | +------------+------------------------------------------+ | |||
| Figure 1: Additional Dispatch Value Bit Patterns | Figure 1: Additional Dispatch Value Bit Patterns | |||
| In the following sections, the semantics of "datagram_tag" are | In the following sections, the semantics of "datagram_tag" are | |||
| unchanged from [RFC4944] Section 5.3. "Fragmentation Type and | unchanged from [RFC4944] Section 5.3. "Fragmentation Type and | |||
| Header." and is compatible with the fragment forwarding operation | Header." and is compatible with the fragment forwarding operation | |||
| described in [I-D.watteyne-6lo-minimal-fragment]. | described in [I-D.watteyne-6lo-minimal-fragment]. | |||
| 5.1. Recoverable Fragment Dispatch type and Header | 4.1. Recoverable Fragment Dispatch type and Header | |||
| In this specification, the size and offset of the fragments are | In this specification, the size and offset of the fragments are | |||
| expressed on the compressed packet form as opposed to the | expressed on the compressed packet form as opposed to the | |||
| uncompressed - native - packet form. | uncompressed - native - packet form. | |||
| The first fragment is recognized by a sequence of 0; it carries its | The first fragment is recognized by a sequence of 0; it carries its | |||
| fragment_size and the datagram_size of the compressed packet, whereas | fragment_size and the datagram_size of the compressed packet, whereas | |||
| the other fragments carry their fragment_size and fragment_offset. | the other fragments carry their fragment_size and fragment_offset. | |||
| The last fragment for a datagram is recognized when its | The last fragment for a datagram is recognized when its | |||
| fragment_offset and its fragment_size add up to the datagram_size. | fragment_offset and its fragment_size add up to the datagram_size. | |||
| Recoverable Fragments are sequenced and a bitmap is used in the RFRAG | Recoverable Fragments are sequenced and a bitmap is used in the RFRAG | |||
| Acknowledgment to indicate the received fragments by setting the | Acknowledgment to indicate the received fragments by setting the | |||
| individual bits that correspond to their sequence. | individual bits that correspond to their sequence. | |||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |1 1 1 0 1 0 0 X|E|fragment_size| datagram_tag | | |1 1 1 0 1 0 0|E| datagram_tag | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |sequence | fragment_offset | | |X| sequence| fragment_size | fragment_offset | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| X set == Ack Requested | ||||
| Figure 2: RFRAG Dispatch type and Header | X set == Ack Requested | |||
| X: 1 bit; Ack Requested: when set, the sender requires an RFRAG | Figure 2: RFRAG Dispatch type and Header | |||
| Acknowledgment from the receiver. | ||||
| E: 1 bit; Explicit Congestion Notification; the "E" flag is reset by | E: 1 bit; Explicit Congestion Notification; the "E" flag is reset by | |||
| the source of the fragment and set by intermediate routers to | the source of the fragment and set by intermediate routers to | |||
| signal that this fragment experienced congestion along its path. | signal that this fragment experienced congestion along its path. | |||
| Fragment_size: 7 bit unsigned integer; the size of this fragment in | Fragment_size: 10 bit unsigned integer; the size of this fragment in | |||
| a unit that depends on the MAC layer technology. For IEEE Std. | a unit that depends on the MAC layer technology. For IEEE Std. | |||
| 802.15.4, the unit is octet, and the maximum fragment size, which | 802.15.4, the unit is octet, and the maximum fragment size, which | |||
| is constrained by the maximum frame size of 128 octet minus the | is constrained by the maximum frame size of 128 octet minus the | |||
| overheads of the MAC and Fragment Headers, is not limited by this | overheads of the MAC and Fragment Headers, is not limited by this | |||
| encoding. | encoding. | |||
| X: 1 bit; Ack Requested: when set, the sender requires an RFRAG | ||||
| Acknowledgment from the receiver. | ||||
| Sequence: 5 bit unsigned integer; the sequence number of the | Sequence: 5 bit unsigned integer; the sequence number of the | |||
| fragment. Fragments are sequence numbered [0..N] where N is in | fragment. Fragments are sequence numbered [0..N] where N is in | |||
| [0..31]. A sequence of 0 indicates the first fragment in a | [0..31]. A sequence of 0 indicates the first fragment in a | |||
| datagram. For IEEE Std. 802.15.4, as long as the overheads enable | datagram. For IEEE Std. 802.15.4, as long as the overheads enable | |||
| a fragment size of 64 octets or more, this enables to fragment a | a fragment size of 64 octets or more, this enables to fragment a | |||
| packet of 2047 octets. | packet of 2047 octets. | |||
| Fragment_offset: 11 bit unsigned integer; | Fragment_offset: 16 bit unsigned integer; | |||
| * When set to a non-0 value, the semantics of the Fragment_offset | * When set to a non-0 value, the semantics of the Fragment_offset | |||
| depends on the value of the Sequence. | depends on the value of the Sequence. | |||
| + When the Sequence is not 0, this field indicates the offset | + When the Sequence is not 0, this field indicates the offset | |||
| of the fragment in the compressed form. The fragment should | of the fragment in the compressed form. The fragment should | |||
| be forwarded based on an existing VRB as described in | be forwarded based on an existing VRB as described in | |||
| Section 7.2, or silently dropped if none is found. | Section 6.2, or silently dropped if none is found. | |||
| + For a first fragment (i.e. with a sequence of 0), this field | + For a first fragment (i.e. with a sequence of 0), this field | |||
| is overloaded to indicate the total_size of the compressed | is overloaded to indicate the total_size of the compressed | |||
| packet, to help the receiver allocate an adapted buffer for | packet, to help the receiver allocate an adapted buffer for | |||
| the reception and reassembly operations. This format limits | the reception and reassembly operations. This format limits | |||
| the maximum MTU on a 6LoWPAN link to 2047 bytes, but 1280 | the maximum MTU on a 6LoWPAN link to 2047 bytes, but 1280 | |||
| bytes is the recommended value to avoid issues with IPV6 | bytes is the recommended value to avoid issues with IPV6 | |||
| Path MTU Discovery [RFC8201]. The fragment should be routed | Path MTU Discovery [RFC8201]. The fragment should be routed | |||
| based on the destination IPv6 address, and an VRB state | based on the destination IPv6 address, and an VRB state | |||
| should be installed as described in Section 7.1. | should be installed as described in Section 6.1. | |||
| * When set to 0, this field indicates an abort condition and all | * When set to 0, this field indicates an abort condition and all | |||
| state regarding the datagram should be cleaned up once the | state regarding the datagram should be cleaned up once the | |||
| processing of the fragment is complete; the processing of the | processing of the fragment is complete; the processing of the | |||
| fragment depends on whether there is a VRB already established | fragment depends on whether there is a VRB already established | |||
| for this datagram, and the next hop is still reachable: | for this datagram, and the next hop is still reachable: | |||
| + if a VRB already exists and is not broken, the fragment is | + if a VRB already exists and is not broken, the fragment is | |||
| to be forwarded along the associated Label Switched Path | to be forwarded along the associated Label Switched Path | |||
| (LSP) as described in Section 7.2, but regardless of the | (LSP) as described in Section 6.2, but regardless of the | |||
| value of the Sequence field; | value of the Sequence field; | |||
| + else, if the Sequence is 0, then the fragment is to be | + else, if the Sequence is 0, then the fragment is to be | |||
| routed as described in Section 7.1 but no state is conserved | routed as described in Section 6.1 but no state is conserved | |||
| afterwards. | afterwards. | |||
| If the fragment cannot be forwarded or routed, then an abort | If the fragment cannot be forwarded or routed, then an abort | |||
| RFRAG-ACK is sent back to the source. | RFRAG-ACK is sent back to the source. | |||
| 5.2. RFRAG Acknowledgment Dispatch type and Header | 4.2. RFRAG Acknowledgment Dispatch type and Header | |||
| This specification also defines a 4-octet RFRAG Acknowledgment bitmap | This specification also defines a 4-octet RFRAG Acknowledgment bitmap | |||
| that is used by the reassembling end point to confirm selectively the | that is used by the reassembling end point to confirm selectively the | |||
| reception of individual fragments. A given offset in the bitmap maps | reception of individual fragments. A given offset in the bitmap maps | |||
| one to one with a given sequence number. | one to one with a given sequence number. | |||
| The offset of the bit in the bitmap indicates which fragment is | The offset of the bit in the bitmap indicates which fragment is | |||
| acknowledged as follows: | acknowledged as follows: | |||
| 1 2 3 | 1 2 3 | |||
| skipping to change at page 10, line 5 ¶ | skipping to change at page 10, line 36 ¶ | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |1|0|0|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|1|1|1|0|0|0|0|0|0|0|0|0|0|0| | |1|0|0|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|1|1|1|0|0|0|0|0|0|0|0|0|0|0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: Expanding 3 octets encoding | Figure 4: Expanding 3 octets encoding | |||
| The RFRAG Acknowledgment Bitmap is included in a RFRAG Acknowledgment | The RFRAG Acknowledgment Bitmap is included in a RFRAG Acknowledgment | |||
| header, as follows: | header, as follows: | |||
| 1 2 3 | 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |1 1 1 0 1 0 1 Y| datagram_tag | | |1 1 1 0 1 0 1 Y| datagram_tag | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | RFRAG Acknowledgment Bitmap (32 bits) | | | RFRAG Acknowledgment Bitmap (32 bits) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 5: RFRAG Acknowledgment Dispatch type and Header | Figure 5: RFRAG Acknowledgment Dispatch type and Header | |||
| Y: 1 bit; Explicit Congestion Notification Echo | Y: 1 bit; Explicit Congestion Notification Echo | |||
| When set, the sender indicates that at least one of the | When set, the sender indicates that at least one of the | |||
| acknowledged fragments was received with an Explicit Congestion | acknowledged fragments was received with an Explicit Congestion | |||
| Notification, indicating that the path followed by the fragments | Notification, indicating that the path followed by the fragments | |||
| is subject to congestion. | is subject to congestion. | |||
| RFRAG Acknowledgment Bitmap | RFRAG Acknowledgment Bitmap | |||
| An RFRAG Acknowledgment Bitmap, whereby setting the bit at offset | An RFRAG Acknowledgment Bitmap, whereby setting the bit at offset | |||
| x indicates that fragment x was received, as shown in Figure 3. | x indicates that fragment x was received, as shown in Figure 3. | |||
| All 0's is a NULL bitmap that indicates that the fragmentation | All 0's is a NULL bitmap that indicates that the fragmentation | |||
| process is aborted. All 1's is a FULL bitmap that indicates that | process is aborted. All 1's is a FULL bitmap that indicates that | |||
| the fragmentation process is complete, all fragments were received | the fragmentation process is complete, all fragments were received | |||
| at the reassembly end point. | at the reassembly end point. | |||
| 6. Fragments Recovery | 5. Fragments Recovery | |||
| The Recoverable Fragment headers RFRAG and RFRAG-ARQ are used to | The Recoverable Fragment headers RFRAG and RFRAG-ARQ are used to | |||
| transport a fragment and optionally request an RFRAG Acknowledgment | transport a fragment and optionally request an RFRAG Acknowledgment | |||
| that will confirm the good reception of a one or more fragments. An | that will confirm the good reception of a one or more fragments. An | |||
| RFRAG Acknowledgment can optionally carry an ECN indication; it is | RFRAG Acknowledgment can optionally carry an ECN indication; it is | |||
| carried as a standalone header in a message that is sent back to the | carried as a standalone header in a message that is sent back to the | |||
| 6LoWPAN endpoint that was the source of the fragments, as known by | 6LoWPAN endpoint that was the source of the fragments, as known by | |||
| its MAC address. The process ensures that at every hop, the source | its MAC address. The process ensures that at every hop, the source | |||
| MAC address and the datagram_tag in the received fragment are enough | MAC address and the datagram_tag in the received fragment are enough | |||
| information to send the RFRAG Acknowledgment back towards the source | information to send the RFRAG Acknowledgment back towards the source | |||
| skipping to change at page 12, line 19 ¶ | skipping to change at page 13, line 7 ¶ | |||
| The receiver might need to cancel the process of a fragmented packet | The receiver might need to cancel the process of a fragmented packet | |||
| for internal reasons, for instance if it is out of reassembly | for internal reasons, for instance if it is out of reassembly | |||
| buffers, or considers that this packet is already fully reassembled | buffers, or considers that this packet is already fully reassembled | |||
| and passed to the upper layer. In that case, the receiver SHOULD | and passed to the upper layer. In that case, the receiver SHOULD | |||
| indicate so to the sender with a NULL bitmap in a RFRAG | indicate so to the sender with a NULL bitmap in a RFRAG | |||
| Acknowledgment. Upon an acknowledgment with a NULL bitmap, the | Acknowledgment. Upon an acknowledgment with a NULL bitmap, the | |||
| sender endpoint MUST abort the transmission of the fragmented | sender endpoint MUST abort the transmission of the fragmented | |||
| datagram. | datagram. | |||
| 7. Forwarding Fragments | 6. Forwarding Fragments | |||
| It is assumed that the first Fragment is large enough to carry the | It is assumed that the first Fragment is large enough to carry the | |||
| IPv6 header and make routing decisions. If that is not so, then this | IPv6 header and make routing decisions. If that is not so, then this | |||
| specification MUST NOT be used. | specification MUST NOT be used. | |||
| This specification extends the Virtual Reassembly Buffer (VRB) | This specification extends the Virtual Reassembly Buffer (VRB) | |||
| technique to forward fragments with no intermediate reconstruction of | technique to forward fragments with no intermediate reconstruction of | |||
| the entire packet. The first fragment carries the IP header and it | the entire packet. The first fragment carries the IP header and it | |||
| is routed all the way from the fragmenting end point to the | is routed all the way from the fragmenting end point to the | |||
| reassembling end point. Upon the first fragment, the routers along | reassembling end point. Upon the first fragment, the routers along | |||
| the path install a label-switched path (LSP), and the following | the path install a label-switched path (LSP), and the following | |||
| fragments are label-switched along that path. As a consequence, | fragments are label-switched along that path. As a consequence, | |||
| alternate routes not possible for individual fragments. The | alternate routes not possible for individual fragments. The | |||
| datagram_tag is used to carry the label, that is swapped at each hop. | datagram_tag is used to carry the label, that is swapped at each hop. | |||
| All fragments follow the same path and fragments are delivered in the | All fragments follow the same path and fragments are delivered in the | |||
| order at which they are sent. | order at which they are sent. | |||
| 7.1. Upon the first fragment | 6.1. Upon the first fragment | |||
| In Route-Over mode, the source and destination MAC addressed in a | In Route-Over mode, the source and destination MAC addressed in a | |||
| frame change at each hop. The label that is formed and placed in the | frame change at each hop. The label that is formed and placed in the | |||
| datagram_tag is associated to the source MAC and only valid (and | datagram_tag is associated to the source MAC and only valid (and | |||
| unique) for that source MAC. Upon a first fragment (i.e. with a | unique) for that source MAC. Upon a first fragment (i.e. with a | |||
| sequence of zero), a VRB and the associated LSP state are created for | sequence of zero), a VRB and the associated LSP state are created for | |||
| the tuple (source MAC address, datagram_tag) and the fragment is | the tuple (source MAC address, datagram_tag) and the fragment is | |||
| forwarded along the IPv6 route that matches the destination IPv6 | forwarded along the IPv6 route that matches the destination IPv6 | |||
| address in the IPv6 header as prescribed by | address in the IPv6 header as prescribed by | |||
| [I-D.watteyne-6lo-minimal-fragment]. The LSP state enables to match | [I-D.watteyne-6lo-minimal-fragment]. The LSP state enables to match | |||
| the (previous MAC address, datagram_tag) in an incoming fragment to | the (previous MAC address, datagram_tag) in an incoming fragment to | |||
| the tuple (next MAC address, swapped datagram_tag) used in the | the tuple (next MAC address, swapped datagram_tag) used in the | |||
| forwarded fragment and points at the VRB. In addition, the router | forwarded fragment and points at the VRB. In addition, the router | |||
| also forms a Reverse LSP state indexed by the MAC address of the next | also forms a Reverse LSP state indexed by the MAC address of the next | |||
| hop and the swapped datagram_tag. This reverse LSP state also points | hop and the swapped datagram_tag. This reverse LSP state also points | |||
| at the VRB and enables to match the (next MAC address, | at the VRB and enables to match the (next MAC address, | |||
| swapped_datagram_tag) found in an RFRAG Acknowledgment to the tuple | swapped_datagram_tag) found in an RFRAG Acknowledgment to the tuple | |||
| (previous MAC address, datagram_tag) used when forwarding a Fragment | (previous MAC address, datagram_tag) used when forwarding a Fragment | |||
| Acknowledgment (RFRAG-ACK) back to the sender endpoint. | Acknowledgment (RFRAG-ACK) back to the sender endpoint. | |||
| 7.2. Upon the next fragments | 6.2. Upon the next fragments | |||
| Upon a next fragment (i.e. with a non-zero sequence), the router | Upon a next fragment (i.e. with a non-zero sequence), the router | |||
| looks up a LSP indexed by the tuple (MAC address, datagram_tag) found | looks up a LSP indexed by the tuple (MAC address, datagram_tag) found | |||
| in the fragment. If it is found, the router forwards the fragment | in the fragment. If it is found, the router forwards the fragment | |||
| using the associated VRB as prescribed by | using the associated VRB as prescribed by | |||
| [I-D.watteyne-6lo-minimal-fragment]. | [I-D.watteyne-6lo-minimal-fragment]. | |||
| if the VRB for the tuple is not found, the router builds an RFRAG-ACK | if the VRB for the tuple is not found, the router builds an RFRAG-ACK | |||
| to abort the transmission of the packet. The resulting message has | to abort the transmission of the packet. The resulting message has | |||
| the following information: | the following information: | |||
| skipping to change at page 13, line 34 ¶ | skipping to change at page 14, line 23 ¶ | |||
| o The datagram_tag set to the datagram_tag found in the fragment | o The datagram_tag set to the datagram_tag found in the fragment | |||
| o A null bitmap is used to signal the abort condition | o A null bitmap is used to signal the abort condition | |||
| At this point the router is all set and can send the RFRAG-ACK back | At this point the router is all set and can send the RFRAG-ACK back | |||
| to the previous router. The RFRAG-ACK should normally be forwarded | to the previous router. The RFRAG-ACK should normally be forwarded | |||
| all the way to the source using the reverse LSP state in the VRBs in | all the way to the source using the reverse LSP state in the VRBs in | |||
| the intermediate routers as described in the next section. | the intermediate routers as described in the next section. | |||
| 7.3. Upon the RFRAG Acknowledgments | 6.3. Upon the RFRAG Acknowledgments | |||
| Upon an RFRAG-ACK, the router looks up a Reverse LSP indexed by the | Upon an RFRAG-ACK, the router looks up a Reverse LSP indexed by the | |||
| tuple (MAC address, datagram_tag), which are respectively the source | tuple (MAC address, datagram_tag), which are respectively the source | |||
| MAC address of the received frame and the received datagram_tag. If | MAC address of the received frame and the received datagram_tag. If | |||
| it is found, the router forwards the fragment using the associated | it is found, the router forwards the fragment using the associated | |||
| VRB as prescribed by [I-D.watteyne-6lo-minimal-fragment], but using | VRB as prescribed by [I-D.watteyne-6lo-minimal-fragment], but using | |||
| the Reverse LSP so that the RFRAG-ACK flows back to the sender | the Reverse LSP so that the RFRAG-ACK flows back to the sender | |||
| endpoint. | endpoint. | |||
| If the Reverse LSP is not found, the router MUST silently drop the | If the Reverse LSP is not found, the router MUST silently drop the | |||
| RFRAG-ACK message. | RFRAG-ACK message. | |||
| Either way, if the RFRAG-ACK indicates either an error (NULL bitmap) | Either way, if the RFRAG-ACK indicates either an error (NULL bitmap) | |||
| or that the fragment was entirely received (FULL bitmap), arms a | or that the fragment was entirely received (FULL bitmap), arms a | |||
| short timer, and upon timeout, the VRB and all associate state are | short timer, and upon timeout, the VRB and all associate state are | |||
| destroyed. During that time, fragments of that datagram may still be | destroyed. During that time, fragments of that datagram may still be | |||
| received, e.g. if the RFRAG-ACK was lost on the way back and the | received, e.g. if the RFRAG-ACK was lost on the way back and the | |||
| source retried the last fragment. In that case, the router sends an | source retried the last fragment. In that case, the router sends an | |||
| abort RFRAG-ACK along the Reverse LSP to complete the clean up. | abort RFRAG-ACK along the Reverse LSP to complete the clean up. | |||
| 8. Security Considerations | 7. Security Considerations | |||
| The process of recovering fragments does not appear to create any | The process of recovering fragments does not appear to create any | |||
| opening for new threat compared to "Transmission of IPv6 Packets over | opening for new threat compared to "Transmission of IPv6 Packets over | |||
| IEEE 802.15.4 Networks" [RFC4944]. | IEEE 802.15.4 Networks" [RFC4944]. | |||
| 9. IANA Considerations | 8. IANA Considerations | |||
| Need extensions for formats defined in "Transmission of IPv6 Packets | Need extensions for formats defined in "Transmission of IPv6 Packets | |||
| over IEEE 802.15.4 Networks" [RFC4944]. | over IEEE 802.15.4 Networks" [RFC4944]. | |||
| 10. Acknowledgments | 9. Acknowledgments | |||
| The author wishes to thank Thomas Watteyne and Michael Richardson for | The author wishes to thank Thomas Watteyne and Michael Richardson for | |||
| in-depth reviews and comments. Also many thanks to Jonathan Hui, Jay | in-depth reviews and comments. Also many thanks to Jonathan Hui, Jay | |||
| Werb, Christos Polyzois, Soumitri Kolavennu, Pat Kinney, Margaret | Werb, Christos Polyzois, Soumitri Kolavennu, Pat Kinney, Margaret | |||
| Wasserman, Richard Kelsey, Carsten Bormann and Harry Courtice for | Wasserman, Richard Kelsey, Carsten Bormann and Harry Courtice for | |||
| their various contributions. | their various contributions. | |||
| 11. References | 10. References | |||
| 11.1. Normative References | 10.1. Normative References | |||
| [I-D.watteyne-6lo-minimal-fragment] | [I-D.watteyne-6lo-minimal-fragment] | |||
| Watteyne, T., Bormann, C., and P. Thubert, "LLN Minimal | Watteyne, T., Bormann, C., and P. Thubert, "LLN Minimal | |||
| Fragment Forwarding", draft-watteyne-6lo-minimal- | Fragment Forwarding", draft-watteyne-6lo-minimal- | |||
| fragment-01 (work in progress), March 2018. | fragment-02 (work in progress), July 2018. | |||
| [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, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, | [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, | |||
| "Transmission of IPv6 Packets over IEEE 802.15.4 | "Transmission of IPv6 Packets over IEEE 802.15.4 | |||
| Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007, | Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007, | |||
| <https://www.rfc-editor.org/info/rfc4944>. | <https://www.rfc-editor.org/info/rfc4944>. | |||
| skipping to change at page 15, line 16 ¶ | skipping to change at page 16, line 5 ¶ | |||
| Routing Header for Source Routes with the Routing Protocol | Routing Header for Source Routes with the Routing Protocol | |||
| for Low-Power and Lossy Networks (RPL)", RFC 6554, | for Low-Power and Lossy Networks (RPL)", RFC 6554, | |||
| DOI 10.17487/RFC6554, March 2012, | DOI 10.17487/RFC6554, March 2012, | |||
| <https://www.rfc-editor.org/info/rfc6554>. | <https://www.rfc-editor.org/info/rfc6554>. | |||
| [RFC8025] Thubert, P., Ed. and R. Cragie, "IPv6 over Low-Power | [RFC8025] Thubert, P., Ed. and R. Cragie, "IPv6 over Low-Power | |||
| Wireless Personal Area Network (6LoWPAN) Paging Dispatch", | Wireless Personal Area Network (6LoWPAN) Paging Dispatch", | |||
| RFC 8025, DOI 10.17487/RFC8025, November 2016, | RFC 8025, DOI 10.17487/RFC8025, November 2016, | |||
| <https://www.rfc-editor.org/info/rfc8025>. | <https://www.rfc-editor.org/info/rfc8025>. | |||
| [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | ||||
| "IPv6 over Low-Power Wireless Personal Area Network | ||||
| (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | ||||
| April 2017, <https://www.rfc-editor.org/info/rfc8138>. | ||||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| 11.2. Informative References | 10.2. Informative References | |||
| [I-D.ietf-6tisch-architecture] | [I-D.ietf-6tisch-architecture] | |||
| Thubert, P., "An Architecture for IPv6 over the TSCH mode | Thubert, P., "An Architecture for IPv6 over the TSCH mode | |||
| of IEEE 802.15.4", draft-ietf-6tisch-architecture-14 (work | of IEEE 802.15.4", draft-ietf-6tisch-architecture-19 (work | |||
| in progress), April 2018. | in progress), December 2018. | |||
| [IEEE.802.15.4] | [IEEE.802.15.4] | |||
| IEEE, "IEEE Standard for Low-Rate Wireless Networks", | IEEE, "IEEE Standard for Low-Rate Wireless Networks", | |||
| IEEE Standard 802.15.4, DOI 10.1109/IEEE | IEEE Standard 802.15.4, DOI 10.1109/IEEE | |||
| P802.15.4-REVd/D01, | P802.15.4-REVd/D01, | |||
| <http://ieeexplore.ieee.org/document/7460875/>. | <http://ieeexplore.ieee.org/document/7460875/>. | |||
| [RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, | [RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, | |||
| RFC 2914, DOI 10.17487/RFC2914, September 2000, | RFC 2914, DOI 10.17487/RFC2914, September 2000, | |||
| <https://www.rfc-editor.org/info/rfc2914>. | <https://www.rfc-editor.org/info/rfc2914>. | |||
| skipping to change at page 19, line 47 ¶ | skipping to change at page 20, line 44 ¶ | |||
| for which an acknowledgment was not received yet. It must be noted | for which an acknowledgment was not received yet. It must be noted | |||
| that the number of outstanding fragments should not exceed the number | that the number of outstanding fragments should not exceed the number | |||
| of hops in the network, but the way to figure the number of hops is | of hops in the network, but the way to figure the number of hops is | |||
| out of scope for this document. | out of scope for this document. | |||
| Congestion on the forward path can also be indicated by an Explicit | Congestion on the forward path can also be indicated by an Explicit | |||
| Congestion Notification (ECN) mechanism. Though whether and how ECN | Congestion Notification (ECN) mechanism. Though whether and how ECN | |||
| [RFC3168] is carried out over the LoWPAN is out of scope, this draft | [RFC3168] is carried out over the LoWPAN is out of scope, this draft | |||
| provides a way for the destination endpoint to echo an ECN indication | provides a way for the destination endpoint to echo an ECN indication | |||
| back to the source endpoint in an acknowledgment message as | back to the source endpoint in an acknowledgment message as | |||
| represented in Figure 5 in Section 5.2. | represented in Figure 5 in Section 4.2. | |||
| It must be noted that congestion and collision are different topics. | It must be noted that congestion and collision are different topics. | |||
| In particular, when a mesh operates on a same channel over multiple | In particular, when a mesh operates on a same channel over multiple | |||
| hops, then the forwarding of a fragment over a certain hop may | hops, then the forwarding of a fragment over a certain hop may | |||
| collide with the forwarding of a next fragment that is following over | collide with the forwarding of a next fragment that is following over | |||
| a previous hop but in a same interference domain. This draft enables | a previous hop but in a same interference domain. This draft enables | |||
| an end-to-end flow control, but leaves it to the sender stack to pace | an end-to-end flow control, but leaves it to the sender stack to pace | |||
| individual fragments within a transmit window, so that a given | individual fragments within a transmit window, so that a given | |||
| fragment is sent only when the previous fragment has had a chance to | fragment is sent only when the previous fragment has had a chance to | |||
| progress beyond the interference domain of this hop. In the case of | progress beyond the interference domain of this hop. In the case of | |||
| skipping to change at page 20, line 40 ¶ | skipping to change at page 21, line 36 ¶ | |||
| recommended for that computation. | recommended for that computation. | |||
| The reader is encouraged to read through "Congestion Control | The reader is encouraged to read through "Congestion Control | |||
| Principles" [RFC2914]. Additionally [RFC7567] and [RFC5681] provide | Principles" [RFC2914]. Additionally [RFC7567] and [RFC5681] provide | |||
| deeper information on why this mechanism is needed and how TCP | deeper information on why this mechanism is needed and how TCP | |||
| handles Congestion Control. Basically, the goal here is to manage | handles Congestion Control. Basically, the goal here is to manage | |||
| the amount of fragments present in the network; this is achieved by | the amount of fragments present in the network; this is achieved by | |||
| to reducing the number of outstanding fragments over a congested path | to reducing the number of outstanding fragments over a congested path | |||
| by throttling the sources. | by throttling the sources. | |||
| Section 6 describes how the sender decides how many fragments are | Section 5 describes how the sender decides how many fragments are | |||
| (re)sent before an acknowledgment is required, and how the sender | (re)sent before an acknowledgment is required, and how the sender | |||
| adapts that number to the network conditions. | adapts that number to the network conditions. | |||
| Author's Address | Author's Address | |||
| Pascal Thubert (editor) | Pascal Thubert (editor) | |||
| Cisco Systems, Inc | Cisco Systems, Inc | |||
| Building D | Building D | |||
| 45 Allee des Ormes - BP1200 | 45 Allee des Ormes - BP1200 | |||
| MOUGINS - Sophia Antipolis 06254 | MOUGINS - Sophia Antipolis 06254 | |||
| FRANCE | FRANCE | |||
| Phone: +33 497 23 26 34 | Phone: +33 497 23 26 34 | |||
| Email: pthubert@cisco.com | Email: pthubert@cisco.com | |||
| End of changes. 49 change blocks. | ||||
| 91 lines changed or deleted | 136 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/ | ||||