Download presentation
Presentation is loading. Please wait.
Published byCynthia Watson Modified over 6 years ago
1
Asynchronous Message Service (AMS) Prototype Status
Scott Burleigh Jet Propulsion Laboratory, California Institute of Technology 25 August 2005
2
AMS Continuum configuration MIB configuration service
Message space for application Q, authority R new zone specification zone registration registrar location query and response Zone A Zone B Registrar Registrar reconfig messages node registration heartbeat, ack, reconfig heartbeat, ack, reconfig application messages remote AMS messages Node Z Node X Node Y (a new node) RAMS gateway application messages application messages application messages
3
Example programs (1 of 2) #include "ams.h" static int runCatcher() {
AmsNode me; AmsEvent event; int cn, zn, nn, len, ct; char *sname, *txt; ams_register(NULL,NULL,NULL, 0, "amsdemo", "test", "301", "catch", &me); ams_invite(me, "text", AmsPriorityStandard, AmsAssured); while (1) ams_get_event(me, AMS_BLOCKING, &event); if (ams_get_event_type(me, event) == AMS_MSG_EVT) break; else ams_recycle_event(me, event); } ams_parse_msg(me, event, &cn, &zn, &nn, &sname, &len, &txt, &ct); printf("%d received '%s'.\n", getpid(), txt); ams_recycle_event(me, event); ams_unregister(me); return 0;
4
Example programs (2 of 2) static int runPitcher() { AmsNode me;
AmsEvent event; AmsStateType state; AmsChangeType change; AmsPriority priority; AmsDiligence diligence; int zn, nn, textlen; char buffer[80], *zname, *nname, *sname; sprintf(buffer, "Hello from %d.", getpid()); textlen = strlen(buffer) + 1; ams_register(NULL,NULL,NULL, 0, "amsdemo", "test", "301", "pitch", &me); while (1) ams_get_event(me, AMS_BLOCKING, &event); ams_parse_notice(me, event, &state, &change, &zname, &zn, &nname, &nn, &sname, &priority, &diligence); ams_recycle_event(me, event); if (state == AmsInvitationState) printf("%d sending '%s'.\n", getpid(), buffer); ams_send(me, 0, zn, nn, "text", textlen, buffer, AmsReportNone, NULL, 0); ams_unregister(me); return 0; } int main(int argc, char **argv) if (fork() == 0) return runCatcher(); else return runPitcher();
5
Management Information Base
<?xml version="1.0" standalone="yes"?> <ams_mib_load> <ams_mib_init continuum_nbr="1" continuum_name="jpl" ptsname="dgr"/> <ams_mib_add> <csendpoint epspec="2357:loretta.jpl.nasa.gov"/> <application name="amsdemo"> <role nbr="1" name="shell"/> <role nbr="2" name="log"/> <role nbr="3" name="pitch"/> <role nbr="4" name="catch"/> <role nbr="5" name="benchs"/> <role nbr="6" name="benchr"/> <subject nbr="1" name="text" desc="ASCII text"/> <subject nbr="2" name="noise" desc="more ASCII text"/> <subject nbr="3" name="bench" desc="numbered msgs"/> </application> <msgspace nbr="1" appname="amsdemo" authname="test"> <zone nbr="1" name="301"/> <continuum nbr="2" name="apl" desc="Johns Hopkins APL"/> </msgspace> </ams_mib_add> </ams_mib_load>
6
Initial Performance Statistics
Msgs/sec Mbps Msg Size Msg Count 1 subscr 2 subscr 20 10 million 11560 8581 1.7 1.3 200 1 million 10124 6642 15.4 10.1 2000 100,000 4800 2529 73.2 38.6 20000 10,000 587 293 89.6 44.8 Publisher on a Pentium III, Red Hat 8.0 Linux. Subscriber(s) on a second Pentium III, Fedora Core 3. Underlying transport is TCP/IP over a 100 Mbps Ethernet switch.
7
GDS Sim Spacecraft Sim SPOF router admin VxWorks RAMS gateway RAMS gateway SMC controller libams ION ION ION libams libams DGR IP MC SPOF CLA (C) SPOF CLA (S) SPOF CLA (C) DGR DGR UDP TCP TCP TCP UDP (80) (80) UDP SMC target SMC controller amsd libams libams DGR VxWorks Msg queue DGR amsd IP MC DGR UDP Linux UDP DGR UDP UDP Linux Solaris SMC target libams VxWorks Msg queue DGR UDP Cygwin or Interix The Internet SMC target SMC controller libams libams VxWorks Msg queue DGR IP MC DGR UDP UDP SMC controller libams IP MC DGR firewall firewall UDP
8
What’s Done Automatic discovery and dynamic reconfiguration
Startup, shutdown, registration Exchange of subscriptions and invitations Application message flow Publish/subscribe Private messages (send/reply) Clean interface to underlying transport systems. Two adapters implemented so far: TCP and DGR (datagram retransmission, a reliable UDP system). Heartbeat exchange, detection of unannounced crash.
9
What’s Not Done Yet Test/debug failover among configuration servers
Non-trivial encryption; test/debug authentication and authorization Periodic resynchronization Other transport service adapters with other QOS features: vxWorks message queues, IP multicast, probably UDP Remote AMS gateway Port to Interix (Windows); port to Solaris; finish port to vxWorks
10
Other stuff for FY06 Dynamic updating of MIBs, e.g., in response to changes in an information model Message marshalling/un-marshalling per message definitions in MIB JMS wrapper (JNI interface) LabView wrapper Matlab wrapper Tcl/Tk wrapper
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.