Fragmentation support in IP

Hi Adeel,

GNRC in RIOT supports fragmentation, e.g. in the context of 6LowPAN.

However, you seem to be interested in sending UDP datagrams that exceed the MTU payload size. I don't think this is common use ... and I don't think this is clever, either. IP fragmentation is not an equivalent for data streaming.

Cheers,   Thomas

Hi Thomas,

I agree that IP fragmentation is not an equivalent for data streaming. However it still facilitates transporting data that exceeds the MTU. The use case we are looking at is encryption of IoT data that may result in a few bytes of plaintext being converted to a few kilobytes of ciphertext. Had IP supported fragmentation in RIOT it would have been possible for us to send such data.



Hi Adeel,

IP fragmentation is usually a bad idea*), and more so on a constrained network. If you need to transfer payloads beyond a kilobyte or so, maybe CoAP (RFC 7252) with the block-wise transfer protocol (currently being published as RFC-to-be 7959) solves your problem.

Which encryption expands a few bytes of plaintext to kilobytes of ciphertext? (You may be thinking about signatures; e.g., hash-based signatures can be 3-6 KiB or even more. These might occur in firmware updates and are covered quite well by CoAP + block-wise.)

Grüße, Carsten


Adeel Mohammad Malik wrote:

Hi Adeel,

adding to this: you should keep in mind that in LowPANs you may easily trigger multiple layers of fragmentation (loosing one fragment is loosing all!) ... and that receivers may not be ready to handle UDP datagrams of 'arbitrary' sizes.

So if you really want to stay away from upper layer protocols like CoAP, you should process data segmentation in your application (not sure this is the best idea, though).

Cheers,   Thomas