[SAGA-RG] SAGA Message API Extension

Andre Merzky andre at merzky.net
Wed Jan 17 08:54:20 CST 2007


Hi John, 

attached is an updated version with some changes addressing
your comments.  The respective parts in the intro are marked
as ***NEW***.  The changes in the IDL and 'Details' section
affect the endpoint constructor and the serve() method only.

Would these changes address your points?  

Thanks, Andre.


Quoting [Andre Merzky] (Jan 17 2007):
> From: Andre Merzky <andre at merzky.net>
> To: John Shalf <jshalf at lbl.gov>
> Cc: Andre Merzky <andre at merzky.net>, SAGA RG <saga-rg at ogf.org>,
> 	Andrei Hutanu <ahutanu at cct.lsu.edu>, Werner Benger <benger at zib.de>,
> 	Gregor von Laszewski <gregor at mcs.anl.gov>
> Subject: Re: SAGA Message API Extension
> 
> Hi John!
> 
> Quoting [John Shalf] (Jan 16 2007):
> > 
> > 
> > Hi Andre,
> > In Chapter 2, the paragraphs explaining the message transfer  
> > requirements are a bit confusing.
> > 	1) it says it supports multicast (which is inherently unreliable).   
> > I'm sure you mean to say a "message bus" (sort of like the Linux DBus  
> > concept), which would not specifically call out a particular network  
> > standard (multicast is more specific than a "message bus").
> 
> You are right: using 'multicast' here is probably
> misleading.  Thilo made a similar comment, so I'll change it
> to "message bus" or so.
> 
> 
> > 	2) It says the message must be received completely and correctly, or 
> > not at all.  This leaves some aspects of the reliability uncertain.   
> > For instance
> > 		a) does this mean it must guarantee delivery of a message?  
> > 		Or only  that a delivered message does not contain errors?
> 
> It probably needs a more verbose explanation.  Tyhe current
> idea is:
> 
>   - the implementation MUST ensure that the messages are
>     complete and error free
> 
>   - if message delivery is guaranteed or not is up to the
>     implementation, and up to the used protocol.  The
>     implementation MUST document that aspect, and the URL
>     (scheme...) allows to choose between different
>     reliability modes.
> 
> I wanted to avoid a 'reliability' attribute on the endpoint,
> as I don't see a reasonable easy way to switch reliability
> in mid stream.  It is most likely that changes in
> reliability policy would require different protocols (only
> few protocols will be able to serve both ends), and would
> hence need a new connection setup anyway.  Not sure if that
> is reasonable though.
> 
> Anyway, that would leave us with specification of
> reliability on connection setup (i.e. endpoint construction)
> - right now that is done via the scheme part of the URL.
> Would a flag be more appropriate/explicit?  Probably...
> 
> 
> > 		b) what about if the message arrives more than once? (eg. 
> > 		redundant  copies of messages can occur in practice for a number of 
> > unreliable  or semi-reliable messaging protocols).
> 
> Good point.  IMHO we should specify that messages arrive 'AT
> MOST ONCE' (unreliable) or EXACTLY ONCE (reliable).  I don't
> think that we need to support additional modes, nor the
> complete spectrum of (un/)reliable transmission modes.  Or?
> 
> 
> > 		c) It says this document will not address things at a 
> > 		protocol  level, but I think these issues are semantic and therefore must 
> > be  addressed by the API.
> 
> IC, good point.  Well, flags on the endpoint construction
> would solve that.
> 
> > 		d) I think there are a number of attributes that users 
> > 		should be  able to supply or query when opening a message service 
> > connnection.   Like the JMS (Java Message Service), we should be able to 
> > specify  whether this is a point-to-point (message queue) or a publish- 
> > subscribe (message bus) like interface.  The API should not require  
> > any work to support both since point-to-point is a sub-category of  
> > the message-bus, but it should be an attribute of the message  
> > interface that a user can force/specify in the opening of the  
> > connection. 
> 
> Hmm, point to point could be simply established on
> application level, by just setting up a single connection.  
> 
> Uhm, problem: serve() can only be started, not stopped.  An
> int argument to serve(), giving the number of clients to
> wait for, would solve that.
> 
>   // point to point:
>   saga::message  msg;
>   saga::endpoint ep;
>   ep.serve (1);     // allow one client
>   ep.recv  (&msg);  // expect one message
>   exit;
> 
>   // publish/subscribe
>   saga::message  msg;
>   saga::endpoint ep;
>   ep.serve ();      // allow n clients
>   while ( 1 ) {
>     ep.recv  (&msg);  // expect m messages
>   }
> 
> Does that make sense?
> 
> 
> > Another thing to support is specification or query of  
> > the message service reliability (something that deserves at least a  
> > subsection to define.  That is, the document should define classes of  
> > reliability (just as done with other XML-based messaging APIs that  
> > even define intermediate cases for unreliable messaging that  
> > guarantee message arrival, but do not ensure that duplicate messages  
> > will not arrive).  The API should allow a user to specify these  
> > semantic attributes and will not allow a connection to be built if  
> > the underlying protocol for the message connection cannot meet those  
> > attributes.
> 
> Again, that could be done by using flags on the ep creation.
> I guess that a 'more reliable' connection than requested
> would be possible?  E.g., 
> 
>   saga::endpoint ep (saga::message::Unreliable);
> 
> could actually set up an unreliable or an reliable
> connection, as both would fulfill the user req.?
> 
> 
> Thanks, Andre.
> 
> 
> > 
> > -john
> > 
> > On Jan 16, 2007, at 11:17 AM, Andre Merzky wrote:
> > >Hi Folx ,
> > >
> > >here is the updated draft of the SAGA Message API, in
> > >preparation for OGF-19.  It is also available in CVS, as
> > >usual.
> > >
> > >We would be happy to get feedback on the list of course, so
> > >don't feel oblidged to hold back your comments for OGF-19
> > >:-)
> > >
> > >Cheers, Andre.
> > >
> > >
> > >-- 
> > >"So much time, so little to do..."  -- Garfield
> > ><saga_messages.pdf>
-- 
"So much time, so little to do..."  -- Garfield
-------------- next part --------------
A non-text attachment was scrubbed...
Name: saga_messages.pdf
Type: application/pdf
Size: 143469 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/saga-rg/attachments/20070117/94360bf3/attachment-0003.pdf 


More information about the saga-rg mailing list