Here is a attempt to see if we can support end-to-end reassembly without the need to maintain routing state. Let's first take the case of via lists. Instead of the via list containing the node ids of the intermediate nodes, if it is represented by a significantly smaller tag (say, a connection id) that only has relevance to the local node, we can drastically reduce the size of the via list. For instance, something like 1-2bytes will be more than adequate to represent a connection id. This would be a different form of a compressed via list. This is also sufficient, since every node only needs to care about the first id on the destination list when it receives the message and that should correspond to its own tag on the corresponding via list.
If we did the above, the growth of the via list should be insignificant (for normal routing with Olog(N) bounds). If we then said that the source fragments the message, accommodating something in the order of 2 * log(N) bytes for via list growth, we should be able to expect it to work, barring issues due to varying MTUs. It is also mainly an issue if the header itself grows to a size that requires fragmentation - however, this type of compressed via list should prevent that from happening. That said, we would deal with varying MTUs by using a mechanism analogous to IPv6 PMTU discovery (i.e., send an error to the source asking for further fragmentation). In this method, such multiple fragmentations should not be frequent anyway. Thoughts? Thanks, Vidya _______________________________________________ P2PSIP mailing list [email protected] https://www.ietf.org/mailman/listinfo/p2psip
