Hello,
I have a question about using the TCP splicing module (TCPSP) that is
available at the lvs web site. I am using the Layer-7 switch ktcpvs as a
load balancer in front of a replicated web server. I'd like to also
have the TCP splicing feature to avoid the overhead of data copying
between the socket buffers that ktcpvs does. [Due to this copying, ktcpvs
becomes the bottleneck when the request rate to the web server is high.]
I read a few papers about TCP splicing and got the impression that it can
be used to avoid this copying overhead. My question is with regard to the
example use of TCP splicing that comes with the TCPSP module. In this
example, a connection from a client is accepted. Then a new connection is
opened with a server. After this the tcp splicing call is made. Now my
understanding of TCP splicing was that this is all that needs to be done
and the TCPSP module would take care of the subsequent transfer of data
between the two connections. However, in the example, I see that the data
transfer has to be done explicitly (using the poll mechanism for finding
when more data has arrived on either connection) after the connections
have been "spliced". Why should this have to be done?
I'd really appreciate any replies to my question. Also, any suggestions on
using the TCP splicing module with ktcpvs would be very valuable.
Best regards.
--
Bhuvan Urgaonkar
|