[saga-rg] Meeting Notes: Messaging API
Andre Merzky
andre at merzky.net
Tue Nov 22 15:01:08 CST 2005
Hi,
these are notes from the ad-hoc meeting at SC-05 about a
message oriented communication API. The API might be
considered for inclusion at into the GGF SAGA API spec at
some point - for now it is only supposed provide coherent
discussion and development in the interested groups.
As a reminder, material about saga can be found at:
http://wiki.cct.lsu.edu/saga/
Meeting Participants:
---------------------
- Jason Leigh (EVL)
- Venkatram Vishwanath (EVL)
- Andrei Hutany (LSU)
- John Shalf (LBNL)
- Andre Merzky (VU/LSU)
Definition:
-----------
Message: chunk of data which is potentially larger than a
network package.
Several independend sets for property flags have been
identified:
Reliability Requirements:
- - - - - - - - - - - - -
- Reliable all messages are received exactly once. If
received, messages are complete
- Unreliable messages are either received or not. If
received, messages are complete
- AtLeastOnce optional, as for Reliable, but messages
can be received more than once
Correctness Requirements:
- - - - - - - - - - - - -
- ByteErrors received messages MAY contain byte errors
- NoByteErrors received messages MUST NOT contain byte errors
Ordering Requirement:
- - - - - - - - - - -
- Ordered messages MUST be received in order
- NotOrdered messages MAY be received out of order
API considerations:
-------------------
- it was felt that a BSD like connection setup is most
useful
- asynchroneous recieving of complete messages is needed
(viz use cases!)
- striping/multicasting on application level is not
considered for now (multiple senders/receivers)
API proposal:
-------------
- establish connection:
- bsd like: listen/accept/connect
- port range should be specifiable
- properties should be specified as flags (changable at
runtime)
- write:
write (buffer, size, BLOCK | NO_BLOCK)
message is written completely or not at all (if possible)
- read: two step mechanism:
(int handle, int size) = query_size ();
(char* buffer) = read (handle, size);
- handle can be zero, if size is known (one step read)
- buffer needs to be allocated by application.
- if size is zero, the buffer is allocated by the
implementation and returned to be freed by the
application (one step read)
- if size is smaller then the real message size, message
gets truncated, remainder gets lost (read again not
possible)
- if size is larger, buffer gets patted by 0
- asynchroneous method calls:
- as in the SAGA task model, with callbacks
- connection shutdown:
- as in bsd (close ())
Please feel free to send corrections, comments etc.
Thanks, Andre.
--
+-----------------------------------------------------------------+
| Andre Merzky | phon: +31 - 20 - 598 - 7759 |
| Vrije Universiteit Amsterdam (VU) | fax : +31 - 20 - 598 - 7653 |
| Dept. of Computer Science | mail: merzky at cs.vu.nl |
| De Boelelaan 1083a | www: http://www.merzky.net |
| 1081 HV Amsterdam, Netherlands | |
+-----------------------------------------------------------------+
More information about the saga-rg
mailing list