Date: Mon, 1 Nov 2004 03:42:52 -0600 (CST) From: Mike Silbersack <silby@silby.com> To: Ollie Cook <ollie@uk.clara.net> Cc: freebsd-net@freebsd.org Subject: Re: Efficient copying between sockets Message-ID: <20041101033406.A37052@odysseus.silby.com> In-Reply-To: <20041029123506.GG19662@mutare.noc.clara.net> References: <20041029123506.GG19662@mutare.noc.clara.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 29 Oct 2004, Ollie Cook wrote: > Good afternoon, > > I am currently writing a potentially high bandwidth (think fileserver) > application which will proxy data from one PF_INET socket to another (no reason > it has to be PF_INET, but that's how the application stands). > In actual fact, I know in advance exactly how many bytes need to be copied from > one socket to the other, so if there was any way of doing something like: > > socket_redirect(sock_src, sock_dst, bytes_to_copy); > > it would be ideal. However I'd be very surprised if such a trivial way to do > that did actually exist. > > If anyone has any advice at all on a more efficient way to copy data between > sockets I'd be very glad to hear about it. The software is very much prototype > at the moment, but I'd like to make it as efficient as possible from the > beginning and this seems like a prime area for optimisation. Splicing bytes from one socket's buffer to another socket's buffer should be relatively simple to do inside the kernel, but I don't think it's implemented anywhere at this point in time. If you're really need that functionality, the best place to do it would probably be in sendfile; you could just extend it so that if two sockets are passed to it instead of a socket and file, it would do what you've described above. Tell us how it works out. :) Mike "Silby" Silbersack
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041101033406.A37052>