[Css-csts] Possible approaches for interoperability among different
transfer service capability sets
John Pietras
john.pietras at gst.com
Tue Feb 5 15:16:02 EST 2008
Members of the CSTSWG ---
We still have some issues regarding the scope of the Monitored Data
Cross Support Transfer Service (MD-CSTS) with respect to supporting
different sets of procedures in an interoperable fashion. Here is my
summary of the situation.
At the CCSDS meeting in Heppenheim in October, the CSTSWG discussed the
Monitored Data CSTS (MD-CSTS) White Book. Key features of that version
of the MD-CSTS were:
1. The ability for the user to configure the service to cyclically
(periodically) report any subset of a predefined set of monitored
parameters, at a defined
reporting period.
a. The subset of parameters to be reported, and the reporting period
for
that subset, are defined in the START invocation that starts that
particular reporting procedure (i.e., "loop" of the overall CSTS).
b. Multiple subsets can be reported at different reporting periods by
STARTing different procedure instances (each with its own
reporting
period.
c. For the first version of the MD-CSTS, the predefined set of
monitored
parameters, and the syntax for expressing them, is bilaterally-
defined: the declaration of the parameters to be reported are
carried
in a set of opaque octet strings by the START invocation, and the
identification of the reported parameters are carried in a set of
opaque octet strings by the TRANSFER-DATA invocation. Future
derived services could specify explicit, standard sets of
monitored
parameters and syntaxes, but the CSTSWG wants to make the first
version more generic.
2. The ability of the user to configure the service to notify the user
of
the occurrence of any of a subset of a predefined set of events.
a. The subset of events to be reported are defined in the START
invocation that starts the notification procedure. (only one
notification procedure can be instantiated per MD-CSTS instance).
b. For the first version of the MD-CSTS, the predefined set of
notifiable
events, and the syntax for expressing them, is bilaterally-
defined: the declaration of the events to be notified are carried
in a set of opaque octet strings by the START invocation, and the
identification of the event that occurred is carried in an opaque
octet
string by the NOTIFY invocation. Future derived services could
specify
explicit, standard sets of monitored parameters and syntaxes.
3. The ability of the user to query the current value of any of the same
predefined set of monitored parameters that can be selected from for
cyclic reporting (see 1, above). As with the cyclic reporting of
parameters, for the first version of the MD-CSTS, the predefined set
of
monitored parameters, and the syntax for expressing them, is
bilaterally-
defined.
In Heppenheim, some members of the CSTSWG said that they would like to
implement a simpler service, at least at first. That simpler service
would consist of only the cyclic reporting aspect (i.e., item 1 above).
NASA, on the other hand, desires a monitoring service with the full
suite of capabilities outlined above.
The CSTSWG briefly discussed two approaches in Heppenheim: (a) somehow
defining the notification and query procedures to be optional; or (b)
defining two services right from the beginning: a base service (cyclic
reporting only) and a separate full service (all three features) that
would be derived from the base service.
The proponents of the two-separate-services approach cited the fact that
there are no existing CSTS concepts for declaring procedures to be
optional, and they were averse to introducing such optional mechanisms.
I was given the action to go away and think about the ramifications of
both approaches.
Subsequently, I briefly discussed this issue with others within NASA,
and the NASA preference remains for some sort of single service that can
cover all options. In the CSTSWG telecon on 19 December, I stated that
NASA did not want to have to support two different implementations of a
monitoring service in its user (e.g., SOC) and provider (ground station)
systems to support interoperability. Several other CSTSWG members
counter-argued that because the full service would be derived from the
base service, they really wouldn't be two separate services.
I pointed out that even though one would be derived from the other, that
inheritance would be limited to specification sharing and possibly code
sharing at best, but that as far as operations are concerned a (base)
MD-CSTS and an Extended MD-CSTS would operate like separate services.
I.e., there's no cross-compatibility between the services. Each of the
service types has its own service type ID, and there's currently no way
for one service type implementation to recognize that it is at all
related to another service type through derivation. The problem is
exacerbated by the CSTSs' global "abort upon anything that doesn't
strictly belong to this service type" approach (taken from the SLE
services), which (currently) prevents a parent-CSTS instance from having
a different, more benign behavior to an extended message coming from a
peer child-CSTS instance.
Other members of the CSTSWG agreed that this was a legitimate criticism
of the two-service approach, and we decided to continue the discussion
after the holidays.
After the telecon, it occurred to me that if the CSTSs supported the
feature of substitution, then perhaps NASA might be willing to support
the two services approach. That is, if substitution existed in CSTSs,
then ESA entities could implement the base service, and NASA entities
could implement the derived services, and their instances could still
interoperate. A base-service user (e.g., an ESA SOC) could bind to and
interoperate with an extended-service provider (e.g., a GN ground
station) because the provider would recognize the base service as being
of its parent class, and the user would not START any of the extended
(notification or query) procedures. Similarly, an extended-service user
could bind to and interoperates with a base-service user, albeit with
only the base (periodic reporting) procedure.
Of course, adding substitution into the CSTS specifications would
require additional concept and guideline development, which will involve
some amount of effort. A key aspect would be to develop a way for an
instance of a particular service type to recognize when the service type
of a BIND invocation is for a service that is either a parent or child
service type, and act accordingly. E.g., if the BIND invocation
indicates that the user is implementing a service that is derived from
the type that is implemented by the provider, have the provider return a
negative result with diagnostic "unsupported operation or procedure" for
any operation invocation that's not recognized, instead of peer-aborting
(as is currently the case).
Subsequently, Tim Ray and I met to discuss various CSTS topics, and we
discussed the Monitored Data CSTS issues. Tim proposed an alternative
solution, which I think boils down to a variation of supporting
optional procedures. Under this approach, there is only one service, but
specific options can be defined. The BIND operation would be modified to
allow the initiator (the entity that sends the BIND invocation - usually
the user) to specify which options (capability set?) the initiator would
like to use. The responder to the BIND (usually the provider) then
returns a positive result return, modified to include which of the
options selected by the initiator the performer will support. Normally,
both the user and provider will know well ahead of time what common
subset both will use, but this options/capability set identification is
useful in synchronizing the two associated CSTS service entities. (Note
that the capability list will have to be designed so that a service
entity can recognize that there are capabilities being asked for that it
doesn't understand without causing that entity to go belly-up, but
that's certainly doable).
Under this options approach, if, down the road, someone wants a
variation on a service that's backward-compatible with an existing
service, it becomes a new version of the existing service, not an new
(derived) service, and the specification of the new service must at
least recognize all of the previous options.
Note that under the options approach, there can still be purely derived
services, with no backward compatibility between parent and child
service types. However, since the service type that serves as a parent
for a derived type might itself further evolve, it's important that
derived services be referenced not only to a specific parent service
type, but to a specific version of that parent service type.
So, to summarize, as I see it the current approaches on the table for
providing two or more levels of service for a class of cross support
transfer services (e.g. and in particular, multiple levels of a
monitored data service) are:
1. Create multiple separate types of the service through derivation,
without any form of cross-compatibility between the types. This approach
is essentially supported by the existing CSTS toolkit (a plus) but it
will result in every CSTS user and provider to implement multiple
services of the same class in order to ensure interoperability across
the various networks that support the multiple types. (This approach
remains undesirable to NASA.)
2. Introduce support for substitution, so that implementations of
different services that are related by derivation can "know" that they
are dealing with "family" and interact at some common level.
Cross-compatibility is possible among different services as long as
those services have some parent-child derivation relationship.
3. Introduce support for optional capabilities, and a way of negotiating
those capabilities. Cross-compatibility is possible among
implementations of different set of options, and among different
versions of the that service.
Best regards,
John
John Pietras
Global Science & Technology, Inc. (GST)
7855 Walker Drive
Suite 200
Greenbelt, Maryland, USA
20770-3239
Direct: +1-240-542-1155
GST Main: +1-301-474-9696
Fax: +1-301-474-5970
More information about the Css-csts
mailing list