| < draft-ietf-6lo-fragment-recovery-15.txt | draft-ietf-6lo-fragment-recovery-16.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) 9 March 2020 | |||
| Intended status: Standards Track | Intended status: Standards Track | |||
| Expires: 10 September 2020 | Expires: 10 September 2020 | |||
| 6LoWPAN Selective Fragment Recovery | 6LoWPAN Selective Fragment Recovery | |||
| draft-ietf-6lo-fragment-recovery-15 | draft-ietf-6lo-fragment-recovery-16 | |||
| 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 14, line 23 ¶ | skipping to change at page 14, line 23 ¶ | |||
| to a bitmap that acknowledges only the received fragments to let the | to a bitmap that acknowledges only the received fragments to let the | |||
| intermediate nodes know that the datagram is fully received. As the | intermediate nodes know that the datagram is fully received. As the | |||
| timer runs, the reassembling endpoint absorbs the fragments that were | timer runs, the reassembling endpoint absorbs the fragments that were | |||
| still in flight for that datagram without creating a new state, | still in flight for that datagram without creating a new state, | |||
| acknowledging the ones that that bear an Ack-Request with an FRAG | acknowledging the ones that that bear an Ack-Request with an FRAG | |||
| Acknowledgment and the FULL bitmap. The reassembling endpoint aborts | Acknowledgment and the FULL bitmap. The reassembling endpoint aborts | |||
| the communication if fragments with matching source and Datagram-Tag | the communication if fragments with matching source and Datagram-Tag | |||
| continue to be received after the timer expires. | continue to be received after the timer expires. | |||
| Note that acknowledgments might consume precious resources so the use | Note that acknowledgments might consume precious resources so the use | |||
| of unsolicited acknowledgments should be configurable and not enabled | of unsolicited acknowledgments SHOULD be configurable and not enabled | |||
| by default. | by default. | |||
| An observation is that streamlining forwarding of fragments generally | An observation is that streamlining forwarding of fragments generally | |||
| reduces the latency over the LLN mesh, providing room for retries | reduces the latency over the LLN mesh, providing room for retries | |||
| within existing upper-layer reliability mechanisms. The fragmenting | within existing upper-layer reliability mechanisms. The fragmenting | |||
| endpoint protects the transmission over the LLN mesh with a retry | endpoint protects the transmission over the LLN mesh with a retry | |||
| timer that is configured for a use case and may be adapted | timer that is configured for a use case and may be adapted | |||
| dynamically, e.g., according to the method detailed in [RFC6298]. It | dynamically, e.g., according to the method detailed in [RFC6298]. It | |||
| is expected that the upper layer retries obey the recommendations in | is expected that the upper layer retries obey the recommendations in | |||
| [RFC8085], in which case a single round of fragment recovery should | [RFC8085], in which case a single round of fragment recovery should | |||
| fit within the upper layer recovery timers. | fit within the upper layer recovery timers. | |||
| Fragments are sent in a round-robin fashion: the fragmenting endpoint | Fragments MUST be sent in a round-robin fashion: the sender MUST send | |||
| sends all the fragments of the datagram for a first time before it | all the fragments for a first time before it retries any lost | |||
| retries any lost fragment; lost fragments are retried in sequence, | fragment; lost fragments MUST be retried in sequence, oldest first. | |||
| oldest first through the whole datagram. This mechanism enables the | This mechanism enables the receiver to acknowledge fragments that | |||
| reassembling endpoint to acknowledge fragments that were delayed in | were delayed in the network before they are retried. | |||
| the network before they are retried. | ||||
| When a single radio frequency is used by contiguous hops, the | When a single radio frequency is used by contiguous hops, the | |||
| fragmenting endpoint should insert a delay between the frames (e.g., | fragmenting endpoint SHOULD insert a delay between the frames (e.g., | |||
| 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 | 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 | |||
| skipping to change at page 17, line 4 ¶ | skipping to change at page 17, line 4 ¶ | |||
| RFRAG-ACK flows back to the fragmenting endpoint. | RFRAG-ACK flows back to the fragmenting 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 that the fragment was entirely | Either way, if the RFRAG-ACK indicates that the fragment was entirely | |||
| received (FULL bitmap), it arms a short timer, and upon timeout, the | received (FULL bitmap), it arms a short timer, and upon timeout, the | |||
| VRB and all the associated state are destroyed. Until the timer | VRB and all the associated state are destroyed. Until the timer | |||
| elapses, fragments of that datagram may still be received, e.g. if | elapses, fragments of that datagram may still be received, e.g. if | |||
| the RFRAG-ACK was lost on the path back and the source retried the | the RFRAG-ACK was lost on the path back and the source retried the | |||
| last fragment. In that case, the router forwards the fragment | last fragment. In that case, the router generates an RFRAG-ACK with | |||
| according to the state in the VRB. | a FULL bitmap back to the fragmenting endpoint if an acknowledgement | |||
| was requested, else it silently drops the fragment. | ||||
| This specification does not provide a method to discover the number | This specification does not provide a method to discover the number | |||
| of hops or the minimal value of MTU along those hops. In a typical | of hops or the minimal value of MTU along those hops. In a typical | |||
| case, the MTU is constant and the same across the network. But | case, the MTU is constant and the same across the network. But | |||
| should the minimal MTU along the path decrease, it is possible to | should the minimal MTU along the path decrease, it is possible to | |||
| retry a long fragment (say Sequence of 5) with several shorter | retry a long fragment (say Sequence of 5) with several shorter | |||
| fragments with a Sequence that was not used before (e.g., 13 and 14). | fragments with a Sequence that was not used before (e.g., 13 and 14). | |||
| Fragment 5 is marked as abandoned and will not be retried anymore. | Fragment 5 is marked as abandoned and will not be retried anymore. | |||
| Note that when this mechanism is in place, it is hard to predict the | Note that when this mechanism is in place, it is hard to predict the | |||
| total number of fragments that will be needed or the final shape of | total number of fragments that will be needed or the final shape of | |||
| skipping to change at page 18, line 29 ¶ | skipping to change at page 18, line 30 ¶ | |||
| RFRAG Acknowledgment is flooded on that same subset in the reverse | RFRAG Acknowledgment is flooded on that same subset in the reverse | |||
| direction. Intermediate RFRAG Acknowledgments can be flooded on any | direction. Intermediate RFRAG Acknowledgments can be flooded on any | |||
| sub-subset of that reverse subset that reach back to the source. | sub-subset of that reverse subset that reach back to the source. | |||
| 7. Management Considerations | 7. Management Considerations | |||
| This specification extends "On Forwarding 6LoWPAN Fragments over a | This specification extends "On Forwarding 6LoWPAN Fragments over a | |||
| Multihop IPv6 Network" [FRAG-FWD] and requires the same parameters in | Multihop IPv6 Network" [FRAG-FWD] and requires the same parameters in | |||
| the reassembling endpoint and on intermediate nodes. There is no new | the reassembling endpoint and on intermediate nodes. There is no new | |||
| parameter as echoing ECN is always on. These parameters typically | parameter as echoing ECN is always on. These parameters typically | |||
| include the reassembly time-out at the reassembling endpoint and an | include the reassembly timeout at the reassembling endpoint and an | |||
| inactivity clean-up timer on the intermediate nodes, and the number | inactivity clean-up timer on the intermediate nodes, and the number | |||
| of messages that can be processed in parallel in all nodes. | of messages that can be processed in parallel in all nodes. | |||
| The configuration settings introduced by this specification only | The configuration settings introduced by this specification only | |||
| apply to the fragmenting endpoint, which is in full control of the | apply to the fragmenting endpoint, which is in full control of the | |||
| transmission. LLNs vary a lot in size (there can be thousands of | transmission. LLNs vary a lot in size (there can be thousands of | |||
| nodes in a mesh), in speed (from 10 Kbps to several Mbps at the PHY | nodes in a mesh), in speed (from 10 Kbps to several Mbps at the PHY | |||
| layer), in traffic density, and in optimizations that are desired | layer), in traffic density, and in optimizations that are desired | |||
| (e.g., the selection of a RPL [RFC6550] Objective Function [RFC6552] | (e.g., the selection of a RPL [RFC6550] Objective Function [RFC6552] | |||
| impacts the shape of the routing graph). | impacts the shape of the routing graph). | |||
| skipping to change at page 20, line 43 ¶ | skipping to change at page 20, line 43 ¶ | |||
| time that a fragmenting endpoint should wait for an RFRAG | time that a fragmenting endpoint should wait for an RFRAG | |||
| Acknowledgment before it takes the next action. It is greater | Acknowledgment before it takes the next action. It is greater | |||
| than or equal to MinARQTimeOut. It is less than or equal to | than or equal to MinARQTimeOut. It is less than or equal to | |||
| MaxARQTimeOut. See Appendix C for recommendations on computing | MaxARQTimeOut. See Appendix C for recommendations on computing | |||
| the round-trip time. By default a value of 3 times the maximum | the round-trip time. By default a value of 3 times the maximum | |||
| expected round-trip time in the respective network is RECOMMENDED. | expected round-trip time in the respective network is RECOMMENDED. | |||
| MaxARQTimeOut: The maximum amount of time a node should wait for the | MaxARQTimeOut: The maximum amount of time a node should wait for the | |||
| RFRAG Acknowledgment before it takes the next action. It must | RFRAG Acknowledgment before it takes the next action. It must | |||
| cover the longest expected round-trip time, and be several times | cover the longest expected round-trip time, and be several times | |||
| less than the time-out that covers the recomposition buffer at the | less than the timeout that covers the recomposition buffer at the | |||
| reassembling endpoint, which is typically on the order of the | reassembling endpoint, which is typically on the order of the | |||
| minute. An upper bound can be estimated to ensure that the | minute. An upper bound can be estimated to ensure that the | |||
| datagram is either fully transmitted or dropped before an upper | datagram is either fully transmitted or dropped before an upper | |||
| layer decides to retry it. | layer decides to retry it. | |||
| MaxFragRetries: The maximum number of retries for a particular | MaxFragRetries: The maximum number of retries for a particular | |||
| fragment. A default value of 3 is RECOMMENDED. An upper bound | fragment. A default value of 3 is RECOMMENDED. An upper bound | |||
| can be estimated to ensure that the datagram is either fully | can be estimated to ensure that the datagram is either fully | |||
| transmitted or dropped before an upper layer decides to retry it. | transmitted or dropped before an upper layer decides to retry it. | |||
| End of changes. 8 change blocks. | ||||
| 14 lines changed or deleted | 14 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/ | ||||