< draft-thubert-6lowpan-simple-fragment-recovery-01.txt   draft-thubert-6lowpan-simple-fragment-recovery-02.txt >
6LoWPAN P. Thubert 6LoWPAN P. Thubert
Internet-Draft Cisco Internet-Draft Cisco
Intended status: Standards Track May 23, 2008 Intended status: Standards Track May 29, 2008
Expires: November 24, 2008 Expires: November 30, 2008
LoWPAN simple fragment Recovery LoWPAN simple fragment Recovery
draft-thubert-6lowpan-simple-fragment-recovery-01 draft-thubert-6lowpan-simple-fragment-recovery-02
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 34 skipping to change at page 1, line 34
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."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on November 24, 2008. This Internet-Draft will expire on November 30, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2008). Copyright (C) The IETF Trust (2008).
Abstract Abstract
Considering that 6LoWPAN packets can be as large as 2K bytes and that Considering that 6LoWPAN packets can be as large as 2K bytes and that
an 802.15.4 frame with security will carry in the order of 80 bytes an 802.15.4 frame with security will carry in the order of 80 bytes
of effective payload, a packet might end up fragmented into as many of effective payload, a packet might end up fragmented into as many
skipping to change at page 6, line 17 skipping to change at page 6, line 17
Considering that a multi-hop LoWPAN can be a very sensitive Considering that a multi-hop LoWPAN can be a very sensitive
environment due to the limited queueing capabilities of a large environment due to the limited queueing capabilities of a large
population of its nodes, this draft recommends a simple and population of its nodes, this draft recommends a simple and
conservative approach to flow control, based on TCP congestion conservative approach to flow control, based on TCP congestion
avoidance. avoidance.
Congestion on the forward path is assumed in case of packet loss, and Congestion on the forward path is assumed in case of packet loss, and
packet loss is assumed upon time out. packet loss is assumed upon time out.
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. This draft provides a way Congestion Notification (ECN) mechanism. Though whether and how ECN
for the destination LoWPAN endpoint to echo en ECN indication back to [RFC3168] is carried out over the LoWPAN is out of scope, this draft
the source LoWPAN endpoint in an acknowledgement message as provides a way for the destination endpoint to echo an ECN indication
back to the source endpoint in an acknowledgement message as
represented in Figure 3 in Section 6.2. represented in Figure 3 in Section 6.2.
From the standpoint of a source LoWPAN endpoint, an outstanding From the standpoint of a source LoWPAN endpoint, an outstanding
fragment is a fragment that was sent but for which no explicit fragment is a fragment that was sent but for which no explicit
acknowledgement was received yet. This means that the packet might acknowledgement was received yet. This means that the fragment might
be on the way, received but not yet acknowledged, or the be on the way, received but not yet acknowledged, or the
acknowledgement might be on the way back. It is also possible that acknowledgement might be on the way back. It is also possible that
either the fragment or the acknowledgement was lost on the way. either the fragment or the acknowledgement was lost on the way.
Because a meshed LoWPAN might deliver packets out of order, it is Because a meshed LoWPAN might deliver frames out of order, it is
virtually impossible to differentiate these situations. In other virtually impossible to differentiate these situations. In other
words, from the sender standpoint, all outstanding packets might words, from the sender standpoint, all outstanding fragments might
still be in the network and contribute to its congestion. There is still be in the network and contribute to its congestion. There is
an assumption, though, that after a certain amount of time, a packet an assumption, though, that after a certain amount of time, a frame
is either received or lost, so it is not causing congestion anymore. is either received or lost, so it is not causing congestion anymore.
This amount of time can be estimated based on the round trip delay This amount of time can be estimated based on the round trip delay
between the LoWPAN endpoints. The method detailed in [RFC2988] is between the LoWPAN endpoints. The method detailed in [RFC2988] is
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 [RFC2309] and [RFC2581] provide Principles" [RFC2914]. Additionally [RFC2309] and [RFC2581] 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 fragment over a congested path to reducing the number of outstanding fragments over a congested path
by throttling the sources. by throttling the sources.
Whether and how ECN [RFC3168] is carried out over the LoWPAN is out Section 7 describes how the sender decides how many fragments are
of scope for this draft. Section 7 describes how the sender decides (re)sent before an acknowledgement is required, and how the sender
how many fragments are (re)sent before an acknowledgement is adapts that number to the network conditions.
required, and how the sender adapts that number to the network
conditions.
6. New Dispatch types and headers 6. New Dispatch types and headers
This specification extends "Transmission of IPv6 Packets over IEEE This specification extends "Transmission of IPv6 Packets over IEEE
802.15.4 Networks" [RFC4944] with 3 new dispatch types, for 802.15.4 Networks" [RFC4944] with 3 new dispatch types, for
Recoverable Fragments (RFRAG) headers with or without Acknowledgement Recoverable Fragments (RFRAG) headers with or without Acknowledgement
Request, and for the Acknowledgement back. Request, and for the Acknowledgement back.
Pattern Header Type Pattern Header Type
+------------+-----------------------------------------------+ +------------+-----------------------------------------------+
skipping to change at page 7, line 34 skipping to change at page 7, line 34
Header." Header."
6.1. Recoverable Fragment Dispatch type and Header 6.1. Recoverable Fragment Dispatch type and Header
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|datagram_offset| datagram_tag | |1 1 1 0 1 0 0 X|datagram_offset| datagram_tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Sequence | datagram_size | |Sequence | datagram_size |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ X set == Ack Requested +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
X set == Ack Requested
Figure 2: Recoverable Fragment Dispatch type and Header Figure 2: Recoverable Fragment Dispatch type and Header
X bit X bit
When set, the sender requires an Acknowledgement from the receiver When set, the sender requires an Acknowledgement from the receiver
Sequence Sequence
The sequence number of the fragment. Fragments are numbered The sequence number of the fragment. Fragments are numbered
skipping to change at page 8, line 15 skipping to change at page 8, line 15
6.2. Fragment Acknowledgement Dispatch type and Header 6.2. Fragment Acknowledgement Dispatch type and Header
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgement Bitmap | | Acknowledgement Bitmap |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+
^ ^ ^ ^
| | Y set == Backward Explicit Congestion | | Y set == ECN echo
| | Notification | |
| | bitmap indicating whether | | bitmap indicating whether
| +-----Fragment with sequence 10 was received | +-----Fragment with sequence 10 was received
+-------------------------Fragment with sequence 00 was received +-------------------------Fragment with sequence 00 was received
Figure 3: Fragment Acknowledgement Dispatch type and Header Figure 3: Fragment Acknowledgement Dispatch type and Header
Y bit Y bit
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
skipping to change at page 8, line 48 skipping to change at page 8, line 48
packet was already reassembled and passed to the network upper packet was already reassembled and passed to the network upper
layer, or the packet expired and was dropped. layer, or the packet expired and was dropped.
7. Outstanding Fragments Control 7. Outstanding Fragments Control
A mechanism based on TCP congestion avoidance dictates the maximum A mechanism based on TCP congestion avoidance dictates the maximum
number of outstanding fragments. number of outstanding fragments.
The maximum number of outstanding fragments for a given packet toward The maximum number of outstanding fragments for a given packet toward
a given LoWPAN endpoint is initially set to a configured value, a given LoWPAN endpoint is initially set to a configured value,
unless recent history indicates otherwise. Each time that maximum unless recent history indicates otherwise.
number of fragments is fully acknowledged, that number can be
incremented by 1. ECN echo and packet loss cause the number to be Each time that maximum number of fragments is fully acknowledged,
divided by 2. that number can be incremented by 1. ECN echo and packet loss cause
the number to be divided by 2.
The sender transfers a controlled number of fragments and flags the The sender transfers a controlled number of fragments and flags the
last fragment of a series with an acknowledgement request. last fragment of a series with an acknowledgement request.
The sender arms a timer to cover the fragment that carries the The sender arms a timer to cover the fragment that carries the
Acknowledgement request. Upon time out, the sender assumes that all Acknowledgement request. Upon time out, the sender assumes that all
the fragments on the way are received or lost. It divides the the fragments on the way are received or lost. It divides the
maximum number of outstanding fragments by 2 and resets the number of maximum number of outstanding fragments by 2 and resets the number of
outstanding fragments to 0. outstanding fragments to 0.
 End of changes. 13 change blocks. 
24 lines changed or deleted 25 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/