Hi Dario,
I support the effort to make the offset field be in units of single
octets, rather than 8 octets. Though we need to be careful about
shrinking the tag field. Earlier drafts of RFC 4944 originally made
the tag field 10 bits, but some comments from IESG review raised
concerns about whether that was enough. After some discussion on the
list, the decision was made to expand the field to 16 bits (though
only 14 bits was necessary at the time) [1]. The key point is that
802.15.4 may operate on different PHYs with higher bit rates so we
should be prepared for those.
In my ideal world, we would reallocate a single fragment header type
for simplicity. I'm not concerned about backwards compatibility given
that we are changing the entire HC format. And little has been done
in the way of multi-vendor interoperability with the existing
formats. In that case, we include the tag, size, and offset fields in
every fragment while keeping the tag 16 bits and others 11 bits. The
header type would remain at two bits with '11'. Eliding the offset
field in the first fragment doesn't give much added benefit.
To me, the above is the most straight-forward approach - maintaining
most of the existing format structure, while at the same time
simplifying it and avoids revisiting the same IESG concerns we've had
in the past.
An alternate approach is to pick up on existing work to redesign the
fragmentation layer to support more efficient fragment recovery and
out-of-order delivery, but that would require a bigger change. I'd
echo Pascal's request to get additional thoughts there.
[1] http://www.ietf.org/mail-archive/web/6lowpan/current/msg00588.html
--
Jonathan Hui
On Feb 18, 2010, at 1:07 PM, Dario Tedeschi wrote:
Richard and Owen,
I think that the best solution would be to switch to using
the compressed size and offsets in the fragment headers.
This would allow (un)compression and (de)fragmentation to
be done independently.
I absolutely agree.
I agree.
I think it should be simplified further by making datagram_offset
11bits long. Having datagram_offset as 8bits (forcing fragment
length to a multiple of 8) may save 1 byte, but it also means that
up to 7 bytes at the end of a fragment can be left unused (save 1
byte to, potentially, lose 7). So how about a new fragmentation
header where both datagram_size and datagram_offset are 11bits and
the datagram_tag is reduced to 13bits (how big does the tag need to
be anyway). A new dispatch pattern would indicate a new
fragmentation header where _offset and _size are relative to the
compressed datagram. Something like the following:
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 2 3
4 5 6 7 8 9
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+-+-+-+
|1 1 1 1 1| datagram_size | datagram_tag |
datagram_offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+-+-+-+
From an implementation point of view, bits 0 to 28 can be used as a
pseudo tag in identifying fragments that belong to one datagram. It
could be stored in 4 bytes with the last three bits of the last byte
masked out, but that's just an idea for trying to be a little more
efficient.
Regards
Dario
_______________________________________________
6lowpan mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/6lowpan
_______________________________________________
6lowpan mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/6lowpan