How can i detect if a received UDP got fragmented from userland?
andre at freebsd.org
Tue Mar 21 08:12:14 UTC 2006
Sten Daniel Sørsdal wrote:
> I am currently working on a udp multicast application written in C for
> FreeBSD (6.x)
> For our test cases in many different network types we found that
> fragmentation poses as a significant problem for quality and reliability.
> Packets that get fragmented are more likely to get dropped than
> packets that do not get fragmented and since our application needs high
> bulk performance without retransmissions we believe our application and
> the network would benefit from this.
> Our first assumption was that adding DF to UDP would solve it, and it
> does in our small tests, but it has a noticable negative effect on the
> Are there any way i can read whether a message's packet was fragmented
> into smaller pieces and preferably how large the largest fragment was?
> Are there any feasible way to do this?
No. There is no way to know from userland if a packet was fragmented.
In theory you can infere this from the size of the rcvmsg() you do. If
it is larger than your local MTU it must have been fragemented. This
doesn't allow you to find out if the path from source to receiver has
a lower MTU somewhere however. There you can only do path MTU discovery.
More information about the freebsd-net