[AMG]: Some thoughts on Multicast.

On last nights AMG telcon I took an action to discuss seed some discussion
of multicast addressing issues in relation to one-way messaging and
request-response messaging patterns. Here are a few thoughts intended to
promote further discussion.

Regards

Stuart
--

XMLP/SOAP and Multicast
------------------------

I am familiar with two styles of multi-cast routing.

1)	Where there is a notion of membership of a multicast group where
enumaration of all multicast group members is not possible (ie. the
originator of a message is unable to determine how many recipients will
receive the message and who/what/where those recipients are). IP multicast
works in this fashion. Nodes become members of a multicast group by
listening on a multicast address (and port - I'm a bit hazy on the details).
IP multicast addresses are recognisable as the occupy a defined sub-range of
the IPv4 address space. Also, the act of listen on a multicast address
general cause a multicast IP node to advertise it's interest in a multicast
group (unless it observes interest from others on the same real subnet - in
which case it supresses it report since a regular report from just one such
node is enough). The multicast routing infrastructure picks up this report
and works to ensure that packets sent to that particular IP multicast
address reach that particular real subnet and are MAC layer multicast (if
it's a LAN) to all those nodes listening for packets destined to that
particular multicast group. For the most part this is in a sense real
multicast, making maximum use of underlying LAN multicast capabilities and a
branching message distibution topology.

	I am only aware of UDP based usages of IP multicast. I'm not aware
of a Multicast TCP and have some difficulty in concieving what that might be
designed to achieve - particularly in the context of an open group
membership.

	I make this latter point only to note that HTTP is dependent on TCP
and so I would not expect direct multicast support from HTTP. I'd possibly
even go so far as to suggest that SOAP 1.1 over HTTP doesn't do multicast -
but I'm prepared to be informed otherwise.

2)	Where the sender (or its agent) has an explicit knowledge of the
membership of a multicast group and dispatches messages to the group through
repeated unicast to an enumberable set of group members - this distribution
could happen directly at the sending node or at some (yes) intermediary
whose role is message distribution to the members of a multicast group.

	It is certainly plausible that HTTP could be used to distribute
SOAP/XMLP messages in this way.

The area of multicast messaging and particularly reliable multicast
messaging remains a live and active topic of research.

So how does this relate to SOAP/XMLP?

SOAP/XMLP one-way (UNITDATA)
----------------------------
It would seem plausible that we could send a one-way SOAP/XMLP message to a
multicast destination. In prinicple at least the sending application need
have no knowledge of whether it is addressing a unicast or multicast
destination. It need not be necessary for us to devise some conventions or
style to decorate URIs in away that enable us to distinguish a unicast URI
from a multicast URI. In the case of SOAP/XMLP over HTTP, something some
'magic' (currently unspecified) would need to happen under-the-hood either
at the sending node or an an intermediary would have to maintain the notion
of a set of destination URIs are an expansion of the destination URI (and
could themselves denote further multicast groups).

It is not clear (to me at least) that SOAP when bound to HTTP currently
truely supports one-way messaging - it is not clear to me whether the HTTP
POST response is allowed to return an empty/null message. Setting that
aside, SOAP/XMLP over HTTP (over TCP) can achieve a multicast effect which
relies on repeated unicast to an enumerable set of actual destinations.

SOAP/XMLP request/response (DATA)
---------------------------------
Multicast request/response is trickier. Firstly, in the model presented in
the AM document a request/response operation can fail ie. a response can be
silently absent. It is also the expectation in the abstract model that a
request in the DATA operation gives rise to at-most one response. This could
be seen as a specialisation of request/multiple-response where the first
response is also the last response, but even in the general multi-response
case (which is not discussed in the AM) the expectation would be that the
multiple responses all came from the same source and that the last response
is in someway distinguished so that the lifetime of the operation can
normally be bounded.

So I think the question to consider wrt to multicast request/response is
what would we expect to happen with a multicast request and unicast
responses. In this case a single request give rise to multiple responses in
a similar way to the request/multiple-response case. However, each response
is made by a different responding application and in the single-response per
responder case each is a last response and in general initiator will not
know how many response messages to expect.

So how might a multicast request/response be modeled. Firstly, there is
implied correlation (whether due to the underlying protocol and biding or
due to the inclusion of a message id/corelation id/request id in a message
header). Responses would either directly correlate with a request (because
of repeated uni-cast) or correlate with the request by carrying a message
id/corelation id/request id that matches the one in the request. At the
responding end of the operation things are identical to the unicast case. It
the initiating end, response message loss is allowed and the operation could
be terminated against a timer (late responses being lost).

From an AM point-of-view this has made very little change to the DATA
operation (other than allowing for multiple DATA.confirms) this could also
easily be harmonised with an operational model that encompases
request/multi-response.

Summary
-------
If there is a hard part to this, its exploiting real multicast
infrastructure and that's regardless of the one-way and request/response
discussion - the mapping of destination URIs to multicast groups and the
fact that HTTP is not itself a multicast protocol - we would have to rely on
repeated unicast to reach multiple destinations. 

This of course is only for simple situations where reliable multicast [1] is
not required and/or where we have few if any concerns over the relative
ordering of arrival of messages at multicast destinations. Ken Birman's work
on ISIS [2,3] in the '80s included work on 'atomic multicast' protocols
where all messages are delivered to all nodes in the group in the same order
- it also considers a number of weaker ordering constraints, but I am not
familiar enough with the work to elaborate. The papers at [2] are a good
place to start if you have deep interests in multicast application
protocols.

[1] http://www.ietf.org/html.charters/rmt-charter.html
[2] http://www.cs.cornell.edu/Info/Projects/ISIS/ISISpapers.html
[3] http://www.cs.cornell.edu/Info/Projects/ISIS/

Received on Thursday, 22 March 2001 12:54:57 UTC