From owner-freebsd-net@FreeBSD.ORG Thu Mar 23 22:56:32 2006 Return-Path: X-Original-To: freebsd-net@freebsd.org Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B009516A401; Thu, 23 Mar 2006 22:56:32 +0000 (UTC) (envelope-from lists@wm-access.no) Received: from lakepoint.domeneshop.no (lakepoint.domeneshop.no [194.63.248.54]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0ED0D43D58; Thu, 23 Mar 2006 22:56:30 +0000 (GMT) (envelope-from lists@wm-access.no) Received: from [192.168.5.8] (host-81-191-3-170.bluecom.no [81.191.3.170]) (authenticated bits=0) by lakepoint.domeneshop.no (8.13.4/8.13.4) with ESMTP id k2NMuTLH001448 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 23 Mar 2006 23:56:29 +0100 Message-ID: <442327A0.2060801@wm-access.no> Date: Thu, 23 Mar 2006 23:56:32 +0100 From: =?ISO-8859-1?Q?Sten_Daniel_S=F8rsdal?= User-Agent: Thunderbird 1.5 (Windows/20051201) MIME-Version: 1.0 To: Andre Oppermann References: <441F6FE0.80108@wm-access.no> <441FB565.BA3628B3@freebsd.org> In-Reply-To: <441FB565.BA3628B3@freebsd.org> X-Enigmail-Version: 0.94.0.0 OpenPGP: id=D6F56A9B Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig162C2DCFAAC0B79853FCA915" Cc: freebsd-net@freebsd.org Subject: Re: How can i detect if a received UDP got fragmented from userland? X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Mar 2006 22:56:32 -0000 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--