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
This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig162C2DCFAAC0B79853FCA915 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Andre Oppermann wrote: > Sten Daniel S=F8rsdal 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 reliabili= ty. >> Packets that get fragmented are more likely to get dropped than >> packets that do not get fragmented and since our application needs hig= h >> bulk performance without retransmissions we believe our application an= d >> 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? >=20 > 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 discover= y. >=20 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=20 this socket for incoming fragments. Then send a message on the routing=20 socket indicating the largest fragment size and the host address that=20 caused the fragments - whenever a successful defragmented packet is=20 passed to higher levels? --=20 Sten Daniel S=F8rsdal --------------enig162C2DCFAAC0B79853FCA915 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----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----- --------------enig162C2DCFAAC0B79853FCA915--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?442327A0.2060801>