Date: Thu, 23 Mar 2006 23:56:32 +0100 From: =?ISO-8859-1?Q?Sten_Daniel_S=F8rsdal?= <lists@wm-access.no> To: Andre Oppermann <andre@freebsd.org> Cc: freebsd-net@freebsd.org Subject: Re: How can i detect if a received UDP got fragmented from userland? Message-ID: <442327A0.2060801@wm-access.no> In-Reply-To: <441FB565.BA3628B3@freebsd.org> References: <441F6FE0.80108@wm-access.no> <441FB565.BA3628B3@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] Andre Oppermann wrote: > 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 >> network. >> 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. > I have a hard time figuring out how to do path mtu discovery from server side. Could i have your opinions about an implementation idea? I considered adding a socket flag for UDP to indicate i want to monitor this socket for incoming fragments. Then send a message on the routing socket indicating the largest fragment size and the host address that caused the fragments - whenever a successful defragmented packet is passed to higher levels? -- Sten Daniel Sørsdal [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFEIyegMvOF8Nb1apsRAsbvAJ9ZbyDQeSZnDvuvfPi65LN7nASLZgCfTuAZ 98XTGT+9tAd4/YZBVKkVOIY= =Jhxc -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?442327A0.2060801>
