[Sis-ams] AMS White Book
Scott Burleigh
Scott.Burleigh at jpl.nasa.gov
Thu Oct 13 13:22:27 EDT 2005
Hi. I have now posted to the CWE a fairly heavily revised version of
the AMS Concept Paper, which has been transmuted into the first edition
of the AMS White Book ("Proposed Standard") that we're chartered to try
to publish in December. Please look it over when you've got time, and
let's start discussing things that we think need some discussion.
The White Book PDF I've posted is a "clean" document, intended to serve
as the basis for future evolution of the recommendation. The bulk of
the alterations made to the Concept Paper to produce that initial White
Book are shown in the document named "AMS Concept Paper Markup 2", which
has got "track changes" turned on; that's the document to look at if you
want to see the evolution from the Concept Paper that is currently
implemented, which we demonstrated in Atlanta. Here's a summary:
1. As a number of people have suggested, the "Remote AMS" (RAMS)
procedures are now fully integrated into the protocol rather than
managed as an add-on capability. (This actually doesn't increase the
complexity of the core AMS protocol noticeably, as all of the more
complicated RAMS stuff happens in the RAMS gateway nodes, above AMS.)
Also a lot of the RAMS processing has been revisited and in some cases
clarified; there are now some RAMS-specific protocol data units, for
example.
2. The notion of the application "roles" performed by AMS nodes is
better developed and integrated into the architecture.
3. Roger pointed out that there's need for a way to (in effect)
support subscriptions to messages at various levels of subject
aggregation, e.g., "fuel level" vs "fuel level in main propellant tanks
of MRO" vs "fuel level in anything on MRO" vs "fuel level in all main
propellant tanks anywhere". To address this, the "zone" notion is
developed a little further in some simple ways. Zones have always been
purely administrative groupings of application nodes; the change is that
zones may now be nested inside one another, e.g., you can have a zone of
"Mars orbiters" that includes an "MRO" zone in which all the MRO nodes
are registered. Further, you can now qualify a message subscription or
invitation: when you subscribe to messages on a given subject, you can
additionally say that you only want messages published by nodes that
perform a specified role ("main propellant tank" vs "all roles") and are
registered within a specific zone or any zone that is contained within
that zone ("MRO" vs "anywhere in the system"). I've also defined
another message transmission option named "announce", in addition to
publish/send/query/reply, that you can use to send a message to all
nodes that perform a specified role and are in a specified zone.
"Announce" is kind of like "publish" in that you don't need to know
exactly who you're sending to, but the recipients don't have to
subscribe to get these messages. Note that these changes impose
additional complexity, particularly in the RAMS processing. But the
power of this approach seems to justify the extra work, and the
additional RAMS complexity is almost entirely within the RAMS gateway;
most nodes won't pay a lot for it.
4. Stuart asked for better AMS support for service-based
(client/server) applications: specifically, he noted that for
service-based applications it's the client rather than the server that
is likely to have the best understanding of the priority (for example)
of a message sent to the server, so a purely receiver-driven QOS model
isn't a good fit. So it's still the case that receivers specify the QOS
on which they want to receive messages on various subjects, but the
receiver-specified QOS is now treated as a default that can be
overridden by the sender when a message is transmitted.
5. There have been a number of other changes to QOS, mostly inspired
by the TCONS white paper on QOS. Delivery order (Transmission order vs
Arrival order) has been added as a QOS parameter; delivery order and
"diligence" (Assured vs Best Effort) are now the two parameters that are
used to select the underlying protocol to use when sending a given
message. Priority is no longer one of those protocol-selecting
parameters, but is instead a value that is carried in the messages
mainly to enable event ordering at the receiving node; the number of
priority levels has been increased to 15. "Flow label", a number from 0
to 255, has been added as a further QOS parameter; it's opaque to AMS
but management may map flow labels to QOS settings in underlying
protocols, e.g., diffserv code points or TCONS channels. And, as I
proposed in an email to this list a little while ago, delivery deadline
has been removed from the AMS QOS concept. In conversations and email
exchanges with Ashton and Mike Stagnaro I've become convinced that
requirements for this kind of feature are going to vary so widely in
different application regimes that it makes more sense for the layer
above AMS -- MTS, the C3I framework layer, whatever -- to implement this
function in whatever way makes sense locally. This simplifies the spec
considerably, as it means things like the Handling.indication go away.
6. My implementation experience has led me to change the node
registration procedures a good deal, streamlining and simplifying them.
Also the PDU structures have changed quite a lot as I got a better
handle on what was likely to work well.
7. I've also rethought node resynchronization and have rewritten a lot
of that section of the spec. Still have to implement it, though.
And there is a little additional news. I think we're now at the point
where JPL will let us freely ship the AMS (and supporting libraries)
source code to other U.S. sites, and we may (or may not; it's not quite
clear yet) also have authorization to distribute to ESA. I'd like to
hold off on sending it out until I bring the implementation up to
conformance to the revised protocol spec, but if you'd like to start
working with it in [I hope] late December or early January, let me
know. Also, in addition to the Linux and vxWorks ports of AMS, Abhijit
tells me we are getting close to having a port that would run on Windows
via Interix (a.k.a. Windows Services for Unix, from Microsoft).
Scott
More information about the Sis-ams
mailing list