If we are going to mess with the fragment headers, and not
just change the length and offsets from uncompressed to
compressed, then my preferences would be:
- Remove the alignment requirement for offsets.
- Allow for some kind of ack, whether or not a packet is
fragmented. 802.15.4 acks have their problems, so as
long as we are adding an ack we should make it a general
one.
- Maintain backward compatibility. While I am not sure
that backwards compatibility matters a great deal for
this, being compatible is simpler. If nothing else, it
makes life a lot easier for Wireshark and other tools.
I really do not see the need to make the fragment header a
byte shorter at the cost of using up a large block of
dispatch bytes. We can't be sure we are getting
fragmentation right this time, either.
A proposal:
Fragment:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Fragment (TBD)| datagram_tag |A|R| datagram_
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
size | datagram_offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
A = ack requested
R = reserved
Datagram_size and datagram_offset are with respect to the
compressed datagram. datagram_offset is zero for the first
fragment.
Ack request for an unfragmented packet:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ack Req (TBD) | datagram_tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ack:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ack (TBD) |M| datagram_tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
[mask] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
M = mask present
An ack with no mask acks the entire datagram, fragmented
or not.
-Richard Kelsey
_______________________________________________
6lowpan mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/6lowpan