[Nml-wg] atributes of Services

Freek Dijkstra Freek.Dijkstra at sara.nl
Fri Sep 28 11:22:57 EDT 2012


Hi,

I'm reviewing the NML document a few times in detail, adding notes what
examples are useful.

One thing I can't seem to do is distinguish between the Ports that can
be configured by an AdaptationService and the Ports are are already
configured.

The providesPort relation seem to aim the ports that are already
configured, akin to providesLink for the SwitchingService.


Current situation
=================

Here are the current attributes and relations for SwitchingService:

- associate with static component:
  Node|Topology --(hasService)--> SwitchingService
- associate (between) which (ports a) link CAN be created:
  SwitchingService --(hasOutboundPort)--> Port|PortGroup
  SwitchingService --(hasInboundPort)--> Port|PortGroup
- associate which links are already configured:
  SwitchingService --(providesLink)--> Link|LinkGroup

Here are the current attributes and relations for AdaptationService:

- associate with static component:
  Port --(hasService)--> AdaptationService
- associate which (client layer) ports CAN be created:
  AdaptationService --adaptationfunction--> URI (*)
  N/A
- associate which ports are already configured:
  AdaptationService --(providesPort)--> Port|PortGroup

(* The adaptationfunction attribute can be used to determine client
layer encoding, but not the available labels)


Here are three (3) proposals to rectify this omission and subsequently
align the SwitchingService and AdaptationService definitions:


Proposal 1: encoding and hasLabelGroup
======================================

For SwitchingService (same as current situation):

- associate with static component:
  Node|Topology --(hasService)--> SwitchingService
- associate (between) which (ports a) link CAN be created:
  SwitchingService --(hasOutboundPort)--> Port|PortGroup
  SwitchingService --(hasInboundPort)--> Port|PortGroup
- associate which links are already configured:
  SwitchingService --(providesLink)--> Link|LinkGroup

For AdaptationService (add attribute and relation):

- associate with static component:
  Port --(hasService)--> AdaptationService
- associate which (client layer) ports CAN be created:
  AdaptationService --encoding--> URI
  AdaptationService --hasLabelGroup--> LabelGroup
- associate which ports are already configured:
  AdaptationService --(providesPort)--> Port|PortGroup


Proposal 2: canProvidePort
==========================

For SwitchingService (same as current situation):

- associate with static component:
  Node|Topology --(hasService)--> SwitchingService
- associate (between) which (ports a) link CAN be created:
  SwitchingService --(hasOutboundPort)--> Port|PortGroup
  SwitchingService --(hasInboundPort)--> Port|PortGroup
- associate which links are already configured:
  SwitchingService --(providesLink)--> Link|LinkGroup

For AdaptationService (add canProve):

- associate with static component:
  Port --(hasService)--> AdaptationService
- associate which (client layer) ports CAN be created:
  AdaptationService --canProvidePort--> Port|PortGroup
- associate which ports are already configured:
  AdaptationService --(providesPort)--> Port|PortGroup


Proposal 2: canProvidePort
==========================

For SwitchingService (same as current situation):

- associate with static component:
  Node|Topology --(hasService)--> SwitchingService
- associate (between) which (ports a) link CAN be created:
  SwitchingService --(hasOutboundPort)--> Port|PortGroup
  SwitchingService --(hasInboundPort)--> Port|PortGroup
- associate which links are already configured:
  SwitchingService --(providesLink)--> Link|LinkGroup

For AdaptationService (add canProvidePort):

- associate with static component:
  Port --(hasService)--> AdaptationService
- associate which (client layer) ports CAN be created:
  AdaptationService --canProvidePort--> Port|PortGroup
- associate which ports are already configured:
  AdaptationService --(providesPort)--> Port|PortGroup


Proposal 3: Behave like a SwitchingService
==========================================

For SwitchingService (has[In|Out]boundPort is replaced with
canConnect[Sink|Source]Port):

- associate with static component:
  Node|Topology --(hasService)--> SwitchingService
- associate (between) which (ports a) link CAN be created:
  SwitchingService --(canConnectSinkPort)--> Port|PortGroup
  SwitchingService --(canConnectSourcePort)--> Port|PortGroup
- associate which links are already configured:
  SwitchingService --(providesLink)--> Link|LinkGroup

For AdaptationService (it now is provided by a Node or Topology):

- associate with static component:
  Node|Topology --(hasService)--> AdaptationService
  AdaptationService --(hasServerSinkPort)--> Port
  AdaptationService --(hasServerSourcePort)--> Port
- associate which client AND server layer ports CAN be created:
  AdaptationService --(canConnectClientSinkPort)--> Port|PortGroup
  AdaptationService --(canConnectClientSourcePort)--> Port|PortGroup
- associate which ports are already configured:
  AdaptationService --(providesClientSinkPort)--> Port|PortGroup
  AdaptationService --(providesClientSourcePort)--> Port|PortGroup

The advantage of the later configuration is that is allows bidirectional
adaptations services (no more distinction between AdaptationService and
DeAdaptationService).

With only minor modifications it is also possible to support inverse
multiplexing adaptation. I did not add this, because I'm not a big fan
(it adds more complexity, which can be provided with the more simple
experimental isParallelCompoundLink relation.)

My opinion
==========

I would say proposal #2 is cleanest.

What do you think?

Freek


More information about the nml-wg mailing list