Re: [Fresco-devel] [ReFresco 03] Proposed network architecture overview

Nathaniel Smith <[email protected]> Tue, 3 Feb 2004 15:31:06 -0800
Newsgroups gmane.comp.video.fresco.devel
Message-ID <[email protected]>
On Mon, Feb 02, 2004 at 10:50:21PM +0100, [email protected] wrote:
> On Mon, Feb 02, 2004 at 01:20:10PM -0800, Nathaniel Smith wrote:
> > On Mon, Feb 02, 2004 at 08:56:40PM +0100, [email protected] wrote:
> > > At some other time, Nathaniel Smith wrote:
> > > > I still think it is: Lets assume there are two object A and B in the same
> > > > client. They share one connection to the server. A can now block that
> > > > connection for long times by sending huge messages (the max. message length
> > > > takes several days to go over a 100MBit network). B can't send data to the
> > > > server during that time.
> > > do we have _one_ tcp-connection per client to the server? in this case messages
> > > can processed in paralel i think. so other messages (to and from the server)
> > > can send without limitation.
> 
> > I am very, very hesitant to encourage
> > clients to make multiple connections during normal operation; this is
> > ugly, may cause havoc with server memory management (the server tracks
> > object allocation by connection, so it can clean up when connections
> > go away), and just makes everything more complicated.
> i mean if different clients have different connections to the server how
> can this harm if a client sends a very big packet to the server?
> other connections will not be affected to this if you demux this big packet
> in small steps or have one thread per connection (so you can process the
> other connections while the big packet is processed.)

We were talking about the case where a single client doesn't want
to block itself out; if it starts sending a long packet, it has to
finish sending that whole packet before it can do something else, even
if the "something else" has high priority.

> > You do need some sort of managed multiplexing in some cases to avoid
> > congestion and apply backpressure, ...
> if a client sends a message that is too small or to big... the client
> just harms itself because it just congests his own connection... 
> the server cluld close the connection if here is something
> wrong in the stream or data is expected and not have received in
> a defined timeout.
> but this sould not harm other clients/connections. thats what i'm not
> understand in this question.

Clients can send each other messages; imagine the case where client A
has a fast pipe, and client B has a slow pipe.  If A starts sending
messages to B quickly, they'll accumulate in the server.  Eventually,
the server will have to stop reading anything from client A until B's
buffers drain, to avoid unbounded memory usage.  Client A would
generally like to avoid this, so there need to be mechanisms to allow
flow-managed inter-client bulk data transfer.

-- Nathaniel

-- 
"On arrival in my ward I was immediately served with lunch. `This is
what you ordered yesterday.' I pointed out that I had just arrived,
only to be told: `This is what your bed ordered.'"
  -- Letter to the Editor, The Times, September 2000