Re: [Fresco-devel] [ReFresco 03] Proposed network architecture overview
Tobias Hunger <[email protected]> Mon, 2 Feb 2004 14:14:10 +0100
| Newsgroups | gmane.comp.video.fresco.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a MIME-formatted message. If you see this text it means that your E-mail software does not support MIME-formatted messages. --=_heaven-1914-1075724529-0001-2 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Nathaniel Smith <[email protected]> wrote: > > Let me do the following assumptions: > >=20 > > * connections will not loose messages in transit and messages will > > arrive in the same order that they were send down one connection. <snip> > Yes, we definitely assume this. Wow, we do agree on something right on the first try! ;-) > > * Objects will process messages in the order they receive them >=20 > I would say rather that objects will receive messages in the order > they were sent, Yeap, that's what I meant too. <snip> > > Then I'd propose the following header for messages: Aehm... make that packets, not messages! Sorry, I got confused by the fragmentation flag in the message... Why do you have that by the way? With 5byte message length field you shouldn't get into trouble there anytime soon. > > 2 octects message flags: > > first flag: meaning MESSAGE or REPLY >=20 > I don't understand what this paragraph means. Perhaps you could > expand a bit on your assumptions re: the difference between messages > and replies? Like, what's a "result queue"? And why shouldn't reply > delivery be via a method call? (In an asynchronous world, replies > always come as callbacks in one way or another...) Having sleapt another night over ths problem: You are right. This flag is not necessary. > Not sure why you want to distinguish these cases. I've been imagining=20 <snip>=20 > > second flag: meaning FRAGMANT_PART or FRAGMENT_END >=20 > Doesn't work, because as explained below, fragment packets do need a > "fragment stream" identifier; <snip> I am beginning to suspect that you are right here too, but I'm not sure yet. > > third flag: meaning NO_ERROR or ERROR <snip> > I've been going back and forth in my own mind whether marking some > messages as errors makes sense. <snip> > One way or another, here, we have to break > the nice boundary between the messaging protocol and the marshalling > protocol. I'd rather not do that... I'd definitly prefer a clean and simple message passing system (that you can use without the marshaling stuff if you must) with a clean and simple marshaling protocol on top. I like layers;-) > The issues are sufficiently murky that I think we should wait until > we've had a chance to experiment with things more before picking a > solution. I'm definitly fine with that. > Right now it's not obvious to me if there are any errors > to report besides "object not found", "Connection lost", "Illegal fragment/packet", "Out of memory" (message is too long), ... <snip> > > 2 octets message length (including header) <snip> > No, this section has problems. You are right: I meant packet length, not message length. The message is of corse the sum of the packetsizes minus their headers. I don't see a need to pass that along though. <snip> > Your DOS scenario isn't a problem either. 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. You argue that this is not an issue as it is the client's responsibility to look after its own latencys... I see that differently. <snip> > > A fragment stream field is not necessary: Under the assumptions made ab= ove > > the packages arrive in order. One object will of course not sprinckle o= ther > > communication inbetween one message it is sending, so there's no danger= of > > a mix up there either. >=20 > No, this is wrong. Say we have >=20 > A --\ > Server --- C > B --/ >=20 > A and B both start sending long messages to C. <snip> > So as soon as the server is unwilling to buffer any more, > it starts fragmenting the messages from A and B, and sending the > fragments to C. These fragments will arrive intermixed. =2E.. which is not a problem as long as they were send by two separate originators. That's basically a stream number... of course this is assuming that a originator will be set, even on asynchronous messages which is not the case with the architecture you are proposiing. Mine is different in that respect. <snip> > > > > I still fail to see why we don't need sequence numbers. Is the cap = thrown > > > > away after receiving a single message? Of course it is! I got it now! --=20 Gruss, Tobias ------------------------------------------------------------ Tobias Hunger The box said: 'Windows 95 or better' [email protected] So I installed Linux. ------------------------------------------------------------ --=_heaven-1914-1075724529-0001-2 Content-Type: application/pgp-signature; name="signature.asc" Content-Transfer-Encoding: 7bit Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAHk0iv0FZW3NyoqURAr1FAJ49Qf+5DlG12uwLCGbpR9sBEeBNewCeJjgE SmiPdM+K3c5TfpVjx+eW6RU= =C1pC -----END PGP SIGNATURE----- --=_heaven-1914-1075724529-0001-2--