[comp.sys.isis] A technical question

ken@gvax.cs.cornell.edu (Ken Birman) (12/28/89)

You've all heard about BYPASS CBCAST by now, and are no doubt wondering
if we plan to do a blindingly fast ABCAST protocol as well.

Here's the situation:  BYPASS CBCAST works now, and Pat is instrumenting
performance to post here and for the paper we have written on the mechanism
(should be out in mid to late January).  

We can easily implement a BYPASS ABCAST protocol too; it would perform
almost identically with CBCAST (for most situations, BY-ABCAST==BY-CBCAST
in all respects; in some situations there is a slight background cost).
However, unlike BY-CBCAST, the introduction of BY-ABCAST wouldn't be
transparent.

The problem is related to addressing.  Say that you have two groups 
G1=(p,q,r) and G2=(q,r) and you use the current ISIS ABCAST to send messages
to G1 and G2.   q and r will get both messages; the ABCAST property implies
that they will get them in the same order -- even though they were
sent to different groups.

The BY-ABCAST protocol only provides total ordering for messages sent
to THE SAME logical address.  Thus, two BY-ABCASTS to G1 or G2 will be
received in a total order, but the two BY-ABCAST's described above (one to
G1, one to G2) might be seen in different orders by q and r.  BY-ABCAST,
like the current ISIS ABCAST, always respects causality.

It is so attractive to me to switch to BY-ABCAST (WOW!  What speed!)
that I am inclined to change the promises ISIS makes about ABCAST
addressing to say that "Two messages sent to the same logical addresses
will be delivered in the same order; messages to different addresses
may be delivered in different orders even if some destination processes
receive both".  How do people feel about this idea?  Recall that "bcast"
is a synonym for "abcast", so this change would drastically impact all
existing code... but would it break anything?

Ken

mak@urd.cs.cornell.edu (Mesaac Makpangou) (12/30/89)

In article <35521@cornell.UUCP> ken@cs.cornell.edu (Ken Birman) writes:
> ....
>
>It is so attractive to me to switch to BY-ABCAST (WOW!  What speed!)
>that I am inclined to change the promises ISIS makes about ABCAST
>addressing to say that "Two messages sent to the same logical addresses
>will be delivered in the same order; messages to different addresses
>may be delivered in different orders even if some destination processes
>receive both".  How do people feel about this idea? Recall that "bcast"
>is a synonym for "abcast", so this change would drastically impact all
>existing code... but would it break anything?

Why not define this as a different protocol with a different name,
say a Per Group ABCAST.
It seems to me that, ISIS already provides a set of protocols
enforcing different ordering properties.
This will be one more protocol, appropriate for a certain class of
applications.

Mesaac

ken@gvax.cs.cornell.edu (Ken Birman) (12/30/89)

In article <35564@cornell.UUCP> mak@cs.cornell.edu (Mesaac Makpangou) writes:
>Why not define this as a different protocol with a different name, say a
>Per Group ABCAST....  It seems to me that, ISIS already provides a set of
>protocols enforcing different ordering properties.  This will just
>one more protocol, appropriate for a certain class of applications.

Well, for one thing, ISIS already has too many protocols for any reasonable
purpose.  I would prefer to pretend we have cbcast and abcast, and
gbcast for "special configuration problems".  What I am suggesting is that
Per Group ABCAST should be the one you get when you say "bcast" or "abcast",
e.g. that it be default.

I can certainly leave around a way to force ISIS to use the old flavor of
abcast -- but since this won't provide ordering relative to the per-group
abcast, you will still need to think in per-group terms...

Basically, I would like the defaults to be as fast as possible.

Ken

wood@hermod.cs.cornell.edu (Mark D. Wood) (12/31/89)

The proposed change to the abcast protocol could present some problems
for Meta, depending on its exact semantics.  Meta currently guarantees
that all clients are notified of events in the same order.  This
guarantee is trivially provided by the current abcast semantics.  The
proposed BY-ABCAST protocol provides total ordering for messages sent
to the same logical address; this will be enough for Meta as long as
it holds for process addresses too, not just group addresses.

In particular, when a sensor perceives that one or more conditions are
satisfied, it sends a broadcast to the list of addresses {S,a,b,...}
where S is the sensor process group (useful if the sensor is
replicated) and {a,b,...} are the addresses of the processes (not
groups) who are being notified.  The guarantee that Meta provides is
that if processes a and b receive notifies from two sensors, they
receive the notifies in the same order.

This seems like a useful property, but it often may not be necessary
and so perhaps we are wasting effort enforcing it those times when it
is not needed.  What thoughts do others have on this subject?  Another
approach would be to have the programmer explicitly inform Meta of
those processes that need to see things in a mutually consistent
ordering; these processes could be made to join a single process
group.  Carrying this to the extreme, all clients of a sensor would
join a process group; the sensor would broadcast notifies to this
single group.  The problem with this approach is that it results in
extra network traffic and requires clients to filter out unwanted
information.

ken@gvax.cs.cornell.edu (Ken Birman) (12/31/89)

In article <35593@cornell.UUCP> wood@cs.cornell.edu (Mark D. Wood) writes:
>
>The proposed change to the abcast protocol could present some problems
>for Meta...
>
>In particular, when a sensor perceives that one or more conditions are
>satisfied, it sends a broadcast to the list of addresses {S,a,b,...}
>where S is the sensor process group (useful if the sensor is
>replicated) and {a,b,...} are the addresses of the processes (not
>groups) who are being notified....

Actually, the proposed change won't affect these types of abcast's:
they will still go by the "slow" route and will still be ordered
w.r.t. one another.

Say that a multicast is addressed to group G if G is its _only_ dest,
and that it is addressed to group * if it has any other sort of dest
(including a mixture of groups and processes, just processes, etc).

The proposal is that abcasts with the same group address in this
sense will be ordered wrt each other, but not wrt abcasts to other
addresses.

Meta seems to fall entirely within group '*'.

(However, '*' goes by a slow route...)

Ken