Skip site navigation (1)Skip section navigation (2)
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>