TCP loopback socket fusing
Fabien Thomas
fabien.thomas at netasq.com
Tue Sep 14 09:33:23 UTC 2010
Great,
This will maybe kill the long time debate about "my loopback is slow vs linux"
To have the best of both world what about a socket option to enable/disable fusing:
can be useful when you need to see some connection "packetized".
Fabien
On 13 sept. 2010, at 13:33, Andre Oppermann wrote:
> When a TCP connection via loopback back to localhost is made the whole
> send, segmentation and receive path (with larger packets though) is still
> executed. This has some considerable overhead.
>
> To short-circuit the send and receive sockets on localhost TCP connections
> I've made a proof-of-concept patch that directly places the data in the
> other side's socket buffer without doing any packetization and other protocol
> overhead (like UNIX domain sockets). The connections setup (SYN, SYN-ACK,
> ACK) and shutdown are still handled by normal TCP segments via loopback so
> that firewalling stills works. The actual payload data during the session
> won't be seen and the sequence numbers don't move other than for SYN and FIN.
> The sequence are remain valid though. Obviously tcpdump won't see any data
> transfers either if the connection has fused sockets.
>
> Preliminary testing (with WITNESS and INVARIANTS enabled) has shown stable
> operation and a rough doubling of the throughput on loopback connections.
> I've tested most socket teardown cases and it behaves fine. I'm not entirely
> sure I've got all possible path's but the way it is integrated should properly
> defuse the sockets in all situations.
>
> Testers and feedback wanted:
>
> http://people.freebsd.org/~andre/tcp_loopfuse-20100913.diff
>
> --
> Andre
>
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
More information about the freebsd-current
mailing list