Hi Pascal,

Thanks for the quick response.

So yes one could store more state in the VRB, in the form of an "offset adjustment" value for the next hop, but this seems overly complex and susceptible to failure and requires more memory.

Using the current draft, I don't know how one can provide "slack" in the first fragment, without potentially causing a gap in the uncompressed data at the final hop. How would this work?

Using the datagram size on which to base fragment offsets actually helps in providing this "slack", because it allows the compressed version of the first fragment to change in length without affecting the offsets of subsequent fragments. The compressed length of the fragment is allowed to change without affecting the uncompressed length of the fragment, which in turn means that the subsequent fragment's offset does not change. The source of the datagram only need choose the 2nd fragment offset such that it covers the compressible portion of the datagram (i.e. the IP header, Extension headers and UDP header).

I'm assuming that the datagram should not change length as it traverses the network, since RFC 8200 says that Extension headers cannot be inserted or deleted along a delivery path. Would you agree?

Regards
Dario

On 1/21/19 3:51 AM, Pascal Thubert (pthubert) wrote:

Hello Dario :

his change was done long, long ago as a usability improvement. I have to refresh my mind on why people wanted it, but I remember they complained.

I’m open to roll back on that if implementers prefer.

For your question: the forwarder that modifies the fragment size would have to modify the datagram_size and _offset on this and all subsequent packets.

It is doable since the node needs to do that only on the first fragment and it has a state for forwarding where the update can be stored. I should add words on that.

Note that this problem is a bit different from the slack that is still needed in the first fragment to be able to play games with its size on the path even if the offset is in the uncompressed packet.

What do people think?

Pascal

*From:*6lo <[email protected]> *On Behalf Of *Dario Tedeschi
*Sent:* vendredi 18 janvier 2019 23:34
*To:* [email protected]
*Subject:* [6lo] draft-ietf-6lo-fragment-recovery: fragment_offset

After considering how one might go about implementing draft-ietf-6lo-fragment-recover, I came across a problem with the fragment_offset field.

Since the value in the fragment_offset field is based on the compressed version of a datagram, this field would potentially need to change for all fragments of a single datagram as it traverses the network.

Consider a datagram of length L{D}. On the first hop the datagram is compressed and fragmented into 2 fragments A and B with lengths L{A} and L{B} respectively. The total length of the "compressed datagram" C is therefore L{A} + L{B} = L{C}. It is also true therefore that the offset of fragment B within the compressed frame is Offset{B} = L{A}

Assuming the datagram is being forwarded, the next hop would likely need to re-compress the first fragment (because the link-layer addresses in the 15.4 packet would change). In turn L{A} would also likely change to L{A`}. This means that the frame_offset value in the second fragment would no longer be correct, since Offset{B} != L{A`}.

As I see it, this problem makes the current draft unusable, because the originator of the 6LoWPAN fragments can't allow for slack in the first fragment to accommodate for re-compression changes at each subsequent hop.

In RFC4944, the datagram offsets were based on the uncompressed datagram. This gave us two advantages:

 1. The receiver of any fragment would immediately know what buffer
    size to allocate to store the entire uncompressed datagram
 2. The originator of the 6LoWPAN fragments would by default provide
    slack in the first fragment for subsequent hops, because the
    offsets of fragments were based on the uncompressed datagram.

Could the RFRAG format  be changed so that fragment_offset be based on the uncompressed datagram (similar to RFC 4944) or have I misunderstood the draft?

Regards
Dario Tedeschi


_______________________________________________
6lo mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/6lo

Reply via email to