< 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/