LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: splitting up a packet stream

To: Chris Anderson <chris.anderson@xxxxxxxxxx>
Subject: Re: splitting up a packet stream
Cc: LVS <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
From: Julian Anastasov <uli@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 28 Jul 2000 13:34:30 +0300 (EEST)
        Hello,

On Fri, 28 Jul 2000, Chris Anderson wrote:

> >         We can't split one TCP connection to different real servers.
> > But many TCP connections from one host are scheduled to different
> > real servers. This is a default handling.
> 
> Ah. This could be a problem. Now, when you say "many TCP connections
> from one host are scheduled to different real servers" I assume that
> this means something like several separate web page requests, or several
> telnet sessions. So if a server opens a connection to VIP:PORT, until
> this port is closed, all the packets would go to the one realserver.
> Okay, that makes sense.

Connections     Client          VIP:VPORT       Real servers
Conn 1          10.0.0.1:1024   10.0.0.2:80     192.168.0.1:80
Conn 2          10.0.0.1:1025   10.0.0.2:80     192.168.0.2:80
Conn 3          10.0.0.1:1026   10.0.0.2:80     192.168.0.3:80
...

        This is default LVS scheduling. You can have many TCP connections
from one host to the cluster. If you want these connections to go to one
real server you mark the service as persistent. The client always thinks
the the remote end is 10.0.0.2:80

> 
> Hmmm. May have to go back to the drawing board on this one.
> 
> > > > - why the restriction for only one source?
> > >
> > > That's covered by the NDAs  :-/   I wish I could say more, as it would
> > > help with my explanations.
> > 
> >         Forgive me but I don't know what means "NDA".
> 
> Non Disclosure Agreement. It means I can't tell you enough for you to
> help me, but if I say anything at all I get in trouble.  :-)

        OK, you have two choices:

- split the TCP data

        If you have one connection from the client host. LVS can't
help here. There is no knowledge about the application data logical
structure. Only you know it.

- Use default LVS scheduling

        If you have many TCP connections from your client. The LVS
can forward each TCP connection to different real server.

        You can not split the TCP connection to different real servers
at packet level. The connection will be broken. Your client can't
expect TCP packets from many real servers.

        For UDP the picture is different. We can remove the implicit
persistence for the UDP connections and to select different real
server for each packet.

> 
> >         Is the packet stream from one connection?
> 
> Based one the info I have at present, yes it is.
> 
> >         I don't see a way to split one TCP connection to many.
> > You have to run a daemon on the director to work with the TCP data.
> 
> Sigh. I was beginning to get that impression myself. Back to the
> keyboard...
> 
> > > Just as an aside: is it possible to change the weighting on the fly when
> > > using weighted whatever scheduling, without having to rewrite the config
> > > file and restart the director? Maybe based on realserver load or some
> > > other metric?
> > 
> >         Yes, this is possible. You need a tool that can dynamically
> > adjust the weights. This is a user space game. LVS don't care who
> > talks to him, ipvsadm, ...
> 
> Now that is a good bit of news...
> 
> Thanks,
> Chris the tired and confused.
> -- 
> "This calls for a very special blend of psychology
>  and extreme violence." -- Vyvyan, "The Young Ones"


Regards

--
Julian Anastasov <uli@xxxxxxxxxxxxxxxxxxxxxx>



<Prev in Thread] Current Thread [Next in Thread>