Re: [Fresco-devel] [ReFresco 03] Proposed network architecture overview
cinap_lenrek <[email protected]> Wed, 04 Feb 2004 15:00:48 +0100
| Newsgroups | gmane.comp.video.fresco.devel |
|---|---|
| Message-ID | <[email protected]> |
Nathaniel Smith wrote: >[hey, can you fix your quoting so it actually puts in attributions?] > > verry sorry... this is @work here so i have to write my mail under Moz/Thunderbird-composer... i'll try be carefull about this in the future ;-) >On Wed, Feb 04, 2004 at 09:12:38AM +0100, cinap_lenrek wrote: >A bit ago njs wrote: > > >>>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. >>> >>> >>> >>you are right... if B is blocked then A will block too because the >>server's pipe to B is going to be >>filled and B never reads from the pipe. ok... but how you can resolve >>this? and what means >>"flow-managed" in practical? >> >> > >I'm not sure exactly; it's tricky making things safe for everyone. >Basically, once B's queue fills up, you have to require it read at a >certain rate or else be forcibly disconnected, to protect A from B. > > > like a kick from the flood-protection service on irc ;-) >This is mostly just worrying about preserving correctness in edge >cases; in normal usages the above situation shouldn't arise very >often. It's also just not possible to do any better in general, >without breaking fundamental ordering guarantees. > >There is one important special case though; non-timely bulk data >transfer. Sometimes a client will want to get a chunk of data from >one place to another, and the exact ordering wrt other operations >doesn't matter too much, and there needs to be an elegant way to do >this. Basically what you do in a situation like this is the "sliding >window" trick; the sender sends a certain amount of data, and then >waits for an acknowledgement before sending more. (This shows up all >over the place... it's fundamental to TCP, the SSH protocol, etc.) > > > >For Caprice, one can accomplish this by putting a special proxy in the >server, that peeks at the various client buffers involved and manages >the sliding window through some special messages. > > >(More detail forthcoming at some point; I have a few pages of notes >on these issues...) > > :-) >-- Nathaniel > > ok. many thanks to your answers :-) i hope that Caprice will be a success! cinap_lenrek