| < draft-ietf-6lo-fragment-recovery-16.txt | draft-ietf-6lo-fragment-recovery-17.txt > | |||
|---|---|---|---|---|
| 6lo P. Thubert, Ed. | 6lo P. Thubert, Ed. | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Updates: 4944 (if approved) 9 March 2020 | Updates: 4944 (if approved) 18 March 2020 | |||
| Intended status: Standards Track | Intended status: Standards Track | |||
| Expires: 10 September 2020 | Expires: 19 September 2020 | |||
| 6LoWPAN Selective Fragment Recovery | 6LoWPAN Selective Fragment Recovery | |||
| draft-ietf-6lo-fragment-recovery-16 | draft-ietf-6lo-fragment-recovery-17 | |||
| 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 10 September 2020. | This Internet-Draft will expire on 19 September 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 52 ¶ | skipping to change at page 2, line 52 ¶ | |||
| 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 (on the order of a few | the traffic consists of small chunks of data (on the order of a few | |||
| bytes to a few tens of bytes) at a time. Given that an IEEE Std. | bytes to a few tens of bytes) at a time. Given that an IEEE Std. | |||
| 802.15.4 [IEEE.802.15.4] frame can carry a payload of 74 bytes or | 802.15.4 [IEEE.802.15.4] frame can carry a payload of 74 bytes or | |||
| more, fragmentation is usually not required. However, and though | more, fragmentation is usually not required. However, and though | |||
| this happens only occasionally, a number of mission critical | this happens only occasionally, a number of mission critical | |||
| applications do require the capability to transfer larger chunks of | applications do require the capability to transfer larger chunks of | |||
| data, for instance to support the firmware upgrade of the LLN nodes | data, for instance to support the firmware upgrade of the LLN nodes | |||
| or the extraction of logs from LLN nodes. In the former case, the | or the extraction of logs from LLN nodes. | |||
| large chunk of data is transferred to the LLN node, whereas in the | ||||
| latter, the large chunk flows away from the LLN node. In both cases, | In the former case, the large chunk of data is transferred to the LLN | |||
| the size can be on the order of 10 kilobytes or more and an end-to- | node, whereas in the latter, the large chunk flows away from the LLN | |||
| end reliable transport is required. | node. In both cases, the size can be on the order of 10 kilobytes or | |||
| more and an end-to-end reliable transport is required. | ||||
| "Transmission of IPv6 Packets over IEEE 802.15.4 Networks" [RFC4944] | "Transmission of IPv6 Packets over IEEE 802.15.4 Networks" [RFC4944] | |||
| defines the original 6LoWPAN datagram fragmentation mechanism for | defines the original 6LoWPAN datagram fragmentation mechanism for | |||
| LLNs. One critical issue with this original design is that routing | LLNs. One critical issue with this original design is that routing | |||
| an IPv6 [RFC8200] packet across a route-over mesh requires the | an IPv6 [RFC8200] packet across a route-over mesh requires the | |||
| reassembly of the packet at each hop. The "6TiSCH Architecture" | reassembly of the packet at each hop. The "6TiSCH Architecture" | |||
| [I-D.ietf-6tisch-architecture] indicates that this may cause latency | [I-D.ietf-6tisch-architecture] indicates that this may cause latency | |||
| along a path and impact critical resources such as memory and | along a path and impact critical resources such as memory and | |||
| battery; to alleviate those undesirable effects it recommends using a | battery; to alleviate those undesirable effects it recommends using a | |||
| 6LoWPAN Fragment Forwarding (6FF) technique . | 6LoWPAN Fragment Forwarding (6FF) technique . | |||
| skipping to change at page 3, line 30 ¶ | skipping to change at page 3, line 31 ¶ | |||
| behavior that all 6FF techniques including this specification follow, | behavior that all 6FF techniques including this specification follow, | |||
| and presents the associated caveats. In particular, the routing | and presents the associated caveats. In particular, the routing | |||
| information is fully indicated in the first fragment, which is always | information is fully indicated in the first fragment, which is always | |||
| forwarded first. With this specification, the first fragment is | forwarded first. With this specification, the first fragment is | |||
| identified by a Sequence of 0 as opposed to a dispatch type in | identified by a Sequence of 0 as opposed to a dispatch type in | |||
| [RFC4944]. A state is formed and used to forward all the next | [RFC4944]. A state is formed and used to forward all the next | |||
| fragments along the same path. The Datagram_Tag is locally | fragments along the same path. The Datagram_Tag is locally | |||
| significant to the Layer-2 source of the packet and is swapped at | significant to the Layer-2 source of the packet and is swapped at | |||
| each hop, more in Section 6. This specification encodes the | each hop, more in Section 6. This specification encodes the | |||
| Datagram_Tag in one byte, which will saturate if more than 256 | Datagram_Tag in one byte, which will saturate if more than 256 | |||
| datagram transit in the fragmented form over a same hop at the same | datagrams transit in fragmented form over a single hop at the same | |||
| time. This is not realistic at the time of this writing. Should | time. This is not realistic at the time of this writing. Should | |||
| this happen in a new 6LoWPAN technology, a node will need to use | this happen in a new 6LoWPAN technology, a node will need to use | |||
| several Link-Layer addresses to increase its indexing capacity. | several Link-Layer addresses to increase its indexing capacity. | |||
| "Virtual reassembly buffers in 6LoWPAN" [LWIG-FRAG](VRB) proposes a | "Virtual reassembly buffers in 6LoWPAN" [LWIG-FRAG](VRB) proposes a | |||
| 6FF technique that is compatible with [RFC4944] without the need to | 6FF technique that is compatible with [RFC4944] without the need to | |||
| define a new protocol. However, adding that capability alone to the | define a new protocol. However, adding that capability alone to the | |||
| local implementation of the original 6LoWPAN fragmentation would not | local implementation of the original 6LoWPAN fragmentation would not | |||
| address the inherent fragility of fragmentation (see [FRAG-ILE]) in | address the inherent fragility of fragmentation (see [FRAG-ILE]) in | |||
| particular the issues of resources locked on the reassembling | particular the issues of resources locked on the reassembling | |||
| skipping to change at page 4, line 21 ¶ | skipping to change at page 4, line 21 ¶ | |||
| [RFC4944] is also missing signaling to abort a multi-fragment | [RFC4944] is also missing signaling to abort a multi-fragment | |||
| transmission at any time and from either end, and, if the capability | transmission at any time and from either end, and, if the capability | |||
| to forward fragments is implemented, clean up the related state in | to forward fragments is implemented, clean up the related state in | |||
| the network. It is also lacking flow control capabilities to avoid | the network. It is also lacking flow control capabilities to avoid | |||
| participating in congestion that may in turn cause the loss of a | participating in congestion that may in turn cause the loss of a | |||
| fragment and potentially the retransmission of the full datagram. | fragment and potentially the retransmission of the full datagram. | |||
| This specification provides a method to forward fragments over | This specification provides a method to forward fragments over | |||
| typically a few hops in a route-over 6LoWPAN mesh, and a selective | typically a few hops in a route-over 6LoWPAN mesh, and a selective | |||
| acknowledgment to recover individual fragments between 6LoWPAN | acknowledgment to recover individual fragments between 6LoWPAN | |||
| endpoints. The method is designed to limit congestion loss in the | endpoints. The method can help limit the congestion loss in the | |||
| network and addresses the requirements that are detailed in | network and addresses the requirements in Appendix B. Deployments | |||
| Appendix B. | are expected to be managed and homogeneous, and an incremental | |||
| transition requires a flag day. | ||||
| 2. Terminology | 2. Terminology | |||
| 2.1. BCP 14 | 2.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. | |||
| 2.2. References | 2.2. References | |||
| In this document, readers will encounter terms and concepts that are | This document uses 6LoWPAN terms and concepts that are presented in | |||
| discussed in "IPv6 over Low-Power Wireless Personal Area Networks | "IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs): | |||
| (6LoWPANs): Overview, Assumptions, Problem Statement, and Goals" | Overview, Assumptions, Problem Statement, and Goals" [RFC4919], | |||
| [RFC4919], "Transmission of IPv6 Packets over IEEE 802.15.4 Networks" | "Transmission of IPv6 Packets over IEEE 802.15.4 Networks" [RFC4944], | |||
| [RFC4944], and "Problem Statement and Requirements for IPv6 over | and "Problem Statement and Requirements for IPv6 over Low-Power | |||
| Low-Power Wireless Personal Area Network (6LoWPAN) Routing" | Wireless Personal Area Network (6LoWPAN) Routing" [RFC6606]. | |||
| [RFC6606]. | ||||
| "LLN Minimal Fragment Forwarding" [FRAG-FWD] discusses the generic | "LLN Minimal Fragment Forwarding" [FRAG-FWD] discusses the generic | |||
| concept of a Virtual Reassembly Buffer (VRB) and specifies behaviors | concept of a Virtual Reassembly Buffer (VRB) and specifies behaviors | |||
| and caveats that are common to a large family of 6FF techniques | and caveats that are common to a large family of 6FF techniques | |||
| including the mechanism specified by this document, which fully | including the mechanism specified by this document, which fully | |||
| inherits from that specification. It also defines terms used in this | inherits from that specification. It also defines terms used in this | |||
| document: Compressed Form, Datagram_Tag, Datagram_Size, | document: Compressed Form, Datagram_Tag, Datagram_Size, | |||
| Fragment_Offset, and 6LoWPAN Fragment Forwarding endpoint (commonly | Fragment_Offset, and 6LoWPAN Fragment Forwarding endpoint (commonly | |||
| abbreviated as only "endpoint"). | abbreviated as only "endpoint"). | |||
| skipping to change at page 7, line 35 ¶ | skipping to change at page 7, line 35 ¶ | |||
| The inter-frame gap is the only protection that [FRAG-FWD] imposes by | The inter-frame gap is the only protection that [FRAG-FWD] imposes by | |||
| default. This document enables to group fragments in windows and | default. This document enables to group fragments in windows and | |||
| request intermediate acknowledgements so the number of in-flight | request intermediate acknowledgements so the number of in-flight | |||
| fragments can be bounded. This document also adds an ECN mechanism | fragments can be bounded. This document also adds an ECN mechanism | |||
| that can be used to adapt the size of the window, the size of the | that can be used to adapt the size of the window, the size of the | |||
| fragments, and/or the inter-frame gap to protect the network. | fragments, and/or the inter-frame gap to protect the network. | |||
| This specification enables the fragmenting endpoint to apply a flow | This specification enables the fragmenting endpoint to apply a flow | |||
| control mechanism to tune those parameters, but the mechanism itself | control mechanism to tune those parameters, but the mechanism itself | |||
| is out of scope. In most cases, the expectation is that most | is out of scope. In most cases, the expectation is that most | |||
| datagrams will represent only a few fragments, and that only the last | datagrams will require only a few fragments, and that only the last | |||
| fragment will be acknowledged. A basic implementation of the | fragment will be acknowledged. A basic implementation of the | |||
| fragmenting endpoint is NOT REQUIRED to variate the size of the | fragmenting endpoint is NOT REQUIRED to vary the size of the window, | |||
| window, the duration of the inter-frame gap or the size of a fragment | the duration of the inter-frame gap or the size of a fragment in the | |||
| in the middle of the transmission of a datagram, and it MAY ignore | middle of the transmission of a datagram, and it MAY ignore the ECN | |||
| the ECN signal or simply reset the window to 1 (see Appendix C for | signal or simply reset the window to 1 (see Appendix C for more) | |||
| more) till the end of this datagram upon detecting a congestion. | until the end of this datagram upon detecting a congestion. | |||
| An intermediate node that experiences a congestion MAY set the ECN | An intermediate node that experiences a congestion MAY set the ECN | |||
| bit in a fragment, and the reassembling endpoint echoes the ECN bit | bit in a fragment, and the reassembling endpoint echoes the ECN bit | |||
| at most once at the next opportunity to acknowledge back. | at most once at the next opportunity to acknowledge back. | |||
| The size of the fragments is typically computed from the Link MTU to | The size of the fragments is typically computed from the Link MTU to | |||
| maximize the size of the resulting frames. The size of the window | maximize the size of the resulting frames. The size of the window | |||
| and the duration of the inter-frame gap SHOULD be configurable, to | and the duration of the inter-frame gap SHOULD be configurable, to | |||
| roughly adapt the size of the window to the number of hops in an | roughly adapt the size of the window to the number of hops in an | |||
| average path, and to follow the general recommendations in | average path, and to follow the general recommendations in | |||
| skipping to change at page 8, line 19 ¶ | skipping to change at page 8, line 19 ¶ | |||
| route in a Route-Over mesh LLN. If the size of the first fragment is | route in a Route-Over mesh LLN. If the size of the first fragment is | |||
| modified, then the intermediate node MUST adapt the Datagram_Size, | modified, then the intermediate node MUST adapt the Datagram_Size, | |||
| encoded in the Fragment_Size field, to reflect that difference. | encoded in the Fragment_Size field, to reflect that difference. | |||
| The intermediate node MUST also save the difference of Datagram_Size | The intermediate node MUST also save the difference of Datagram_Size | |||
| of the first fragment in the VRB and add it to the Fragment_Offset of | of the first fragment in the VRB and add it to the Fragment_Offset of | |||
| all the subsequent fragments that it forwards for that datagram. | all the subsequent fragments that it forwards for that datagram. | |||
| 5. New Dispatch types and headers | 5. New Dispatch types and headers | |||
| This document specifies an alternate to the 6LoWPAN fragmentation | This document specifies an alternative to the 6LoWPAN fragmentation | |||
| sublayer [RFC4944] to emulate an Link MTU up to 2048 bytes for the | sublayer [RFC4944] to emulate an Link MTU up to 2048 bytes for the | |||
| upper layer, which can be the 6LoWPAN Header Compression sublayer | upper layer, which can be the 6LoWPAN Header Compression sublayer | |||
| that is defined in the "Compression Format for IPv6 Datagrams" | that is defined in the "Compression Format for IPv6 Datagrams" | |||
| [RFC6282] specification. This specification also provides a reliable | [RFC6282] specification. This specification also provides a reliable | |||
| transmission of the fragments over a multihop 6LoWPAN route-over mesh | transmission of the fragments over a multihop 6LoWPAN route-over mesh | |||
| network and a minimal flow control to reduce the chances of | network and a minimal flow control to reduce the chances of | |||
| congestion loss. | congestion loss. | |||
| A 6LoWPAN Fragment Forwarding [FRAG-FWD] technique derived from MPLS | A 6LoWPAN Fragment Forwarding [FRAG-FWD] technique derived from MPLS | |||
| enables the forwarding of individual fragments across a 6LoWPAN | enables the forwarding of individual fragments across a 6LoWPAN | |||
| skipping to change at page 9, line 43 ¶ | skipping to change at page 9, line 43 ¶ | |||
| |1 1 1 0 1 0 0|E| Datagram_Tag | | |1 1 1 0 1 0 0|E| Datagram_Tag | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |X| Sequence| Fragment_Size | Fragment_Offset | | |X| Sequence| Fragment_Size | Fragment_Offset | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| X set == Ack-Request | X set == Ack-Request | |||
| Figure 1: RFRAG Dispatch type and Header | Figure 1: RFRAG Dispatch type and Header | |||
| X: 1 bit; Ack-Request: when set, the fragmenting endpoint requires | X: 1 bit; Ack-Request: when set, the fragmenting endpoint requires | |||
| an RFRAG Acknowledgment from the reassembling endpoint. | anLink-layer RFRAG Acknowledgment from the reassembling endpoint. | |||
| E: 1 bit; Explicit Congestion Notification; the "E" flag is cleared | E: 1 bit; Explicit Congestion Notification; the "E" flag is cleared | |||
| by the source of the fragment and set by intermediate routers to | by 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: 10-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 Link-Layer technology. Unless | a unit that depends on the Link-Layer technology. Unless | |||
| overridden by a more specific specification, that unit is the | overridden by a more specific specification, that unit is the | |||
| byte, which allows fragments up to 1024 bytes. | byte, which allows fragments up to 1024 bytes. | |||
| skipping to change at page 15, line 7 ¶ | skipping to change at page 15, line 7 ¶ | |||
| carrying fragments) that are sent to the same next hop. The delay | carrying fragments) that are sent to the same next hop. The delay | |||
| SHOULD cover multiple transmissions so as to let a frame progress a | SHOULD cover multiple transmissions so as to let a frame progress a | |||
| few hops and avoid hidden terminal issues. This precaution is not | few hops and avoid hidden terminal issues. This precaution is not | |||
| required on channel hopping technologies such as Time Slotted Channel | required on channel hopping technologies such as Time Slotted Channel | |||
| Hopping (TSCH) [RFC6554], where nodes that communicate at Layer-2 are | Hopping (TSCH) [RFC6554], where nodes that communicate at Layer-2 are | |||
| scheduled to send and receive respectively, and different hops | scheduled to send and receive respectively, and different hops | |||
| operate on different channels. | operate on different channels. | |||
| 6.1. Forwarding Fragments | 6.1. Forwarding Fragments | |||
| It is assumed that the first fragment is large enough to carry the | This specification inherits from [FRAG-FWD] and proposes a Virtual | |||
| IPv6 header and make routing decisions. If that is not so, then this | Reassembly technique to forward fragments with no intermediate | |||
| specification MUST NOT be used. | reconstruction of the entire datagram. | |||
| This specification extends the Virtual Reassembly Buffer (VRB) | The IPv6 Header MUST be placed in full in the first fragment to | |||
| technique to forward fragments with no intermediate reconstruction of | enable the routing decision. The first fragment is routed and | |||
| the entire packet. It inherits operations like Datagram_Tag | creates an LSP from the fragmenting endpoint to the reassembling | |||
| switching and using a timer to clean the VRB once the traffic ceases. | endpoint. The next fragments are label-switched along that LSP. As | |||
| The first fragment carries the IP header and creates a path from the | a consequence, the next fragments can only follow the path that was | |||
| fragmenting endpoint to the reassembling endpoint that all the other | set up by the first fragment and cannot follow an alternate route. | |||
| fragments follow. Upon receiving the first fragment, the routers | The Datagram_Tag is used to carry the label, which is swapped in each | |||
| along the path install a label-switched path (LSP), and the following | hop. | |||
| fragments are label-switched along that path. As a consequence, the | ||||
| next fragments can only follow the path that was set up by the first | If the first fragment is too large for the path MTU, it will | |||
| fragment and cannot follow an alternate route. The Datagram_Tag is | repeatedly fail and never establish an LSP. In that case, the | |||
| used to carry the label, which is swapped in each hop. | fragmenting endpoint MAY retry the same datagram with a smaller | |||
| Fragment_Size, in which case it MUST abort the original attempt and | ||||
| use a new Datagram_Tag for the new attempt. | ||||
| 6.1.1. Receiving the first fragment | 6.1.1. Receiving the first fragment | |||
| In Route-Over mode, the source and destination Link-Layer addresses | In Route-Over mode, the source and destination Link-Layer addresses | |||
| in a frame change at each hop. The label that is formed and placed | in a frame change at each hop. The label that is formed and placed | |||
| in the Datagram_Tag by the sender is associated with the source Link- | in the Datagram_Tag by the sender is associated with the source Link- | |||
| Layer address and only valid (and temporarily unique) for that source | Layer address and only valid (and temporarily unique) for that source | |||
| Link-Layer address. | Link-Layer address. | |||
| Upon receiving the first fragment (i.e., with a Sequence of 0), an | Upon receiving the first fragment (i.e., with a Sequence of 0), an | |||
| skipping to change at page 22, line 10 ¶ | skipping to change at page 22, line 10 ¶ | |||
| This document specifies an instantiation of a 6FF technique and | This document specifies an instantiation of a 6FF technique and | |||
| inherits from the generic description in [FRAG-FWD]. The | inherits from the generic description in [FRAG-FWD]. The | |||
| considerations in the Security Section of [FRAG-FWD] equally apply to | considerations in the Security Section of [FRAG-FWD] equally apply to | |||
| this document. | this document. | |||
| In addition to the threats detailed therein, an attacker that is on- | In addition to the threats detailed therein, an attacker that is on- | |||
| path can prematurely end the transmission of a datagram by sending a | path can prematurely end the transmission of a datagram by sending a | |||
| RFRAG Acknowledgment to the fragmenting endpoint. It can also cause | RFRAG Acknowledgment to the fragmenting endpoint. It can also cause | |||
| extra transmissions of fragments by resetting bits in the RFRAG | extra transmissions of fragments by resetting bits in the RFRAG | |||
| Acknowledgment bitmap, and of RFRAG Acknowledgments by forcing the | Acknowledgment bitmap, and of RFRAG Acknowledgments by forcing the | |||
| Ack-Request bit in fragments that it forwards. As indicated in | Ack-Request bit in fragments that it forwards. | |||
| [FRAG-FWD], Secure joining and the Link-Layer security are REQUIRED | ||||
| to protect against those attacks. | As indicated in [FRAG-FWD], Secure joining and the Link-Layer | |||
| security are REQUIRED to protect against those attacks, as the | ||||
| fragmentation protocol does not include any native security | ||||
| mechanisms. | ||||
| This specification does not recommend a particular algorithm for the | This specification does not recommend a particular algorithm for the | |||
| estimation of the duration of the RTO that covers the detection of | estimation of the duration of the RTO that covers the detection of | |||
| the loss of a fragment with the 'X' flag set; regardless, an attacker | the loss of a fragment with the 'X' flag set; regardless, an attacker | |||
| on the path may slow down or discard packets, which in turn can | on the path may slow down or discard packets, which in turn can | |||
| affect the throughput of fragmented packets. | affect the throughput of fragmented packets. | |||
| Compared to "Transmission of IPv6 Packets over IEEE 802.15.4 | Compared to "Transmission of IPv6 Packets over IEEE 802.15.4 | |||
| Networks" [RFC4944], this specification reduces the Datagram_Tag to 8 | Networks" [RFC4944], this specification reduces the Datagram_Tag to 8 | |||
| bits and the tag wraps faster than with [RFC4944]. But for a | bits and the tag wraps faster than with [RFC4944]. But for a | |||
| skipping to change at page 29, line 42 ¶ | skipping to change at page 29, line 42 ¶ | |||
| the number of outstanding fragments that have been transmitted but | the number of outstanding fragments that have been transmitted but | |||
| for which an acknowledgment was not received yet and are still | for which an acknowledgment was not received yet and are still | |||
| covered by the ARQ timer. | covered by the ARQ timer. | |||
| 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 fragmenting endpoint in an acknowledgment message as | back to the fragmenting endpoint in an acknowledgment message as | |||
| represented in Figure 4 in Section 5.2. While the support of echoing | represented in Figure 4 in Section 5.2. While the support of echoing | |||
| the ECN at the reassembling endpoint in mandatory, this specification | the ECN at the reassembling endpoint is mandatory, this specification | |||
| does not provide the flow control mechanism that react to the | only provides a minimalistic behaviour on the fragmenting endpoint, | |||
| congestion at the fragmenting endpoint. A minimalistic behaviour | that is to reset the window to 1 so the fragments are sent and | |||
| could be to reset the window to 1 so the fragments are sent and | ||||
| acknowledged one by one till the end of the datagram. | acknowledged one by one till the end of the datagram. | |||
| 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 the same channel over multiple | In particular, when a mesh operates on the 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 the next fragment that is following | collide with the forwarding of the next fragment that is following | |||
| over a previous hop but in the same interference domain. This draft | over a previous hop but in the same interference domain. This draft | |||
| enables end-to-end flow control, but leaves it to the fragmenting | enables end-to-end flow control, but leaves it to the fragmenting | |||
| endpoint stack to pace individual fragments within a transmit window, | endpoint stack to pace individual fragments within a transmit window, | |||
| so that a given fragment is sent only when the previous fragment has | so that a given fragment is sent only when the previous fragment has | |||
| End of changes. 16 change blocks. | ||||
| 50 lines changed or deleted | 55 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/ | ||||