Re: Efficient copying between sockets
From: Julian Elischer (julian_at_elischer.org)
Date: 10/29/04
- Previous message: Ronald F. Guilmette: "Re: Strange result (EPERM) from a call to connect(2)"
- In reply to: Ollie Cook: "Efficient copying between sockets"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Fri, 29 Oct 2004 13:45:15 -0700 To: Ollie Cook <ollie@uk.clara.net>
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).
>
>At the moment this is implemented as follows (in pseudo-C; no error-checking
>for brevity and clarity):
>
> written_bytes = 0;
> read_bytes = read(sock_src, buffer, sz_buffer);
> while (written_bytes < read_bytes)
> written_bytes -= write(sock_dst, buffer, read_bytes - written_bytes)
>
>I am wondering if there is a more efficient approach to this which might avoid
>copying data into a userspace buffer, and then writing it back to the kernel?
>
you can do it entirely in the kernel if you write a program to configure
two netgraph ksockets to each other
>
>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.
>
>Yours,
>
>Ollie
>
>
>
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
- Previous message: Ronald F. Guilmette: "Re: Strange result (EPERM) from a call to connect(2)"
- In reply to: Ollie Cook: "Efficient copying between sockets"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|