RE: Channel response serialization
"Paul Andrews" <[email protected]> Thu, 25 Jul 2002 12:02:33 -0400
| Newsgroups | gmane.ietf.beep |
|---|---|
| Message-ID | <[email protected]> |
First of all, thanks for your considered reply. Its difficult to find people I can have this level of conversation with so forgive me for delving further into this below... > -----Original Message----- > From: [email protected] > [mailto:[email protected]]On Behalf Of Jered Floyd > Sent: Thursday, July 25, 2002 10:01 AM > To: Paul Andrews > Cc: [email protected] > Subject: Re: [BEEPwg] Channel response serialization > > > > > It struck me that that wasn't really the purpose of channels. I got the > > impression that channels were intended to have a semantic purpose - and > > that's how I would like to use them, e.g. channel 0 is a > control channel - > > you wouldn't allocate multiple control channels arbitrarily to > get around > > the serialization restriction otherwise how would BEEP know > that they were > > control messages? > > Hm. I defer to Marshall on any statements regarding intent, but I > think that semantic binding is only one of the purposes of channels. > While the binding of some specific profile to each channel provides > semantic separation between channels, the serialization of messages on > a single channel allows the client to pipeline requests with a > guaranteed execution ordering. That's a good point that hadn't really sunk in for me. In fact the SOAP over BEEP example does precisely that, i.e. binds a particular SOAP message to a profile, then you can get multiple channels bound to that profile. One way of looking at that is that there is a virtual channel that is the sum of all channels that share a profile. > > In fact, this is how we make use of multiple channels when performing > complex tasks in our protocols. We manage a pool of channels bound to > a given profile, and then assign messages to 'free' channels > (i.e. ones with no currently outstanding message), while honouring > data dependencies by pipelining requests on a single channel. I take your point about the benefit of having enforced pipelining for certain types of problem. > > While I don't fundamentally object to the idea of allowing > out-of-order replies on a channel, I don't want to lose the guarantee > of in-order processing of subsequent messages on a single channel. I > posit that in any protocol that allows for volatile data, there are > few situations in which one is likely to have in-order processing with > out-of-order replies (while maintaining correctness). I agree. But that is not a requirement in my case. Or at least, where it is a requirement there are fairly simple mechanisms for enforcing ordering that do not require support from the communications protocol. > > Question: If we remove the restriction on reply-ordering, do we then > also allow frames on multiple RPYs or ERRs to be interleaved? That > seems like the logical next step. Of course, then for parallelism we > really ought to allow frames of MSGs to be interleaved. But, then > we're back to something that looks like the channel mechanism, though > less explicitly managed! So are you saying that MSGs are essentially sent serially, regardless of how many channels are open? i.e. if I am sending a very large message on one channel, othe channels will have to wait to before they can send anything? > > > Finally the restriction on reply ordering seems to be arbitrary > and forces > > people like me to put in a lot of extra work that we wouldn't > have to do if > > the restriction wasn't there (I know, we all want something for nothing > > :-) ). > > PermaBEEP goes a step further towards enforcing this by not allowing > the application to retrieve the next message on a channel until it has > initiated a reply to the last message delivered to the application. > (Note that is initiated, not fully sent.) This decision was a bit > contentious, but I think it best serves developers in that it prevents > them from shooting themselves in the foot in a system that dispatches > requests into a server framework. But I like shooting myself in the foot! I guess the point is that serialization is something that can be layered on top of parallelism, but not vice-versa. At least when operating within the constraints if a single framework. > > If you think it would be interesting to explore, I believe it would be > relatively easy to modify PermaBEEP to remove both this and the > restriction on reply ordering. I'm not sure there's a lot of value in > it, though. (Hm, and I really must roll the 0.9 release soon; I meant > to do that last month.) Interesting point. I guess I tend to think that standards are written in stone. I could act unilaterally to remove the serialization requirement but I guess I need to convince myself that I'm not talking rubbish and I would also prefer to work within the standards process if at all possible. Once again, thanks for taking the time to think about this. > > --Jered > > _______________________________________________ > BEEPwg mailing list > [email protected] > http://lists.beepcore.org/mailman/listinfo/beepwg