2   OpenSplice

OpenSplice DDS is highly configurable, even allowing the architecture of the DDS middleware to be chosen by the user at deployment time. OpenSplice DDS can be configured to run using a shared memory architecture, where both the DDS related administration (including the optional pluggable services) and DDS applications interface directly with shared memory. Alternatively, OpenSplice DDS also supports a single process architecture, where one or more DDS applications, together with the OpenSplice administration and services, can all be grouped into a single operating system process. Both deployment modes support a configurable and extensible set of services, providing functionality such as:

networking - providing QoS-driven real-time networking based on multiple
reliable multicast ‘channels’
durability - providing fault-tolerant storage for both real-time state data as well as
persistent settings
remote control and monitoring SOAP service - providing remote web-based
access using the SOAP protocol from the OpenSplice Tuner tool
dbms service - providing a connection between the real-time and the enterprise
domain by bridging data from DDS to DBMS and vice versa

Because of the pluggable architecture, the OpenSplice middleware can be easily configured on the fly by specifying which services to be used as well as specifying their optimal configuration for the application domain (networking parameters, durability levels, etc.). Typically, there are many nodes within a system.

The OpenSplice middleware including its services can be configured by means of easy maintainable XML-file(s).

  • Full path: /OpenSplice
  • Occurrences min-max: 1-1

3   Domain

The Domain service is responsible for creating and initialising the DDS database which is used by the administration to manage a specific DDS Domain on a computing node. Without this administration, no other service or application is able to participate in a DDS Domain.

Once the administration has been initialised, the Domain service starts the set of pluggable services. The lifecycle of the started services is under control of the Domain service, which means it will monitor the health of all started services, take corrective actions if needed and stop the services when it is terminated.

When a shutdown of the OpenSplice Domain service is requested, it will react by announcing the shutdown using the DDS administration. Applications will not be able to use DDS functionality anymore and services are requested to terminate elegantly. Once this has succeeded, the Domain service will destroy the administration and finally terminate itself.

  • Full path: /Domain
  • Occurrences min-max: 1-1
  • Child elements: Name, Id, Role, ServiceTerminatePeriod, SingleProcess, CPUAffinity, InProcessExceptionHandling, RetentionPeriod

3.1   Name

This element specifies the name of the instantiated DDS domain. In general, it is recommended to change this name to a name that identifies the domain. If several different DDS domains are required to run simultaneously, then they all need to have their own domain name.
  • Full path: /Domain/Name
  • Format: string
  • Default value: OpenSpliceV6
  • Occurrences min-max: 1-1

3.2   Id

This element specifies the domain Id of the instantiated DDS domain. If several different DDS domains are required to run simultaneously, then they all need to have their own unique domain Id. Note - for maximum interoperability it is recommended that you only select a domain Id from the range 0 < n < 230. The domain Id value is used by the DDSI2 service to derive values for the required network communiction endpoints and service reconfiguration is required to use domain id values outside of this range. Please see section 9.6.1 of the Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol specification (DDSI), v2.1, formal/2009-01-05 at http://www.omg.org/spec/DDSI/2.1/ for further information.
  • Full path: /Domain/Id
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1

3.3   Role

This (optional) element specifies the role of the instantiated domain. For dynamic discovery, this role will be used to define the communication scope of instantiated domains on other nodes in the system. The purpose of specifying roles within the system is to ‘overlay’ the underlying physical network with a node’s scope-of-interest that allows to bound topology discovery effort and related overhead in large scale (WAN) systems.
  • Full path: /Domain/Role
  • Format: string
  • Default value: DefaultRole
  • Occurrences min-max: 0-1

3.4   Lease

The Lease parameters specify how the Domain service as well as the services started by the Domain service must announce their liveliness in the DDS administration.
  • Full path: /Domain/Lease
  • Occurrences min-max: 0-1
  • Child elements: ExpiryTime

3.4.1   ExpiryTime

This element specifies the interval(in seconds) in which services have to announce their liveliness.

Every OpenSplice service including the Domain service itself has to announce its liveliness regularly. This allows corrective actions to be taken when one of the services becomes non-responsive. This element specifies the required interval. Decreasing the interval decreases the time in which non-responsiveness of a service is detected, but leads to more processing. Increasing it has the opposite effect.

  • Full path: /Domain/Lease/ExpiryTime
  • Default value: 10.0
  • Occurrences min-max: 1-1
  • Required attributes: update_factor

3.4.1.1   update_factor

In case of a (temporary) high CPU load, the scheduling behaviour of the operating system might affect the capability of a service to assert its liveliness ‘on time’. The update_factor attribute introduces some elasticity in this mechanism by making the services assert their liveliness more often than required by the ExpiryTime. Services will report their liveliness every ExpiryTime multiplied by this update_factor.
  • Full path: /Domain/Lease/ExpiryTime/update_factor
  • Default value: 0.2
  • Required: true

3.5   GeneralWatchdog

This element controls the default characteristics of the Watchdog thread for all services. Individual services may overrule this default in their service specific settings. Every service has its own Watchdog thread, that is responsible for automatically renewing the lease for that service. Services that do not renew their lease in time will loose the liveliness of all their writers
  • Full path: /Domain/GeneralWatchdog
  • Occurrences min-max: 0-1

3.5.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.
  • Full path: /Domain/GeneralWatchdog/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class

3.5.1.1   Priority

This element specifies the thread priority that will be used by the watchdog thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /Domain/GeneralWatchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
3.5.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /Domain/GeneralWatchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

3.5.1.2   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /Domain/GeneralWatchdog/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

3.6   ServiceTerminatePeriod

This element specifies the amount of time the Domain Service, when instructed to terminate, should wait for the other configured Services to terminate. When this element is configured to ‘0’ the Domain service will terminate without any wait time at all. Be aware that without any wait time the deamon will use a hard kill on any lingering service that can not terminate fast enough. This may prevent graceful termination and thus leave applications that are still attached to the DDS domain in an undefined state. Consequently the ‘0’ value should only be used when there is some form of process management on top of OpenSplice DDS.
  • Full path: /Domain/ServiceTerminatePeriod
  • Default value: 10.0
  • Occurrences min-max: 0-1

3.7   SingleProcess

The SingleProcess element specifies whether the OpenSplice Domain and other
OpenSplice services and applications are intended to be all deployed within the same process, known in OpenSplice as a single process.
Please note that the choice to use the single process deployment also implies
the use of heap memory for the OpenSplice database management instead of shared memory that would be used otherwise. The heap memory is limited by the Operating System, so the Database element under Domain does not take effect when SingleProcess has a value of True.
There are two ways in which to deploy an OpenSplice DDS application as a
single process:
Single Process Application : The user starts an application as a
new process. In this case, the DDS create_participant operation will implicitly start the OpenSplice Domain Service as a thread in the existing application process. The OpenSplice Domain Service will then also implicitly start all services specified in the configuration as threads within the same process.
Single Process Application Cluster : This provides the option to
co-locate multiple DDS applications into a single process. This can be done by creating application libraries rather than application executables that can be linked into the single process in a similar way to how the DDS middleware services are linked into the single process. The applications that are created as libraries must be described using the Application configuration attribute. These are started as threads within the existing process by the Domain Service after all the DDS services that are specified have been started as threads.
Please note that the Application elements specified under Domain will only
take effect when this SingleProcess attribute has a value of true.
  • Full path: /Domain/SingleProcess
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

3.8   CPUAffinity

This (optional) element specifies a comma separated list of CPU numbers for the CPUs which opensplice, and its services should be restricted to use. (Supported on VxWorks kernel mode only)
  • Full path: /Domain/CPUAffinity
  • Format: string
  • Occurrences min-max: 0-1

3.9   InProcessExceptionHandling

The InProcessExceptionHandling element determines whether a process that uses OpenSplice will
handle exceptions by itself and try to clean up shared resources or not. If the process itself refrains from cleaning up its resources, the splice-daemon will attempt to clean up the application shared resources asynchronously. If the splice-daemon during clean-up determines that shared resources have been left in an inconsistent state by the application, it will terminate the middleware.
Setting this option to false will make the middleware fail-safe. However, the downside of
this approach is that there are cases in which the splice-daemon will decide to shut down the middleware, because it cannot determine with 100% certainty that shared resources are consistent (even if they are consistent in some cases). A potential approach could be to set this option to ‘true’ during development-phase and ‘false’ when application(s) have been deployed.

By default this configuration item is set to true.

  • Full path: /Domain/InProcessExceptionHandling
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

3.10   Daemon

Every domain is controlled by exactly one daemon: the Splice Daemon. The Splice Daemon configuration expects a root element named OpenSplice/Daemon. Within this root element, the Splice Daemon will look for several child-elements. Each of these child elements is listed and explained.
  • Full path: /Domain/Daemon
  • Occurrences min-max: 0-1
  • Child elements: Locking

3.10.1   Locking

This element specifies the locking policy for the Splice Deamon process, indicating whether its pages should be locked in physical memory or not.

On platforms with a virtual memory architecture, the operating system decides when to swap memory pages from internal memory to disk. This results in execution delays for the corresponding code because it has to be paged back into main memory. The element Locking can be used to avoid such swapping for the Splice Deamon. The user needs the appropriate privileges from the underlying operating system to be able to use this option.

  • Full path: /Domain/Daemon/Locking
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

3.10.2   Watchdog

This element controls the characteristics of the Spliced Daemon Watchdog thread
  • Full path: /Domain/Daemon/Watchdog
  • Occurrences min-max: 0-1

3.10.2.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.
  • Full path: /Domain/Daemon/Watchdog/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class
3.10.2.1.1   Priority
This element specifies the thread priority that will be used by the watchdog thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /Domain/Daemon/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
3.10.2.1.2   Class
This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /Domain/Daemon/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

3.10.3   KernelManager

This element specifies the behaviour of the KernelManager.

The kernel manager actively monitors the OpenSplice kernel and executes administrative tasks:

  • check topic consistency
  • determine liveliness status of readers and writers
  • notify readers and writers on incompatible QoS
  • Full path: /Domain/Daemon/KernelManager
  • Occurrences min-max: 0-1

3.10.3.1   Scheduling

This element specifies the scheduling policies used to control the KernelManager thread.
  • Full path: /Domain/Daemon/KernelManager/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class
3.10.3.1.1   Priority
This element specifies the thread priority that will be used by the KernelManager thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /Domain/Daemon/KernelManager/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
3.10.3.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /Domain/Daemon/KernelManager/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
3.10.3.1.2   Class
This element specifies the thread scheduling class that will be used by the KernelManager thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /Domain/Daemon/KernelManager/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

3.10.4   GarbageCollector

This element specifies the behaviour of the GarbageCollector.

The garbage collector is a safety mechanism and is responsible for reclaiming resources in case an application or remote node does not terminate properly.

  • Full path: /Domain/Daemon/GarbageCollector
  • Occurrences min-max: 0-1

3.10.4.1   Scheduling

This element specifies the scheduling policies used to control the GarbageCollector thread.
  • Full path: /Domain/Daemon/GarbageCollector/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class
3.10.4.1.1   Priority
This element specifies the thread priority that will be used by the GarbageCollector thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /Domain/Daemon/GarbageCollector/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
3.10.4.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /Domain/Daemon/GarbageCollector/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
3.10.4.1.2   Class
This element specifies the thread scheduling class that will be used by the GarbageCollector thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /Domain/Daemon/GarbageCollector/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

3.10.5   ResendManager

Every service has its own ResendManager thread, that is responsible for attempting to resend samples in the history queue of its writers. A writer that cannot successfully deliver a sample to a local service or application in the first attempt (for example because the application or service ran out of queue space) will store that sample in its own history queue, from which the Resend manager will periodically try to re-transmit it.
  • Full path: /Domain/Daemon/ResendManager
  • Occurrences min-max: 0-1

3.10.5.1   Scheduling

This element specifies the type of OS scheduling class used by the thread that does local resends for the builtin participant.
  • Full path: /Domain/Daemon/ResendManager/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class
3.10.5.1.1   Priority
This element specifies the thread priority that will be used by the ResendManager thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /Domain/Daemon/ResendManager/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
3.10.5.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /Domain/Daemon/ResendManager/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
3.10.5.1.2   Class
This element specifies the thread scheduling class that will be used by the ResendManager thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /Domain/Daemon/ResendManager/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

3.10.6   Heartbeat

The Splice Daemon uses an heartbeat mechanism to monitor the health of the remote domain services. This element allows fine-tuning of this heartbeat mechanism.

Please note this heartbeat mechanism is similar to but not the same as the service liveliness assertion.

  • Full path: /Domain/Daemon/Heartbeat
  • Occurrences min-max: 0-1
  • Child elements: ExpiryTime
  • Optional attributes: transport_priority

3.10.6.1   transport_priority

This attribute controls the transport priority QoS setting (in seconds) that is only used by the Splice Daemom for for sending its heartbeats.
  • Full path: /Domain/Daemon/Heartbeat/transport_priority
  • Format: integer
  • Default value: 0
  • Required: false

3.10.6.2   Scheduling

This element specifies the scheduling parameters used by the thread that periodically sends the heartbeats.
  • Full path: /Domain/Daemon/Heartbeat/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
3.10.6.2.1   Priority
This element specifies the thread priority that will be used by the thread that periodically sends the heartbeats. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /Domain/Daemon/Heartbeat/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
3.10.6.2.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /Domain/Daemon/Heartbeat/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
3.10.6.2.2   Class
This element specifies the thread scheduling class that will be used by the thread that periodically sends the heartbeats. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /Domain/Daemon/Heartbeat/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

3.10.6.3   ExpiryTime

This element specifies the maximum amount of time(in seconds) in which the Splice Daemon expects a new heartbeat of remote domain services. This is obviously also the same amount of time in which the Splice Daemon must send a heartbeat itself.

Increasing this value will lead to less networking traffic and overhead but also to less responsiveness with respect to the liveliness of the Splice Daemon. Change this value according to the need of your system with respect to these aspects.

  • Full path: /Domain/Daemon/Heartbeat/ExpiryTime
  • Default value: 4.0
  • Occurrences min-max: 1-1
  • Required attributes: update_factor
3.10.6.3.1   update_factor

In case of a (temporary) high CPU load, the scheduling behaviour of the operating system might affect the capability of the Splice Daemon to send its heartbeat ‘on time’. This attribute introduces some elasticity in this mechanism by making the service send its heartbeat more often then required by the ExpiryTime.

The Splice Daemon will report its liveliness every ExpiryTime multiplied by this update_factor.

  • Full path: /Domain/Daemon/Heartbeat/ExpiryTime/update_factor
  • Default value: 0.25
  • Required: true

3.11   Database

This element contains information about the nodal administration (shared memory) to be used.
  • Full path: /Domain/Database
  • Occurrences min-max: 0-1
  • Child elements: Size, Threshold, Address, Locking

3.11.1   Size

This element specifies the size of the shared memory segment holding the database. Change this value if your system requires more memory than the default. Please note that the operating system should be configured support the requested size. On most platforms you need ‘root’ privileges to set large sizes.
  • Full path: /Domain/Database/Size
  • Default value: 10485760
  • Occurrences min-max: 1-1

3.11.2   Threshold

This element specifies the threshold size used by OpenSplice DDS. Whenever there is less free shared memory then indicated by the threshold then no new allocations will be allowed within shared memory. Services are allowed to continue allocating shared memory until less then 50% of the threshold value is available. It is strongly discouraged to configure a threshold value of less then the default value, but for some embedded systems it might be needed as only limited memory is available.
  • Full path: /Domain/Database/Threshold
  • Default value: 1048576
  • Occurrences min-max: 0-1

3.11.3   Address

This element specifies the start address where the nodal shared administration is mapped into the virtual memory for each process that attaches to the current Domain. The possible values are platform dependent.

Change this value if the default address is already in use, for example by another Domain Service or another product.

  • Full path: /Domain/Database/Address
  • Format: string
  • Default value: 0x40000000
  • Occurrences min-max: 0-1

3.11.4   Locking

This element specifies the locking policy of the Database, indicating whether to lock pages in physical memory or not.

With the virtual memory architecture, the operating system decides when to swap memory pages from internal memory to disc. This results in execution delays for the corresponding code because it has to be paged back into main memory. The element Locking can be used to avoid such swapping for the shared memory where the database resides. The user needs the appropriate privileges from the underlying operating system to be able to use this option.

The possible values are:

  • True: lock the pages in memory.
  • False: don’t lock the pages in memory.
  • Default: use the platform-dependent default value.
  • Full path: /Domain/Database/Locking
  • Format: enumeration
  • Default value: Default
  • Valid values: True, False, Default
  • Occurrences min-max: 0-1

3.12   Listeners

This element specifies policies for the thread that services the listeners that the application specifies on the API-level.
  • Full path: /Domain/Listeners
  • Occurrences min-max: 0-1
  • Child elements: StackSize

3.12.1   StackSize

This element specifies the stack size of the listener thread.
  • Full path: /Domain/Listeners/StackSize
  • Default value: 128000
  • Occurrences min-max: 1-1

3.13   Service

The Domain service is responsible for starting, monitoring and stopping the pluggable services. One Service element must be specified for every service that needs to be started by the Domain service.
  • Full path: /Domain/Service
  • Occurrences min-max: 0-*
  • Child elements: Command, MemoryPoolSize, HeapSize, StackSize, Configuration, Locking, FailureAction
  • Required attributes: name
  • Optional attributes: enabled

3.13.1   name

This attribute specifies the name by which the corresponding service is identified in the rest of the configuration file.

In the OpenSplice DDS configuration file, services and their settings are identified by a name. When the Domain Service starts a particular service, its corresponding name is passed. The service in question uses this name in order to find its own configuration settings in the rest of the configuration file. The name specified here must match the name attribute of the main element of the corresponding service.

  • Full path: /Domain/Service/name
  • Format: string
  • Default value: durability
  • Required: true

3.13.2   enabled

This attribute indicates whether the service is actually started or not.

Toggling a service between enabled and disabled is a quick alternative for commenting out the corresponding lines in the configuration file.

  • Full path: /Domain/Service/enabled
  • Format: boolean
  • Default value: true
  • Required: false

3.13.3   Command

This element specifies the command to be executed in order to start the service.

OpenSplice DDS comes with a set of pluggable services. The Command element specifies the name of the actual service executable or a script to launch this service (possibly including its path, but always including its extension, e.g. ‘.exe’ on the Windows platform). When no path is included, the Domain Service will search the PATH environment variable for the corresponding executable. Once located, it will be started as a separate process.

  • Full path: /Domain/Service/Command
  • Format: string
  • Default value: durability
  • Occurrences min-max: 1-1

3.13.4   MemoryPoolSize

CAUTION: This element should only be used on the GHS Integrity platform!!

This element maps directly into the integrate file for the address space for this service. Consult the GHS Integrate documentation for further information on this setting. Valid values are decimal or hexadecimal numbers and they express the number of bytes.
  • Full path: /Domain/Service/MemoryPoolSize
  • Format: string
  • Default value: 0
  • Occurrences min-max: 0-1

3.13.5   HeapSize

CAUTION: This element should only be used on the GHS Integrity platform!!

This element maps directly into the integrate file for the address space for this service. Consult the GHS Integrate documentation for further information on this setting. Valid values are decimal or hexadecimal numbers and they express the number of bytes.

  • Full path: /Domain/Service/HeapSize
  • Format: string
  • Default value: 0
  • Occurrences min-max: 0-1

3.13.6   StackSize

CAUTION: This element should only be used on the GHS Integrity platform!!

This element maps directly into the integrate file for the address space for this service. Consult the GHS Integrate documentation for further information on this setting. Valid values are decimal or hexadecimal numbers and they express the number of bytes.
  • Full path: /Domain/Service/StackSize
  • Format: string
  • Default value: 0
  • Occurrences min-max: 0-1

3.13.7   Configuration

This element allows overriding of the default URI (specified in the OSPL_URI environment variable, or passed explicitly as command- line parameter to the ospl executable) with the configuration resource specified here.

When the Domain Service is started by the ospl executbale, by default it passes on its own URI to the services that it starts. This is valid when the configuration of the service is located in the same resource file as the configuration of the Domain Service itself. (This is a convenient situation in most cases).

If the configuration of the current service is located in a separate resource file, a separate URI identifying that particular resource file must be specified in this element.

  • Full path: /Domain/Service/Configuration
  • Format: string
  • Default value: ${OSPL_URI}
  • Occurrences min-max: 0-1

3.13.8   Scheduling

This element specifies the type of OS scheduling class will be used by the Domain service to create the service process. Services can only be started within the scheduling classes that are supported by the underlying operating system.
  • Full path: /Domain/Service/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class

3.13.8.1   Priority

This element specifies the thread priority that the Domain Service will assign to the current Service when it is started. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /Domain/Service/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
3.13.8.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /Domain/Service/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

3.13.8.2   Class

This element specifies the thread scheduling class that the Domain Service will assign to the current Service when it is started. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /Domain/Service/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

3.13.9   Locking

This element specifies the locking policy of the current Service process, indicating whether pages should be locked in physical memory or not.

On platforms with a virtual memory architecture, the operating system decides when to swap memory pages from internal memory to disk. This results in execution delays for the corresponding code because it has to be paged back into main memory. The element Locking can be used to avoid such swapping for the current Service. The user needs the appropriate privileges from the underlying operating system to be able to use this option.

  • Full path: /Domain/Service/Locking
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

3.13.10   FailureAction

This element specifies what action to take at the moment that the service seems to have become non-responsive.

Each service reports its liveliness regularly using the DDS administration. If the service fails to do so, the Domain service will assume the service has become non-responsive. This element determines what action is taken by the DomainService in case this happens.

The following actions are available:

  • skip: Ignore the non-responsiveness and continue.
  • kill: End the service process by force.
  • restart: End the service process by force and restart it.
  • systemhalt: End all OpenSplice services including the Domain service (for the current DDS Domain on this computing node).
  • Full path: /Domain/Service/FailureAction
  • Format: enumeration
  • Default value: skip
  • Valid values: kill, restart, skip, systemhalt
  • Occurrences min-max: 0-1

3.14   Application

When in the single process deployment mode, the Domain service can deploy DDS applications by dynamically loading application shared libraries and starting threads within the existing process.

Note that Applications only take effect when the single process configuration is enabled by way of the SingleProcess element.

  • Full path: /Domain/Application
  • Occurrences min-max: 0-*
  • Child elements: Command, Arguments, Library
  • Required attributes: name
  • Optional attributes: enabled

3.14.1   name

The name uniquely identifies the application
  • Full path: /Domain/Application/name
  • Format: string
  • Default value: application1
  • Required: true

3.14.2   enabled

This attribute indicates whether the application is actually started or not.

Toggling an applicatione between enabled and disabled is a quick alternative for commenting out the corresponding lines in the configuration file.

  • Full path: /Domain/Application/enabled
  • Format: boolean
  • Default value: true
  • Required: false

3.14.3   Command

Command is the name of both the entry point function to invoked and the name of the shared library to be dynamically loaded into the process. The signature of the entry point function is the same as argc/argv usually seen with main.

For example, if Command is “HelloWorld”, OpenSpliceDDS will attempt to load “libHelloWorld.so” on Unix (or “HelloWorld.dll” on Windows) into the existing process and then invoke the “HelloWorld” entry point to start that DDS application.

If the name of the shared library does not have the same name as the entry point the user is able to override the name of the library by using the Application’s Library attribute

The shared library is located by way of the current working directory, or LD_LIBRARY_PATH for Unix systems, and PATH for Windows systems.

  • Full path: /Domain/Application/Command
  • Format: string
  • Default value: application1
  • Occurrences min-max: 1-1

3.14.4   Arguments

This optional attribute allows the user to specify arguments to be passed to the DDS application’s entry point when it is invoked.

For example, if Command is “HelloWorld” and Arguments is “arg1 arg2”, OpenSplice will invoke the HelloWorld function with the argc = 3 and argv = {“HelloWorld”, “arg1”, “arg2”}

  • Full path: /Domain/Application/Arguments
  • Format: string
  • Occurrences min-max: 0-1

3.14.5   Library

This optional attribute allows the user to override the name of the shared library if it is different to the name of the entry point specified by Command.

The shared library is located by way of the current working directory, or LD_LIBRARY_PATH for Unix systems, and PATH for Windows systems.

  • Full path: /Domain/Application/Library
  • Format: string
  • Default value: application1
  • Occurrences min-max: 0-1

3.15   BuiltinTopics

This element specifies the granularity of the builtin topics.
  • Full path: /Domain/BuiltinTopics
  • Occurrences min-max: 0-1
  • Required attributes: enabled

3.15.1   enabled

This attribute enables or disables the publication of builtin topics for the existence of individual Participants/DataWriters/DataReaders. The existence of Topics will always be communicated by means of builtin topics, regardless of the value specified here.
  • Full path: /Domain/BuiltinTopics/enabled
  • Format: boolean
  • Default value: true
  • Required: true

3.16   PriorityInheritance

This element specifies the usage on Priority Inheritance on Muexes in this domain.
  • Full path: /Domain/PriorityInheritance
  • Occurrences min-max: 0-1
  • Required attributes: enabled

3.16.1   enabled

This attribute enables or disables priority inheritance for mutexes, if that is supported by the underlying Operating System.
  • Full path: /Domain/PriorityInheritance/enabled
  • Format: boolean
  • Default value: true
  • Required: true

3.17   Report

The Report element controls some aspects of the OpenSplice domain logging functionality.
  • Full path: /Domain/Report
  • Occurrences min-max: 0-1
  • Optional attributes: append, verbosity

3.17.1   append

This attribute determines whether logging for this domain should continue to append to the previous error and info log files when the domain is (re)started or whether the previous file should be deleted and fresh ones created.
  • Full path: /Domain/Report/append
  • Format: boolean
  • Default value: true
  • Required: false

3.17.2   verbosity

This attribute determines what level of logging should be in effect for this domain. The levels or logging verbosity are:

  • 0 DEBUG
  • 1 INFO
  • 2 WARNING
  • 3 API_INFO
  • 4 ERROR
  • 5 CRITICAL
  • 6 FATAL
  • 7 REPAIRED
  • 8 NONE

The level specified as this attribute is the lowest level that will be emitted to the logs. All logging can be suppressed by specifying the value 8 or NONE.

  • Full path: /Domain/Report/verbosity
  • Format: enumeration
  • Default value: INFO
  • Valid values: DEBUG, INFO, WARNING, API_INFO, ERROR, CRITICAL, FATAL, REPAIRED, NONE
  • Required: false

3.18   Statistics

This element specifies the policies regarding statistics. Various statistics can be generated by OpenSplice DDS to help you analyze and tune application behaviour during application development. Since this introduces extra overhead, it is generally turned off in a runtime system.
  • Full path: /Domain/Statistics
  • Occurrences min-max: 0-1

3.18.1   Category

This element specifies the properties for a particular category of statistics.
  • Full path: /Domain/Statistics/Category
  • Occurrences min-max: 0-*
  • Required attributes: name
  • Optional attributes: enabled

3.18.1.1   enabled

This attribute enables or disables the generation of statistics for the specified category.
  • Full path: /Domain/Statistics/Category/enabled
  • Format: boolean
  • Default value: true
  • Required: false

3.18.1.2   name

This attribute specifies the name of a particular category of statistics.
  • Full path: /Domain/Statistics/Category/name
  • Format: enumeration
  • Default value: reader
  • Valid values: durability, reader, writer, networking
  • Required: true

3.19   RetentionPeriod

This element specifies how long the administration for unregistered instances is retained in both readers and the durability service before it is definitively removed. (For the durability service this time is added to the service_cleanup_delay configured for each TopicQos.) By default unregistered instances are retained for 500 ms prior to removal, to avoid the revival of ‘forgotten’ instances when receiving delayed samples written prior to the instance’s unregistration. This value should only be decreased when the expected lifetime of an instance is extremely short while the instance generation frequency is extremely high, to avoid running out of resources. The value should be increased when you know you can expect out-of-order deliveries with a maximum delay higher than the currently configured RetentionPeriod.
  • Full path: /Domain/RetentionPeriod
  • Format: integer
  • Default value: 500
  • Occurrences min-max: 0-1

3.20   ReportPlugin

This Tag specifies user defined report functionality to be used by the domain. All services and applications will load a user provides report library that will implement the report plugin interface. The report interface consists of three operations; initialize, report and finalize.
  • Full path: /Domain/ReportPlugin
  • Occurrences min-max: 0-1
  • Child elements: SuppressDefaultLogs, ServicesOnly

3.20.1   Library

This tag specifies the library to be loaded.
  • Full path: /Domain/ReportPlugin/Library
  • Occurrences min-max: 1-1
  • Required attributes: file_name

3.20.1.1   file_name

This attribute specifies the library to be loaded.
  • Full path: /Domain/ReportPlugin/Library/file_name
  • Format: string
  • Default value: n/a
  • Required: true

3.20.2   Initialize

This tag specifies the library symbol that will be assigned to the report Initialize operation. This operation will be invoked initially after loading the library to perform initialization of the report facility if needed.
  • Full path: /Domain/ReportPlugin/Initialize
  • Occurrences min-max: 1-1
  • Required attributes: symbol_name
  • Optional attributes: argument

3.20.2.1   symbol_name

This attribute specifies the library symbol that will be assigned to the report Initialize operation. This operation will be invoked initially after loading the library to perform initialization of the report facility if needed.
  • Full path: /Domain/ReportPlugin/Initialize/symbol_name
  • Format: string
  • Default value: n/a
  • Required: true

3.20.2.2   argument

This attribute is a string value that is passed to the function specified by the symbol_name. The string value has no meaning to the service and is used to pass any context-specific information that may be required.
  • Full path: /Domain/ReportPlugin/Initialize/argument
  • Format: string
  • Default value: “”
  • Required: false

3.20.3   Report

This tag specifies the library symbol that will be assigned to the report Report operation. This operation will be invoked on all reports performed by the DDS service.
  • Full path: /Domain/ReportPlugin/Report
  • Occurrences min-max: 0-1
  • Required attributes: symbol_name

3.20.3.1   symbol_name

This attribute specifies the library symbol that will be assigned to the report Report operation. This operation will be invoked on all reports performed by the DDS service.
  • Full path: /Domain/ReportPlugin/Report/symbol_name
  • Format: string
  • Default value: n/a
  • Required: true

3.20.4   TypedReport

This tag specifies the library symbol that will be assigned to the report TypedReport operation. This operation will be invoked on all reports performed by the DDS service.
  • Full path: /Domain/ReportPlugin/TypedReport
  • Occurrences min-max: 0-1
  • Required attributes: symbol_name

3.20.4.1   symbol_name

This attribute specifies the library symbol that will be assigned to the report TypedReport operation. This operation will be invoked on all reports performed by the DDS service.
  • Full path: /Domain/ReportPlugin/TypedReport/symbol_name
  • Format: string
  • Default value: n/a
  • Required: true

3.20.5   Finalize

This tag specifies the library symbol that will be assigned to the report Finalize operation. This operation will be invoked upon process termination to perform de-initialization of the report facility if needed.
  • Full path: /Domain/ReportPlugin/Finalize
  • Occurrences min-max: 1-1
  • Required attributes: symbol_name

3.20.5.1   symbol_name

This attribute specifies the library symbol that will be assigned to the report Finalize operation. This operation will be invoked upon process termination to perform de-initialization of the report facility if needed.
  • Full path: /Domain/ReportPlugin/Finalize/symbol_name
  • Format: string
  • Default value: n/a
  • Required: true

3.20.6   SuppressDefaultLogs

This attribute specifies whether the default error and info report logs are to be produced when a user Report Plugin has been defined. If registration of the Report Plugin fails the default error and info logs will not be suppressed regardless of the value of this attribute
  • Full path: /Domain/ReportPlugin/SuppressDefaultLogs
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

3.20.7   ServicesOnly

This attribute specifies whether the log plug-in is to be effective only for processes that are exclusively OpenSplice services. If this value is true then the plug-in will not be used for user applications and/or OpenSplice services collocated with user applications in single process mode.
  • Full path: /Domain/ReportPlugin/ServicesOnly
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

3.21   ResourceLimits

This configuration tag allows for the specification of certain characteristics of resource limits that will be applied throughout the domain
  • Full path: /Domain/ResourceLimits
  • Occurrences min-max: 0-1

3.21.1   MaxSamples

This configuration tag allows for the specification of certain characteristics of the max samples resource limit that will be applied throughout the domain
  • Full path: /Domain/ResourceLimits/MaxSamples
  • Occurrences min-max: 0-1
  • Child elements: WarnAt

3.21.1.1   WarnAt

This element specifies the number of samples that, once reached, will result in a warning message printed in the info log. This is to allow the detection of excessive use of resources within the domain more easily.
  • Full path: /Domain/ResourceLimits/MaxSamples/WarnAt
  • Default value: 5000
  • Occurrences min-max: 0-1

3.21.2   MaxInstances

This configuration tag allows for the specification of certain characteristics of the max instances resource limit that will be applied throughout the domain
  • Full path: /Domain/ResourceLimits/MaxInstances
  • Occurrences min-max: 0-1
  • Child elements: WarnAt

3.21.2.1   WarnAt

This element specifies the number of instances that, once reached, will result in a warning message printed in the info log. This is to allow the detection of excessive use of resources within the domain more easily.
  • Full path: /Domain/ResourceLimits/MaxInstances/WarnAt
  • Default value: 5000
  • Occurrences min-max: 0-1

3.21.3   MaxSamplesPerInstance

This configuration tag allows for the specification of certain characteristics of the max samples per instance resource limit that will be applied throughout the domain
  • Full path: /Domain/ResourceLimits/MaxSamplesPerInstance
  • Occurrences min-max: 0-1
  • Child elements: WarnAt

3.21.3.1   WarnAt

This element specifies the number of samples per instance that, once reached, will result in a warning message printed in the info log. This is to allow the detection of excessive use of resources within the domain more easily.
  • Full path: /Domain/ResourceLimits/MaxSamplesPerInstance/WarnAt
  • Default value: 5000
  • Occurrences min-max: 0-1

3.22   PartitionAccess

This configuration tag specifies the access rights for a selection of partitions.
  • Full path: /Domain/PartitionAccess
  • Occurrences min-max: 0-*
  • Required attributes: partition_expression, access_mode

3.22.1   partition_expression

This attribute specifies the partitions by name. The wildcards ‘*’ and ‘?’ are allowed and the specified access rights will be applied to all matching partitions. In case partitions match multiple rules the rules will be applied in sequence of declaration.
  • Full path: /Domain/PartitionAccess/partition_expression
  • Format: string
  • Default value: *
  • Required: true

3.22.2   access_mode

This attribute specifies the access rights that will be applied to the specified partitions. The following values are applicable:

  • none
  • read
  • write
  • readwrite
  • Full path: /Domain/PartitionAccess/access_mode
  • Format: enumeration
  • Default value: readwrite
  • Valid values: none, read, write, readwrite
  • Required: true

3.23   SystemId

This configures the generation of the unique System IDs

  • Full path: /Domain/SystemId
  • Occurrences min-max: 0-1
  • Child elements: UserEntropy

3.23.1   Range

This configures the range of the generated System IDs

  • Full path: /Domain/SystemId/Range
  • Occurrences min-max: 0-1
  • Optional attributes: min, max

3.23.1.1   min

This attribute specifies the minimum allowed System ID. In addition to being within range, it must be less than or equal to the “max” attribute.

  • Full path: /Domain/SystemId/Range/min
  • Format: integer
  • Default value: 1
  • Required: false

3.23.1.2   max

This attribute specifies the maximum allowed System ID. In addition to being within range, it must be greater than or equal to the “min” attribute.

  • Full path: /Domain/SystemId/Range/max
  • Format: integer
  • Default value: 2147483647
  • Required: false

3.23.2   UserEntropy

This attribute specifies a string that is used as an additional source of entropy in the System ID generation. The string is not interpreted.

  • Full path: /Domain/SystemId/UserEntropy
  • Format: string
  • Occurrences min-max: 0-1

3.24   TopicAccess

This configuration tag specifies the access rights for a selection of topics.
  • Full path: /Domain/TopicAccess
  • Occurrences min-max: 0-*
  • Required attributes: topic_expression, access_mode

3.24.1   topic_expression

This attribute specifies the topics by name. The wildcards ‘*’ and ‘?’ are allowed and the specified access rights will be applied to all matching topics. In case topics match multiple rules the rules will be applied in sequence of declaration.
  • Full path: /Domain/TopicAccess/topic_expression
  • Format: string
  • Default value: *
  • Required: true

3.24.2   access_mode

This attribute specifies the access rights that will be applied to the specified topics. The following values are applicable:

  • none
  • read
  • write
  • readwrite
  • Full path: /Domain/TopicAccess/access_mode
  • Format: enumeration
  • Default value: readwrite
  • Valid values: none, read, write, readwrite
  • Required: true

3.25   UserClockService

The UserClock Service allows you to plug in a custom clock library, allowing OpenSplice to read the time from an external clock source. It expects a root element named OpenSplice/UserClockService. Within this root element, the userclock will look for several child-elements. Each of these is listed and explained.
  • Full path: /Domain/UserClockService
  • Occurrences min-max: 0-1
  • Child elements: UserClockModule
  • Required attributes: name

3.25.1   name

This attribute identifies the configuration for the UserClock Service. The value of the name attribute must match the one specified under the OpenSplice/Domain/Service[@name] in the configuration of the Domain Service.
  • Full path: /Domain/UserClockService/name
  • Format: string
  • Default value: userclock
  • Required: true

3.25.2   UserClockModule

This element specifies the User Clock Service library file. On UNIX like and Windows platforms this will be a shared library. On VxWorks this will be a reallocatable object file. On VxWorks this tag may be empty or discarded if the functions are pre-loaded on the target.
  • Full path: /Domain/UserClockService/UserClockModule
  • Format: string
  • Occurrences min-max: 1-1

3.25.3   UserClockStart

This element specifies if the user clock requires a start function to be called when the process first creates a participant.
  • Full path: /Domain/UserClockService/UserClockStart
  • Occurrences min-max: 0-1
  • Required attributes: name

3.25.3.1   name

This attribute specifies the name of the start function. This start function should not have any parameters, and needs to return an int that represents 0 if there are no problems, and any other value if a problem is encountered.
  • Full path: /Domain/UserClockService/UserClockStart/name
  • Format: string
  • Default value: clockStart
  • Required: true

3.25.4   UserClockStop

This element specifies if the user clock requires a stop function to be called when the process deletes the last participant.
  • Full path: /Domain/UserClockService/UserClockStop
  • Occurrences min-max: 0-1
  • Required attributes: name

3.25.4.1   name

This attribute specifies the name of the stop function. This stop function should not have any parameters, and needs to return an int that represents 0 if there are no problems, and any other value if a problem is encountered.
  • Full path: /Domain/UserClockService/UserClockStop/name
  • Format: string
  • Default value: clockStop
  • Required: true

3.25.5   UserClockQuery

This element specifies the clock query function.
  • Full path: /Domain/UserClockService/UserClockQuery
  • Occurrences min-max: 1-1
  • Required attributes: name

3.25.5.1   name

This attribute specifies the name of the function that gets the current time. This clockGet function should not have any parameters, and needs to return the current time as an os_time type.

The definition of the os_time type can be found in os_time.h.

  • Full path: /Domain/UserClockService/UserClockQuery/name
  • Format: string
  • Default value: clockGet
  • Required: true

4   DurabilityService

The responsibilities of the durability service are to realize the durable properties of data in an OpenSplice system.
  • Full path: /DurabilityService
  • Occurrences min-max: 0-1
  • Required attributes: name

4.1   name

This attribute identifies the configuration for the Durability service. Multiple Durability service configurations can be specified in one single resource. The actual applicable configuration is determined by the value of the name attribute, which must match the one specified under the OpenSplice/Domain/Service[@name] in the configuration of the DomainService.
  • Full path: /DurabilityService/name
  • Format: string
  • Default value: durability
  • Required: true

4.2   ClientDurability

Client-durability is a feature that allows clients of this durability service to acquire historical data from a remote durability service without having to run their own durability service. This element controls the characteristics of the client-durability feature. When enabled, this durability server will be able to responds to requests for historical data from such clients.
  • Full path: /DurabilityService/ClientDurability
  • Occurrences min-max: 0-1
  • Optional attributes: enabled

4.2.1   enabled

This attribute enables or disables the client-durability feature.
  • Full path: /DurabilityService/ClientDurability/enabled
  • Format: boolean
  • Default value: False
  • Required: false

4.2.2   EntityNames

This element specifies the names of the various entities used by the client-durability feature of this DurabilityService. The names specified here will be displayed in the OpenSplice DDS Tuner when viewing the DurabilityService.
  • Full path: /DurabilityService/ClientDurability/EntityNames
  • Occurrences min-max: 0-1
  • Child elements: Publisher, Subscriber, Partition

4.2.2.1   Publisher

This element specifies the name of the client-durability publisher.
  • Full path: /DurabilityService/ClientDurability/EntityNames/Publisher
  • Format: string
  • Default value: durabilityPublisher
  • Occurrences min-max: 0-1

4.2.2.2   Subscriber

This element specifies the name of the client-durability subscriber.
  • Full path: /DurabilityService/ClientDurability/EntityNames/Subscriber
  • Format: string
  • Default value: durabilitySubscriber
  • Occurrences min-max: 0-1

4.2.2.3   Partition

This element specifies the name of the partition used for client-durability. The default is the same partition as the partition specified for durability (see Opensplice/DurabilityService/EntityNames/Partition)
  • Full path: /DurabilityService/ClientDurability/EntityNames/Partition
  • Format: string
  • Default value: durabilityPartition
  • Occurrences min-max: 0-1

4.3   Watchdog

This element controls the characteristics of the Watchdog thread.
  • Full path: /DurabilityService/Watchdog
  • Occurrences min-max: 0-1
  • Optional attributes: deadlockDetection

4.3.1   deadlockDetection

This attribute drives whether the Watchdog will check for deadlocks and refrain from updating its lease and heartbeat in case one or more of its threads do not assert their liveliness. Typically this should not be enabled, but it can be helpful to ensure certain responsiveness of the durability service and the detection of potential deadlocks.
  • Full path: /DurabilityService/Watchdog/deadlockDetection
  • Format: boolean
  • Default value: False
  • Required: false

4.3.2   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.
  • Full path: /DurabilityService/Watchdog/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class

4.3.2.1   Priority

This element specifies the thread priority that will be used by the watchdog thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /DurabilityService/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
4.3.2.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /DurabilityService/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

4.3.2.2   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /DurabilityService/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

4.4   Network

Applications need to be able to gain access to historical data in a system. When the local DDS service gets connected to a remote DDS service by means of the Networking service, (parts of) the historical data might not be consistent between the local and remote Durability services. The Durability service needs to be able to detect the other available Durability services and exchange historical data with them to keep and/or restore consistency in historical data between them.

The Network element provides handles to fine-tune the behavior of the communication between Durability services on different computing nodes on network level. These settings only apply when the Networking service is active.

  • Full path: /DurabilityService/Network
  • Occurrences min-max: 0-1
  • Child elements: InitialDiscoveryPeriod
  • Optional attributes: latency_budget, transport_priority

4.4.1   latency_budget

This attribute controls the latency_budget QoS setting that is used by the Durability service for its communication with other Durability services.

It specfies the maximum acceptable delay (in seconds) from the time the data is written until the data is insterted in the cache of the receiving Durability service(s) and the receiver is notified of the fact. The default value is zero, indicating the delay should be minimized.

  • Full path: /DurabilityService/Network/latency_budget
  • Default value: 0.0
  • Required: false

4.4.2   transport_priority

This attribute controls the transport priority QoS setting that is used by the Durability service for its communication with other Durability services.

It indicates the importance of the communication of the Durability service with other Durability services in the system. The transport priority specified here will be interpreted by the Networking service and should be used to differentiate the priority between communication of user applications and communication of the Durability service.

  • Full path: /DurabilityService/Network/transport_priority
  • Format: integer
  • Default value: 0
  • Required: false

4.4.3   Heartbeat

During startup and at runtime, the network topology can change dynamically. This happens when OpenSplice services are started/stopped or when a network cable is plugged in/out. The Durability services need to keep data consistency in that environment. To detect newly joining services as well as detecting nodes that are leaving, the Durability service uses a hearbeat mechanism. This element allows fine-tuning of this mechanism.

Please note this heartbeat mechanism is similar to but not the same as the service liveliness assertion.

  • Full path: /DurabilityService/Network/Heartbeat
  • Occurrences min-max: 0-1
  • Child elements: ExpiryTime
  • Optional attributes: latency_budget, transport_priority

4.4.3.1   latency_budget

This attribute controls the latency budget QoS setting that is only used by the Durability service for sending its heartbeats. It overrules the value of the DurabilityService/Network[@latency_budget].
  • Full path: /DurabilityService/Network/Heartbeat/latency_budget
  • Default value: 0.0
  • Required: false

4.4.3.2   transport_priority

This attribute controls the transport priority QoS setting (in seconds) that is only used by the Durability service for for sending its heartbeats. It overrules the value of the DurabilityService/Network[@transport_priorrity].
  • Full path: /DurabilityService/Network/Heartbeat/transport_priority
  • Format: integer
  • Default value: 0
  • Required: false

4.4.3.3   Scheduling

This element specifies the scheduling parameters used by the thread that periodically sends the heartbeats.
  • Full path: /DurabilityService/Network/Heartbeat/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
4.4.3.3.1   Priority
This element specifies the thread priority that will be used by the thread that periodically sends the heartbeats. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /DurabilityService/Network/Heartbeat/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
4.4.3.3.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /DurabilityService/Network/Heartbeat/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
4.4.3.3.2   Class
This element specifies the thread scheduling class that will be used by the thread that periodically sends the heartbeats. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /DurabilityService/Network/Heartbeat/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

4.4.3.4   ExpiryTime

This element specifies the maximum amount of time(in seconds) in which the Durability service expects a new heartbeat of other Durability services. This is obviously also the same amount of time in which the Durability service must send a heartbeat itself.

Increasing this value will lead to less networking traffic and overhead but also to less responsiveness with respect to the liveliness of a Durability service. Change this value according to the need of your system with respect to these aspects.

  • Full path: /DurabilityService/Network/Heartbeat/ExpiryTime
  • Default value: 4.0
  • Occurrences min-max: 1-1
  • Required attributes: update_factor
4.4.3.4.1   update_factor

In case of a (temporary) high CPU load, the scheduling behaviour of the operating system might affect the capability of the Durability service to send its heartbeat ‘on time’. This attribute introduces some elasticity in this mechanism by making the service send its heartbeat more often then required by the ExpiryTime.

The Durability service will report its liveliness every ExpiryTime multiplied by this update_factor.

  • Full path: /DurabilityService/Network/Heartbeat/ExpiryTime/update_factor
  • Default value: 0.25
  • Required: true

4.4.4   InitialDiscoveryPeriod

To be able to ensure data consistency of historical data, the Durability service needs to know which other Durability services are available in the system. The value of this element determines the amount of time the Durability service takes at startup to get acquinted with all other Durability services in the system.

Increasing the value will increase the startup time of the Durability service, but is required in larger domains where a lot of network bandwidth is used.

  • Full path: /DurabilityService/Network/InitialDiscoveryPeriod
  • Default value: 3.0
  • Occurrences min-max: 0-1

4.4.5   Alignment

The Durability service is responsible for keeping its local cache consistent with the other available Durability caches in the system. To do this, it needs to exchange data to recover from inconsistencies. The exchange of durable data to restore consistency is called alignment. This element allows fine-tuning alignment behaviour of the Durability service.
  • Full path: /DurabilityService/Network/Alignment
  • Occurrences min-max: 0-1
  • Child elements: TimeAlignment, TimeToWaitForAligner
  • Optional attributes: latency_budget, transport_priority

4.4.5.1   latency_budget

This attribute specifies the latency budget QoS setting (in seconds) that is only used by the Durability service for the alignment of data. It overrules the value of the OpenSplice/DurabilityService/Network[@latency_budget].
  • Full path: /DurabilityService/Network/Alignment/latency_budget
  • Default value: 0.0
  • Required: false

4.4.5.2   transport_priority

This attribute specifies the transport priority QoS setting that is used by the Durability service for the alignment of data. It overrules the value of the DurabilityService/Network[@transport_priorrity] for the alignment of data only.
  • Full path: /DurabilityService/Network/Alignment/transport_priority
  • Format: integer
  • Default value: 0
  • Required: false

4.4.5.3   TimeAlignment

This attribute specifies whether time on all nodes in the domain can be considered aligned or not. This setting needs to be consistent for all durability services in the domain. In case there is no time alignment, the durability service needs to align more data since to compensate possible timing gaps between different nodes in the domain.
  • Full path: /DurabilityService/Network/Alignment/TimeAlignment
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

4.4.5.4   AlignerScheduling

This element specifies the scheduling parameters used to control the thread that aligns other durability services.
  • Full path: /DurabilityService/Network/Alignment/AlignerScheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
4.4.5.4.1   Priority
This element specifies the thread priority that will be used by the aligner thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /DurabilityService/Network/Alignment/AlignerScheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
4.4.5.4.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /DurabilityService/Network/Alignment/AlignerScheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
4.4.5.4.2   Class
This element specifies the thread scheduling class that will be used by the aligner thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /DurabilityService/Network/Alignment/AlignerScheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

4.4.5.5   AligneeScheduling

This element specifies the scheduling parameters used to control the thread that makes sure the local node becomes and stays aligned.
  • Full path: /DurabilityService/Network/Alignment/AligneeScheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
4.4.5.5.1   Priority
This element specifies the thread priority that will be used by the alignee thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /DurabilityService/Network/Alignment/AligneeScheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
4.4.5.5.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /DurabilityService/Network/Alignment/AligneeScheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
4.4.5.5.2   Class
This element specifies the thread scheduling class that will be used by the alignee thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes
  • Full path: /DurabilityService/Network/Alignment/AligneeScheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

4.4.5.6   RequestCombinePeriod

When the Durability service detects an inconsistency with another Durability service, it requests that service to align it. The service that receives this request will restore consistency by sending the requested information. In some cases, the Durability service may receive alignment requests from multiple Durability services for the same information around the same moment in time. To reduce the processing and networking load in that case, the Durability service is capable of aligning multiple Durability services concurrently.

The RequestCombinePeriod has 2 child-elements: a setting that is used when the current Durability Service is not yet aligned with all others (Initial) and one for the period after that (Operational). These values specify the maximum amount of time the Durability service is allowed to wait with alignment after an alignment request has been received.

Increasing the value will increase the amount of time in which the Durability service restores from inconsistencies, but will decrease the processing and network load in case multiple Durability services need to resolve the same data around the same time. Increasing the value is useful in case OpenSplice is started at the same time with more than two computing nodes.

  • Full path: /DurabilityService/Network/Alignment/RequestCombinePeriod
  • Occurrences min-max: 0-1
  • Child elements: Initial, Operational
4.4.5.6.1   Initial
This element specifies the maximum amount of time the Durability Service is allowed to wait with alignment after an alignment request has been received and the service itself is not yet considered operational because it has not yet aligned itself with all other Durability Services.
  • Full path: /DurabilityService/Network/Alignment/RequestCombinePeriod/Initial
  • Default value: 0.5
  • Occurrences min-max: 0-1
4.4.5.6.2   Operational
This element specifies the maximum amount of time the Durability Service is allowed to wait with alignment after an alignment request has been received and the service itself is already considered operational.
  • Full path: /DurabilityService/Network/Alignment/RequestCombinePeriod/Operational
  • Default value: 0.01
  • Occurrences min-max: 0-1

4.4.5.7   Partition

This tag specified an inter durability communication partition with specific qos settings. Alignment between durability services managed through this partition. In case multiple partitions are defined the partition with the highest alignment_priority that can provide the requested data will be used as data source. By default (no Partition specified) the durability services will use an internal partition that inherits the default qos policies and has the default alignment_priority.
  • Full path: /DurabilityService/Network/Alignment/Partition
  • Occurrences min-max: 0-*
  • Required attributes: Name
  • Optional attributes: alignment_priority, latency_budget, transport_priority
4.4.5.7.1   Name
The name of the partition to use for alignment.
  • Full path: /DurabilityService/Network/Alignment/Partition/Name
  • Format: string
  • Default value: partition
  • Required: true
4.4.5.7.2   alignment_priority
This attribute specifies the alignment priority of the partition used by the durability service to select the preferred partition to align from. If no alignment_priority is configured, the service uses 0 as default.
  • Full path: /DurabilityService/Network/Alignment/Partition/alignment_priority
  • Format: integer
  • Default value: 0
  • Required: false
4.4.5.7.3   latency_budget
This attribute overrules the latency budget for this partition specified at this point.
  • Full path: /DurabilityService/Network/Alignment/Partition/latency_budget
  • Default value: 0.0
  • Required: false
4.4.5.7.4   transport_priority
This attribute overrules the transport priority for this partition specified at this point.
  • Full path: /DurabilityService/Network/Alignment/Partition/transport_priority
  • Format: integer
  • Default value: 0
  • Required: false

4.4.5.8   TimeToWaitForAligner

The period (in seconds) to wait until an aligner is available in the domain. If an aligner does not become available within this period the entire federation will terminate and returns with error code 1 (recoverable error). Currently only values between 0.0 and 1.0 are supported, and all non-zero values are interpreted as infinite.
  • Full path: /DurabilityService/Network/Alignment/TimeToWaitForAligner
  • Default value: 1.0
  • Occurrences min-max: 0-1

4.4.6   WaitForAttachment

The Durability service depends on the Networking service for its communication with other Durability services. Before it starts communicating, it must make sure the Networking service is ready to send the data. This element specifies what services must be available and how long the Durability service must wait for them to become available before sending any data.
  • Full path: /DurabilityService/Network/WaitForAttachment
  • Occurrences min-max: 0-1
  • Child elements: ServiceName
  • Optional attributes: maxWaitCount

4.4.6.1   maxWaitCount

This attribute specifies the number of times the Durability service checks if the services specified in the DurabilityService/Network/WaitForAttachment/ServiceName elements are available before sending any data. An error is logged if one of the services still is unavailable afterwards. The service will continue after that, but this indicates a problem in the configuration and the service might not function correctly anymore.
  • Full path: /DurabilityService/Network/WaitForAttachment/maxWaitCount
  • Format: integer
  • Default value: 200
  • Required: false

4.4.6.2   ServiceName

This element specifies the name of the service(s) that the Durability service waits for, before starting alignment activities for a specific topic-partition combination. In a multinode environment the name of the Networking service MUST be included here to assure a proper functioning of the Durability service.
  • Full path: /DurabilityService/Network/WaitForAttachment/ServiceName
  • Format: string
  • Default value: networking
  • Occurrences min-max: 1-*

4.5   Persistent

Durable data is divided in transient and persistent data. Transient data must stay available for as long as at least one Durability service is available in the system. For persistent data it is the same, but that type of data must also outlive the downtime of the system. The Durability service stores the persistent data on permanent storage to realize this. This element can be used to fine-tune the behaviour of the Durability service concerning the persistent properties of the data.

Note these elements are only available as part of the DDS persistence profile of OpenSplice.

  • Full path: /DurabilityService/Persistent
  • Occurrences min-max: 0-1
  • Child elements: StoreDirectory, StoreSessionTime, StoreSleepTime, StoreMode, StoreOptimizeInterval
  • Optional attributes: SmpCount

4.5.1   StoreDirectory

This element determines the location where the persistent data will be stored on disk. If this parameter is not configured, the Durability service will not manage persistent data.
  • Full path: /DurabilityService/Persistent/StoreDirectory
  • Format: string
  • Default value: /tmp/pstore
  • Occurrences min-max: 1-1

4.5.2   StoreSessionTime

This element specifies the maximum session time (in seconds) for the persistency thread. After this period of time, it makes sure data is flushed to disk.
  • Full path: /DurabilityService/Persistent/StoreSessionTime
  • Default value: 20.0
  • Occurrences min-max: 0-1

4.5.3   StoreSleepTime

This element specifies the period of time (in seconds) the persistency thread sleeps between two sessions. This allows influencing the CPU load of the persistency thread.

In most use cases there is no need to change the default value. Only in case the persistency thread takes up too much CPU time so that it prevents other threads from progressing a non-zero value should be used.

  • Full path: /DurabilityService/Persistent/StoreSleepTime
  • Default value: 0.0
  • Occurrences min-max: 0-1

4.5.4   StoreMode

This element specifies the plug-in that is used to store the persistent data on disk. With “XML” mode, the service will store persistent data in XML files. With “MMF”, the service will store persistent data in a Memory Mapped File that exactly represents the memory that is being used by the persistent store. With “KV” mode the service will store persistent data in a key-value store using either sqlite of leveldb to store the data on disk. !!! The “MMF” store is currently only implemented on linux !!!
  • Full path: /DurabilityService/Persistent/StoreMode
  • Format: enumeration
  • Default value: XML
  • Valid values: XML, MMF, KV
  • Occurrences min-max: 0-1

4.5.5   SmpCount

This element determines how many threads the durability service will spawn to persist data to disk. Currently only supported for MMF (memory mapped file) storemode.
  • Full path: /DurabilityService/Persistent/SmpCount
  • Format: integer
  • Default value: 1
  • Required: false

4.5.6   KeyValueStore

This element specifies the key-value store mode parameters. The Storage element specifies the which storage type is used to implement the key-value store. The storage type defaults to Sqlite3 when the storage type is not specified. Using the optional StorageParameters element parameters specific to the used storage implementation can be defined which are passed to the selected storage implementation. This element is only valid when the Persistent/StoreMode element is set to “KV”.
  • Full path: /DurabilityService/Persistent/KeyValueStore
  • Occurrences min-max: 0-1
  • Child elements: StorageParameters
  • Required attributes: type

4.5.6.1   type

This attribute specifies the specific storage product used to implement the key-value store.
  • Full path: /DurabilityService/Persistent/KeyValueStore/type
  • Format: enumeration
  • Default value: sqlite3
  • Valid values: sqlite3, leveldb
  • Required: true

4.5.6.2   StorageParameters

This element specifies the configuration settings of the used storage implementation. These configuration parameters are specific to the used storage which are documented in the storage specific documentation. The configuration parameters are transparently passed to the used storage. The StorageParameters consists of a list of configuration items where each item is seperated by a ‘;’. Dependent on the storage an item can be a single name or a name-value pair. In case of a name-value pair the name and the value are seperated by an ‘=’ character (name = value).
  • Full path: /DurabilityService/Persistent/KeyValueStore/StorageParameters
  • Format: string
  • Default value: 0
  • Occurrences min-max: 0-1

4.5.6.3   Compression

This element specifies compression settings for the key-value store.

Compression for the persistent store can be used to reduce disk I/O and lower disk space usage at the cost of processing power required to compress and uncompress the persistent data.

Compression is set at store creation time. Changing these settings after the store is created will result in an error.

  • Full path: /DurabilityService/Persistent/KeyValueStore/Compression
  • Occurrences min-max: 0-1
  • Required attributes: algorithm
  • Optional attributes: enabled
4.5.6.3.1   algorithm

This attribute specifies the compression algorithm that is used to store the persistent data in the key-value store.

The lzf and snappy compression algorithms are built into the OpenSplice installation. To use the zlib algorithm a shared library needs to be available on the system, and it must be locatable by way of the current working directory, or via LD_LIBRARY_PATH (on Unix systems) or PATH (on Windows systems).

  • Full path: /DurabilityService/Persistent/KeyValueStore/Compression/algorithm
  • Format: enumeration
  • Default value: lzf
  • Valid values: lzf, snappy, zlib
  • Required: true
4.5.6.3.2   enabled
This attribute specifies whether the key-value store will apply compression for storing persistent data to limit disk usage.
  • Full path: /DurabilityService/Persistent/KeyValueStore/Compression/enabled
  • Format: boolean
  • Default value: true
  • Required: false

4.5.7   MemoryMappedFileStore

This element specifies the memory mapped file store mode parameters. This element is only valid when the Persistent/StoreMode element is set to “MMF”.
  • Full path: /DurabilityService/Persistent/MemoryMappedFileStore
  • Occurrences min-max: 0-1
  • Child elements: Size, Address

4.5.7.1   Size

This element specifies the size of the memory mapped file used to store persistent data. Change this value according to the size of your persistent data. The file should be big enough to store:

  • all persistent data in your specified namespaces
  • PLUS a potential backup for all persistent data in namespaces whose content may be replaced by persistent data from another master.

As a rule of thumb, you could state that the persistent store should be twice the size of your combined persistent data in your specified namespaces. Please note that the operating system should be configured to support the requested size.

If this value is not specified, the size of the persistent store will be set to twice the size of the shared memory segment.
  • Full path: /DurabilityService/Persistent/MemoryMappedFileStore/Size
  • Default value: 10485760
  • Occurrences min-max: 0-1

4.5.7.2   Address

This element specifies the start address where the file is mapped into the virtual memory. The possible values are platform dependent.

Change this value if the default address is already in use, for example by another Domain Service or another product.

If this value is not specified, the file will be mapped just after the shared memory segment.
  • Full path: /DurabilityService/Persistent/MemoryMappedFileStore/Address
  • Format: string
  • Default value: 0x80000000
  • Occurrences min-max: 0-1

4.5.8   StoreOptimizeInterval

This element determines after how many write actions the persistent set for a specific partition-topic combination is optimized on disk.
  • Full path: /DurabilityService/Persistent/StoreOptimizeInterval
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

4.5.9   Scheduling

This element specifies the scheduling parameters used to control the thread that stores persistent data on permanent storage.
  • Full path: /DurabilityService/Persistent/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class

4.5.9.1   Priority

This element specifies the thread priority that will be used by the persistent thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /DurabilityService/Persistent/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
4.5.9.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /DurabilityService/Persistent/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

4.5.9.2   Class

This element specifies the thread scheduling class that will be used by the persistent thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /DurabilityService/Persistent/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

4.6   NameSpaces

Scalability of durable data is an issue in large systems. Keeping all historical data on each node may not be feasible. Often nodes are interested in a small part of the total system data, on one hand driven by application interest, on the other hand driven by fault-tolerance (the need for replicates). This setting controls which historical data is managed by this Durability service (both transient and persistent).
  • Full path: /DurabilityService/NameSpaces
  • Occurrences min-max: 1-1

4.6.1   NameSpace

A namespace describes a dependency between data in two or more partitions by means of a partition expression. The dependency specifies that the data within one of the partitions has no right to exist separately from the data in the other partition(s). Namespaces determine which data must be managed by the Durability service. Data that does not match any of the namespaces, is ignored by the Durability service.
  • Full path: /DurabilityService/NameSpaces/NameSpace
  • Occurrences min-max: 1-*
  • Child elements: Partition, PartitionTopic
  • Required attributes: name

4.6.1.1   name

This element specifies the name for a namespace. A name is used to match a namespace with a policy.
  • Full path: /DurabilityService/NameSpaces/NameSpace/name
  • Format: string
  • Default value: defaultNameSpace
  • Occurrences min-max: 1-1
  • Required: true

4.6.1.2   Partition

This element specifies a partition expression that matches the namespace. A namespace consists of a set of partition expressions. Together they determine the partitions that belong to the namespace. Make sure the different namespaces do not have an overlap in partitions. The default configuration has one namespace containing all partitions. A partition may contain the wildcards ‘*’ to match any number of characters and ‘?’ to match one single character.
  • Full path: /DurabilityService/NameSpaces/NameSpace/Partition
  • Format: string
  • Default value: *
  • Occurrences min-max: 0-*

4.6.1.3   PartitionTopic

This element specifies a partition-topic expression that matches the namespace. A group expression is a combination of a partition- and a topic expression. The notation is ‘partition.topic’. A namespace consists of a set of partition-topic expressions. Together they determine the partition-topic combinations that belong to the namespace. Make sure the different namespaces do not have an overlap in expressions. The default configuration has one namespace containing all combinations (.). A partition-topic expression may contain the wildcards ‘*’ to match any number of characters and ‘?’ to match one single character.
  • Full path: /DurabilityService/NameSpaces/NameSpace/PartitionTopic
  • Format: string
  • Default value: .
  • Occurrences min-max: 0-*

4.6.2   Policy

A namespace describes a dependency between data in two or more partitions by means of a partition expression. The dependency specifies that the data within one of the partitions has no right to exist separately from the data in the other partition(s). Namespaces determine which data must be managed by the Durability service. Data that does not match any of the namespaces, is ignored by the Durability service.

A template specifies behaviour for a namespace. It matches a namespace name with an expression that may contain wildcards, thereby allowing dynamic configuration for namespaces. The order in which templates are specified is important, as the first matching template will be the one that is selected for a namespace.

  • Full path: /DurabilityService/NameSpaces/Policy
  • Occurrences min-max: 1-*
  • Required attributes: nameSpace, durability, aligner, alignee
  • Optional attributes: delayedAlignment, equalityCheck

4.6.2.1   Merge

This tag specifies the merge policy applicable for a specific namespace. The following merge policy values are applicable:

  • Ignore - No alignment will take place. This is also the default value if not specified.

  • Merge - Existing data will remain and data from others will be aligned.

  • Delete - Existing data is removed.

  • Replace - Existing data is removed and data from others will be aligned.

  • Catchup - Existing data that is not available from others is removed, and data

    that is added or changed by others will made available.

Note that the Replace and Catchup merge policies result in the same data set, but their instance states may differ after the merge policy has completed. In the Replace merge policy all instances present both before and after the merge transitioned through NOT_ALIVE_DISPOSED and end up as NEW instances with changes to the instance generation counters. In the Catchup merge policy the instance state of the instances that are not changed will remain untouched.

The scope attribute specifies for which role(s) the mergepolicy will be applied. A scope may contain the wildcards ‘*’ to match any number of characters and ‘?’ to match one single character.

  • Full path: /DurabilityService/NameSpaces/Policy/Merge
  • Occurrences min-max: 0-*
  • Required attributes: type, scope
4.6.2.1.1   type
  • Full path: /DurabilityService/NameSpaces/Policy/Merge/type
  • Format: enumeration
  • Default value: Ignore
  • Valid values: Ignore, Merge, Delete, Replace, Catchup
  • Required: true
4.6.2.1.2   scope
  • Full path: /DurabilityService/NameSpaces/Policy/Merge/scope
  • Format: string
  • Default value: *
  • Required: true

4.6.2.2   nameSpace

The element specifies an expression that matches a namespace name. A namespace may contain the wildcards ‘*’ to match any number of characters and ‘?’ to match one single character.
  • Full path: /DurabilityService/NameSpaces/Policy/nameSpace
  • Format: string
  • Default value: *
  • Required: true

4.6.2.3   durability

This element specifies how the durability service manages the data within the NameSpace. The original durability of the data (determined by the DataWriter that wrote it) can be ‘weakened’ (Persistent > Transient > Transient_local). This is useful to improve resource usage of the durability service in the situation where resource usage is more important then fault-tolerance. This parameter cannot be used to increase the original durability of samples.

In case the value of this parameter is larger then the value a sample was published with, the sample will be handled as specified in the DataWriter durability QoS.

  • Persistent: Data is maximally handled as persistent. In practice this means a sample is handled exactly as specified in the DataWriter durability QoS that wrote it.
  • Transient: A sample is maximally handled as if it were published with a transient durability QoS.
  • Transient_Local: Data is maximally handled as if it were published with a transient_local durability QoS.
  • Durable: Convenience value that behaves equal to Persistent.
  • Full path: /DurabilityService/NameSpaces/Policy/durability
  • Format: enumeration
  • Default value: Durable
  • Valid values: Durable, Persistent, Transient, Transient_Local
  • Required: true

4.6.2.4   aligner

This element determines if the durability service will provide historical data to other durability services.
  • Full path: /DurabilityService/NameSpaces/Policy/aligner
  • Format: boolean
  • Default value: True
  • Required: true

4.6.2.5   alignee

This element determines how the durability service manages the data that matches the namespace. Scalability of durable data is an issue in large systems. Keeping all historical data on each node may not be feasible. Often nodes are interested in a small part of the total system data. They are driven by both performance (boot time, memory usage, network load, CPU load) and fault tolerance (the need for replicates).

The durability service provides the following mechanisms to request and provide historical data:

  • Initial: The durability service requests historical data at startup and caches it locally. Historical data will be available relatively fast for new local data readers and the system is more fault-tolerant. However, caching of historical data requires a relatively large amount of resources and a long boot time.
  • Lazy: The Durability service caches historical data after local application interest arises for the first time and a remote Durability service aligns the first data reader. Historical data is available relatively slow for the first data reader, but for every new data reader it is relatively fast. The caching resources are only used when local interest in the data arises, so it only requires resources if there is actual local interest. However, this method provides no fault-tolerance for the domain, because the local Durability service is only partly a replica and is not able to provide historical data to remote Durability service and/or remote data readers.
  • On_Request: The Durability service will not cache historical data, but will align each separate DataReader on a request basis (in the situation where it calls wait_for_historical_data). Each new DataReader that wants historical data therefore leads to a new alignment action. This is a good setting to limit the amount of resources used on the node, but will potentially lead to more network traffic. This method provides no fault-tolerance for the domain.
  • Full path: /DurabilityService/NameSpaces/Policy/alignee
  • Format: enumeration
  • Default value: Initial
  • Valid values: Initial, Lazy, On_Request
  • Required: true

4.6.2.6   delayedAlignment

[BETA] This element determines if the durability allows delayed alignment of initial data. This can be usefull for systems where there can be late-joining nodes with a persistent dataset, which by default are then not inserted. When this option is enabled, durability will only insert a persistent set from a late joining node when no writers have been created in the partitions matched by the namespace!
  • Full path: /DurabilityService/NameSpaces/Policy/delayedAlignment
  • Format: boolean
  • Default value: False
  • Required: false

4.6.2.7   equalityCheck

This element specifies whether or not the durability service should compare its current data set with the data set of its aligner before applying the merge policy. If this option is enabled the aligner will align its data sets only in case there is a difference between his data sets and the data sets of this durability service. By default this option is NOT enabled, so data is always aligned even if there is no difference between data sets.

This option applies to all merge policies except for the IGNORE and DELETE merge policy.

NOTE Enabling this option may lead to less alignment data at the expense of processing power required to calculate hashes to compare the data sets. It is recommended to enable this option only for large data sets that do not change often. If this option is enabled for data sets that change often then chances of set equality are small, while the penalty to calculate hashes still exists.

  • Full path: /DurabilityService/NameSpaces/Policy/equalityCheck
  • Format: boolean
  • Default value: False
  • Required: false

4.6.3   Filters

Filters are expressions that are applied when historical data is requested from another durability service. By using filters the amount of alignment data between durability services can be reduced.

Different filters can be specified for different partition-topic combinations using the &lt;Filter&gt;-elements.

NOTE A side effect can occur when filters are used in combination with the ability to align data. In case a node that has retrieved a subset of historical data using filters becomes the aligner to other nodes at some point in time, then only this subset will be aligned to the other nodes.

  • Full path: /DurabilityService/NameSpaces/Filters
  • Occurrences min-max: 0-1

4.6.3.1   Filter

This element specifies the filter expression that is used when historical data is requested. The &lt;PartitionTopic&gt;-child elements specify the partition-topic combinations to which the filter expression is applied.

If no filter is defined for a particular partition-topic then all data will be aligned for this partition-topic combination. If multiple filters are defined then the first one that matches will be applied.

  • Full path: /DurabilityService/NameSpaces/Filters/Filter
  • Occurrences min-max: 0-*
  • Child elements: PartitionTopic
  • Required attributes: content
4.6.3.1.1   content

This attribute specifies the expression that is used for filtering. The expression is a string that is used as-is without any parameters. The filter expression is essentially the where-clauses of an sql expression. When data is requested for matching partition-topics only the data that matches the filter expression will be aligned. The content attribute defaults to the empty string, which means that no filter is applied at all.

The following escape sequence can be used in expressions: &amp;lt; (less than), &amp;gt; (greater than), &amp;quot; (double quote) &amp;apos; (apostrophe) and &amp;amp; (ampersand).

Examples of expressions are:

  • x=1 or x=2
  • (id&amp;lt;10) and (name=&quot;test&quot;)

If an invalid filter expression is provided an error will be logged in ospl-error.log.

  • Full path: /DurabilityService/NameSpaces/Filters/Filter/content
  • Format: string
  • Default value: n/a
  • Required: true
4.6.3.1.2   PartitionTopic
This element specifies the partition-topics to which the filter expression is applied. A partition-topic expression may contain the wildcards ‘*’ to match any number of characters and ‘?’ to match one single character.
  • Full path: /DurabilityService/NameSpaces/Filters/Filter/PartitionTopic
  • Format: string
  • Default value: .
  • Occurrences min-max: 0-*

4.7   EntityNames

This element specifies the names of the various entities used by the DurabilityService. The names specified here will be displayed in the OpenSplice DDS Tuner when viewing the DurabilityService.
  • Full path: /DurabilityService/EntityNames
  • Occurrences min-max: 0-1
  • Child elements: Publisher, Subscriber, Partition

4.7.1   Publisher

This element specifies the name of the durability publisher.
  • Full path: /DurabilityService/EntityNames/Publisher
  • Format: string
  • Default value: durabilityPublisher
  • Occurrences min-max: 0-1

4.7.2   Subscriber

This element specifies the name of the durability subscriber.
  • Full path: /DurabilityService/EntityNames/Subscriber
  • Format: string
  • Default value: durabilitySubscriber
  • Occurrences min-max: 0-1

4.7.3   Partition

This element specifies the name of the durability partition.
  • Full path: /DurabilityService/EntityNames/Partition
  • Format: string
  • Default value: durabilityPartition
  • Occurrences min-max: 0-1

4.8   Tracing

This element controls the amount and type of information that is written into the tracing log by the Durability Service. This is useful to track the Durability Service during application development. In the runtime system it should be turned off.
  • Full path: /DurabilityService/Tracing
  • Occurrences min-max: 0-1
  • Child elements: OutputFile, Timestamps, Verbosity
  • Optional attributes: synchronous

4.8.1   synchronous

This attribute specifies whether tracing log updates are synchronous or not. A synchronous update is immediately flushed to disk: there is no buffering and therefore some performance overhead. Only use this option if you are debugging and you want to make sure all Tracing info is on disk when the service crashes.
  • Full path: /DurabilityService/Tracing/synchronous
  • Format: boolean
  • Default value: FALSE
  • Required: false

4.8.2   OutputFile

This option specifies where the logging is printed to. Note that “stdout” is considered a legal value that represents “standard out” and “stderr” is a legal value representing “standard error”. The default value is an empty string, indicating that all tracing is disabled.
  • Full path: /DurabilityService/Tracing/OutputFile
  • Format: string
  • Default value: durability.log
  • Occurrences min-max: 0-1

4.8.3   Timestamps

This element specifies whether the logging must contain timestamps.
  • Full path: /DurabilityService/Tracing/Timestamps
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1
  • Optional attributes: absolute

4.8.3.1   absolute

This attribute specifies whether the timestamps are absolute or relative to the startup time of the service.
  • Full path: /DurabilityService/Tracing/Timestamps/absolute
  • Format: boolean
  • Default value: true
  • Required: false

4.8.4   Verbosity

This element specifies the verbosity level of the logging information. The higher the level, the more (detailed) information will be logged.
  • Full path: /DurabilityService/Tracing/Verbosity
  • Format: enumeration
  • Default value: INFO
  • Valid values: SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, NONE
  • Occurrences min-max: 0-1

5   SNetworkService

When communication endpoints are located on different computing nodes, the data produced using the local DDS service must be communicated to the remote DDS service and the other way around. The Networking service provides a bridge between the local DDS service and a network interface. Multiple Networking services can exist next to each other; each serving one (or more) physical network interface(s). The Secure Networking service is responsible for forwarding data to the network and for receiving data from the network. It can be configured to distinguish multiple communication channels with different QoS policies assigned to be able to schedule sending and receival of specific messages to provide optimal performance for a specific application domain.
  • Full path: /SNetworkService
  • Occurrences min-max: 0-*
  • Required attributes: name

5.1   name

This attribute identifies the configuration for the Secure Networking service. Multiple Network service configurations can be specified in one single resource. The actual applicable configuration is determined by the value of the name attribute, which must match the one specified under the //OpenSplice/Domain/Service[@name] in the configuration of the DomainService.
  • Full path: /SNetworkService/name
  • Format: string
  • Default value: snetworking
  • Required: true

5.2   Watchdog

This element controls the characteristics of the Watchdog thread.
  • Full path: /SNetworkService/Watchdog
  • Occurrences min-max: 0-1

5.2.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.
  • Full path: /SNetworkService/Watchdog/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class

5.2.1.1   Priority

This element specifies the thread priority that will be used by the watchdog thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /SNetworkService/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
5.2.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /SNetworkService/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

5.2.1.2   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /SNetworkService/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

5.3   General

This element contains general parameters that concern the secure networking service as a whole.
  • Full path: /SNetworkService/General
  • Occurrences min-max: 0-1
  • Child elements: NetworkInterfaceAddress, EnableMulticastLoopback, LegacyCompression

5.3.1   NetworkInterfaceAddress

This element specifies which network interface card should be used. Every Secure Networking service is bound to only one network interface card (NIC). The card can be uniquely identified by its corresponding IP address or by its symbolic name (e.g. eth0). If the value “first available” is entered here, the OpenSplice middleware will try to look up an interface that has the required capabilities.
  • Full path: /SNetworkService/General/NetworkInterfaceAddress
  • Format: string
  • Default value: first available
  • Occurrences min-max: 0-1
  • Optional attributes: forced, ipv6, bind, allowReuse

5.3.1.1   forced

This attribute specifies whether only the selected NetworkInterfaceAddress should be used or others can be used too.

  • false - Specifies that the NetworkInterfaceAddress is first used but when not available another, when available, is used. (default).
  • true - Specifies that only the selected NetworkInterfaceAddress can be used.
  • Full path: /SNetworkService/General/NetworkInterfaceAddress/forced
  • Format: boolean
  • Default value: false
  • Required: false

5.3.1.2   ipv6

This attribute specifies whether IPv6 should be used for communication.

  • false - specifies that IPv4 should be used (default).
  • true - Specifies that IPv6 should be used.

This setting will be overriden & ignored if the element NetworkInterfaceAddress has an explicit value that is unequivocally either an IPv4 or IPv6 address. This attribute is therefore only optionally required to specify IPv6 communication when special values like “first available” or an interface name are used instead of IP addresses.

  • Full path: /SNetworkService/General/NetworkInterfaceAddress/ipv6
  • Format: boolean
  • Default value: false
  • Required: false

5.3.1.3   bind

Specifies the bind strategy to be used by the networking service for its sockets.

  • any - Specifies that the service should bind to the wildcard-address (INADDR_ANY) (default).
  • strict - Specifies that the service should bind to the NetworkingInterfaceAddress.
  • Full path: /SNetworkService/General/NetworkInterfaceAddress/bind
  • Format: enumeration
  • Default value: any
  • Valid values: any, strict
  • Required: false

5.3.1.4   allowReuse

By default the networking service will bind to a port allowing other services to bind to the same port as well (so reuse of the port is allowed). By setting this option to ‘false’, the port is bound exclusively (SO_REUSEADDR disabled).

  • true - Ports can be reused (SO_REUSEADDR enabled) (default).
  • false - Ports are bound exclusively.
  • Full path: /SNetworkService/General/NetworkInterfaceAddress/allowReuse
  • Format: boolean
  • Default value: true
  • Required: false

5.3.2   EnableMulticastLoopback

EnableMulticastLoopback specifies whether the secure networking service will allow
IP multicast packets within the node to be visible to all secure networking participants in the node, including itself. It must be TRUE for intra-node multicast communications, but if a node runs only a single OpenSplice secure networking service and does not host any other networking-capable programs, it may be set to FALSE for improved performance.
  • Full path: /SNetworkService/General/EnableMulticastLoopback
  • Format: boolean
  • Default value: True
  • Valid values: True, False
  • Occurrences min-max: 0-1

5.3.3   LegacyCompression

This element specifies if compression is applied after of before fragmentations. When set to TRUE compression is applied after fragmentation which is provided for backward compatibility. When set to FALSE compression is applied before fragmentation. The default value is TRUE.
  • Full path: /SNetworkService/General/LegacyCompression
  • Format: boolean
  • Default value: True
  • Valid values: True, False
  • Occurrences min-max: 0-1

5.3.4   Reconnection

This element specifies the desired secure networking-behavior with respect to the validity of restoring lost connectivity with remote nodes. Here ‘lost connectivity’ means a prolonged inability to communicate with a known and still active remote node (typically because of network-issues) that has resulted in such a node being declared ‘dead’ either by the topology-discovery or lost-reliability being detected by a reliable channel’s reactivity-checking mechanism. If automatic reconnection is allowed, communication channels with the now-reachable-again node will be restored, even though reliable data might have been lost during the disconnection period.
  • Full path: /SNetworkService/General/Reconnection
  • Occurrences min-max: 0-1
  • Required attributes: allowed

5.3.4.1   allowed

This attribute specifies whether the network service must resume communication with an other network service when it has already been seen before but has been disconnected for a while.

  • false - Specifies that the network service must NOT resume communication. (default).
  • true - Specifies that the network service must resume communication.
  • Full path: /SNetworkService/General/Reconnection/allowed
  • Format: boolean
  • Default value: false
  • Required: true

5.4   Partitioning

The OpenSplice Secure Networking service is capable of leveraging the network’s multicast and routing capabilities. If some a-priori knowledge about the participating nodes and their topic and partition interest is available, then the secure networking services in the system can be explicitly instructed to use specific unicast or multicast addresses for its networking traffic. This is done by means of so-called network partitions

A network partition is defined by one or more unicast, multicast of broadcast IP addresses. Any secure networking service that is started will read the network partition settings and, if applicable, join the required multicast groups. For every sample distributed by the secure networking service, both its partition and topic name will be inspected. In combination with a set of network partition mapping rules, the service will determine to which network partition the sample is written. The mapping rules are configurable as well.

Using networking configuration, nodes can be disconnected from any networking partition. If a node is connected via a low speed interface, it is not capable of receiving high volume data. If the DCPS partitioning is designed carefully, high volume data is published into a specific partition, which on its turn is mapped onto a specific networking partition, which on its turn is only connected to those nodes that are capable of handling high volume data.

  • Full path: /SNetworkService/Partitioning
  • Occurrences min-max: 0-1

5.4.1   GlobalPartition

This element specifies the global or default secure networking partition.
  • Full path: /SNetworkService/Partitioning/GlobalPartition
  • Occurrences min-max: 0-1
  • Required attributes: Address
  • Optional attributes: SecurityProfile, MulticastTimeToLive

5.4.1.1   Address

The global networking partition transports data that is either meant to be global, like discovery heartbeats, or that is not mapped onto any other networking partition. The address is a list of one or more unicast, multicast or broadcast addresses. If more than one address is specified, then the different addresses are separated by a colon (,) semicolon (;) or space ( ). Samples for the global partition will be sent to all addresses that are specified in this list of addresses. To specify the default broadcast address, use the expression “broadcast”. Addresses can be entered as dotted decimal notation or as the symbolic hostname, in which case the middleware will try to resolve the corresponding IP address.
  • Full path: /SNetworkService/Partitioning/GlobalPartition/Address
  • Format: string
  • Default value: broadcast
  • Required: true

5.4.1.2   SecurityProfile

In the context of secure networking, the GlobalPartition element provides support for the attribute SecurityProfile. The attribute is referencing a security profile declared in the context of the Security element. If the given reference is invalid, the global partition configuration is invalid. In this case, the partition will be blocked to prevent unwanted information leaks. A configuration error message will be logged to the ospl-error.log file. If the security feature has been enabled, but no profile is declared, then the NULL profile is used by default: this means that no security is added to the transport
  • Full path: /SNetworkService/Partitioning/GlobalPartition/SecurityProfile
  • Format: string
  • Default value: nullProfile
  • Required: false

5.4.1.3   MulticastTimeToLive

For each UDP packet sent out, The TimeToLive header value is set to this value for Multicast packets.

  • Full path: /SNetworkService/Partitioning/GlobalPartition/MulticastTimeToLive
  • Default value: 32
  • Required: false

5.4.2   NetworkPartitions

Networking configuration can contain a set of networking partitions, which are grouped under the NetworkPartitions element.
  • Full path: /SNetworkService/Partitioning/NetworkPartitions
  • Occurrences min-max: 0-1

5.4.2.1   NetworkPartition

Every NetworkPartition has a name, an address and a connected flag.
  • Full path: /SNetworkService/Partitioning/NetworkPartitions/NetworkPartition
  • Occurrences min-max: 1-*
  • Required attributes: Address, Connected
  • Optional attributes: Name, Compression, SecurityProfile, MulticastTimeToLive
5.4.2.1.1   Name
A networking partition is uniquely identified by its name.
  • Full path: /SNetworkService/Partitioning/NetworkPartitions/NetworkPartition/Name
  • Format: string
  • Default value: networkPartition
  • Required: false
5.4.2.1.2   Address
The address is a list of one or more unicast, multicast or broadcast addresses. If more than one address is specified, then the different addresses are separated by a colon (,) semicolon (;) or space ( ). Samples for this network partition will be sent to all addresses that are specified in this list of addresses. To specify the default broadcast address, use the expression “broadcast”. Addresses can be entered as dotted decimal notation or as the symbolic hostname, in which case the middleware will try to resolve the corresponding IP address.
  • Full path: /SNetworkService/Partitioning/NetworkPartitions/NetworkPartition/Address
  • Format: string
  • Default value: broadcast
  • Required: true
5.4.2.1.3   Connected

A node can choose to be not connected to a networking partition by setting the Connected attribute.

If a node is connected to a networking partition, it will join the corresponding multicast group and it will receive data distributed over the partition. If it is not connected, data distributed over the partition will not reach the node but will be filtered by the networking interface or multicast enabled switches.

  • Full path: /SNetworkService/Partitioning/NetworkPartitions/NetworkPartition/Connected
  • Format: boolean
  • Default value: true
  • Required: true
5.4.2.1.4   Compression

This attribute specifies if networking will apply compression to limit bandwidth for a specific network partition. This provides great flexibility as network partition are dynamically bind to logical partitions. Compression is performed before fragmentation of the messages. To provide backward compatibility the option LegacyCompression (see General options) can be set to provide compression after fragmentation. The following compression values are allowed:

  • false - No compression is applied. This is also the default value if not specified.
  • true - Compression is applicable
  • Full path: /SNetworkService/Partitioning/NetworkPartitions/NetworkPartition/Compression
  • Format: boolean
  • Default value: false
  • Required: false
5.4.2.1.5   SecurityProfile
In the context of secure networking, the NetworkPartition element provides support for the attribute SecurityProfile. The attribute is referencing a security profile declared in the context of the Security element. If the given reference is invalid, the network partition configuration is invalid. In this case the partition will be blocked to prevent unwanted information leaks. A configuration error message will be logged to the ospl-error.log file. If the security feature has been enabled but no profile is declared, the NULL profile will be used by default. The ordering of network partition declarations in the OSPL configuration file must be the same for all nodes within the OpenSplice domain. If certain nodes shall not use one of the network partitions, the network partition in question must be declared as connected=”false”. In this case the declared security profile would not be evaluated or initialized, and the associated secret cipher keys need not to be defined for the OpenSplice node in question.
  • Full path: /SNetworkService/Partitioning/NetworkPartitions/NetworkPartition/SecurityProfile
  • Format: string
  • Default value: nullProfile
  • Required: false
5.4.2.1.6   MulticastTimeToLive

For each UDP packet sent out, The TimeToLive header value is set to this value for Multicast packets.

  • Full path: /SNetworkService/Partitioning/NetworkPartitions/NetworkPartition/MulticastTimeToLive
  • Default value: 32
  • Required: false

5.4.3   IgnoredPartitions

This element is used to group the set of IgnoredPartition elements.
  • Full path: /SNetworkService/Partitioning/IgnoredPartitions
  • Occurrences min-max: 0-1

5.4.3.1   IgnoredPartition

This element can be used to create a “Local Partition” that is only available on the node on which it is specified, and therefore won’t generate network-load. Any DCPS partition-topic combination specified in this element will not be distibuted by the Networking service.
  • Full path: /SNetworkService/Partitioning/IgnoredPartitions/IgnoredPartition
  • Occurrences min-max: 1-*
  • Required attributes: DCPSPartitionTopic
5.4.3.1.1   DCPSPartitionTopic
The Networking service will match any DCPS messages to the DCPSPartitionTopic expression and determine if it matches. The PartitionExpression and TopicExpression are allowed to contain a ‘*’ wildcard, meaning that anything matches. An exact match is considered better than a wildcard match. If a DCPS messages matches an expression it will not be send to the network.
  • Full path: /SNetworkService/Partitioning/IgnoredPartitions/IgnoredPartition/DCPSPartitionTopic
  • Format: string
  • Default value: .
  • Required: true

5.4.4   PartitionMappings

This element is used to group the set of PartitionMapping elements.
  • Full path: /SNetworkService/Partitioning/PartitionMappings
  • Occurrences min-max: 0-1

5.4.4.1   PartitionMapping

This element specifies a mapping between a network partition and a partition-topic combination.

In order to give networking partitions a meaning in the context of DCPS, mappings from DCPS partitions and topics onto networking partitions should be defined. Networking allows for a set of partition mappings to be defined.

  • Full path: /SNetworkService/Partitioning/PartitionMappings/PartitionMapping
  • Occurrences min-max: 1-*
  • Required attributes: NetworkPartition, DCPSPartitionTopic
5.4.4.1.1   NetworkPartition
The NetworkPartition attribute of a partition mapping defines that networking partitition that data in a specific DCPS partition of a specific DCPS topic should be sent to.
  • Full path: /SNetworkService/Partitioning/PartitionMappings/PartitionMapping/NetworkPartition
  • Format: string
  • Default value: networkPartition
  • Required: true
5.4.4.1.2   DCPSPartitionTopic
The Networking service will match any DCPS messages to the DCPSPartitionTopic expression and determine if it matches. The PartitionExpression and TopicExpression are allowed to contain a ‘*’ wildcard, meaning that anything matches. An exact match is considered better than a wildcard match. For every DCPS message, the best matching partition is determined and the data is sent over the corresponding networking partition as specified by the matching NetworkPartition element.
  • Full path: /SNetworkService/Partitioning/PartitionMappings/PartitionMapping/DCPSPartitionTopic
  • Format: string
  • Default value: .
  • Required: true

5.5   Security

The Security section defines the parameters relevant for secure networking. Declaring this element in the OSPL configuration file will activate the secure networking feature. Without any additional security settings, all network partitions of the node would use the NULL cipher encoding. If confidentiality and integrity is required for a network partition, the network partition must be associated with a security profile
  • Full path: /SNetworkService/Security
  • Occurrences min-max: 0-1
  • Optional attributes: enabled

5.5.1   enabled

This is an optional attribute. If not defined it defaults to true and all network partitions, if not specified otherwise, will be encoded using the NULL cipher. The NULL cipher does not provide for any level of integrity or confidentiality, but message items will be sent unencrypted. In case of enabled=”false” the security feature will not be activated, and the node acts like any other OpenSplice node not being security aware. Security profiles defined in the configuration file will not take effect, but will cause the system to log warnings.
  • Full path: /SNetworkService/Security/enabled
  • Format: boolean
  • Default value: false
  • Required: false

5.5.2   SecurityProfile

This element defines the security profile which can be applied to one or more network partitions. This element is optional.
  • Full path: /SNetworkService/Security/SecurityProfile
  • Occurrences min-max: 0-*
  • Required attributes: Name, Cipher, CipherKey

5.5.2.1   Name

This is a mandatory attribute. The name must be unique for all Security Profiles being declared. If the name is not specified, the security profile will be ignored as it cannot be referenced anyway.
  • Full path: /SNetworkService/Security/SecurityProfile/Name
  • Format: string
  • Default value: aSecurityProfile
  • Required: true

5.5.2.2   Cipher

This is a mandatory attribute. Depending on the declared cipher, the cipher key must have a specific length, 128 bits, 192 bits, 256 bits or none at all. The following case-insensitive values are supported by the current implementation:

  • aes128, implements AES cipher with 128 bit cipher-key (16 Bytes, 32 hexadecimal characters). This cipher will occupy 34 bytes of each UDP packet being sent.
  • aes192, implements the AES cipher with 192 bit cipher-key (24 Bytes, 48 hexadecimal characters). This cipher will occupy 34 bytes of each UDP packet being sent.
  • aes256, implements the AES cipher with 256 bit cipher-key (32 Bytes, 64 hexadecimal characters. This cipher will occupy 34 bytes of each UDP packet being sent.
  • blowfish, implements the Blowfish cipher with 128 bit cipher-key (16 Bytes, 32 hexadecimal characters). This cipher will occupy 26 bytes of each UDP packet being sent.
  • null, implements the NULL cipher. The only cipher that does not require a cipher-key. This cipher will occupy 4 bytes of each UDP packet being sent.

All ciphers except for the NULL cipher are combined with SHA1 to achieve data integrity. Also, the rsa- prefix can be added to the ciphers. In this case, digital signatures using RSA will be available.

  • Full path: /SNetworkService/Security/SecurityProfile/Cipher
  • Format: string
  • Default value: null
  • Valid values: aes128, aes192, aes256, blowfish, null, rsa-aes128, rsa-aes192, rsa-aes256, rsa-blowfish, rsa-null
  • Required: true

5.5.2.3   CipherKey

The CipherKey attribute is used to define the secret key required by the declared cipher. The value can be a URI referencing an external file containing the secret key, or the secret key can be defined in-place directly as a string value. The key must be defined as a hexadecimal string, each character representing 4 bits of the key, for example. 1ABC represents the 16 bit key 0001 1010 1011 1100. The key must not follow a well-known pattern and must match exactly the key length required by the chosen cipher. In case of malformed cipher-keys, the security profile in question will be marked as invalid. Moreover, each network partition referring to the invalid Security Profile will not be operational and thus traffic will be blocked to prevent information leaks. As all OpenSplice applications require read access to the XML configuration file, for security reasons it is recommended to store the secret key in an external file in the file system, referenced by the URI in the configuration file. The file must be protected against read and write access from other users on the host. Verify that access rights are not given to any other user or group on the host.

Alternatively, storing the secret key in-place in the XML configuration file will give read/write access to all DDS applications joining the same OpenSplice node. Because of this, the ‘in-place’ method is strongly discouraged.

  • Full path: /SNetworkService/Security/SecurityProfile/CipherKey
  • Format: string
  • Default value: n/a
  • Required: true

5.5.3   AccessControl

The optional AccessControl element defines settings for access control enforcement and which access control module shall be used.
  • Full path: /SNetworkService/Security/AccessControl
  • Occurrences min-max: 0-1
  • Optional attributes: enabled, policy

5.5.3.1   enabled

The access control feature will be activated when enabled=”true”
  • Full path: /SNetworkService/Security/AccessControl/enabled
  • Format: boolean
  • Default value: false
  • Required: false

5.5.3.2   policy

The policy attribute references a file containing the access control policy.
  • Full path: /SNetworkService/Security/AccessControl/policy
  • Format: string
  • Default value: “”
  • Required: false

5.5.3.3   AccessControlModule

The AccessControlModule element defines which access control module will be used. More than one module may be defined. All defined and enabled modules will be used to determine if access should be granted.
  • Full path: /SNetworkService/Security/AccessControl/AccessControlModule
  • Occurrences min-max: 0-*
  • Optional attributes: enabled, type
5.5.3.3.1   enabled
The module specified in the type attribute is used to evaluate access control rules when enabled=”true”.
  • Full path: /SNetworkService/Security/AccessControl/AccessControlModule/enabled
  • Format: boolean
  • Default value: true
  • Required: false
5.5.3.3.2   type
The type attribute defines the access control model type. Currently, OpenSplice only supports mandatory access control, accordingly the only valid value for this attribute is “MAC”.
  • Full path: /SNetworkService/Security/AccessControl/AccessControlModule/type
  • Format: string
  • Default value: none
  • Required: false

5.5.4   Authentication

The optional Authentication element defines whether additional sender authorization shall be performed. Enabling Authentication requires that a cipher, including RSA (such as rsa-aes256), is used.
  • Full path: /SNetworkService/Security/Authentication
  • Occurrences min-max: 0-1
  • Optional attributes: enabled

5.5.4.1   enabled

Authentication is performed when enabled is set to true.
  • Full path: /SNetworkService/Security/Authentication/enabled
  • Format: boolean
  • Default value: true
  • Required: false

5.5.4.2   X509Authentication

The X509Authentication element defines where keys and certificates required for X509 authentication may be found.
  • Full path: /SNetworkService/Security/Authentication/X509Authentication
  • Occurrences min-max: 0-1
  • Child elements: TrustedCertificates
5.5.4.2.1   Credentials
The Credentials element is an optional element. If it is missing, then the node does not sign messages (in other words, does not send credentials).
  • Full path: /SNetworkService/Security/Authentication/X509Authentication/Credentials
  • Occurrences min-max: 0-1
  • Child elements: Key, Cert
5.5.4.2.1.1   Key

The Key element references the file containing the key.

It is recommended that the absolute path is used. A relative path will be interpreted relative to the directory from which the OpenSplice daemon is started.

  • Full path: /SNetworkService/Security/Authentication/X509Authentication/Credentials/Key
  • Format: string
  • Occurrences min-max: 1-1
5.5.4.2.1.2   Cert

The Cert element references the file containing the certificate.

It is recommended that the absolute path is used. A relative path will be interpreted relative to the directory from which the OpenSplice daemon is started.

  • Full path: /SNetworkService/Security/Authentication/X509Authentication/Credentials/Cert
  • Format: string
  • Occurrences min-max: 1-1
5.5.4.2.2   TrustedCertificates

The TrustedCertificates element references a file containing the trusted certificates.

It is recommended that the absolute path is used. A relative path will be interpreted relative to the directory from which the OpenSplice daemon is started.

  • Full path: /SNetworkService/Security/Authentication/X509Authentication/TrustedCertificates
  • Format: string
  • Occurrences min-max: 1-1

5.6   Channels

This element is used to group a set of Channels.

The set of channels define the behaviour of the ‘network’ concerning aspects as priority, reliability and latency budget. By configuring a set of channels, the Networking service is able to function as a ‘scheduler’ for the network bandwidth. It achieves this by using the application-defined DDS QoS policies of the data to select the most appropriate channel to send the data.

  • Full path: /SNetworkService/Channels
  • Occurrences min-max: 1-1
  • Child elements: AllowedPorts

5.6.1   Channel

This element specifies all properties of an individual Channel.

The Networking service will make sure messages with a higher priority precede messages with a lower priority and it uses the latency budget to assemble multiple messages into one UDP packet where possible, to optimize the bandwidth usage. Of course, its performance depends heavily on the compatbility of the configured channels with the used DDS QoS policies of the applications.

  • Full path: /SNetworkService/Channels/Channel
  • Occurrences min-max: 1-42
  • Child elements: PortNr, FragmentSize, Resolution, AdminQueueSize, CompressionBufferSize, CompressionThreshold, AllowedPorts
  • Required attributes: name, reliable, enabled
  • Optional attributes: default, priority

5.6.1.1   name

The name uniquely identifies the channel.
  • Full path: /SNetworkService/Channels/Channel/name
  • Format: string
  • Default value: aChannel
  • Required: true

5.6.1.2   reliable

If this attribute is set to true, the channel sends all messages reliably. If not, data is sent only once (fire-and-forget).

The specific channel a message is written into depends on the attached quality of service. Once a message has arrived in a channel, it will be transported with the quality of service attached to the channel. If the reliable attribute happens to be set to true, the message will be sent over the network using a reliability protocol.

  • Full path: /SNetworkService/Channels/Channel/reliable
  • Format: boolean
  • Default value: false
  • Required: true

5.6.1.3   default

This attribute indicates whether the channel is selected as the default channel in case no channel offers the quality of service requested by a message.

The networking channels should be configured corresponding to the quality of service settings that are expected to be requested by the applications. It might happen, however, that none of the available channels meets the requested quality of service for a specific message. In that case, the message will be written into the default channel.

Note that only one channel is allowed to have this attribute set to true

  • Full path: /SNetworkService/Channels/Channel/default
  • Format: boolean
  • Default value: false
  • Required: false

5.6.1.4   enabled

This attribute toggles a channel on or off. Toggling a channel between enabled and disabled is a quick alternative for commenting out the corresponding lines in the configuration file.
  • Full path: /SNetworkService/Channels/Channel/enabled
  • Format: boolean
  • Default value: false
  • Required: true

5.6.1.5   priority

This attribute sets the transport priority of the channel. Messages sent to the network have a transport_priority quality of service value. Selection of a networking channel is based on the priority requested by the message and the priority offered by the channel. The priority settings of the different channels divide the priority range into intervals. Within a channel, messages are sorted in order of priority.
  • Full path: /SNetworkService/Channels/Channel/priority
  • Format: integer
  • Default value: 0
  • Required: false

5.6.1.6   PortNr

This element specifies the port number used by the Channel. Messages for the channel are sent to the port number given. Each channel needs its own unique port number. Please note that ‘reliable’ channels use a second port, which is the specified PortNr + 1.
  • Full path: /SNetworkService/Channels/Channel/PortNr
  • Format: integer
  • Default value: 53400
  • Occurrences min-max: 1-1

5.6.1.7   FragmentSize

The networking module will fragment large message into smaller fragments with size FragmentSize. These fragments are sent as datagrams to the UDP stack. OS-settings determine the maximum datagram size.
  • Full path: /SNetworkService/Channels/Channel/FragmentSize
  • Default value: 1300
  • Occurrences min-max: 0-1

5.6.1.8   Resolution

The resolution indicates the number of milliseconds that this channel sleeps between two consecutive resend or packing actions. Latency budget values are truncated to a multiple of “Resolution” milliseconds.

It is considered good practice to specify the ThrottleTreshold consistently throughout the system.

  • Full path: /SNetworkService/Channels/Channel/Resolution
  • Format: integer
  • Default value: 10
  • Occurrences min-max: 0-1

5.6.1.9   AdminQueueSize

For reliable channels the receiving side needs to keep the sending side informed about the received data and the received control messages.

This is done by means of an “AdminQueue”. This setting determines the size of this queue, and it must be greater than the maximum number of reliable messages send or received during each “Resolution” milliseconds.

  • Full path: /SNetworkService/Channels/Channel/AdminQueueSize
  • Format: integer
  • Default value: 4000
  • Occurrences min-max: 0-1

5.6.1.10   CompressionBufferSize

When compression on messages is enabled then the CompressionBufferSize specifies the initial size of the compression/decompression buffer. The compression buffer is used to store the messages before they are compressed and send on the network. The decompression buffer is used to decompress the received compressed messages. Note that the actual size of these buffers may be increased when needed.
  • Full path: /SNetworkService/Channels/Channel/CompressionBufferSize
  • Format: integer
  • Default value: 131072
  • Occurrences min-max: 0-1

5.6.1.11   CompressionThreshold

When compression on messages is enabled then the CompressionThreshold provides a threshold to start compressing the accumulated data and sending the compressed data on the network. The CompressionThreshold is used to estimate the size of the compressed messages.
  • Full path: /SNetworkService/Channels/Channel/CompressionThreshold
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.6.1.12   Sending

This element describes all properties for the transmitting side of the Channel.
  • Full path: /SNetworkService/Channels/Channel/Sending
  • Occurrences min-max: 0-1
  • Child elements: CrcCheck, QueueSize, MaxBurstSize, ThrottleLimit, ThrottleThreshold, MaxRetries, RecoveryFactor, DiffServField, DontRoute, TimeToLive
5.6.1.12.1   CrcCheck

In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured. There is a small performance cost using this feature due to the addtional overhead of carrying out the crc calculation.

When the sending side is enabled the network packet will contain a valid crc field.

  • Full path: /SNetworkService/Channels/Channel/Sending/CrcCheck
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1
5.6.1.12.2   QueueSize
This element specifies the number of messages the networking queue can contain. Messages sent to the network are written into the networking queue. The networking service will read from this queue. If this queue is full, the writer writing into the queue is suspended and will retry until success. Note that a full networking queue is a symptom of an improperly designed system.
  • Full path: /SNetworkService/Channels/Channel/Sending/QueueSize
  • Format: integer
  • Default value: 400
  • Occurrences min-max: 0-1
5.6.1.12.3   MaxBurstSize
Amount in bytes to be sent at maximum every “Resolution” milliseconds. The default value is set to 1GB per resolution tick. This can be considered “unlimited” as this far exceeds the capacity of modern physical networks.
  • Full path: /SNetworkService/Channels/Channel/Sending/MaxBurstSize
  • Default value: 1073741823
  • Occurrences min-max: 0-1
5.6.1.12.4   ThrottleLimit
Throttling will enable you to further limit (below MaxBurstSize) the amount of data that is sent every Resolution interval. This happens if one of the receiving nodes in the network indicates that it has trouble processing all incoming data. This value is the lower boundary of the range over which the throttling can adapt the limit. If this value is set to the same value (or higher) as MaxBurstSize throttling is disabled. The ThrottleLimit value is not allowed be smaller than the FragmentSize. If a lower value is provided, then the value of FragmentSize is used as ThrottleLimit.
  • Full path: /SNetworkService/Channels/Channel/Sending/ThrottleLimit
  • Default value: 10240
  • Occurrences min-max: 0-1
5.6.1.12.5   ThrottleThreshold

This is the number of unprocessed network fragments that a node will store before it will inform the other nodes in the network that it has trouble processing the incoming data. Those other nodes can use this information to adjust their throttle values, effectively reducing the amount of incoming data in case of a temporary overflow, and increasing again when the node is able to catch up.

It is considered good practice to specify the ThrottleTreshold consistently throughout the system.

  • Full path: /SNetworkService/Channels/Channel/Sending/ThrottleThreshold
  • Format: integer
  • Default value: 50
  • Occurrences min-max: 0-1
5.6.1.12.6   MaxRetries
The number of retransmissions the service has to execute before considering the addressed node as not responding.
  • Full path: /SNetworkService/Channels/Channel/Sending/MaxRetries
  • Format: integer
  • Default value: 100
  • Occurrences min-max: 0-1
5.6.1.12.7   RecoveryFactor

A lost message is resent after Resolution * RecoveryFactor milliseconds.

  • Full path: /SNetworkService/Channels/Channel/Sending/RecoveryFactor
  • Format: integer
  • Default value: 3
  • Occurrences min-max: 0-1
5.6.1.12.8   DiffServField

This element describes the DiffServ setting the channel will apply to the networking messages. This parameter determines the value of the diffserv field of the IP version 4 packets send on this channel which allows QoS setting to be applied to the network traffic send on this channel.

Windows platform support for setting the diffserv field is dependent on the OS version. For Windows versions XP SP2 and 2003 to use the diffserv field the following parameter should be added to the register:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting

The type of this parameter is a DWORD and it’s value should be set to 0 to allow setting of the diffserv field.

For Windows version 7 or higher a new API (qWAVE) has been introduced For these platforms the specified diffserv value is mapped to one of the support traffic types. The mapping is as follows: 1-8 background traffic; 9-40 excellent traffic; 41-55 audio/video traffic; 56 voice traffic; 57-63 control traffic. When OpenSplice is run without Administrative priveleges then only the diffserv value of 0, 8, 40 or 56 is allowed.

  • Full path: /SNetworkService/Channels/Channel/Sending/DiffServField
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
5.6.1.12.9   DontRoute
The IP DONTROUTE
socket option is set to the value specified.
  • Full path: /SNetworkService/Channels/Channel/Sending/DontRoute
  • Format: boolean
  • Default value: True
  • Valid values: True, False
  • Occurrences min-max: 0-1
5.6.1.12.10   TimeToLive
For each UDP packet sent out, the IP Time To Live
header value is set to the value specified.
  • Full path: /SNetworkService/Channels/Channel/Sending/TimeToLive
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
5.6.1.12.11   Scheduling
This element specifies the scheduling policies used to control the transmitter thread of the current Channel.
  • Full path: /SNetworkService/Channels/Channel/Sending/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
5.6.1.12.11.1   Priority
This element specifies the thread priority that will be used by the transmitter thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /SNetworkService/Channels/Channel/Sending/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
5.6.1.12.11.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /SNetworkService/Channels/Channel/Sending/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
5.6.1.12.11.2   Class
This element specifies the thread scheduling class that will be used by the transmitter thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /SNetworkService/Channels/Channel/Sending/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

5.6.1.13   Receiving

This element describes all properties for the receiving side of the Channel.
  • Full path: /SNetworkService/Channels/Channel/Receiving
  • Occurrences min-max: 0-1
  • Child elements: CrcCheck, ReceiveBufferSize, DefragBufferSize, MaxReliabBacklog, PacketRetentionPeriod, ReliabilityRecoveryPeriod
5.6.1.13.1   CrcCheck

In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured. There is a small performance cost using this feature due to the addtional overhead of carrying out the crc calculation.

When the receiving side is enabled only network packets that contain a valid crc field are accepted.

  • Full path: /SNetworkService/Channels/Channel/Receiving/CrcCheck
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1
5.6.1.13.2   ReceiveBufferSize
The UDP receive buffer of the best effort channel socket is set to the value given. If many message are lost, the receive buffer size has to be increased.
  • Full path: /SNetworkService/Channels/Channel/Receiving/ReceiveBufferSize
  • Default value: 1000000
  • Occurrences min-max: 0-1
5.6.1.13.3   Scheduling
This element specifies the scheduling policies used to control the receiver thread of the current Channel.
  • Full path: /SNetworkService/Channels/Channel/Receiving/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
5.6.1.13.3.1   Priority
This element specifies the thread priority that will be used by the receiver thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /SNetworkService/Channels/Channel/Receiving/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
5.6.1.13.3.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /SNetworkService/Channels/Channel/Receiving/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
5.6.1.13.3.2   Class
This element specifies the thread scheduling class that will be used by the receiver thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /SNetworkService/Channels/Channel/Receiving/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1
5.6.1.13.4   DefragBufferSize
The maximum number of Fragment buffers that will be allocated for this channel. These buffers are used to store incoming fragments waiting to be processed, as well as fragments that are being processed.
  • Full path: /SNetworkService/Channels/Channel/Receiving/DefragBufferSize
  • Default value: 5000
  • Occurrences min-max: 0-1
5.6.1.13.5   SMPOptimization
This option will distribute the processing done for incoming fragements over multiple threads, which will lead to an improved throughput on SMP nodes.
  • Full path: /SNetworkService/Channels/Channel/Receiving/SMPOptimization
  • Occurrences min-max: 0-1
  • Required attributes: enabled
5.6.1.13.5.1   enabled
This attribute toggles the Optimization on or off.
  • Full path: /SNetworkService/Channels/Channel/Receiving/SMPOptimization/enabled
  • Format: boolean
  • Default value: true
  • Required: true
5.6.1.13.6   MaxReliabBacklog
This is a lower limit to the DefragBufferSize that specifies the number of received fragments from a single remote node allocated for the purpose of order preservation because an earlier fragment from that remote node is missing. If this number is exceeded, then that particular remote node that didn’t resend the missing fragent in time is considered dead for this channel.
  • Full path: /SNetworkService/Channels/Channel/Receiving/MaxReliabBacklog
  • Format: integer
  • Default value: 1000
  • Occurrences min-max: 0-1
5.6.1.13.7   PacketRetentionPeriod
This element specifies the number of milliseconds received packets are retained by the network service for its so-called “reliability-under-publisher-crash” extended reliability protocol. This protocol ensures that a consistent or aligned data-set is received by all alive (receiving) nodes, even though some nodes might not have received some packets at the moment a sending node disappears (for whatever reason). The protocol implies that each node retains sufficient received data so that it can be (re-)distributed if a publishing node disappears before all receiving nodes are “up-to-date”. When the PacketRetentionPeriod element is set to 0 (the default value), the alignment amongst receiving nodes will not occur. To activate the extended realibility protocol, this setting must be configured to a time period that exceeds the worst-case death-detection time as configured for the discovery protocol of the set of distributed networking services in the system.
  • Full path: /SNetworkService/Channels/Channel/Receiving/PacketRetentionPeriod
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
5.6.1.13.8   ReliabilityRecoveryPeriod
This element specifies a timeout period (in milliseconds) for the alignment phase of the extended reliability protocol. It only has an effect when the related PacketRetentionperiod is set to a non-zero value. After the specified reliabilityRecoveryPeriod timeout, any data retained for the purpose of alignment of receiving nodes (following the disappearance or crash of a publishing node) will be discarded. The value of this timeout period must be sufficient to allow for the worst-case alignment-time of any “missed” data by individual receiving nodes following the disappearance of a sending node in the system.
  • Full path: /SNetworkService/Channels/Channel/Receiving/ReliabilityRecoveryPeriod
  • Format: integer
  • Default value: 1000
  • Occurrences min-max: 0-1

5.6.1.14   AllowedPorts

AllowedPorts specifies the port numbers available for the network service to be used by the reliable network channels. The network channel is configured with a unique port number. However the reliable network channels require a second port number to provide the reliable communication service. For this second port number each reliable network channel will select a free port from the AllowedPorts. When the AllowedPorts is not specified for a particular channel then the default AllowedPorts which is configured on the Channels element is used. When also the default AllowedPorts is not specified each reliable network channel will first try to use the configured portNr + 1 as the second port or when this port number is already in use will determine a port number dynamically. The AllowedPorts is a list of entries where an entry is a port number or a port number range. When the AllowedPorts contains more than one entry then these entries must be seperated by a comma (,). A port number range consists of the lower and the upper bound of the port number range, where the lower and the upper bound are seperated by a minus (-).
  • Full path: /SNetworkService/Channels/Channel/AllowedPorts
  • Format: string
  • Occurrences min-max: 0-1

5.6.2   AllowedPorts

AllowedPorts specifies the port numbers available for the network service to be used by the reliable network channels. The network channel is configured with a unique port number. However the reliable network channels require a second port number to provide the reliable communication service. For this second port number each reliable network channel will select a free port from the AllowedPorts. When the AllowedPorts is not specified for a particular channel then the default AllowedPorts which is configured on the Channels element is used. When also the default AllowedPorts is not specified each reliable network channel will first try to use the configured portNr + 1 as the second port or when this port number is already in use will determine a port number dynamically. The AllowedPorts is a list of entries where an entry is a port number or a port number range. When the AllowedPorts contains more than one entry then these entries must be seperated by a comma (,). A port number range consists of the lower and the upper bound of the port number range, where the lower and the upper bound are seperated by a minus (-).
  • Full path: /SNetworkService/Channels/AllowedPorts
  • Format: string
  • Occurrences min-max: 0-1

5.7   Discovery

This element is used to configure the various parameters of the Discovery Channel, which is used to discover all relevant participating entities in the current Domain. The purpose of the discovery process is to build-up and maintain a notion of all relevant active nodes within the domain. The relevance of discovered remote nodes can be defined statically (by definition of the so-called Global Partition) and/or can be dynamically expanded and maintained by the dynamic-discovery process driven by the node’s Role and Scope.
  • Full path: /SNetworkService/Discovery
  • Occurrences min-max: 0-1
  • Child elements: PortNr, ProbeList
  • Optional attributes: enabled, Scope

5.7.1   enabled

This element can be used to enable or disable the Discovery Channel. In case the Discovery Channel is disabled, entities will only detect each others presence implicitly once messages are received for the first time.
  • Full path: /SNetworkService/Discovery/enabled
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1
  • Required: false

5.7.2   Scope

This attribute controls the dynamic discovery behaviour of this node within the current Domain. If it is not set, dynamic discovery will be disabled and the networking service will only communicate with nodes that can be reached through the predefined Global Partition. If the Scope attribute is specified, dynamic discovery is enabled and the networking service will be able to communicate with all nodes in the system that have a Role that matches the Scope expression. The Scope expression can contain a comma separated list of wild-card role-expressions. If the role of any discovered node matches any of the wild-card expressions, the remote node is considered a match and will become part of the communication reach (i.e. the Global Partition) of the current domain.
  • Full path: /SNetworkService/Discovery/Scope
  • Format: string
  • Occurrences min-max: 0-1
  • Required: false

5.7.3   PortNr

This element specifies the Port number used by the Discovery Channel.
  • Full path: /SNetworkService/Discovery/PortNr
  • Format: integer
  • Default value: 3369
  • Occurrences min-max: 1-1

5.7.4   ProbeList

This element contains the addresses of the nodes that will be contacted to retrieve an initial list of participating nodes in the current domain that match the specified Scope. Multiple ProbeList addresses can be entered by separating them by a colon (,), semicolon (;) or space( ) . The addresses can be entered as dotted decimal notation or as the symbolic hostname, in which case the middleware will try to resolve the corresponding IP address.
  • Full path: /SNetworkService/Discovery/ProbeList
  • Format: string
  • Occurrences min-max: 0-1

5.7.5   Sending

This element describes all properties for the transmitting side of the Discovery Channel.
  • Full path: /SNetworkService/Discovery/Sending
  • Occurrences min-max: 0-1
  • Child elements: CrcCheck, DiffServField, DontRoute, TimeToLive, Interval, SafetyFactor, SalvoSize

5.7.5.1   CrcCheck

In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured. There is a small performance cost using this feature due to the addtional overhead of carrying out the crc calculation.

When the sending side is enabled the network packet will contain a valid crc field.

  • Full path: /SNetworkService/Discovery/Sending/CrcCheck
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

5.7.5.2   DiffServField

This element describes the DiffServ setting the channel will apply to the networking messages. This parameter determines the value of the diffserv field of the IP version 4 packets send on this channel which allows QoS setting to be applied to the network traffic send on this channel.

Windows platform support for setting the diffserv field is dependent on the OS version. For Windows versions XP SP2 and 2003 to use the diffserv field the following parameter should be added to the register:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting

The type of this parameter is a DWORD and it’s value should be set to 0 to allow setting of the diffserv field.

For Windows version 7 or higher a new API (qWAVE) has been introduced For these platforms the specified diffserv value is mapped to one of the support traffic types. The mapping is as follows: 1-8 background traffic; 9-40 excellent traffic; 41-55 audio/video traffic; 56 voice traffic; 57-63 control traffic. When OpenSplice is run without Administrative priveleges then only the diffserv value of 0, 8, 40 or 56 is allowed.

  • Full path: /SNetworkService/Discovery/Sending/DiffServField
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.7.5.3   DontRoute

The IP DONTROUTE
socket option is set to the value specified.
  • Full path: /SNetworkService/Discovery/Sending/DontRoute
  • Format: boolean
  • Default value: True
  • Valid values: True, False
  • Occurrences min-max: 0-1

5.7.5.4   TimeToLive

For each UDP packet sent out, the IP Time To Live
header value is set to the value specified.
  • Full path: /SNetworkService/Discovery/Sending/TimeToLive
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.7.5.5   Scheduling

This element specifies the scheduling policies used to control the transmitter thread of the Discovery Channel.
  • Full path: /SNetworkService/Discovery/Sending/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
5.7.5.5.1   Priority
This element specifies the thread priority that will be used by the transmitter thread of the Discovery Channel. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /SNetworkService/Discovery/Sending/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
5.7.5.5.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /SNetworkService/Discovery/Sending/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
5.7.5.5.2   Class
This element specifies the thread scheduling class that will be used by the transmitter thread of the Discovery Channel. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /SNetworkService/Discovery/Sending/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

5.7.5.6   Interval

This element describes the interval(in milliseconds) at which remote nodes will expect heartbeats from this node.
  • Full path: /SNetworkService/Discovery/Sending/Interval
  • Format: integer
  • Default value: 333
  • Occurrences min-max: 0-1

5.7.5.7   SafetyFactor

The SafetyFactor is used to set a margin on the discovery sending. This avoids tight timing issues.
  • Full path: /SNetworkService/Discovery/Sending/SafetyFactor
  • Default value: 0.9
  • Occurrences min-max: 0-1

5.7.5.8   SalvoSize

During starting and stopping, discovery messages are sent at higher frequency. This SalvoSize sets the number of messages to send during these phases.
  • Full path: /SNetworkService/Discovery/Sending/SalvoSize
  • Format: integer
  • Default value: 3
  • Occurrences min-max: 0-1

5.7.6   Receiving

This element describes all properties for the receiving side of the Discovery Channel.
  • Full path: /SNetworkService/Discovery/Receiving
  • Occurrences min-max: 0-1
  • Child elements: CrcCheck, DeathDetectionCount, ReceiveBufferSize

5.7.6.1   CrcCheck

In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured. There is a small performance cost using this feature due to the addtional overhead of carrying out the crc calculation.

When the sending side is enabled the network packet will contain a valid crc field.

  • Full path: /SNetworkService/Discovery/Receiving/CrcCheck
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

5.7.6.2   Scheduling

This element specifies the scheduling policies used to control the receiver thread of the Discovery Channel.
  • Full path: /SNetworkService/Discovery/Receiving/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
5.7.6.2.1   Priority
This element specifies the thread priority that will be used by the receiver thread of the Discovery Channel. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /SNetworkService/Discovery/Receiving/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
5.7.6.2.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /SNetworkService/Discovery/Receiving/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
5.7.6.2.2   Class
This element specifies the thread scheduling class that will be used by the receiver thread of the Discovery Channel. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /SNetworkService/Discovery/Receiving/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

5.7.6.3   DeathDetectionCount

This element specifies how often a heartbeat from a remote node must miss its Interval before that remote node is considered dead.
  • Full path: /SNetworkService/Discovery/Receiving/DeathDetectionCount
  • Format: integer
  • Default value: 6
  • Occurrences min-max: 0-1

5.7.6.4   ReceiveBufferSize

The UDP receive buffer of the Discovery Channel socket is set to the value given. If many message are lost, the receive buffer size has to be increased.
  • Full path: /SNetworkService/Discovery/Receiving/ReceiveBufferSize
  • Default value: 1000000
  • Occurrences min-max: 0-1

5.8   Tracing

This element controls the amount and type of information that is written into the tracing log by the Networking Service. This is useful to track the Networking Service during application development. In the runtime system it should be turned off.
  • Full path: /SNetworkService/Tracing
  • Occurrences min-max: 0-1
  • Child elements: OutputFile, Timestamps

5.8.1   OutputFile

This option specifies where the logging is printed to. Note that “stdout” is considered a legal value that represents “standard out”. The default value is an empty string, indicating that the tracing log will be written to standard out.
  • Full path: /SNetworkService/Tracing/OutputFile
  • Format: string
  • Default value: networking.log
  • Occurrences min-max: 1-1

5.8.2   Timestamps

This element specifies whether the logging must contain timestamps.
  • Full path: /SNetworkService/Tracing/Timestamps
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 1-1
  • Optional attributes: absolute

5.8.2.1   absolute

This attribute specifies whether the timestamps are absolute or relative to the startup time of the service.
  • Full path: /SNetworkService/Tracing/Timestamps/absolute
  • Format: boolean
  • Default value: true
  • Required: false

5.8.3   Categories

This element contains the logging properties for various networking categories.
  • Full path: /SNetworkService/Tracing/Categories
  • Occurrences min-max: 1-1
  • Child elements: Default, Configuration, Construction, Destruction, Mainloop, Groups, Send, Receive, Throttling, Test, Discovery

5.8.3.1   Default

This element specifies the tracing level used for categories that are not explicitly specified. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Default
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1

5.8.3.2   Configuration

This element specifies the tracing level for the Configuration category. This includes the processing of all NetworkService parameters in the config file. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Configuration
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.3   Construction

This element specifies the tracing level for the Construction category. This includes the creation of all internal processing entities. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Construction
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.4   Destruction

This element specifies the tracing level for the Destruction category. This includes the destruction of all internal processing entities when the NetworkService terminates. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Destruction
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.5   Mainloop

This element specifies the tracing level for the Mainloop category. This includes information about each of the threads spawned by the NetworkService. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Mainloop
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.6   Groups

This element specifies the tracing level for the Groups category. This includes the management of local groups (partition-topic combinations). Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Groups
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.7   Send

This element specifies the tracing level for the Send category. This includes information about outgoing data. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Send
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.8   Receive

This element specifies the tracing level for the Receive category. This includes information about incoming data. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Receive
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.9   Throttling

This element specifies the tracing level for the Throttling category. This includes information about throttling. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Throttling
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.10   Test

This element specifies the tracing level for the Test category. This is a reserved category used for testing purposes. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Test
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.8.3.11   Discovery

This element specifies the tracing level for the Discovery category. This includes all activity related to the discovery channel. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /SNetworkService/Tracing/Categories/Discovery
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

5.9   Compression

This group of attributes specifies a compression method to use within the service in partitions where it is enabled. The networking service includes (depending on platform) implementations of zlib, lzf and snappy. Others may be implemented by writing a dynamically-loadable library and configuring it here. See the OpenSplice release notes for details of how to write such a library.

It is imperative that all nodes exchanging compressed data have the same configuration in this section.

  • Full path: /SNetworkService/Compression
  • Occurrences min-max: 0-1
  • Optional attributes: PluginLibrary, PluginInitFunction, PluginParameter

5.9.1   PluginLibrary

This attribute names a dynamically loadable library which must contain the code for compressing and decompressing the network data. This may be left blank for the built-in compressors.
  • Full path: /SNetworkService/Compression/PluginLibrary
  • Format: string
  • Default value: “”
  • Required: false

5.9.2   PluginInitFunction

This attribute specifies an initialization function for a compression plugin to be used within the service. The functions for the built-in compressors are named ospl_comp_zlib_init, ospl_comp_lzf_init and ospl_comp_snappy_init but for convenience they may be specified here as as zlib, lzf or snappy.
  • Full path: /SNetworkService/Compression/PluginInitFunction
  • Format: string
  • Default value: “”
  • Required: false

5.9.3   PluginParameter

Some compression implementations are configurable with respect to the tradeoff between speed and effectiveness. A parameter may be specified here to control this. For example the zlib compressor is configured with an integer between 0 (for no compression) to 9 (for maximum compression).
  • Full path: /SNetworkService/Compression/PluginParameter
  • Format: string
  • Default value: “”
  • Required: false

6   NetworkService

When communication endpoints are located on different computing nodes, the data produced using the local DDS service must be communicated to the remote DDS service and the other way around. The Networking service provides a bridge between the local DDS service and a network interface. Multiple Networking services can exist next to each other; each serving one (or more) physical network interface(s). The Networking service is responsible for forwarding data to the network and for receiving data from the network. It can be configured to distinguish multiple communication channels with different QoS policies assigned to be able to schedule sending and receival of specific messages to provide optimal performance for a specific application domain.
  • Full path: /NetworkService
  • Occurrences min-max: 0-*
  • Required attributes: name

6.1   name

This attribute identifies the configuration for the Networking service. Multiple Network service configurations can be specified in one single resource. The actual applicable configuration is determined by the value of the name attribute, which must match the one specified under the //OpenSplice/Domain/Service[@name] in the configuration of the DomainService.
  • Full path: /NetworkService/name
  • Format: string
  • Default value: networking
  • Required: true

6.2   Watchdog

This element controls the characteristics of the Watchdog thread.
  • Full path: /NetworkService/Watchdog
  • Occurrences min-max: 0-1

6.2.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.
  • Full path: /NetworkService/Watchdog/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class

6.2.1.1   Priority

This element specifies the thread priority that will be used by the watchdog thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /NetworkService/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
6.2.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /NetworkService/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

6.2.1.2   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /NetworkService/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

6.3   General

This element contains general parameters that concern the networking service as a whole.
  • Full path: /NetworkService/General
  • Occurrences min-max: 0-1
  • Child elements: NetworkInterfaceAddress, EnableMulticastLoopback, LegacyCompression

6.3.1   NetworkInterfaceAddress

This element specifies which network interface card should be used. Every Networking service is bound to only one network interface card (NIC). The card can be uniquely identified by its corresponding IP address or by its symbolic name (e.g. eth0). If the value “first available” is entered here, the OpenSplice middleware will try to look up an interface that has the required capabilities.
  • Full path: /NetworkService/General/NetworkInterfaceAddress
  • Format: string
  • Default value: first available
  • Occurrences min-max: 0-1
  • Optional attributes: forced, ipv6, bind, allowReuse

6.3.1.1   forced

This attribute specifies whether only the selected NetworkInterfaceAddress should be used or others can be used too.

  • false - Specifies that the NetworkInterfaceAddress is first used but when not available another, when available, is used. (default).
  • true - Specifies that only the selected NetworkInterfaceAddress can be used.
  • Full path: /NetworkService/General/NetworkInterfaceAddress/forced
  • Format: boolean
  • Default value: false
  • Required: false

6.3.1.2   ipv6

This attribute specifies whether IPv6 should be used for communication.

  • false - specifies that IPv4 should be used (default).
  • true - Specifies that IPv6 should be used.

This setting will be overriden & ignored if the element NetworkInterfaceAddress has an explicit value that is unequivocally either an IPv4 or IPv6 address. This attribute is therefore only optionally required to specify IPv6 communication when special values like “first available” or an interface name are used instead of IP addresses.

  • Full path: /NetworkService/General/NetworkInterfaceAddress/ipv6
  • Format: boolean
  • Default value: false
  • Required: false

6.3.1.3   bind

Specifies the bind strategy to be used by the networking service for its sockets.

  • any - Specifies that the service should bind to the wildcard-address (INADDR_ANY) (default).
  • strict - Specifies that the service should bind to the NetworkingInterfaceAddress.
  • Full path: /NetworkService/General/NetworkInterfaceAddress/bind
  • Format: enumeration
  • Default value: any
  • Valid values: any, strict
  • Required: false

6.3.1.4   allowReuse

By default the networking service will bind to a port allowing other services to bind to the same port as well (so reuse of the port is allowed). By setting this option to ‘false’, the port is bound exclusively (SO_REUSEADDR disabled).

  • true - Ports can be reused (SO_REUSEADDR enabled) (default).
  • false - Ports are bound exclusively.
  • Full path: /NetworkService/General/NetworkInterfaceAddress/allowReuse
  • Format: boolean
  • Default value: true
  • Required: false

6.3.2   EnableMulticastLoopback

EnableMulticastLoopback specifies whether the networking service will allow
IP multicast packets within the node to be visible to all networking participants in the node, including itself. It must be TRUE for intra-node multicast communications, but if a node runs only a single OpenSplice networking service and does not host any other networking-capable programs, it may be set to FALSE for improved performance.
  • Full path: /NetworkService/General/EnableMulticastLoopback
  • Format: boolean
  • Default value: True
  • Valid values: True, False
  • Occurrences min-max: 0-1

6.3.3   LegacyCompression

This element specifies if compression is applied after of before fragmentations. When set to TRUE compression is applied after fragmentation which is provided for backward compatibility. When set to FALSE compression is applied before fragmentation. The default value is TRUE.
  • Full path: /NetworkService/General/LegacyCompression
  • Format: boolean
  • Default value: True
  • Valid values: True, False
  • Occurrences min-max: 0-1

6.3.4   Reconnection

This element specifies the desired networking-behavior with respect to the validity of restoring lost connectivity with remote nodes. Here ‘lost connectivity’ means a prolonged inability to communicate with a known and still active remote node (typically because of network-issues) that has resulted in such a node being declared ‘dead’ either by the topology-discovery or lost-reliability being detected by a reliable channel’s reactivity-checking mechanism. If automatic reconnection is allowed, communication channels with the now-reachable-again node will be restored, even though reliable data might have been lost during the disconnection period.
  • Full path: /NetworkService/General/Reconnection
  • Occurrences min-max: 0-1
  • Required attributes: allowed

6.3.4.1   allowed

This attribute specifies whether the network service must resume communication with an other network service when it has already been seen before but has been disconnected for a while.

  • false - Specifies that the network service must NOT resume communication. (default).
  • true - Specifies that the network service must resume communication.
  • Full path: /NetworkService/General/Reconnection/allowed
  • Format: boolean
  • Default value: false
  • Required: true

6.4   Partitioning

The OpenSplice Networking service is capable of leveraging the network’s multicast and routing capabilities. If some a-priori knowledge about the participating nodes and their topic and partition interest is available, then the networking services in the system can be explicitly instructed to use specific unicast or multicast addresses for its networking traffic. This is done by means of so-called network partitions

A network partition is defined by one or more unicast, multicast of broadcast IP addresses. Any networking service that is started will read the network partition settings and, if applicable, join the required multicast groups. For every sample distributed by the networking service, both its partition and topic name will be inspected. In combination with a set of network partition mapping rules, the service will determine to which network partition the sample is written. The mapping rules are configurable as well.

Using networking configuration, nodes can be disconnected from any networking partition. If a node is connected via a low speed interface, it is not capable of receiving high volume data. If the DCPS partitioning is designed carefully, high volume data is published into a specific partition, which on its turn is mapped onto a specific networking partition, which on its turn is only connected to those nodes that are capable of handling high volume data.

  • Full path: /NetworkService/Partitioning
  • Occurrences min-max: 0-1

6.4.1   GlobalPartition

This element specifies the global or default networking partition.
  • Full path: /NetworkService/Partitioning/GlobalPartition
  • Occurrences min-max: 0-1
  • Required attributes: Address
  • Optional attributes: MulticastTimeToLive

6.4.1.1   Address

The global networking partition transports data that is either meant to be global, like discovery heartbeats, or that is not mapped onto any other networking partition. The address is a list of one or more unicast, multicast or broadcast addresses. If more than one address is specified, then the different addresses are separated by a colon (,) semicolon (;) or space ( ). Samples for the global partition will be sent to all addresses that are specified in this list of addresses. To specify the default broadcast address, use the expression “broadcast”. Addresses can be entered as dotted decimal notation or as the symbolic hostname, in which case the middleware will try to resolve the corresponding IP address.
  • Full path: /NetworkService/Partitioning/GlobalPartition/Address
  • Format: string
  • Default value: broadcast
  • Required: true

6.4.1.2   MulticastTimeToLive

For each UDP packet sent out, The TimeToLive header value is set to this value for Multicast packets.

  • Full path: /NetworkService/Partitioning/GlobalPartition/MulticastTimeToLive
  • Default value: 32
  • Required: false

6.4.2   NetworkPartitions

Networking configuration can contain a set of networking partitions, which are grouped under the NetworkPartitions element.
  • Full path: /NetworkService/Partitioning/NetworkPartitions
  • Occurrences min-max: 0-1

6.4.2.1   NetworkPartition

Every NetworkPartition has a name, an address and a connected flag.
  • Full path: /NetworkService/Partitioning/NetworkPartitions/NetworkPartition
  • Occurrences min-max: 1-*
  • Required attributes: Address, Connected
  • Optional attributes: Name, Compression, SecurityProfile, MulticastTimeToLive
6.4.2.1.1   Name
A networking partition is uniquely identified by its name.
  • Full path: /NetworkService/Partitioning/NetworkPartitions/NetworkPartition/Name
  • Format: string
  • Default value: networkPartition
  • Required: false
6.4.2.1.2   Address
The address is a list of one or more unicast, multicast or broadcast addresses. If more than one address is specified, then the different addresses are separated by a colon (,) semicolon (;) or space ( ). Samples for this network partition will be sent to all addresses that are specified in this list of addresses. To specify the default broadcast address, use the expression “broadcast”. Addresses can be entered as dotted decimal notation or as the symbolic hostname, in which case the middleware will try to resolve the corresponding IP address.
  • Full path: /NetworkService/Partitioning/NetworkPartitions/NetworkPartition/Address
  • Format: string
  • Default value: broadcast
  • Required: true
6.4.2.1.3   Connected

A node can choose to be not connected to a networking partition by setting the Connected attribute.

If a node is connected to a networking partition, it will join the corresponding multicast group and it will receive data distributed over the partition. If it is not connected, data distributed over the partition will not reach the node but will be filtered by the networking interface or multicast enabled switches.

  • Full path: /NetworkService/Partitioning/NetworkPartitions/NetworkPartition/Connected
  • Format: boolean
  • Default value: true
  • Required: true
6.4.2.1.4   Compression

This attribute specifies if networking will apply compression to limit bandwidth for a specific network partition. This provides great flexibility as network partition are dynamically bind to logical partitions. Compression is performed before fragmentation of the messages. To provide backward compatibility the option LegacyCompression (see General options) can be set to provide compression after fragmentation. The following compression values are allowed:

  • false - No compression is applied. This is also the default value if not specified.
  • true - Compression is applicable
  • Full path: /NetworkService/Partitioning/NetworkPartitions/NetworkPartition/Compression
  • Format: boolean
  • Default value: false
  • Required: false
6.4.2.1.5   SecurityProfile
In the context of secure networking, the NetworkPartition element provides support for the attribute SecurityProfile. The attribute is referencing a security profile declared in the context of the Security element. If the given reference is invalid, the network partition configuration is invalid. In this case the partition will be blocked to prevent unwanted information leaks. A configuration error message will be logged to the ospl-error.log file. If the security feature has been enabled but no profile is declared, the NULL profile will be used by default. The ordering of network partition declarations in the OSPL configuration file must be the same for all nodes within the OpenSplice domain. If certain nodes shall not use one of the network partitions, the network partition in question must be declared as connected=”false”. In this case the declared security profile would not be evaluated or initialized, and the associated secret cipher keys need not to be defined for the OpenSplice node in question.
  • Full path: /NetworkService/Partitioning/NetworkPartitions/NetworkPartition/SecurityProfile
  • Format: string
  • Default value: nullProfile
  • Required: false
6.4.2.1.6   MulticastTimeToLive

For each UDP packet sent out, The TimeToLive header value is set to this value for Multicast packets.

  • Full path: /NetworkService/Partitioning/NetworkPartitions/NetworkPartition/MulticastTimeToLive
  • Default value: 32
  • Required: false

6.4.3   IgnoredPartitions

This element is used to group the set of IgnoredPartition elements.
  • Full path: /NetworkService/Partitioning/IgnoredPartitions
  • Occurrences min-max: 0-1

6.4.3.1   IgnoredPartition

This element can be used to create a “Local Partition” that is only available on the node on which it is specified, and therefore won’t generate network-load. Any DCPS partition-topic combination specified in this element will not be distibuted by the Networking service.
  • Full path: /NetworkService/Partitioning/IgnoredPartitions/IgnoredPartition
  • Occurrences min-max: 1-*
  • Required attributes: DCPSPartitionTopic
6.4.3.1.1   DCPSPartitionTopic
The Networking service will match any DCPS messages to the DCPSPartitionTopic expression and determine if it matches. The PartitionExpression and TopicExpression are allowed to contain a ‘*’ wildcard, meaning that anything matches. An exact match is considered better than a wildcard match. If a DCPS messages matches an expression it will not be send to the network.
  • Full path: /NetworkService/Partitioning/IgnoredPartitions/IgnoredPartition/DCPSPartitionTopic
  • Format: string
  • Default value: .
  • Required: true

6.4.4   PartitionMappings

This element is used to group the set of PartitionMapping elements.
  • Full path: /NetworkService/Partitioning/PartitionMappings
  • Occurrences min-max: 0-1

6.4.4.1   PartitionMapping

This element specifies a mapping between a network partition and a partition-topic combination.

In order to give networking partitions a meaning in the context of DCPS, mappings from DCPS partitions and topics onto networking partitions should be defined. Networking allows for a set of partition mappings to be defined.

  • Full path: /NetworkService/Partitioning/PartitionMappings/PartitionMapping
  • Occurrences min-max: 1-*
  • Required attributes: NetworkPartition, DCPSPartitionTopic
6.4.4.1.1   NetworkPartition
The NetworkPartition attribute of a partition mapping defines that networking partitition that data in a specific DCPS partition of a specific DCPS topic should be sent to.
  • Full path: /NetworkService/Partitioning/PartitionMappings/PartitionMapping/NetworkPartition
  • Format: string
  • Default value: networkPartition
  • Required: true
6.4.4.1.2   DCPSPartitionTopic
The Networking service will match any DCPS messages to the DCPSPartitionTopic expression and determine if it matches. The PartitionExpression and TopicExpression are allowed to contain a ‘*’ wildcard, meaning that anything matches. An exact match is considered better than a wildcard match. For every DCPS message, the best matching partition is determined and the data is sent over the corresponding networking partition as specified by the matching NetworkPartition element.
  • Full path: /NetworkService/Partitioning/PartitionMappings/PartitionMapping/DCPSPartitionTopic
  • Format: string
  • Default value: .
  • Required: true

6.5   Channels

This element is used to group a set of Channels.

The set of channels define the behaviour of the ‘network’ concerning aspects as priority, reliability and latency budget. By configuring a set of channels, the Networking service is able to function as a ‘scheduler’ for the network bandwidth. It achieves this by using the application-defined DDS QoS policies of the data to select the most appropriate channel to send the data.

  • Full path: /NetworkService/Channels
  • Occurrences min-max: 1-1
  • Child elements: AllowedPorts

6.5.1   Channel

This element specifies all properties of an individual Channel.

The Networking service will make sure messages with a higher priority precede messages with a lower priority and it uses the latency budget to assemble multiple messages into one UDP packet where possible, to optimize the bandwidth usage. Of course, its performance depends heavily on the compatbility of the configured channels with the used DDS QoS policies of the applications.

  • Full path: /NetworkService/Channels/Channel
  • Occurrences min-max: 1-42
  • Child elements: PortNr, FragmentSize, Resolution, AdminQueueSize, CompressionBufferSize, CompressionThreshold, AllowedPorts
  • Required attributes: name, reliable, enabled
  • Optional attributes: default, priority

6.5.1.1   name

The name uniquely identifies the channel.
  • Full path: /NetworkService/Channels/Channel/name
  • Format: string
  • Default value: aChannel
  • Required: true

6.5.1.2   reliable

If this attribute is set to true, the channel sends all messages reliably. If not, data is sent only once (fire-and-forget).

The specific channel a message is written into depends on the attached quality of service. Once a message has arrived in a channel, it will be transported with the quality of service attached to the channel. If the reliable attribute happens to be set to true, the message will be sent over the network using a reliability protocol.

  • Full path: /NetworkService/Channels/Channel/reliable
  • Format: boolean
  • Default value: false
  • Required: true

6.5.1.3   default

This attribute indicates whether the channel is selected as the default channel in case no channel offers the quality of service requested by a message.

The networking channels should be configured corresponding to the quality of service settings that are expected to be requested by the applications. It might happen, however, that none of the available channels meets the requested quality of service for a specific message. In that case, the message will be written into the default channel.

Note that only one channel is allowed to have this attribute set to true

  • Full path: /NetworkService/Channels/Channel/default
  • Format: boolean
  • Default value: false
  • Required: false

6.5.1.4   enabled

This attribute toggles a channel on or off. Toggling a channel between enabled and disabled is a quick alternative for commenting out the corresponding lines in the configuration file.
  • Full path: /NetworkService/Channels/Channel/enabled
  • Format: boolean
  • Default value: false
  • Required: true

6.5.1.5   priority

This attribute sets the transport priority of the channel. Messages sent to the network have a transport_priority quality of service value. Selection of a networking channel is based on the priority requested by the message and the priority offered by the channel. The priority settings of the different channels divide the priority range into intervals. Within a channel, messages are sorted in order of priority.
  • Full path: /NetworkService/Channels/Channel/priority
  • Format: integer
  • Default value: 0
  • Required: false

6.5.1.6   PortNr

This element specifies the port number used by the Channel. Messages for the channel are sent to the port number given. Each channel needs its own unique port number. Please note that ‘reliable’ channels use a second port, which is the specified PortNr + 1.
  • Full path: /NetworkService/Channels/Channel/PortNr
  • Format: integer
  • Default value: 53400
  • Occurrences min-max: 1-1

6.5.1.7   FragmentSize

The networking module will fragment large message into smaller fragments with size FragmentSize. These fragments are sent as datagrams to the UDP stack. OS-settings determine the maximum datagram size.
  • Full path: /NetworkService/Channels/Channel/FragmentSize
  • Default value: 1300
  • Occurrences min-max: 0-1

6.5.1.8   Resolution

The resolution indicates the number of milliseconds that this channel sleeps between two consecutive resend or packing actions. Latency budget values are truncated to a multiple of “Resolution” milliseconds.

It is considered good practice to specify the ThrottleTreshold consistently throughout the system.

  • Full path: /NetworkService/Channels/Channel/Resolution
  • Format: integer
  • Default value: 10
  • Occurrences min-max: 0-1

6.5.1.9   AdminQueueSize

For reliable channels the receiving side needs to keep the sending side informed about the received data and the received control messages.

This is done by means of an “AdminQueue”. This setting determines the size of this queue, and it must be greater than the maximum number of reliable messages send or received during each “Resolution” milliseconds.

  • Full path: /NetworkService/Channels/Channel/AdminQueueSize
  • Format: integer
  • Default value: 4000
  • Occurrences min-max: 0-1

6.5.1.10   CompressionBufferSize

When compression on messages is enabled then the CompressionBufferSize specifies the initial size of the compression/decompression buffer. The compression buffer is used to store the messages before they are compressed and send on the network. The decompression buffer is used to decompress the received compressed messages. Note that the actual size of these buffers may be increased when needed.
  • Full path: /NetworkService/Channels/Channel/CompressionBufferSize
  • Format: integer
  • Default value: 131072
  • Occurrences min-max: 0-1

6.5.1.11   CompressionThreshold

When compression on messages is enabled then the CompressionThreshold provides a threshold to start compressing the accumulated data and sending the compressed data on the network. The CompressionThreshold is used to estimate the size of the compressed messages.
  • Full path: /NetworkService/Channels/Channel/CompressionThreshold
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.5.1.12   Sending

This element describes all properties for the transmitting side of the Channel.
  • Full path: /NetworkService/Channels/Channel/Sending
  • Occurrences min-max: 0-1
  • Child elements: CrcCheck, QueueSize, MaxBurstSize, ThrottleLimit, ThrottleThreshold, MaxRetries, RecoveryFactor, DiffServField, DontRoute, TimeToLive
6.5.1.12.1   CrcCheck

In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured. There is a small performance cost using this feature due to the addtional overhead of carrying out the crc calculation.

When the sending side is enabled the network packet will contain a valid crc field.

  • Full path: /NetworkService/Channels/Channel/Sending/CrcCheck
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1
6.5.1.12.2   QueueSize
This element specifies the number of messages the networking queue can contain. Messages sent to the network are written into the networking queue. The networking service will read from this queue. If this queue is full, the writer writing into the queue is suspended and will retry until success. Note that a full networking queue is a symptom of an improperly designed system.
  • Full path: /NetworkService/Channels/Channel/Sending/QueueSize
  • Format: integer
  • Default value: 400
  • Occurrences min-max: 0-1
6.5.1.12.3   MaxBurstSize
Amount in bytes to be sent at maximum every “Resolution” milliseconds. The default value is set to 1GB per resolution tick. This can be considered “unlimited” as this far exceeds the capacity of modern physical networks.
  • Full path: /NetworkService/Channels/Channel/Sending/MaxBurstSize
  • Default value: 1073741823
  • Occurrences min-max: 0-1
6.5.1.12.4   ThrottleLimit
Throttling will enable you to further limit (below MaxBurstSize) the amount of data that is sent every Resolution interval. This happens if one of the receiving nodes in the network indicates that it has trouble processing all incoming data. This value is the lower boundary of the range over which the throttling can adapt the limit. If this value is set to the same value (or higher) as MaxBurstSize throttling is disabled. The ThrottleLimit value is not allowed be smaller than the FragmentSize. If a lower value is provided, then the value of FragmentSize is used as ThrottleLimit.
  • Full path: /NetworkService/Channels/Channel/Sending/ThrottleLimit
  • Default value: 10240
  • Occurrences min-max: 0-1
6.5.1.12.5   ThrottleThreshold

This is the number of unprocessed network fragments that a node will store before it will inform the other nodes in the network that it has trouble processing the incoming data. Those other nodes can use this information to adjust their throttle values, effectively reducing the amount of incoming data in case of a temporary overflow, and increasing again when the node is able to catch up.

It is considered good practice to specify the ThrottleTreshold consistently throughout the system.

  • Full path: /NetworkService/Channels/Channel/Sending/ThrottleThreshold
  • Format: integer
  • Default value: 50
  • Occurrences min-max: 0-1
6.5.1.12.6   MaxRetries
The number of retransmissions the service has to execute before considering the addressed node as not responding.
  • Full path: /NetworkService/Channels/Channel/Sending/MaxRetries
  • Format: integer
  • Default value: 100
  • Occurrences min-max: 0-1
6.5.1.12.7   RecoveryFactor

A lost message is resent after Resolution * RecoveryFactor milliseconds.

  • Full path: /NetworkService/Channels/Channel/Sending/RecoveryFactor
  • Format: integer
  • Default value: 3
  • Occurrences min-max: 0-1
6.5.1.12.8   DiffServField

This element describes the DiffServ setting the channel will apply to the networking messages. This parameter determines the value of the diffserv field of the IP version 4 packets send on this channel which allows QoS setting to be applied to the network traffic send on this channel.

Windows platform support for setting the diffserv field is dependent on the OS version. For Windows versions XP SP2 and 2003 to use the diffserv field the following parameter should be added to the register:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting

The type of this parameter is a DWORD and it’s value should be set to 0 to allow setting of the diffserv field.

For Windows version 7 or higher a new API (qWAVE) has been introduced For these platforms the specified diffserv value is mapped to one of the support traffic types. The mapping is as follows: 1-8 background traffic; 9-40 excellent traffic; 41-55 audio/video traffic; 56 voice traffic; 57-63 control traffic. When OpenSplice is run without Administrative priveleges then only the diffserv value of 0, 8, 40 or 56 is allowed.

  • Full path: /NetworkService/Channels/Channel/Sending/DiffServField
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
6.5.1.12.9   DontRoute
The IP DONTROUTE
socket option is set to the value specified.
  • Full path: /NetworkService/Channels/Channel/Sending/DontRoute
  • Format: boolean
  • Default value: True
  • Valid values: True, False
  • Occurrences min-max: 0-1
6.5.1.12.10   TimeToLive
For each UDP packet sent out, the IP Time To Live
header value is set to the value specified.
  • Full path: /NetworkService/Channels/Channel/Sending/TimeToLive
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
6.5.1.12.11   Scheduling
This element specifies the scheduling policies used to control the transmitter thread of the current Channel.
  • Full path: /NetworkService/Channels/Channel/Sending/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
6.5.1.12.11.1   Priority
This element specifies the thread priority that will be used by the transmitter thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /NetworkService/Channels/Channel/Sending/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
6.5.1.12.11.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /NetworkService/Channels/Channel/Sending/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
6.5.1.12.11.2   Class
This element specifies the thread scheduling class that will be used by the transmitter thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /NetworkService/Channels/Channel/Sending/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

6.5.1.13   Receiving

This element describes all properties for the receiving side of the Channel.
  • Full path: /NetworkService/Channels/Channel/Receiving
  • Occurrences min-max: 0-1
  • Child elements: CrcCheck, ReceiveBufferSize, DefragBufferSize, MaxReliabBacklog, PacketRetentionPeriod, ReliabilityRecoveryPeriod
6.5.1.13.1   CrcCheck

In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured. There is a small performance cost using this feature due to the addtional overhead of carrying out the crc calculation.

When the receiving side is enabled only network packets that contain a valid crc field are accepted.

  • Full path: /NetworkService/Channels/Channel/Receiving/CrcCheck
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1
6.5.1.13.2   ReceiveBufferSize
The UDP receive buffer of the best effort channel socket is set to the value given. If many message are lost, the receive buffer size has to be increased.
  • Full path: /NetworkService/Channels/Channel/Receiving/ReceiveBufferSize
  • Default value: 1000000
  • Occurrences min-max: 0-1
6.5.1.13.3   Scheduling
This element specifies the scheduling policies used to control the receiver thread of the current Channel.
  • Full path: /NetworkService/Channels/Channel/Receiving/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
6.5.1.13.3.1   Priority
This element specifies the thread priority that will be used by the receiver thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /NetworkService/Channels/Channel/Receiving/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
6.5.1.13.3.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /NetworkService/Channels/Channel/Receiving/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
6.5.1.13.3.2   Class
This element specifies the thread scheduling class that will be used by the receiver thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /NetworkService/Channels/Channel/Receiving/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1
6.5.1.13.4   DefragBufferSize
The maximum number of Fragment buffers that will be allocated for this channel. These buffers are used to store incoming fragments waiting to be processed, as well as fragments that are being processed.
  • Full path: /NetworkService/Channels/Channel/Receiving/DefragBufferSize
  • Default value: 5000
  • Occurrences min-max: 0-1
6.5.1.13.5   SMPOptimization
This option will distribute the processing done for incoming fragements over multiple threads, which will lead to an improved throughput on SMP nodes.
  • Full path: /NetworkService/Channels/Channel/Receiving/SMPOptimization
  • Occurrences min-max: 0-1
  • Required attributes: enabled
6.5.1.13.5.1   enabled
This attribute toggles the Optimization on or off.
  • Full path: /NetworkService/Channels/Channel/Receiving/SMPOptimization/enabled
  • Format: boolean
  • Default value: true
  • Required: true
6.5.1.13.6   MaxReliabBacklog
This is a lower limit to the DefragBufferSize that specifies the number of received fragments from a single remote node allocated for the purpose of order preservation because an earlier fragment from that remote node is missing. If this number is exceeded, then that particular remote node that didn’t resend the missing fragent in time is considered dead for this channel.
  • Full path: /NetworkService/Channels/Channel/Receiving/MaxReliabBacklog
  • Format: integer
  • Default value: 1000
  • Occurrences min-max: 0-1
6.5.1.13.7   PacketRetentionPeriod
This element specifies the number of milliseconds received packets are retained by the network service for its so-called “reliability-under-publisher-crash” extended reliability protocol. This protocol ensures that a consistent or aligned data-set is received by all alive (receiving) nodes, even though some nodes might not have received some packets at the moment a sending node disappears (for whatever reason). The protocol implies that each node retains sufficient received data so that it can be (re-)distributed if a publishing node disappears before all receiving nodes are “up-to-date”. When the PacketRetentionPeriod element is set to 0 (the default value), the alignment amongst receiving nodes will not occur. To activate the extended realibility protocol, this setting must be configured to a time period that exceeds the worst-case death-detection time as configured for the discovery protocol of the set of distributed networking services in the system.
  • Full path: /NetworkService/Channels/Channel/Receiving/PacketRetentionPeriod
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
6.5.1.13.8   ReliabilityRecoveryPeriod
This element specifies a timeout period (in milliseconds) for the alignment phase of the extended reliability protocol. It only has an effect when the related PacketRetentionperiod is set to a non-zero value. After the specified reliabilityRecoveryPeriod timeout, any data retained for the purpose of alignment of receiving nodes (following the disappearance or crash of a publishing node) will be discarded. The value of this timeout period must be sufficient to allow for the worst-case alignment-time of any “missed” data by individual receiving nodes following the disappearance of a sending node in the system.
  • Full path: /NetworkService/Channels/Channel/Receiving/ReliabilityRecoveryPeriod
  • Format: integer
  • Default value: 1000
  • Occurrences min-max: 0-1

6.5.1.14   AllowedPorts

AllowedPorts specifies the port numbers available for the network service to be used by the reliable network channels. The network channel is configured with a unique port number. However the reliable network channels require a second port number to provide the reliable communication service. For this second port number each reliable network channel will select a free port from the AllowedPorts. When the AllowedPorts is not specified for a particular channel then the default AllowedPorts which is configured on the Channels element is used. When also the default AllowedPorts is not specified each reliable network channel will first try to use the configured portNr + 1 as the second port or when this port number is already in use will determine a port number dynamically. The AllowedPorts is a list of entries where an entry is a port number or a port number range. When the AllowedPorts contains more than one entry then these entries must be seperated by a comma (,). A port number range consists of the lower and the upper bound of the port number range, where the lower and the upper bound are seperated by a minus (-).
  • Full path: /NetworkService/Channels/Channel/AllowedPorts
  • Format: string
  • Occurrences min-max: 0-1

6.5.2   AllowedPorts

AllowedPorts specifies the port numbers available for the network service to be used by the reliable network channels. The network channel is configured with a unique port number. However the reliable network channels require a second port number to provide the reliable communication service. For this second port number each reliable network channel will select a free port from the AllowedPorts. When the AllowedPorts is not specified for a particular channel then the default AllowedPorts which is configured on the Channels element is used. When also the default AllowedPorts is not specified each reliable network channel will first try to use the configured portNr + 1 as the second port or when this port number is already in use will determine a port number dynamically. The AllowedPorts is a list of entries where an entry is a port number or a port number range. When the AllowedPorts contains more than one entry then these entries must be seperated by a comma (,). A port number range consists of the lower and the upper bound of the port number range, where the lower and the upper bound are seperated by a minus (-).
  • Full path: /NetworkService/Channels/AllowedPorts
  • Format: string
  • Occurrences min-max: 0-1

6.6   Discovery

This element is used to configure the various parameters of the Discovery Channel, which is used to discover all relevant participating entities in the current Domain. The purpose of the discovery process is to build-up and maintain a notion of all relevant active nodes within the domain. The relevance of discovered remote nodes can be defined statically (by definition of the so-called Global Partition) and/or can be dynamically expanded and maintained by the dynamic-discovery process driven by the node’s Role and Scope.
  • Full path: /NetworkService/Discovery
  • Occurrences min-max: 0-1
  • Child elements: PortNr, ProbeList
  • Optional attributes: enabled, Scope

6.6.1   enabled

This element can be used to enable or disable the Discovery Channel. In case the Discovery Channel is disabled, entities will only detect each others presence implicitly once messages are received for the first time.
  • Full path: /NetworkService/Discovery/enabled
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1
  • Required: false

6.6.2   Scope

This attribute controls the dynamic discovery behaviour of this node within the current Domain. If it is not set, dynamic discovery will be disabled and the networking service will only communicate with nodes that can be reached through the predefined Global Partition. If the Scope attribute is specified, dynamic discovery is enabled and the networking service will be able to communicate with all nodes in the system that have a Role that matches the Scope expression. The Scope expression can contain a comma separated list of wild-card role-expressions. If the role of any discovered node matches any of the wild-card expressions, the remote node is considered a match and will become part of the communication reach (i.e. the Global Partition) of the current domain.
  • Full path: /NetworkService/Discovery/Scope
  • Format: string
  • Occurrences min-max: 0-1
  • Required: false

6.6.3   PortNr

This element specifies the Port number used by the Discovery Channel.
  • Full path: /NetworkService/Discovery/PortNr
  • Format: integer
  • Default value: 3369
  • Occurrences min-max: 1-1

6.6.4   ProbeList

This element contains the addresses of the nodes that will be contacted to retrieve an initial list of participating nodes in the current domain that match the specified Scope. Multiple ProbeList addresses can be entered by separating them by a colon (,), semicolon (;) or space( ) . The addresses can be entered as dotted decimal notation or as the symbolic hostname, in which case the middleware will try to resolve the corresponding IP address.
  • Full path: /NetworkService/Discovery/ProbeList
  • Format: string
  • Occurrences min-max: 0-1

6.6.5   Sending

This element describes all properties for the transmitting side of the Discovery Channel.
  • Full path: /NetworkService/Discovery/Sending
  • Occurrences min-max: 0-1
  • Child elements: CrcCheck, DiffServField, DontRoute, TimeToLive, Interval, SafetyFactor, SalvoSize

6.6.5.1   CrcCheck

In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured. There is a small performance cost using this feature due to the addtional overhead of carrying out the crc calculation.

When the sending side is enabled the network packet will contain a valid crc field.

  • Full path: /NetworkService/Discovery/Sending/CrcCheck
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

6.6.5.2   DiffServField

This element describes the DiffServ setting the channel will apply to the networking messages. This parameter determines the value of the diffserv field of the IP version 4 packets send on this channel which allows QoS setting to be applied to the network traffic send on this channel.

Windows platform support for setting the diffserv field is dependent on the OS version. For Windows versions XP SP2 and 2003 to use the diffserv field the following parameter should be added to the register:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting

The type of this parameter is a DWORD and it’s value should be set to 0 to allow setting of the diffserv field.

For Windows version 7 or higher a new API (qWAVE) has been introduced For these platforms the specified diffserv value is mapped to one of the support traffic types. The mapping is as follows: 1-8 background traffic; 9-40 excellent traffic; 41-55 audio/video traffic; 56 voice traffic; 57-63 control traffic. When OpenSplice is run without Administrative priveleges then only the diffserv value of 0, 8, 40 or 56 is allowed.

  • Full path: /NetworkService/Discovery/Sending/DiffServField
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.6.5.3   DontRoute

The IP DONTROUTE
socket option is set to the value specified.
  • Full path: /NetworkService/Discovery/Sending/DontRoute
  • Format: boolean
  • Default value: True
  • Valid values: True, False
  • Occurrences min-max: 0-1

6.6.5.4   TimeToLive

For each UDP packet sent out, the IP Time To Live
header value is set to the value specified.
  • Full path: /NetworkService/Discovery/Sending/TimeToLive
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.6.5.5   Scheduling

This element specifies the scheduling policies used to control the transmitter thread of the Discovery Channel.
  • Full path: /NetworkService/Discovery/Sending/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
6.6.5.5.1   Priority
This element specifies the thread priority that will be used by the transmitter thread of the Discovery Channel. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /NetworkService/Discovery/Sending/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
6.6.5.5.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /NetworkService/Discovery/Sending/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
6.6.5.5.2   Class
This element specifies the thread scheduling class that will be used by the transmitter thread of the Discovery Channel. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /NetworkService/Discovery/Sending/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

6.6.5.6   Interval

This element describes the interval(in milliseconds) at which remote nodes will expect heartbeats from this node.
  • Full path: /NetworkService/Discovery/Sending/Interval
  • Format: integer
  • Default value: 333
  • Occurrences min-max: 0-1

6.6.5.7   SafetyFactor

The SafetyFactor is used to set a margin on the discovery sending. This avoids tight timing issues.
  • Full path: /NetworkService/Discovery/Sending/SafetyFactor
  • Default value: 0.9
  • Occurrences min-max: 0-1

6.6.5.8   SalvoSize

During starting and stopping, discovery messages are sent at higher frequency. This SalvoSize sets the number of messages to send during these phases.
  • Full path: /NetworkService/Discovery/Sending/SalvoSize
  • Format: integer
  • Default value: 3
  • Occurrences min-max: 0-1

6.6.6   Receiving

This element describes all properties for the receiving side of the Discovery Channel.
  • Full path: /NetworkService/Discovery/Receiving
  • Occurrences min-max: 0-1
  • Child elements: CrcCheck, DeathDetectionCount, ReceiveBufferSize

6.6.6.1   CrcCheck

In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured. There is a small performance cost using this feature due to the addtional overhead of carrying out the crc calculation.

When the sending side is enabled the network packet will contain a valid crc field.

  • Full path: /NetworkService/Discovery/Receiving/CrcCheck
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

6.6.6.2   Scheduling

This element specifies the scheduling policies used to control the receiver thread of the Discovery Channel.
  • Full path: /NetworkService/Discovery/Receiving/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class
6.6.6.2.1   Priority
This element specifies the thread priority that will be used by the receiver thread of the Discovery Channel. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /NetworkService/Discovery/Receiving/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
6.6.6.2.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /NetworkService/Discovery/Receiving/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false
6.6.6.2.2   Class
This element specifies the thread scheduling class that will be used by the receiver thread of the Discovery Channel. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /NetworkService/Discovery/Receiving/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

6.6.6.3   DeathDetectionCount

This element specifies how often a heartbeat from a remote node must miss its Interval before that remote node is considered dead.
  • Full path: /NetworkService/Discovery/Receiving/DeathDetectionCount
  • Format: integer
  • Default value: 6
  • Occurrences min-max: 0-1

6.6.6.4   ReceiveBufferSize

The UDP receive buffer of the Discovery Channel socket is set to the value given. If many message are lost, the receive buffer size has to be increased.
  • Full path: /NetworkService/Discovery/Receiving/ReceiveBufferSize
  • Default value: 1000000
  • Occurrences min-max: 0-1

6.7   Tracing

This element controls the amount and type of information that is written into the tracing log by the Networking Service. This is useful to track the Networking Service during application development. In the runtime system it should be turned off.
  • Full path: /NetworkService/Tracing
  • Occurrences min-max: 0-1
  • Child elements: OutputFile, Timestamps

6.7.1   OutputFile

This option specifies where the logging is printed to. Note that “stdout” is considered a legal value that represents “standard out”. The default value is an empty string, indicating that the tracing log will be written to standard out.
  • Full path: /NetworkService/Tracing/OutputFile
  • Format: string
  • Default value: networking.log
  • Occurrences min-max: 1-1

6.7.2   Timestamps

This element specifies whether the logging must contain timestamps.
  • Full path: /NetworkService/Tracing/Timestamps
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 1-1
  • Optional attributes: absolute

6.7.2.1   absolute

This attribute specifies whether the timestamps are absolute or relative to the startup time of the service.
  • Full path: /NetworkService/Tracing/Timestamps/absolute
  • Format: boolean
  • Default value: true
  • Required: false

6.7.3   Categories

This element contains the logging properties for various networking categories.
  • Full path: /NetworkService/Tracing/Categories
  • Occurrences min-max: 1-1
  • Child elements: Default, Configuration, Construction, Destruction, Mainloop, Groups, Send, Receive, Throttling, Test, Discovery

6.7.3.1   Default

This element specifies the tracing level used for categories that are not explicitly specified. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Default
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1

6.7.3.2   Configuration

This element specifies the tracing level for the Configuration category. This includes the processing of all NetworkService parameters in the config file. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Configuration
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.3   Construction

This element specifies the tracing level for the Construction category. This includes the creation of all internal processing entities. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Construction
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.4   Destruction

This element specifies the tracing level for the Destruction category. This includes the destruction of all internal processing entities when the NetworkService terminates. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Destruction
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.5   Mainloop

This element specifies the tracing level for the Mainloop category. This includes information about each of the threads spawned by the NetworkService. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Mainloop
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.6   Groups

This element specifies the tracing level for the Groups category. This includes the management of local groups (partition-topic combinations). Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Groups
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.7   Send

This element specifies the tracing level for the Send category. This includes information about outgoing data. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Send
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.8   Receive

This element specifies the tracing level for the Receive category. This includes information about incoming data. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Receive
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.9   Throttling

This element specifies the tracing level for the Throttling category. This includes information about throttling. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Throttling
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.10   Test

This element specifies the tracing level for the Test category. This is a reserved category used for testing purposes. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Test
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.7.3.11   Discovery

This element specifies the tracing level for the Discovery category. This includes all activity related to the discovery channel. Level 0 indicates no tracing, level 6 indicates the most detailed level of tracing.
  • Full path: /NetworkService/Tracing/Categories/Discovery
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

6.8   Compression

This group of attributes specifies a compression method to use within the service in partitions where it is enabled. The networking service includes (depending on platform) implementations of zlib, lzf and snappy. Others may be implemented by writing a dynamically-loadable library and configuring it here. See the OpenSplice release notes for details of how to write such a library.

It is imperative that all nodes exchanging compressed data have the same configuration in this section.

  • Full path: /NetworkService/Compression
  • Occurrences min-max: 0-1
  • Optional attributes: PluginLibrary, PluginInitFunction, PluginParameter

6.8.1   PluginLibrary

This attribute names a dynamically loadable library which must contain the code for compressing and decompressing the network data. This may be left blank for the built-in compressors.
  • Full path: /NetworkService/Compression/PluginLibrary
  • Format: string
  • Default value: “”
  • Required: false

6.8.2   PluginInitFunction

This attribute specifies an initialization function for a compression plugin to be used within the service. The functions for the built-in compressors are named ospl_comp_zlib_init, ospl_comp_lzf_init and ospl_comp_snappy_init but for convenience they may be specified here as as zlib, lzf or snappy.
  • Full path: /NetworkService/Compression/PluginInitFunction
  • Format: string
  • Default value: “”
  • Required: false

6.8.3   PluginParameter

Some compression implementations are configurable with respect to the tradeoff between speed and effectiveness. A parameter may be specified here to control this. For example the zlib compressor is configured with an integer between 0 (for no compression) to 9 (for maximum compression).
  • Full path: /NetworkService/Compression/PluginParameter
  • Format: string
  • Default value: “”
  • Required: false

7   NetworkingBridgeService

The root element of a networking bridge service configuration.

  • Full path: /NetworkingBridgeService
  • Occurrences min-max: 0-*
  • Required attributes: name

7.1   name

This attribute identifies the configuration for the Networking Bridge Service. Multiple service configurations can be specified in one single XML file. The actual applicable configuration is determined by the value of the name attribute, which must match the specified under the element OpenSplice/Domain/Service[@name] in the Domain Service configuration.

  • Full path: /NetworkingBridgeService/name
  • Format: string
  • Default value: networkingbridge
  • Required: true

7.2   Exclude

This element specifies which partition/topic combinations may not be forwarded.

  • Full path: /NetworkingBridgeService/Exclude
  • Occurrences min-max: 0-*

7.2.1   Entry

This element configures a single partition/topic combination for exclusion in the set of forwarded partition/topic combinations.

  • Full path: /NetworkingBridgeService/Exclude/Entry
  • Occurrences min-max: 0-*
  • Required attributes: DCPSPartitionTopic

7.2.1.1   DCPSPartitionTopic

This attribute specifies a partition and a topic expression, separated by a single ‘.’, that are used to determine if a given partition and topic will be excluded w.r.t. forwarding. The expressions may use the usual wildcards ‘*’ and ‘?’.

  • Full path: /NetworkingBridgeService/Exclude/Entry/DCPSPartitionTopic
  • Format: string
  • Default value: n/a
  • Required: true

7.3   Include

This element specifies which partition/topic combinations are to be forwarded, provided they are not listed in the Exclude section.

  • Full path: /NetworkingBridgeService/Include
  • Occurrences min-max: 0-*

7.3.1   Entry

This element configures a single partition/topic combination for inclusion in the set of forwarded partition/topic combinations.

  • Full path: /NetworkingBridgeService/Include/Entry
  • Occurrences min-max: 0-*
  • Required attributes: DCPSPartitionTopic

7.3.1.1   DCPSPartitionTopic

This attribute specifies a partition and a topic expression, separated by a single ‘.’, that are used to determine if a given partition and topic will be included w.r.t. forwarding. The expressions may use the usual wildcards ‘*’ and ‘?’.

  • Full path: /NetworkingBridgeService/Include/Entry/DCPSPartitionTopic
  • Format: string
  • Default value: n/a
  • Required: true

7.4   Tracing

The Tracing element controls the amount and type of information that is written into the tracing log by the DDSI service. This is useful to track the DDSI service during application development.

  • Full path: /NetworkingBridgeService/Tracing
  • Occurrences min-max: 0-*
  • Child elements: AppendToFile, EnableCategory, OutputFile, Verbosity

7.4.1   AppendToFile

This option specifies whether the output is to be appended to an existing log file. The default is to create a new log file each time, which is generally the best option if a detailed log is generated.

  • Full path: /NetworkingBridgeService/Tracing/AppendToFile
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

7.4.2   EnableCategory

This element enables individual logging categories. These are enabled in addition to those enabled by Tracing/Verbosity. Recognised categories are: - fatal: all fatal errors, errors causing immediate termination - error: failures probably impacting correctness but not necessarily causing immediate termination - warning: abnormal situations that will likely not impact correctness - config: full dump of the configuration - info: general informational notices

In addition, there is the keyword trace that enables all but radmin

  • Full path: /NetworkingBridgeService/Tracing/EnableCategory
  • Format: string
  • Occurrences min-max: 0-1

7.4.3   OutputFile

This option specifies where the logging is printed to. Note that stdout and stderr are treated as special values, representing “standard out” and “standard error” respectively. No file is created unless logging categories are enabled using the Tracing/Verbosity or Tracing/EnabledCategory settings.

  • Full path: /NetworkingBridgeService/Tracing/OutputFile
  • Format: string
  • Default value: nwbridge.log
  • Occurrences min-max: 0-1

7.4.4   Verbosity

This element enables standard groups of categories, based on a desired verbosity level. This is in addition to the categories enabled by the Tracing/EnableCategory setting. Recognised verbosity levels and the categories they map to are: - none: no NetworkingBridge log - severe: error and fatal - warning: severe + warning - info: warning + general information messages - config: info + config - fine: equivalent to config - finest: fine + trace

While none prevents any message from being written to a NetworkingBridge log file, warnings and errors are still logged in the ospl-info.log and ospl-error.log files.

  • Full path: /NetworkingBridgeService/Tracing/Verbosity
  • Format: enumeration
  • Default value: none
  • Valid values: finest, fine, config, info, warning, severe, none
  • Occurrences min-max: 0-1

7.5   Watchdog

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.

  • Full path: /NetworkingBridgeService/Watchdog
  • Occurrences min-max: 0-*

7.5.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.

  • Full path: /NetworkingBridgeService/Watchdog/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Class, Priority

7.5.1.1   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.

  • Full path: /NetworkingBridgeService/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: default
  • Valid values: realtime, timeshare, default
  • Occurrences min-max: 0-1

7.5.1.2   Priority

This element specifies the thread priority. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.

  • Full path: /NetworkingBridgeService/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
  • Optional attributes: priority_kind
7.5.1.2.1   priority_kind

This attribute specifies whether the specified Priority is a relative or absolute priority.

  • Full path: /NetworkingBridgeService/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: relative
  • Valid values: relative, absolute
  • Required: false

8   DDSI2Service

The root element of a DDSI2 networking service configuration.

  • Full path: /DDSI2Service
  • Occurrences min-max: 0-*
  • Required attributes: name

8.1   name

This attribute identifies the configuration for the DDSI2 Service. Multiple DDSI2 service configurations can be specified in one single resource. The actual applicable configuration is determined by the value of the name attribute, which must match the specified under the element OpenSplice/Domain/Service[@name] in the Domain Service configuration.

  • Full path: /DDSI2Service/name
  • Format: string
  • Default value: ddsi2
  • Required: true

8.2   Compatibility

The Compatibility elements allows specifying various settings related to compatability with standards and with other DDSI implementations.

  • Full path: /DDSI2Service/Compatibility
  • Occurrences min-max: 0-1
  • Child elements: AckNackNumbitsEmptySet, ArrivalOfDataAssertsPpAndEpLiveliness, AssumeRtiHasPmdEndpoints, ExplicitlyPublishQosSetToDefault, ManySocketsMode, RespondToRtiInitZeroAckWithInvalidHeartbeat, StandardsConformance

8.2.1   AckNackNumbitsEmptySet

This element governs the representation of an acknowledgement message that does not also negatively-acknowledge some samples. If set to 0, the generated acknowledgements have an invalid form and will be reject by the strict and pedantic conformance modes, but several other implementation require this setting for smooth interoperation.

If set to 1, all acknowledgements sent by DDSI2 adhere the form of acknowledgement messages allowed by the standard, but this causes problems when interoperating with these other implementations. The strict and pedantic standards conformance modes always overrule a AckNackNumbitsEmptySet=0 to prevent the transmitting of invalid messages.

  • Full path: /DDSI2Service/Compatibility/AckNackNumbitsEmptySet
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

8.2.2   ArrivalOfDataAssertsPpAndEpLiveliness

This setting is currently ignored (accepted for backwards compatibility).

  • Full path: /DDSI2Service/Compatibility/ArrivalOfDataAssertsPpAndEpLiveliness
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.2.3   AssumeRtiHasPmdEndpoints

This option assumes ParticipantMessageData endpoints required by the liveliness protocol are present in RTI participants even when not properly advertised by the participant discovery protocol.

  • Full path: /DDSI2Service/Compatibility/AssumeRtiHasPmdEndpoints
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.2.4   ExplicitlyPublishQosSetToDefault

This element specifies whether QoS settings set to default values are explicitly published in the discovery protocol. Implementations are to use the default value for QoS settings not published, which allows a significant reduction of the amount of data that needs to be exchanged for the discovery protocol, but this requires all implementations to adhere to the default values specified by the specifications.

When interoperability is required with an implementation that does not follow the specifications in this regard, setting this option to true will help.

  • Full path: /DDSI2Service/Compatibility/ExplicitlyPublishQosSetToDefault
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.2.5   ManySocketsMode

This option specifies whether a network socket will be created for each domain participant on a host. The specification seems to assume that each participant has a unique address, and setting this option will ensure this to be the case. This is not the default.

Disabling it slightly improves performance and reduces network traffic somewhat. It also causes the set of port numbers needed by DDSI2 to become predictable, which may be useful for firewall and NAT configuration.

  • Full path: /DDSI2Service/Compatibility/ManySocketsMode
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.2.6   RespondToRtiInitZeroAckWithInvalidHeartbeat

This element allows a closer mimicking of the behaviour of some other DDSI implementations, albeit at the cost of generating even more invalid messages. Setting it to true ensures a Heartbeat can be sent at any time when a remote node requests one, setting it to false delays it until a valid one can be sent.

The latter is fully compliant with the specification, and no adverse effects have been observed. It is the default.

  • Full path: /DDSI2Service/Compatibility/RespondToRtiInitZeroAckWithInvalidHeartbeat
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.2.7   StandardsConformance

This element sets the level of standards conformance of this instance of the DDSI2 Service. Stricter conformance typically means less interoperability with other implementations. Currently three modes are defined:

  • pedantic: very strictly conform to the specification, ultimately for compliancy testing, but currently of little value because it adheres even to what will most likely turn out to be editing errors in the DDSI standard. Arguably, as long as no errata have been published it is the current text that is in effect, and that is what pedantic currently does.
  • strict: a slightly less strict view of the standard than does pedantic: it follows the established behaviour where the standard is obviously in error.
  • lax: attempt to provide the smoothest possible interoperability, anticipating future revisions of elements in the standard in areas that other implementations do not adhere to, even though there is no good reason not to.

The default setting is “lax”.

  • Full path: /DDSI2Service/Compatibility/StandardsConformance
  • Format: enumeration
  • Default value: lax
  • Valid values: lax, strict, pedantic
  • Occurrences min-max: 0-1

8.3   Discovery

The Discovery element allows specifying various parameters related to the discovery of peers.

  • Full path: /DDSI2Service/Discovery
  • Occurrences min-max: 0-1
  • Child elements: DSClusterLeaseDuration, DomainId, GenerateBuiltinTopics, LocalDiscoveryPartition, MaxAutoParticipantIndex, ParticipantIndex, SPDPInterval, SPDPMulticastAddress

8.3.1   DSClusterLeaseDuration

This element specifies the lease duration for entities discovered through a discovery service.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Discovery/DSClusterLeaseDuration
  • Format: string
  • Default value: 300 s
  • Occurrences min-max: 0-1

8.3.2   DomainId

This element allows overriding of the DDS Domain Id that is used for this DDSI2 service.

  • Full path: /DDSI2Service/Discovery/DomainId
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

8.3.3   GenerateBuiltinTopics

This element controls whether or not the DDSI2 service generates built-in topics from its discovery. When disabled, it relies on the durability service.

  • Full path: /DDSI2Service/Discovery/GenerateBuiltinTopics
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.3.4   LocalDiscoveryPartition

This element controls which partition is monitored by DDSI2 for built-in topics describing entities the it mirrors in DDSI.

  • Full path: /DDSI2Service/Discovery/LocalDiscoveryPartition
  • Format: string
  • Default value: __BUILT-IN PARTITION__
  • Occurrences min-max: 0-1

8.3.5   MaxAutoParticipantIndex

This element specifies the maximum DDSI participant index selected by this instance of the DDSI service if the Discovery/ParticipantIndex is “auto”.

  • Full path: /DDSI2Service/Discovery/MaxAutoParticipantIndex
  • Format: integer
  • Default value: 9
  • Occurrences min-max: 0-1

8.3.6   ParticipantIndex

This element specifies the DDSI participant index used by this instance of the DDSI service for discovery purposes. Only one such participant id is used, independent of the number of actual DomainParticipants on the node. It is either:

  • auto: which will attempt to automatically determine an available participant index (see also Discovery/MaxAutoParticipantIndex), or
  • a non-negative integer less than 120, or
  • none:, which causes it to use arbitrary port numbers for unicast sockets which entirely removes the constraints on the participant index but makes unicast discovery impossible.

The default is auto. The participant index is part of the port number calculation and if predictable port numbers are needed and fixing the participant index has no adverse effects, it is recommended that the second be option be used.

  • Full path: /DDSI2Service/Discovery/ParticipantIndex
  • Format: string
  • Default value: auto
  • Occurrences min-max: 0-1

8.3.7   Peers

This element statically configures addresses for discovery.

  • Full path: /DDSI2Service/Discovery/Peers
  • Occurrences min-max: 0-1

8.3.7.1   Group

This element statically configures a fault tolerant group of addresses for discovery. Each member of the group is tried in sequence until one succeeds.

  • Full path: /DDSI2Service/Discovery/Peers/Group
  • Occurrences min-max: 0-*
8.3.7.1.1   Peer

This element statically configures an addresses for discovery.

  • Full path: /DDSI2Service/Discovery/Peers/Group/Peer
  • Occurrences min-max: 0-*
  • Required attributes: Address
8.3.7.1.1.1   Address

This element specifies an IP address to which discovery packets must be sent, in addition to the default multicast address (see also General/AllowMulticast and Internal/SuppressSPDPMulticast). Both a hostnames and a numerical IP address is accepted; the hostname or IP address may be suffixed with :PORT to explicitly set the port to which it must be sent. Multiple Peers may be specified.

  • Full path: /DDSI2Service/Discovery/Peers/Group/Peer/Address
  • Format: string
  • Default value: n/a
  • Required: true

8.3.7.2   Peer

This element statically configures an address for discovery.

  • Full path: /DDSI2Service/Discovery/Peers/Peer
  • Occurrences min-max: 0-*
  • Required attributes: Address
8.3.7.2.1   Address

This element specifies an IP address to which discovery packets must be sent, in addition to the default multicast address (see also General/AllowMulticast and Internal/SuppressSPDPMulticast). Both a hostnames and a numerical IP address is accepted; the hostname or IP address may be suffixed with :PORT to explicitly set the port to which it must be sent. Multiple Peers may be specified.

  • Full path: /DDSI2Service/Discovery/Peers/Peer/Address
  • Format: string
  • Default value: n/a
  • Required: true

8.3.8   Ports

The Ports element allows specifying various parameters related to the port numbers used for discovery. These all have default values specified by the DDSI 2.1 specification and rarely need to be changed.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Discovery/Ports
  • Occurrences min-max: 0-1
  • Child elements: Base, DomainGain, MulticastDataOffset, MulticastMetaOffset, ParticipantGain, UnicastDataOffset, UnicastMetaOffset

8.3.8.1   Base

This element specifies the base port number (refer to the DDSI 2.1 specification, section 9.6.1, constant PB).

  • Full path: /DDSI2Service/Discovery/Ports/Base
  • Format: integer
  • Default value: 7400
  • Occurrences min-max: 0-1

8.3.8.2   DomainGain

This element specifies the domain gain, relating domain ids to sets of port numbers (refer to the DDSI 2.1 specification, section 9.6.1, constant DG).

  • Full path: /DDSI2Service/Discovery/Ports/DomainGain
  • Format: integer
  • Default value: 250
  • Occurrences min-max: 0-1

8.3.8.3   MulticastDataOffset

This element specifies the port number for multicast meta traffic (refer to the DDSI 2.1 specification, section 9.6.1, constant d2).

  • Full path: /DDSI2Service/Discovery/Ports/MulticastDataOffset
  • Format: integer
  • Default value: 1
  • Occurrences min-max: 0-1

8.3.8.4   MulticastMetaOffset

This element specifies the port number for multicast meta traffic (refer to the DDSI 2.1 specification, section 9.6.1, constant d0).

  • Full path: /DDSI2Service/Discovery/Ports/MulticastMetaOffset
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

8.3.8.5   ParticipantGain

This element specifies the participant gain, relating p0, articipant index to sets of port numbers (refer to the DDSI 2.1 specification, section 9.6.1, constant PG).

  • Full path: /DDSI2Service/Discovery/Ports/ParticipantGain
  • Format: integer
  • Default value: 2
  • Occurrences min-max: 0-1

8.3.8.6   UnicastDataOffset

This element specifies the port number for unicast meta traffic (refer to the DDSI 2.1 specification, section 9.6.1, constant d3).

  • Full path: /DDSI2Service/Discovery/Ports/UnicastDataOffset
  • Format: integer
  • Default value: 11
  • Occurrences min-max: 0-1

8.3.8.7   UnicastMetaOffset

This element specifies the port number for unicast meta traffic (refer to the DDSI 2.1 specification, section 9.6.1, constant d1).

  • Full path: /DDSI2Service/Discovery/Ports/UnicastMetaOffset
  • Format: integer
  • Default value: 10
  • Occurrences min-max: 0-1

8.3.9   SPDPInterval

This element specifies the interval between spontaneous transmissions of participant discovery packets.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Discovery/SPDPInterval
  • Format: string
  • Default value: 30 s
  • Occurrences min-max: 0-1

8.3.10   SPDPMulticastAddress

This element specifies the multicast address that is used as the destination for the participant discovery packets. In IPv4 mode the default is the (standardised) 239.255.0.1, in IPv6 mode it becomes ff02::ffff:239.255.0.1, which is a non-standardised link-local multicast address.

  • Full path: /DDSI2Service/Discovery/SPDPMulticastAddress
  • Format: string
  • Default value: 239.255.0.1
  • Occurrences min-max: 0-1

8.4   General

The General element specifies overall DDSI2 service settings.

  • Full path: /DDSI2Service/General
  • Occurrences min-max: 0-1
  • Child elements: AllowMulticast, CoexistWithNativeNetworking, DontRoute, EnableMulticastLoopback, ExternalNetworkAddress, ExternalNetworkMask, MulticastRecvNetworkInterfaceAddresses, MulticastTimeToLive, NetworkInterfaceAddress, StartupModeCoversTransient, StartupModeDuration, UseIPv6

8.4.1   AllowMulticast

This element controls whether the DDSI2 service uses multicasts for data traffic.

When set to “false”, DDSI2 will never advertise multicast addresses and never accept multicast addresses advertised by remote nodes, but it will still listen for multicast packets and perform multicast-based participant discovery. Listening for multicasts can be controlled by General/MulticastRecvNetworkInterfaceAddresses, and transmitting participant discovery multicasts by Internal/SuppressSPDPMulticast.

The default, “true”, enables full use of multicasts.

  • Full path: /DDSI2Service/General/AllowMulticast
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.4.2   CoexistWithNativeNetworking

This element specifies whether the DDSI2 service operates in conjunction with the OpenSplice RT Networking service. When “false”, the DDSI2 service will take care of all communications, including those between OpenSplice nodes; when “true”, the DDSI2 service only communicates with DDS implementations other than OpenSplice. In this case the RT Networking service should be configured as well.

  • Full path: /DDSI2Service/General/CoexistWithNativeNetworking
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.4.3   DontRoute

This element allows setting the SO_DONTROUTE option for outgoing packets, to bypass the local routing tables. This is generally useful only when the routing tables cannot be trusted, which is highly unusual.

  • Full path: /DDSI2Service/General/DontRoute
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.4.4   EnableMulticastLoopback

This element specifies whether the DDSI2 service will allow IP multicast packets to be visible to all DDSI participants in the same node, including itself. It must be “true” for intra-node multicast communications, but if a node runs only a single DDSI2 service and does not host any other DDSI-capable programs, it may be set to “false” for improved performance.

  • Full path: /DDSI2Service/General/EnableMulticastLoopback
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.4.5   ExternalNetworkAddress

This element allows explicitly overruling the network address the DDSI2 service advertises in the discovery protocol, which by default is the address of the preferred network interface (General/NetworkInterfaceAddress), to allow DDSI2 to communicate across a Network Address Translation (NAT) device.

  • Full path: /DDSI2Service/General/ExternalNetworkAddress
  • Format: string
  • Default value: auto
  • Occurrences min-max: 0-1

8.4.6   ExternalNetworkMask

This element specifies the network mask of the external network address. This element is relevant only when an external network address (General/ExternalNetworkAddress) is explicitly configured. In this case locators received via the discovery protocol that are within the same external subnet (as defined by this mask) will be translated to an internal address by replacing the network portion of the external address with the corresponding portion of the preferred network interface address. This option is IPv4-only.

  • Full path: /DDSI2Service/General/ExternalNetworkMask
  • Format: string
  • Default value: 0.0.0.0
  • Occurrences min-max: 0-1

8.4.7   MulticastRecvNetworkInterfaceAddresses

This element specifies on which network interfaces DDSI2 listens to multicasts. The following options are available:

  • preferred: listen for multicasts on the preferred interface (General/NetworkInterfaceAddress); or
  • all: listen for multicasts on all multicast-capable interfaces; or
  • any: listen for multicasts on the operating system default interface; or
  • none: does not listen for multicasts on any interface; or
  • a comma-separated list of network addresses: configures DDSI2 to listen for multicasts on all of the listed addresses.

If DDSI2 is in IPv6 mode and the address of the preferred network interface is a link-local address, “all” is treated as a synonym for “preferred” and a comma-separated list is treated as “preferred” if it contains the preferred interface and as “none” if not.

  • Full path: /DDSI2Service/General/MulticastRecvNetworkInterfaceAddresses
  • Format: string
  • Default value: preferred
  • Occurrences min-max: 0-1

8.4.8   MulticastTimeToLive

This element specifies the time-to-live setting for outgoing multicast packets.

  • Full path: /DDSI2Service/General/MulticastTimeToLive
  • Format: integer
  • Default value: 32
  • Occurrences min-max: 0-1

8.4.9   NetworkInterfaceAddress

This element specifies the preferred network interface for use by DDSI2. The preferred network interface determines the IP address that DDSI2 advertises in the discovery protocol (but see also General/ExternalNetworkAddress), and is also the only interface over which multicasts are transmitted. The interface can be identified by its IP address, network interface name or network portion of the address. If the value “auto” is entered here, DDSI2 will select what it considers the most suitable interface.

  • Full path: /DDSI2Service/General/NetworkInterfaceAddress
  • Format: string
  • Default value: auto
  • Occurrences min-max: 0-1

8.4.10   StartupModeCoversTransient

This element configures whether startup-mode should also cover transient and persistent data, for configurations where the durability servie does not take care of it. Configurations without defined merge policies best leave this enabled.

  • Full path: /DDSI2Service/General/StartupModeCoversTransient
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.4.11   StartupModeDuration

This element specifies how long the DDSI2 remains in its “startup” mode. While in “startup” mode all volatile reliable data published on the local node is retained as-if it were transient-local data, allowing existing readers on remote nodes to obtain the data even though discovering them takes some time. Best-effort data by definition need not arrive, and transient and persistent data are covered by the durability service.

Once the system is stable, the DDSI2 service keeps track of the existence of remote readers whether or not matching writers exist locally, avoiding this discovery delay and ensuring this is merely a node startup issue.

Setting General/StartupModeDuration to 0s will disable it.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/General/StartupModeDuration
  • Format: string
  • Default value: 2 s
  • Occurrences min-max: 0-1

8.4.12   UseIPv6

This element can be used to make DDSI2 service use IPv6 instead of IPv4. This is currently an either/or switch.

  • Full path: /DDSI2Service/General/UseIPv6
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5   Internal

The Internal elements deal with a variety of settings that evolving and that are not necessarily fully supported. For the vast majority of the Internal settings, the functionality per-se is supported, but the right to change the way the options control the functionality is reserved. This includes renaming or moving options.

  • Full path: /DDSI2Service/Internal
  • Occurrences min-max: 0-1
  • Child elements: AccelerateRexmitBlockSize, AggressiveKeepLast1Whc, AssumeMulticastCapable, BuiltinEndpointSet, ConservativeBuiltinReaderStartup, DDSI2DirectMaxThreads, DefragReliableMaxSamples, DefragUnreliableMaxSamples, DeliveryQueueMaxSamples, ForwardAllMessages, ForwardRemoteData, FragmentSize, GenerateKeyhash, LateAckMode, LeaseDuration, LegacyFragmentation, LogStackTraces, MaxMessageSize, MaxParticipants, MaxQueuedRexmitBytes, MaxQueuedRexmitMessages, MaxSampleSize, MeasureHbToAckLatency, MinimumSocketReceiveBufferSize, MinimumSocketSendBufferSize, MirrorRemoteEntities, NackDelay, PreEmptiveAckDelay, PrimaryReorderMaxSamples, ResponsivenessTimeout, RetransmitMerging, RetransmitMergingPeriod, RetryOnRejectBestEffort, RetryOnRejectDuration, SPDPResponseMaxDelay, ScheduleTimeRounding, SecondaryReorderMaxSamples, SquashParticipants, SuppressSPDPMulticast, SynchronousDeliveryLatencyBound, SynchronousDeliveryPriorityThreshold, UnicastResponseToSPDPMessages, WriterLingerDuration

8.5.1   AccelerateRexmitBlockSize

Internal Proxy readers that are assumed to sill be retrieving historical data get this many samples retransmitted when they NACK something, even if some of these samples have sequence numbers outside the set covered by the NACK.

  • Full path: /DDSI2Service/Internal/AccelerateRexmitBlockSize
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

8.5.2   AggressiveKeepLast1Whc

Internal This element controls whether to drop a reliable sample from a DDSI2 WHC before all readers have acknowledged it as soon as a later sample becomes available. It only affects DCPS data writers with a history QoS setting of KEEP_LAST with depth 1. The default setting, false, mimics the behaviour of the OpenSplice RT networking and is necessary to make the behaviour of wait_for_acknowledgements() consistent across the networking services.

  • Full path: /DDSI2Service/Internal/AggressiveKeepLast1Whc
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.3   AssumeMulticastCapable

Internal This element controls which network interfaces are assumed to be capable of multicasting even when the interface flags returned by the operating system state it is not (this provides a workaround for some platforms). It is a comma-separated lists of patterns (with ? and * wildcards) against which the interface names are matched.

  • Full path: /DDSI2Service/Internal/AssumeMulticastCapable
  • Format: string
  • Occurrences min-max: 0-1

8.5.4   BuiltinEndpointSet

Internal This element controls which participants will have which built-in endpoints for the discovery and liveliness protocols. Valid values are:

  • full: all participants have all endpoints;
  • writers: all participants have the writers, but just one has the readers;
  • minimal: only one participant has built-in endpoints.

The default is writers, as this is thought to be compliant and reasonably efficient. Minimal may or may not be compliant but is most efficient, and full is inefficient but certain to be compliant. See also Internal/ConservativeBuiltinReaderStartup.

  • Full path: /DDSI2Service/Internal/BuiltinEndpointSet
  • Format: enumeration
  • Default value: writers
  • Valid values: full, writers, minimal
  • Occurrences min-max: 0-1

8.5.5   ConservativeBuiltinReaderStartup

Internal This element forces all DDSI2 built-in discovery-related readers to request all historical data, instead of just one for each “topic”. There is no indication that any of the current DDSI implementations requires changing of this setting, but it is conceivable that an implementation might track which participants have been informed of the existence of endpoints and which have not been, refusing communication with those that have “can’t” know.

Should it be necessary to hide DDSI2’s shared discovery behaviour, set this to true and Internal/BuiltinEndpointSet to full.

  • Full path: /DDSI2Service/Internal/ConservativeBuiltinReaderStartup
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.6   DDSI2DirectMaxThreads

Internal This element sets the maximum number of extra threads for an experimental, undocumented and unsupported direct mode.

  • Full path: /DDSI2Service/Internal/DDSI2DirectMaxThreads
  • Format: integer
  • Default value: 1
  • Occurrences min-max: 0-1

8.5.7   DefragReliableMaxSamples

Internal This element sets the maximum number of samples that can be defragmneted simultaneously for a reliable writer. This has to be large enough to handle retransmissions of historical data in addition to new samples.

  • Full path: /DDSI2Service/Internal/DefragReliableMaxSamples
  • Format: integer
  • Default value: 16
  • Occurrences min-max: 0-1

8.5.8   DefragUnreliableMaxSamples

Internal This element sets the maximum number of samples that can be defragmented simultaneously for a best-effort writers.

  • Full path: /DDSI2Service/Internal/DefragUnreliableMaxSamples
  • Format: integer
  • Default value: 4
  • Occurrences min-max: 0-1

8.5.9   DeliveryQueueMaxSamples

Internal This element controls the Maximum size of a delivery queue, expressed in samples. Once a delivery queue is full, incoming samples destined for that queue are dropped until space becomes available again.

  • Full path: /DDSI2Service/Internal/DeliveryQueueMaxSamples
  • Format: integer
  • Default value: 256
  • Occurrences min-max: 0-1

8.5.10   ForwardAllMessages

Internal Forward all messages from a writer, rather than trying to forward each sample only once. The default of trying to forward each sample only once filters out duplicates for writers in multiple partitions under nearly all circumstances, but may still publish the odd duplicate. Note: the current implementation also can lose in contrived test cases, that publish more than 2**32 samples using a single data writer in conjunction with carefully controlled management of the writer history via cooperating local readers.

  • Full path: /DDSI2Service/Internal/ForwardAllMessages
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.11   ForwardRemoteData

This element controls whether DDSI2 forwards data received from other network services in the domain.

  • Full path: /DDSI2Service/Internal/ForwardRemoteData
  • Format: enumeration
  • Default value: default
  • Valid values: false, default, true
  • Occurrences min-max: 0-1

8.5.12   FragmentSize

Internal This element specifies the size of DDSI sample fragments generated by DDSI2. Samples larger than FragmentSize are fragmented into fragments of FragmentSize bytes each, except the last one, which may be smaller. The DDSI spec mandates a minimum fragment size of 1025 bytes, but DDSI2 will do whatever size is requested, accepting fragments of which the size is at least the minimum of 1025 and FragmentSize.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Internal/FragmentSize
  • Format: string
  • Default value: 1280 B
  • Occurrences min-max: 0-1

8.5.13   GenerateKeyhash

Internal When true, include keyhashes in outgoing data for topics with keys.

  • Full path: /DDSI2Service/Internal/GenerateKeyhash
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.5.14   LateAckMode

Internal Ack a sample only when it has been delivered, instead of when committed to delivering it.

  • Full path: /DDSI2Service/Internal/LateAckMode
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.15   LeaseDuration

Internal This setting controls the default participant lease duration, with 0s (the default) indicating that it is to be derived from the domain ExpiryTime: either 10% or 1s longer, whichever is shortest. The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/LeaseDuration
  • Format: string
  • Default value: 0 s
  • Occurrences min-max: 0-1

8.5.16   LegacyFragmentation

Internal This option enables a backwards-compatible, non-compliant setting and interpretation of the control flags in fragmented data messages. To be enabled only when requiring interoperability between compliant and non-compliant versions of DDSI2 for large messages.

  • Full path: /DDSI2Service/Internal/LegacyFragmentation
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.17   LogStackTraces

This element controls whether or not to write stack traces to the DDSI2 trace when a thread fails to make progress (on select platforms only).

  • Full path: /DDSI2Service/Internal/LogStackTraces
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.18   MaxMessageSize

Internal This element specifies the maximum size of the UDP payload that DDSI2 will generate. DDSI2 will try to maintain this limit within the bounds of the DDSI specification, which means that in some cases (especially for very low values of MaxMessageSize) larger payloads may sporadically be observed (currently up to 1192 B).

On some networks it may be necessary to set this item to keep the packetsize below the MTU to prevent IP fragmentation. In those cases, it is generally advisable to also consider reducing Internal/FragmentSize.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Internal/MaxMessageSize
  • Format: string
  • Default value: 4096 B
  • Occurrences min-max: 0-1

8.5.19   MaxParticipants

Internal This elements configures the maximum number of DCPS domain participants this DDSI2 service instance is willing to service. 0 is unlimited.

  • Full path: /DDSI2Service/Internal/MaxParticipants
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

8.5.20   MaxQueuedRexmitBytes

Internal This setting limits the maximum number of bytes queued for retransmission. The default value of 0 is unlimited unless an AuxiliaryBandwidthLimit has been set, in which case it becomes NackDelay * AuxiliaryBandwidthLimit. It must be large enough to contain the largest sample that may need to be retransmitted.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Internal/MaxQueuedRexmitBytes
  • Format: string
  • Default value: 0 B
  • Occurrences min-max: 0-1

8.5.21   MaxQueuedRexmitMessages

Internal This settings limits the maximum number of samples queued for retransmission.

  • Full path: /DDSI2Service/Internal/MaxQueuedRexmitMessages
  • Format: integer
  • Default value: 200
  • Occurrences min-max: 0-1

8.5.22   MaxSampleSize

Internal This setting controls the maximum (CDR) serialised size of samples that DDSI2 will forward in either direction. Samples larger than this are discarded with a warning.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Internal/MaxSampleSize
  • Format: string
  • Default value: 2147483647 B
  • Occurrences min-max: 0-1

8.5.23   MeasureHbToAckLatency

Internal This element enables heartbeat-to-ack latency among DDSI2 services by prepending timestamps to Heartbeat and AckNack messages and calculating round trip times. This is non-standard behaviour. The measured latencies are quite noisy and are currently not used anywhere.

  • Full path: /DDSI2Service/Internal/MeasureHbToAckLatency
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.24   MinimumSocketReceiveBufferSize

Internal This setting controls the minimum size of socket receive buffers. This setting can only increase the size of the receive buffer, if the operating system by default creates a larger buffer, it is left unchanged.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Internal/MinimumSocketReceiveBufferSize
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

8.5.25   MinimumSocketSendBufferSize

Internal This setting controls the minimum size of socket send buffers. This setting can only increase the size of the send buffer, if the operating system by default creates a larger buffer, it is left unchanged.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Internal/MinimumSocketSendBufferSize
  • Format: string
  • Default value: 64 KiB
  • Occurrences min-max: 0-1

8.5.26   MirrorRemoteEntities

This element controls whether DDSI2 mirrors all entities in the domain in DDSI or only local ones. Default is to discover remote ones iff General/LocalDiscoveryPartition is not the built-in partition.

  • Full path: /DDSI2Service/Internal/MirrorRemoteEntities
  • Format: enumeration
  • Default value: default
  • Valid values: false, default, true
  • Occurrences min-max: 0-1

8.5.27   NackDelay

Internal This setting controls the delay between receipt of a HEARTBEAT indicating missing samples and a NACK (ignored when the HEARTBEAT requires an answer). However, no NACK is sent if a NACK had been scheduled already for a response earlier than the delay requests: then that NACK will incorporate the latest information.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/NackDelay
  • Format: string
  • Default value: 10 ms
  • Occurrences min-max: 0-1

8.5.28   PreEmptiveAckDelay

Internal This setting controls the delay between the discovering a remote writer and sending a pre-emptive AckNack to discover the range of data available.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/PreEmptiveAckDelay
  • Format: string
  • Default value: 10 ms
  • Occurrences min-max: 0-1

8.5.29   PrimaryReorderMaxSamples

Internal This element sets the maximum size in samples of a primary re-order administration. Each proxy writer has one primary re-order administration to buffer the packet flow in case some packets arrive out of order. Old samples are forwarded to secondary re-order administrations associated with readers in need of historical data.

  • Full path: /DDSI2Service/Internal/PrimaryReorderMaxSamples
  • Format: integer
  • Default value: 64
  • Occurrences min-max: 0-1

8.5.30   ResponsivenessTimeout

Internal This element controls for how long an unresponsive reader can block the transmit thread by failing to acknowledge data when a writer’s DDSI2 WHC is full. If after this time the writer’s WHC has not shrunk to below the low-water mark, the reader is considered unresponsive and degraded to unreliable. It will be restored to reliable service once it resumes acknowledging ing samples.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/ResponsivenessTimeout
  • Format: string
  • Default value: 1 s
  • Occurrences min-max: 0-1

8.5.31   RetransmitMerging

Internal This elements controls the addressing and timing of retransmits. Possible values are:

  • never: retransmit only to the NACK-ing reader;
  • adaptive: attempt to combine retransmits needed for reliability, but send historical (transient-local) data to the requesting reader only;
  • always: do not distinguish between different causes, always try to merge.

The default is adaptive. See also Internal/RetransmitMergingPeriod.

  • Full path: /DDSI2Service/Internal/RetransmitMerging
  • Format: enumeration
  • Default value: adaptive
  • Valid values: never, adaptive, always
  • Occurrences min-max: 0-1

8.5.32   RetransmitMergingPeriod

Internal This setting determines the size of the time window in which a NACK of some sample is ignored because a retransmit of that sample has been multicasted too recently. This setting has no effect of unicasted retransmits.

See also Internal/RetransmitMerging.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/RetransmitMergingPeriod
  • Format: string
  • Default value: 5 ms
  • Occurrences min-max: 0-1

8.5.33   RetryOnRejectBestEffort

Internal Whether or not to locally retry pusing a received best-effort sample into the reader caches when resource limits are reached.

  • Full path: /DDSI2Service/Internal/RetryOnRejectBestEffort
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.34   RetryOnRejectDuration

Internal How long to keep locally retrying pushing a received sample into the reader caches when resource limits are reached. Default is dependent on Internal/LateAckMode: if the latter is false, it is 80% of Internal/ResponsivenessTimeout, otherwise it is 0.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/RetryOnRejectDuration
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

8.5.35   SPDPResponseMaxDelay

Internal Maximum pseudo-random delay in milliseocnds between discovering a remote participant and responding to it.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/SPDPResponseMaxDelay
  • Format: string
  • Default value: 0 ms
  • Occurrences min-max: 0-1

8.5.36   ScheduleTimeRounding

Internal This setting allows the timing of scheduled events to be rounded up so that more events can be handled in a single cycle of the event queue. The default is 0 and causes no rounding at all, i.e. are scheduled exactly, whereas a value of 10ms would mean that events are rounded up to the nearest 10 milliseconds.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/ScheduleTimeRounding
  • Format: string
  • Default value: 0 ms
  • Occurrences min-max: 0-1

8.5.37   SecondaryReorderMaxSamples

Internal This element sets the maximum size in samples of a secondary re-order administration. The secondary re-order administration is per reader in need of historical data.

  • Full path: /DDSI2Service/Internal/SecondaryReorderMaxSamples
  • Format: integer
  • Default value: 16
  • Occurrences min-max: 0-1

8.5.38   SquashParticipants

Internal This element controls whether DDSI2 advertises all the domain participants it serves in DDSI (when set to false), or rather only one domain participant (the one corresponding to the DDSI2 process; when set to true). In the latter case DDSI2 becomes the virtual owner of all readers and writers of all domain participants, dramatically reducing discovery traffic.

  • Full path: /DDSI2Service/Internal/SquashParticipants
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.39   SuppressSPDPMulticast

Internal The element controls whether the mandatory multicasting of the participant discovery packets occurs. Completely disabling multicasting requires this element be set to true, and generally requires explicitly listing peers to ping for unicast discovery.

See also General/AllowMulticast.

  • Full path: /DDSI2Service/Internal/SuppressSPDPMulticast
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.5.40   SynchronousDeliveryLatencyBound

Internal This element controls whether samples sent by a writer with QoS settings transport_priority >= SynchronousDeliveryPriorityThreshold and a latency_budget at most this element’s value will be delivered synchronously from the “recv” thread, all others will be delivered asynchronously through delivery queues. This reduces latency at the expense of aggregate bandwidth.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/SynchronousDeliveryLatencyBound
  • Format: string
  • Default value: inf
  • Occurrences min-max: 0-1

8.5.41   SynchronousDeliveryPriorityThreshold

Internal This element controls whether samples sent by a writer with QoS settings latency_budget <= SynchronousDeliveryLatencyBound and transport_priority greater than or equal to this element’s value will be delivered synchronously from the “recv” thread, all others will be delivered asynchronously through delivery queues. This reduces latency at the expense of aggregate bandwidth.

  • Full path: /DDSI2Service/Internal/SynchronousDeliveryPriorityThreshold
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

8.5.42   Test

Internal Testing options.

  • Full path: /DDSI2Service/Internal/Test
  • Occurrences min-max: 0-1
  • Child elements: XmitLossiness

8.5.42.1   XmitLossiness

Internal This element controls the fraction of outgoing packets to drop, specified as a per mil.

  • Full path: /DDSI2Service/Internal/Test/XmitLossiness
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

8.5.43   UnicastResponseToSPDPMessages

Internal This element controls whether the response to a newly discovered participant is sent as a unicasted SPDP packet, instead of rescheduling the periodic multicasted one. There is no known benefit to setting this to false.

  • Full path: /DDSI2Service/Internal/UnicastResponseToSPDPMessages
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.5.44   Watermarks

Internal Watermarks for flow-control.

  • Full path: /DDSI2Service/Internal/Watermarks
  • Occurrences min-max: 0-1
  • Child elements: WhcHigh, WhcLow

8.5.44.1   WhcHigh

Internal This element sets the high-water mark for the DDSI2 WHCs, expressed in bytes. A writer is suspended when the WHC reaches this size.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Internal/Watermarks/WhcHigh
  • Format: string
  • Default value: 100 kB
  • Occurrences min-max: 0-1

8.5.44.2   WhcLow

Internal This element sets the low-water mark for the DDSI2 WHCs, expressed in bytes. A suspended writer resumes transmitting when its DDSI2 WHC shrinks to this size.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Internal/Watermarks/WhcLow
  • Format: string
  • Default value: 1 kB
  • Occurrences min-max: 0-1

8.5.45   WriterLingerDuration

Internal This setting controls the maximum duration for which actual deletion of a reliable writer with unacknowledged data in its history will be postponed to provide proper reliable transmission. The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/Internal/WriterLingerDuration
  • Format: string
  • Default value: 1 s
  • Occurrences min-max: 0-1

8.6   SSL

The SSL element allows specifying various parameters related to using SSL/TLS for DDSI over TCP.

  • Full path: /DDSI2Service/SSL
  • Occurrences min-max: 0-1
  • Child elements: CertificateVerification, Ciphers, Enable, EntropyFile, KeyPassphrase, KeystoreFile, SelfSignedCertificates, VerifyClient

8.6.1   CertificateVerification

If disabled this allows SSL connections to occur even if an X509 certificate fails verification.

  • Full path: /DDSI2Service/SSL/CertificateVerification
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.6.2   Ciphers

The set of ciphers used by SSL/TLS

  • Full path: /DDSI2Service/SSL/Ciphers
  • Format: string
  • Default value: ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
  • Occurrences min-max: 0-1

8.6.3   Enable

This enables SSL/TLS for TCP.

  • Full path: /DDSI2Service/SSL/Enable
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.6.4   EntropyFile

The SSL/TLS random entropy file name.

  • Full path: /DDSI2Service/SSL/EntropyFile
  • Format: string
  • Occurrences min-max: 0-1

8.6.5   KeyPassphrase

The SSL/TLS key pass phrase for encrypted keys.

  • Full path: /DDSI2Service/SSL/KeyPassphrase
  • Format: string
  • Default value: secret
  • Occurrences min-max: 0-1

8.6.6   KeystoreFile

The SSL/TLS key and certificate store file name. The keystore must be in PEM format.

  • Full path: /DDSI2Service/SSL/KeystoreFile
  • Format: string
  • Default value: keystore
  • Occurrences min-max: 0-1

8.6.7   SelfSignedCertificates

This enables the use of self signed X509 certificates.

  • Full path: /DDSI2Service/SSL/SelfSignedCertificates
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.6.8   VerifyClient

This enables an SSL server checking the X509 certificate of a connecting client.

  • Full path: /DDSI2Service/SSL/VerifyClient
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.7   Sizing

The Sizing element specifies a variety of configuration settings dealing with expected system sizes, buffer sizes, &c.

  • Full path: /DDSI2Service/Sizing
  • Occurrences min-max: 0-1
  • Child elements: EndpointsInSystem, LocalEndpoints, NetworkQueueSize, ReceiveBufferChunkSize, ReceiveBufferSize

8.7.1   EndpointsInSystem

This endpoint specifies the expected maximum number of endpoints in the network. Underestimating this number will have a significant performance impact, but will not affect correctness; signficantly overestimating it will cause more memory to be used than necessary.

  • Full path: /DDSI2Service/Sizing/EndpointsInSystem
  • Format: integer
  • Default value: 20000
  • Occurrences min-max: 0-1

8.7.2   LocalEndpoints

This element specifies the expected maximum number of endpoints local to one DDSI2 service. Underestimating this number will have a significant performance impact, but will not affect correctness; signficantly overestimating it will cause more memory to be used than necessary.

  • Full path: /DDSI2Service/Sizing/LocalEndpoints
  • Format: integer
  • Default value: 1000
  • Occurrences min-max: 0-1

8.7.3   NetworkQueueSize

This element specifies the maximum number of samples in the network queue. Write/dispose operations add samples to this queue, the DDSI2 service drains it. Larger values allow large bursts of writes to occur without forcing synchronization between the application and the DDSI2 service, but do introduce the potential for longer latencies and increase the maximum amount of memory potentially occupied by messages in the queue.

  • Full path: /DDSI2Service/Sizing/NetworkQueueSize
  • Format: integer
  • Default value: 1000
  • Occurrences min-max: 0-1

8.7.4   ReceiveBufferChunkSize

Size of one allocation unit in the receive buffer. Must be greater than the maximum packet size by a modest amount (too large packets are dropped). Each allocation is shrunk immediately after processing a message, or freed straightaway.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Sizing/ReceiveBufferChunkSize
  • Format: string
  • Default value: 128 KiB
  • Occurrences min-max: 0-1

8.7.5   ReceiveBufferSize

This element sets the size of a single receive buffer. Many receive buffers may be needed. Their size must be greater than ReceiveBufferChunkSize by a modest amount.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Sizing/ReceiveBufferSize
  • Format: string
  • Default value: 1 MiB
  • Occurrences min-max: 0-1

8.8   TCP

The TCP element allows specifying various parameters related to running DDSI over TCP.

  • Full path: /DDSI2Service/TCP
  • Occurrences min-max: 0-1
  • Child elements: Enable, NoDelay, Port, ReadTimeout, WriteTimeout

8.8.1   Enable

This element enables the optional TCP transport.

  • Full path: /DDSI2Service/TCP/Enable
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.8.2   NoDelay

This element enables the TCP_NODELAY socket option, preventing multiple DDSI messages being sent in the same TCP request. Setting this option typically optimises latency over throughput.

  • Full path: /DDSI2Service/TCP/NoDelay
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

8.8.3   Port

This element specifies the TCP port number on which the service accepts connections. If the port is set it is used in entity locators, published with DDSI discovery. Dynamically allocated if zero. Disabled if -1 or not configured. If disabled other DDSI services will not be able to establish connections with the service, the service can only communicate by establishing connections to other services.

  • Full path: /DDSI2Service/TCP/Port
  • Format: integer
  • Default value: -1
  • Occurrences min-max: 0-1

8.8.4   ReadTimeout

This element specifies the timeout for blocking TCP read operations. If this timeout expires then the connection is closed.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/TCP/ReadTimeout
  • Format: string
  • Default value: 2 s
  • Occurrences min-max: 0-1

8.8.5   WriteTimeout

This element specifies the timeout for blocking TCP write operations. If this timeout expires then the connection is closed.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2Service/TCP/WriteTimeout
  • Format: string
  • Default value: 2 s
  • Occurrences min-max: 0-1

8.9   ThreadPool

The ThreadPool element allows specifying various parameters related to using a thread pool to send DDSI messages to multiple unicast addresses (TCP or UDP).

  • Full path: /DDSI2Service/ThreadPool
  • Occurrences min-max: 0-1
  • Child elements: Enable, ThreadMax, Threads

8.9.1   Enable

This element enables the optional thread pool.

  • Full path: /DDSI2Service/ThreadPool/Enable
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.9.2   ThreadMax

This elements configures the maximum number of threads in the thread pool.

  • Full path: /DDSI2Service/ThreadPool/ThreadMax
  • Format: integer
  • Default value: 8
  • Occurrences min-max: 0-1

8.9.3   Threads

This elements configures the initial number of threads in the thread pool.

  • Full path: /DDSI2Service/ThreadPool/Threads
  • Format: integer
  • Default value: 4
  • Occurrences min-max: 0-1

8.10   Threads

This element is used to set thread properties.

  • Full path: /DDSI2Service/Threads
  • Occurrences min-max: 0-1

8.10.1   Thread

This element specifies thread properties, such as scheduling parameters and stack size.

  • Full path: /DDSI2Service/Threads/Thread
  • Occurrences min-max: 0-1000
  • Child elements: StackSize
  • Required attributes: Name

8.10.1.1   Name

The Name of the thread for which properties are being set. The following threads exist:

  • gc: garbage collector thread involved in deleting entities;
  • main: main thread, primarily handling local discovery;
  • recv: receive thread, taking data from the network and running the protocol state machine;
  • dq.builtins: delivery thread for DDSI-builtin data, primarily for discovery;
  • lease: DDSI2 liveliness monitoring;
  • tev: general timed-event handling, retransmits and discovery;
  • xmit.CHAN: transmit thread for channel CHAN;
  • dq.CHAN: delivery thread for channel CHAN;
  • tev.CHAN: timed-even thread for channel CHAN.
  • Full path: /DDSI2Service/Threads/Thread/Name
  • Format: string
  • Default value: n/a
  • Required: true

8.10.1.2   Scheduling

This element configures the scheduling properties of the thread.

  • Full path: /DDSI2Service/Threads/Thread/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Class, Priority
8.10.1.2.1   Class

This element specifies the thread scheduling class (realtime, timeshare or default). The user may need special privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.

  • Full path: /DDSI2Service/Threads/Thread/Scheduling/Class
  • Format: enumeration
  • Default value: default
  • Valid values: realtime, timeshare, default
  • Occurrences min-max: 0-1
8.10.1.2.2   Priority

This element specifies the thread priority (decimal integer or default). Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.

  • Full path: /DDSI2Service/Threads/Thread/Scheduling/Priority
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

8.10.1.3   StackSize

This element configures the stack size for this thread. The default value default leaves the stack size at the the operating system default.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2Service/Threads/Thread/StackSize
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

8.11   Tracing

The Tracing element controls the amount and type of information that is written into the tracing log by the DDSI service. This is useful to track the DDSI service during application development.

  • Full path: /DDSI2Service/Tracing
  • Occurrences min-max: 0-1
  • Child elements: AppendToFile, EnableCategory, OutputFile, PacketCaptureFile, Timestamps, Verbosity

8.11.1   AppendToFile

This option specifies whether the output is to be appended to an existing log file. The default is to create a new log file each time, which is generally the best option if a detailed log is generated.

  • Full path: /DDSI2Service/Tracing/AppendToFile
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

8.11.2   EnableCategory

This element enables individual logging categories. These are enabled in addition to those enabled by Tracing/Verbosity. Recognised categories are:

  • fatal: all fatal errors, errors causing immediate termination
  • error: failures probably impacting correctness but not necessarily causing immediate termination
  • warning: abnormal situations that will likely not impact correctness
  • config: full dump of the configuration
  • info: general informational notices
  • discovery: all discovery activity
  • data: include data content of samples in traces
  • radmin: receive buffer administration
  • timing: periodic reporting of CPU loads per thread
  • traffic: periodic reporting of total outgoing data

In addition, there is the keyword trace that enables all but radmin . The categorisation of tracing output is incomplete and hence most of the verbosity levels and categories are not of much use in the current release. This is an ongoing process and here we describe the target situation rather than the current situation. Currently, the most useful is trace.

  • Full path: /DDSI2Service/Tracing/EnableCategory
  • Format: string
  • Occurrences min-max: 0-1

8.11.3   OutputFile

This option specifies where the logging is printed to. Note that stdout and stderr are treated as special values, representing “standard out” and “standard error” respectively. No file is created unless logging categories are enabled using the Tracing/Verbosity or Tracing/EnabledCategory settings.

  • Full path: /DDSI2Service/Tracing/OutputFile
  • Format: string
  • Default value: ddsi2.log
  • Occurrences min-max: 0-1

8.11.4   PacketCaptureFile

This option specifies the file to which received and sent packets will be logged in the “pcap” format suitable for analysis using common networking tools, such as WireShark. IP and UDP headers are ficitious, in particular the destination address of received packets. The TTL may be used to distinguish between sent and received packets: it is 255 for sent packets and 128 for received ones. Currently IPv4 only.

  • Full path: /DDSI2Service/Tracing/PacketCaptureFile
  • Format: string
  • Occurrences min-max: 0-1

8.11.5   Timestamps

This option has no effect.

  • Full path: /DDSI2Service/Tracing/Timestamps
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1
  • Optional attributes: absolute

8.11.5.1   absolute

This attribute specifies whether the timestamps in the log file are absolute or relative to the startup time of the service. Currently not implemented in DDSI2, all timestamps are absolute.

  • Full path: /DDSI2Service/Tracing/Timestamps/absolute
  • Format: boolean
  • Default value: true
  • Required: false

8.11.6   Verbosity

This element enables standard groups of categories, based on a desired verbosity level. This is in addition to the categories enabled by the Tracing/EnableCategory setting. Recognised verbosity levels and the categories they map to are:

  • none: no DDSI2 log
  • severe: error and fatal
  • warning: severe + warning
  • info: equivalent to warning
  • config: info + config
  • fine: config + discovery
  • finer: fine + traffic, timing & info
  • finest: finer + trace

While none prevents any message from being written to a DDSI2 log file, warnings and errors are still logged in the ospl-info.log and ospl-error.log files.

The categorisation of tracing output is incomplete and hence most of the verbosity levels and categories are not of much use in the current release. This is an ongoing process and here we describe the target situation rather than the current situation. Currently, the most useful verbosity levels are config and finest.

  • Full path: /DDSI2Service/Tracing/Verbosity
  • Format: enumeration
  • Default value: none
  • Valid values: finest, finer, fine, config, info, warning, severe, none
  • Occurrences min-max: 0-1

8.12   Watchdog

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.

  • Full path: /DDSI2Service/Watchdog
  • Occurrences min-max: 0-1

8.12.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.

  • Full path: /DDSI2Service/Watchdog/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Class, Priority

8.12.1.1   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.

  • Full path: /DDSI2Service/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: default
  • Valid values: realtime, timeshare, default
  • Occurrences min-max: 0-1

8.12.1.2   Priority

This element specifies the thread priority. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.

  • Full path: /DDSI2Service/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
  • Optional attributes: priority_kind
8.12.1.2.1   priority_kind

This attribute specifies whether the specified Priority is a relative or absolute priority.

  • Full path: /DDSI2Service/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: relative
  • Valid values: relative, absolute
  • Required: false

9   DDSI2EService

The root element of a DDSI2E networking service configuration.

  • Full path: /DDSI2EService
  • Occurrences min-max: 0-*
  • Required attributes: name

9.1   name

This attribute identifies the configuration for the DDSI2E Service. Multiple DDSI2E service configurations can be specified in one single resource. The actual applicable configuration is determined by the value of the name attribute, which must match the specified under the element OpenSplice/Domain/Service[@name] in the Domain Service configuration.

  • Full path: /DDSI2EService/name
  • Format: string
  • Default value: ddsi2e
  • Required: true

9.2   Channels

This element is used to group a set of channels. The channels are independent data paths through DDSI2E and by using separate threads and setting their priorities appropriately, chanenls can be used to map transport priorities to operating system scheduler priorities, ensuring system-wide end-to-end priority preservation.

  • Full path: /DDSI2EService/Channels
  • Occurrences min-max: 0-1

9.2.1   Channel

This element defines a channel.

  • Full path: /DDSI2EService/Channels/Channel
  • Occurrences min-max: 0-42
  • Child elements: AuxiliaryBandwidthLimit, DataBandwidthLimit, DiffServField, QueueSize, Resolution
  • Required attributes: Name
  • Optional attributes: TransportPriority

9.2.1.1   Name

This attribute specifies name of this channel. The name should uniquely identify the channel.

  • Full path: /DDSI2EService/Channels/Channel/Name
  • Format: string
  • Default value: n/a
  • Required: true

9.2.1.2   TransportPriority

This attribute sets the transport priority threshold for the channel. Each DCPS data writer has a “transport_priority” QoS and this QoS is used to select a channel for use by this writer. The selected channel is the one with the largest threshold not greater than the writer’s transport priority, and if no such channel exists, the channel with the lowest threshold.

  • Full path: /DDSI2EService/Channels/Channel/TransportPriority
  • Format: integer
  • Default value: 0
  • Required: false

9.2.1.3   AuxiliaryBandwidthLimit

This element specifies the maximum transmit rate of auxiliary traffic on this channel (e.g. retransmits, heartbeats, etc). Bandwidth limiting uses a leaky bucket scheme. The default value “inf” means DDSI2E imposes no limitation, the underlying operating system and hardware will likely limit the maimum transmit rate. The unit must be specified explicitly. Recognised units: X*b/s, *X*bps for bits/s or *X*B/s, *X*Bps for bytes/s; where *X is an optional prefix: k for 10 3, Ki for 2 10, M for 10 6, Mi for 2 20, G for 10 9, Gi for 2 30.

  • Full path: /DDSI2EService/Channels/Channel/AuxiliaryBandwidthLimit
  • Format: string
  • Default value: inf
  • Occurrences min-max: 0-1

9.2.1.4   DataBandwidthLimit

This element specifies the maximum transmit rate of new samples and directly related data, for this channel. Bandwidth limiting uses a leaky bucket scheme. The default value “inf” means DDSI2E imposes no limitation, the underlying operating system and hardware will likely limit the maimum transmit rate.

The unit must be specified explicitly. Recognised units: X*b/s, *X*bps for bits/s or *X*B/s, *X*Bps for bytes/s; where *X is an optional prefix: k for 10 3, Ki for 2 10, M for 10 6, Mi for 2 20, G for 10 9, Gi for 2 30.

  • Full path: /DDSI2EService/Channels/Channel/DataBandwidthLimit
  • Format: string
  • Default value: inf
  • Occurrences min-max: 0-1

9.2.1.5   DiffServField

This element describes the DiffServ setting the channel will apply to the networking messages. This parameter determines the value of the diffserv field of the IP version 4 packets send on this channel which allows QoS setting to be applied to the network traffic send on this channel.

Windows platform support for setting the diffserv field is dependent on the OS version.

For Windows versions XP SP2 and 2003 to use the diffserv field the following parameter should be added to the register:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\DisableUserTOSSetting

The type of this parameter is a DWORD and it’s value should be set to 0 to allow setting of the diffserv field.

For Windows version 7 or higher a new API (qWAVE) has been introduced For these platforms the specified diffserv value is mapped to one of the support traffic types. The mapping is as follows: 1-8 background traffic; 9-40 excellent traffic; 41-55 audio/video traffic; 56 voice traffic; 57-63 control traffic. When an application is run without Administrative priveleges then only the diffserv value of 0, 8, 40 or 56 is allowed.

  • Full path: /DDSI2EService/Channels/Channel/DiffServField
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

9.2.1.6   QueueSize

This element specifies the number of messages the network queue for this channel can contain. The OpenSplice kernel writes data to be transmitted to the network queue, and DDSI2E takes them from this queue. If this queue is full when an application tries to write a sample, the sample will be dropped or the writer suspended, depending on the QoS settings of the writer. OpenSplice and its services are optimised for a well-balanced system design, where the queue never becomes full.

  • Full path: /DDSI2EService/Channels/Channel/QueueSize
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

9.2.1.7   Resolution

This element specifies the interval at which the DDSI transmit thread for this channel wakes up, and which controls the smallest latency_budget that has an effect. A shorter latency_budget is rounded to 0. The downside of a reducing this setting is that it increases the number of idle wake-ups of the transmit thread when there is no data to be sent.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Channels/Channel/Resolution
  • Format: string
  • Default value: 1s
  • Occurrences min-max: 0-1

9.3   Compatibility

The Compatibility elements allows specifying various settings related to compatability with standards and with other DDSI implementations.

  • Full path: /DDSI2EService/Compatibility
  • Occurrences min-max: 0-1
  • Child elements: AckNackNumbitsEmptySet, ArrivalOfDataAssertsPpAndEpLiveliness, AssumeRtiHasPmdEndpoints, ExplicitlyPublishQosSetToDefault, ManySocketsMode, RespondToRtiInitZeroAckWithInvalidHeartbeat, StandardsConformance

9.3.1   AckNackNumbitsEmptySet

This element governs the representation of an acknowledgement message that does not also negatively-acknowledge some samples. If set to 0, the generated acknowledgements have an invalid form and will be reject by the strict and pedantic conformance modes, but several other implementation require this setting for smooth interoperation.

If set to 1, all acknowledgements sent by DDSI2E adhere the form of acknowledgement messages allowed by the standard, but this causes problems when interoperating with these other implementations. The strict and pedantic standards conformance modes always overrule a AckNackNumbitsEmptySet=0 to prevent the transmitting of invalid messages.

  • Full path: /DDSI2EService/Compatibility/AckNackNumbitsEmptySet
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

9.3.2   ArrivalOfDataAssertsPpAndEpLiveliness

This setting is currently ignored (accepted for backwards compatibility).

  • Full path: /DDSI2EService/Compatibility/ArrivalOfDataAssertsPpAndEpLiveliness
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

9.3.3   AssumeRtiHasPmdEndpoints

This option assumes ParticipantMessageData endpoints required by the liveliness protocol are present in RTI participants even when not properly advertised by the participant discovery protocol.

  • Full path: /DDSI2EService/Compatibility/AssumeRtiHasPmdEndpoints
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.3.4   ExplicitlyPublishQosSetToDefault

This element specifies whether QoS settings set to default values are explicitly published in the discovery protocol. Implementations are to use the default value for QoS settings not published, which allows a significant reduction of the amount of data that needs to be exchanged for the discovery protocol, but this requires all implementations to adhere to the default values specified by the specifications.

When interoperability is required with an implementation that does not follow the specifications in this regard, setting this option to true will help.

  • Full path: /DDSI2EService/Compatibility/ExplicitlyPublishQosSetToDefault
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.3.5   ManySocketsMode

This option specifies whether a network socket will be created for each domain participant on a host. The specification seems to assume that each participant has a unique address, and setting this option will ensure this to be the case. This is not the default.

Disabling it slightly improves performance and reduces network traffic somewhat. It also causes the set of port numbers needed by DDSI2E to become predictable, which may be useful for firewall and NAT configuration.

  • Full path: /DDSI2EService/Compatibility/ManySocketsMode
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.3.6   RespondToRtiInitZeroAckWithInvalidHeartbeat

This element allows a closer mimicking of the behaviour of some other DDSI implementations, albeit at the cost of generating even more invalid messages. Setting it to true ensures a Heartbeat can be sent at any time when a remote node requests one, setting it to false delays it until a valid one can be sent.

The latter is fully compliant with the specification, and no adverse effects have been observed. It is the default.

  • Full path: /DDSI2EService/Compatibility/RespondToRtiInitZeroAckWithInvalidHeartbeat
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.3.7   StandardsConformance

This element sets the level of standards conformance of this instance of the DDSI2E Service. Stricter conformance typically means less interoperability with other implementations. Currently three modes are defined:

  • pedantic: very strictly conform to the specification, ultimately for compliancy testing, but currently of little value because it adheres even to what will most likely turn out to be editing errors in the DDSI standard. Arguably, as long as no errata have been published it is the current text that is in effect, and that is what pedantic currently does.
  • strict: a slightly less strict view of the standard than does pedantic: it follows the established behaviour where the standard is obviously in error.
  • lax: attempt to provide the smoothest possible interoperability, anticipating future revisions of elements in the standard in areas that other implementations do not adhere to, even though there is no good reason not to.

The default setting is “lax”.

  • Full path: /DDSI2EService/Compatibility/StandardsConformance
  • Format: enumeration
  • Default value: lax
  • Valid values: lax, strict, pedantic
  • Occurrences min-max: 0-1

9.4   Discovery

The Discovery element allows specifying various parameters related to the discovery of peers.

  • Full path: /DDSI2EService/Discovery
  • Occurrences min-max: 0-1
  • Child elements: DefaultMulticastAddress, DomainId, DSClusterLeaseDuration, GenerateBuiltinTopics, LocalDiscoveryPartition, MaxAutoParticipantIndex, ParticipantIndex, SPDPInterval, SPDPMulticastAddress

9.4.1   DefaultMulticastAddress

This element specifies the default multicast address for all multicast traffic other than the SPDP participant discovery data. The default value “auto” uses the configured SPDPMulticastAddress. On source-specific multicast capable platforms, this is may be an source-specific multicast address.
  • Full path: /DDSI2EService/Discovery/DefaultMulticastAddress
  • Format: string
  • Default value: auto
  • Occurrences min-max: 0-1

9.4.2   DomainId

This element allows overriding of the DDS Domain Id that is used for this DDSI2E service.

  • Full path: /DDSI2EService/Discovery/DomainId
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

9.4.3   DSClusterLeaseDuration

This element specifies the lease duration for entities discovered through a discovery service.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Discovery/DSClusterLeaseDuration
  • Format: string
  • Default value: 300 s
  • Occurrences min-max: 0-1

9.4.4   GenerateBuiltinTopics

This element controls whether or not the DDSI2E service generates built-in topics from its discovery. When disabled, it relies on the durability service.

  • Full path: /DDSI2EService/Discovery/GenerateBuiltinTopics
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

9.4.5   LocalDiscoveryPartition

This element controls which partition is monitored by DDSI2E for built-in topics describing entities the it mirrors in DDSI.

  • Full path: /DDSI2EService/Discovery/LocalDiscoveryPartition
  • Format: string
  • Default value: __BUILT-IN PARTITION__
  • Occurrences min-max: 0-1

9.4.6   MaxAutoParticipantIndex

This element specifies the maximum DDSI participant index selected by this instance of the DDSI2E service if the Discovery/ParticipantIndex is “auto”.

  • Full path: /DDSI2EService/Discovery/MaxAutoParticipantIndex
  • Format: integer
  • Default value: 9
  • Occurrences min-max: 0-1

9.4.7   ParticipantIndex

This element specifies the DDSI participant index used by this instance of the DDSI2E service for discovery purposes. Only one such participant id is used, independent of the number of actual DomainParticipants on the node. It is either:

  • auto: which will attempt to automatically determine an available participant index (see also Discovery/MaxAutoParticipantIndex), or
  • a non-negative integer less than 120, or
  • none:, which causes it to use arbitrary port numbers for unicast sockets which entirely removes the constraints on the participant index but makes unicast discovery impossible.

The default is auto. The participant index is part of the port number calculation and if predictable port numbers are needed and fixing the participant index has no adverse effects, it is recommended that the second be option be used.

  • Full path: /DDSI2EService/Discovery/ParticipantIndex
  • Format: string
  • Default value: auto
  • Occurrences min-max: 0-1

9.4.8   Peers

This element statically configures addresses for discovery.

  • Full path: /DDSI2EService/Discovery/Peers
  • Occurrences min-max: 0-1

9.4.8.1   Group

This element statically configures a fault tolerant group of addresses for discovery. Each member of the group is tried in sequence until one succeeds.

  • Full path: /DDSI2EService/Discovery/Peers/Group
  • Occurrences min-max: 0-*
9.4.8.1.1   Peer

This element statically configures an addresses for discovery.

  • Full path: /DDSI2EService/Discovery/Peers/Group/Peer
  • Occurrences min-max: 0-*
  • Required attributes: Address
9.4.8.1.1.1   Address

This element specifies an IP address to which discovery packets must be sent, in addition to the default multicast address (see also General/AllowMulticast and Internal/SuppressSPDPMulticast). Both a hostnames and a numerical IP address is accepted; the hostname or IP address may be suffixed with :PORT to explicitly set the port to which it must be sent. Multiple Peers may be specified.

  • Full path: /DDSI2EService/Discovery/Peers/Group/Peer/Address
  • Format: string
  • Default value: n/a
  • Required: true

9.4.8.2   Peer

This element statically configures an address for discovery.

  • Full path: /DDSI2EService/Discovery/Peers/Peer
  • Occurrences min-max: 0-*
  • Required attributes: Address
9.4.8.2.1   Address

This element specifies an IP address to which discovery packets must be sent, in addition to the default multicast address (see also General/AllowMulticast and Internal/SuppressSPDPMulticast). Both a hostnames and a numerical IP address is accepted; the hostname or IP address may be suffixed with :PORT to explicitly set the port to which it must be sent. Multiple Peers may be specified.

  • Full path: /DDSI2EService/Discovery/Peers/Peer/Address
  • Format: string
  • Default value: n/a
  • Required: true

9.4.9   Ports

The Ports element allows specifying various parameters related to the port numbers used for discovery. These all have default values specified by the DDSI 2.1 specification and rarely need to be changed.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Discovery/Ports
  • Occurrences min-max: 0-1
  • Child elements: Base, DomainGain, MulticastDataOffset, MulticastMetaOffset, ParticipantGain, UnicastDataOffset, UnicastMetaOffset

9.4.9.1   Base

This element specifies the base port number (refer to the DDSI 2.1 specification, section 9.6.1, constant PB).

  • Full path: /DDSI2EService/Discovery/Ports/Base
  • Format: integer
  • Default value: 7400
  • Occurrences min-max: 0-1

9.4.9.2   DomainGain

This element specifies the domain gain, relating domain ids to sets of port numbers (refer to the DDSI 2.1 specification, section 9.6.1, constant DG).

  • Full path: /DDSI2EService/Discovery/Ports/DomainGain
  • Format: integer
  • Default value: 250
  • Occurrences min-max: 0-1

9.4.9.3   MulticastDataOffset

This element specifies the port number for multicast meta traffic (refer to the DDSI 2.1 specification, section 9.6.1, constant d2).

  • Full path: /DDSI2EService/Discovery/Ports/MulticastDataOffset
  • Format: integer
  • Default value: 1
  • Occurrences min-max: 0-1

9.4.9.4   MulticastMetaOffset

This element specifies the port number for multicast meta traffic (refer to the DDSI 2.1 specification, section 9.6.1, constant d0).

  • Full path: /DDSI2EService/Discovery/Ports/MulticastMetaOffset
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

9.4.9.5   ParticipantGain

This element specifies the participant gain, relating p0, articipant index to sets of port numbers (refer to the DDSI 2.1 specification, section 9.6.1, constant PG).

  • Full path: /DDSI2EService/Discovery/Ports/ParticipantGain
  • Format: integer
  • Default value: 2
  • Occurrences min-max: 0-1

9.4.9.6   UnicastDataOffset

This element specifies the port number for unicast meta traffic (refer to the DDSI 2.1 specification, section 9.6.1, constant d3).

  • Full path: /DDSI2EService/Discovery/Ports/UnicastDataOffset
  • Format: integer
  • Default value: 11
  • Occurrences min-max: 0-1

9.4.9.7   UnicastMetaOffset

This element specifies the port number for unicast meta traffic (refer to the DDSI 2.1 specification, section 9.6.1, constant d1).

  • Full path: /DDSI2EService/Discovery/Ports/UnicastMetaOffset
  • Format: integer
  • Default value: 10
  • Occurrences min-max: 0-1

9.4.10   SPDPInterval

This element specifies the interval between spontaneous transmissions of participant discovery packets.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Discovery/SPDPInterval
  • Format: string
  • Default value: 30 s
  • Occurrences min-max: 0-1

9.4.11   SPDPMulticastAddress

This element specifies the multicast address that is used as the destination for the participant discovery packets. In IPv4 mode the default is the (standardised) 239.255.0.1, in IPv6 mode it becomes ff02::ffff:239.255.0.1, which is a non-standardised link-local multicast address.

  • Full path: /DDSI2EService/Discovery/SPDPMulticastAddress
  • Format: string
  • Default value: 239.255.0.1
  • Occurrences min-max: 0-1

9.5   General

The General element specifies overall DDSI2E service settings.

  • Full path: /DDSI2EService/General
  • Occurrences min-max: 0-1
  • Child elements: AllowMulticast, CoexistWithNativeNetworking, DontRoute, EnableMulticastLoopback, ExternalNetworkAddress, ExternalNetworkMask, MulticastRecvNetworkInterfaceAddresses, MulticastTimeToLive, NetworkInterfaceAddress, StartupModeCoversTransient, StartupModeDuration, UseIPv6

9.5.1   AllowMulticast

This element controls whether the DDSI2E service uses multicasts for data traffic. It is a comma-separated list of keywords, with the following keywords defined:

  • spdp: allow multicast for the SPDP participant discovery protocol. This is the initial step in the discovery protocol, and benefits tremendously from using multicast.
  • asm: allow (any-source) multicast for all traffic.
  • ssm: allow source-specific multicast for all traffic (on supported platforms).

Additionally, “false” is allowed as a synonym for an empty list, and “true” for “spdp,asm,ssm”.

The default is to allow unlimited use of multicast.

  • Full path: /DDSI2EService/General/AllowMulticast
  • Format: string
  • Default value: true
  • Occurrences min-max: 0-1

9.5.2   CoexistWithNativeNetworking

This element specifies whether the DDSI2E service operates in conjunction with the OpenSplice RT Networking service. When “false”, the DDSI2E service will take care of all communications, including those between OpenSplice nodes; when “true”, the DDSI2E service only communicates with DDS implementations other than OpenSplice. In this case the RT Networking service should be configured as well.

  • Full path: /DDSI2EService/General/CoexistWithNativeNetworking
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.5.3   DontRoute

This element allows setting the SO_DONTROUTE option for outgoing packets, to bypass the local routing tables. This is generally useful only when the routing tables cannot be trusted, which is highly unusual.

  • Full path: /DDSI2EService/General/DontRoute
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.5.4   EnableMulticastLoopback

This element specifies whether the DDSI2E service will allow IP multicast packets to be visible to all DDSI participants in the same node, including itself. It must be “true” for intra-node multicast communications, but if a node runs only a single DDSI2E service and does not host any other DDSI-capable programs, it may be set to “false” for improved performance.

  • Full path: /DDSI2EService/General/EnableMulticastLoopback
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

9.5.5   ExternalNetworkAddress

This element allows explicitly overruling the network address the DDSI2E service advertises in the discovery protocol, which by default is the address of the preferred network interface (General/NetworkInterfaceAddress), to allow DDSI2E to communicate across a Network Address Translation (NAT) device.

  • Full path: /DDSI2EService/General/ExternalNetworkAddress
  • Format: string
  • Default value: auto
  • Occurrences min-max: 0-1

9.5.6   ExternalNetworkMask

This element specifies the network mask of the external network address. This element is relevant only when an external network address (General/ExternalNetworkAddress) is explicitly configured. In this case locators received via the discovery protocol that are within the same external subnet (as defined by this mask) will be translated to an internal address by replacing the network portion of the external address with the corresponding portion of the preferred network interface address. This option is IPv4-only.

  • Full path: /DDSI2EService/General/ExternalNetworkMask
  • Format: string
  • Default value: 0.0.0.0
  • Occurrences min-max: 0-1

9.5.7   MulticastRecvNetworkInterfaceAddresses

This element specifies on which network interfaces DDSI2E listens to multicasts. The following options are available:

  • preferred: listen for multicasts on the preferred interface (General/NetworkInterfaceAddress); or
  • all: listen for multicasts on all multicast-capable interfaces; or
  • any: listen for multicasts on the operating system default interface; or
  • none: does not listen for multicasts on any interface; or
  • a comma-separated list of network addresses: configures DDSI2E to listen for multicasts on all of the listed addresses.

If DDSI2E is in IPv6 mode and the address of the preferred network interface is a link-local address, “all” is treated as a synonym for “preferred” and a comma-separated list is treated as “preferred” if it contains the preferred interface and as “none” if not.

  • Full path: /DDSI2EService/General/MulticastRecvNetworkInterfaceAddresses
  • Format: string
  • Default value: preferred
  • Occurrences min-max: 0-1

9.5.8   MulticastTimeToLive

This element specifies the time-to-live setting for outgoing multicast packets.

  • Full path: /DDSI2EService/General/MulticastTimeToLive
  • Format: integer
  • Default value: 32
  • Occurrences min-max: 0-1

9.5.9   NetworkInterfaceAddress

This element specifies the preferred network interface for use by DDSI2E. The preferred network interface determines the IP address that DDSI2E advertises in the discovery protocol (but see also General/ExternalNetworkAddress), and is also the only interface over which multicasts are transmitted. The interface can be identified by its IP address, network interface name or network portion of the address. If the value “auto” is entered here, DDSI2E will select what it considers the most suitable interface.

  • Full path: /DDSI2EService/General/NetworkInterfaceAddress
  • Format: string
  • Default value: auto
  • Occurrences min-max: 0-1

9.5.10   StartupModeCoversTransient

This element configures whether startup-mode should also cover transient and persistent data, for configurations where the durability servie does not take care of it. Configurations without defined merge policies best leave this enabled.

  • Full path: /DDSI2EService/General/StartupModeCoversTransient
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

9.5.11   StartupModeDuration

This element specifies how long the DDSI2E remains in its “startup” mode. While in “startup” mode all volatile reliable data published on the local node is retained as-if it were transient-local data, allowing existing readers on remote nodes to obtain the data even though discovering them takes some time. Best-effort data by definition need not arrive, and transient and persistent data are covered by the durability service.

Once the system is stable, the DDSI2E service keeps track of the existence of remote readers whether or not matching writers exist locally, avoiding this discovery delay and ensuring this is merely a node startup issue.

Setting General/StartupModeDuration to 0s will disable it.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/General/StartupModeDuration
  • Format: string
  • Default value: 2 s
  • Occurrences min-max: 0-1

9.5.12   UseIPv6

This element can be used to make DDSI2E service use IPv6 instead of IPv4. This is currently an either/or switch.

  • Full path: /DDSI2EService/General/UseIPv6
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6   Internal

The Internal elements deal with a variety of settings that evolving and that are not necessarily fully supported. For the vast majority of the Internal settings, the functionality per-se is supported, but the right to change the way the options control the functionality is reserved. This includes renaming or moving options.

  • Full path: /DDSI2EService/Internal
  • Occurrences min-max: 0-1
  • Child elements: AccelerateRexmitBlockSize, AggressiveKeepLast1Whc, AssumeMulticastCapable, AuxiliaryBandwidthLimit, BuiltinEndpointSet, ConservativeBuiltinReaderStartup, DDSI2DirectMaxThreads, DefragReliableMaxSamples, DefragUnreliableMaxSamples, DeliveryQueueMaxSamples, ForwardAllMessages, ForwardRemoteData, FragmentSize, GenerateKeyhash, LateAckMode, LeaseDuration, LegacyFragmentation, LogStackTraces, MaxMessageSize, MaxParticipants, MaxQueuedRexmitBytes, MaxQueuedRexmitMessages, MaxSampleSize, MeasureHbToAckLatency, MinimumSocketReceiveBufferSize, MinimumSocketSendBufferSize, MirrorRemoteEntities, NackDelay, PreEmptiveAckDelay, PrimaryReorderMaxSamples, ResponsivenessTimeout, RetransmitMerging, RetransmitMergingPeriod, RetryOnRejectBestEffort, RetryOnRejectDuration, SPDPResponseMaxDelay, ScheduleTimeRounding, SecondaryReorderMaxSamples, SquashParticipants, SuppressSPDPMulticast, SynchronousDeliveryLatencyBound, SynchronousDeliveryPriorityThreshold, UnicastResponseToSPDPMessages, WriterLingerDuration

9.6.1   AccelerateRexmitBlockSize

Internal Proxy readers that are assumed to sill be retrieving historical data get this many samples retransmitted when they NACK something, even if some of these samples have sequence numbers outside the set covered by the NACK.

  • Full path: /DDSI2EService/Internal/AccelerateRexmitBlockSize
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

9.6.2   AggressiveKeepLast1Whc

Internal This element controls whether to drop a reliable sample from a DDSI2E WHC before all readers have acknowledged it as soon as a later sample becomes available. It only affects DCPS data writers with a history QoS setting of KEEP_LAST with depth 1. The default setting, false, mimics the behaviour of the OpenSplice RT networking and is necessary to make the behaviour of wait_for_acknowledgements() consistent across the networking services.

  • Full path: /DDSI2EService/Internal/AggressiveKeepLast1Whc
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.3   AssumeMulticastCapable

Internal This element controls which network interfaces are assumed to be capable of multicasting even when the interface flags returned by the operating system state it is not (this provides a workaround for some platforms). It is a comma-separated lists of patterns (with ? and * wildcards) against which the interface names are matched.

  • Full path: /DDSI2EService/Internal/AssumeMulticastCapable
  • Format: string
  • Occurrences min-max: 0-1

9.6.4   AuxiliaryBandwidthLimit

Internal This element specifies the maximum transmit rate of auxiliary traffic not bound to a specific channel, such as discovery traffic, as well as auxiliary traffic related to a certain channel if that channel has elected to share this global AuxiliaryBandwidthLimit. Bandwidth limiting uses a leaky bucket scheme. The default value “inf” means DDSI2E imposes no limitation, the underlying operating system and hardware will likely limit the maimum transmit rate.

The unit must be specified explicitly. Recognised units: X*b/s, *X*bps for bits/s or *X*B/s, *X*Bps for bytes/s; where *X is an optional prefix: k for 10 3, Ki for 2 10, M for 10 6, Mi for 2 20, G for 10 9, Gi for 2 30.

  • Full path: /DDSI2EService/Internal/AuxiliaryBandwidthLimit
  • Format: string
  • Default value: inf
  • Occurrences min-max: 0-1

9.6.5   BuiltinEndpointSet

Internal This element controls which participants will have which built-in endpoints for the discovery and liveliness protocols. Valid values are:

  • full: all participants have all endpoints;
  • writers: all participants have the writers, but just one has the readers;
  • minimal: only one participant has built-in endpoints.

The default is writers, as this is thought to be compliant and reasonably efficient. Minimal may or may not be compliant but is most efficient, and full is inefficient but certain to be compliant. See also Internal/ConservativeBuiltinReaderStartup.

  • Full path: /DDSI2EService/Internal/BuiltinEndpointSet
  • Format: enumeration
  • Default value: writers
  • Valid values: full, writers, minimal
  • Occurrences min-max: 0-1

9.6.6   ConservativeBuiltinReaderStartup

Internal This element forces all DDSI2E built-in discovery-related readers to request all historical data, instead of just one for each “topic”. There is no indication that any of the current DDSI implementations requires changing of this setting, but it is conceivable that an implementation might track which participants have been informed of the existence of endpoints and which have not been, refusing communication with those that have “can’t” know.

Should it be necessary to hide DDSI2E’s shared discovery behaviour, set this to true and Internal/BuiltinEndpointSet to full.

  • Full path: /DDSI2EService/Internal/ConservativeBuiltinReaderStartup
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.7   DDSI2DirectMaxThreads

Internal This element sets the maximum number of extra threads for an experimental, undocumented and unsupported direct mode.

  • Full path: /DDSI2EService/Internal/DDSI2DirectMaxThreads
  • Format: integer
  • Default value: 1
  • Occurrences min-max: 0-1

9.6.8   DefragReliableMaxSamples

Internal This element sets the maximum number of samples that can be defragmneted simultaneously for a reliable writer. This has to be large enough to handle retransmissions of historical data in addition to new samples.

  • Full path: /DDSI2EService/Internal/DefragReliableMaxSamples
  • Format: integer
  • Default value: 16
  • Occurrences min-max: 0-1

9.6.9   DefragUnreliableMaxSamples

Internal This element sets the maximum number of samples that can be defragmented simultaneously for a best-effort writers.

  • Full path: /DDSI2EService/Internal/DefragUnreliableMaxSamples
  • Format: integer
  • Default value: 4
  • Occurrences min-max: 0-1

9.6.10   DeliveryQueueMaxSamples

Internal This element controls the Maximum size of a delivery queue, expressed in samples. Once a delivery queue is full, incoming samples destined for that queue are dropped until space becomes available again.

  • Full path: /DDSI2EService/Internal/DeliveryQueueMaxSamples
  • Format: integer
  • Default value: 256
  • Occurrences min-max: 0-1

9.6.11   ForwardAllMessages

Internal Forward all messages from a writer, rather than trying to forward each sample only once. The default of trying to forward each sample only once filters out duplicates for writers in multiple partitions under nearly all circumstances, but may still publish the odd duplicate. Note: the current implementation also can lose in contrived test cases, that publish more than 2**32 samples using a single data writer in conjunction with carefully controlled management of the writer history via cooperating local readers.

  • Full path: /DDSI2EService/Internal/ForwardAllMessages
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.12   ForwardRemoteData

This element controls whether DDSI2E forwards data received from other network services in the domain.

  • Full path: /DDSI2EService/Internal/ForwardRemoteData
  • Format: enumeration
  • Default value: default
  • Valid values: false, default, true
  • Occurrences min-max: 0-1

9.6.13   FragmentSize

Internal This element specifies the size of DDSI sample fragments generated by DDSI2E. Samples larger than FragmentSize are fragmented into fragments of FragmentSize bytes each, except the last one, which may be smaller. The DDSI spec mandates a minimum fragment size of 1025 bytes, but DDSI2E will do whatever size is requested, accepting fragments of which the size is at least the minimum of 1025 and FragmentSize.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Internal/FragmentSize
  • Format: string
  • Default value: 1280 B
  • Occurrences min-max: 0-1

9.6.14   GenerateKeyhash

Internal When true, include keyhashes in outgoing data for topics with keys.

  • Full path: /DDSI2EService/Internal/GenerateKeyhash
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

9.6.15   LateAckMode

Internal Ack a sample only when it has been delivered, instead of when committed to delivering it.

  • Full path: /DDSI2EService/Internal/LateAckMode
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.16   LeaseDuration

Internal This setting controls the default participant lease duration, with 0s (the default) indicating that it is to be derived from the domain ExpiryTime: either 10% or 1s longer, whichever is shortest. The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/LeaseDuration
  • Format: string
  • Default value: 0 s
  • Occurrences min-max: 0-1

9.6.17   LegacyFragmentation

Internal This option enables a backwards-compatible, non-compliant setting and interpretation of the control flags in fragmented data messages. To be enabled only when requiring interoperability between compliant and non-compliant versions of DDSI2E for large messages.

  • Full path: /DDSI2EService/Internal/LegacyFragmentation
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.18   LogStackTraces

This element controls whether or not to write stack traces to the DDSI2 trace when a thread fails to make progress (on select platforms only).

  • Full path: /DDSI2EService/Internal/LogStackTraces
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.19   MaxMessageSize

Internal This element specifies the maximum size of the UDP payload that DDSI2E will generate. DDSI2E will try to maintain this limit within the bounds of the DDSI specification, which means that in some cases (especially for very low values of MaxMessageSize) larger payloads may sporadically be observed (currently up to 1192 B).

On some networks it may be necessary to set this item to keep the packetsize below the MTU to prevent IP fragmentation. In those cases, it is generally advisable to also consider reducing Internal/FragmentSize.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Internal/MaxMessageSize
  • Format: string
  • Default value: 4096 B
  • Occurrences min-max: 0-1

9.6.20   MaxParticipants

Internal This elements configures the maximum number of DCPS domain participants this DDSI2E service instance is willing to service. 0 is unlimited.

  • Full path: /DDSI2EService/Internal/MaxParticipants
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

9.6.21   MaxQueuedRexmitBytes

Internal This setting limits the maximum number of bytes queued for retransmission. The default value of 0 is unlimited unless an AuxiliaryBandwidthLimit has been set, in which case it becomes NackDelay * AuxiliaryBandwidthLimit. It must be large enough to contain the largest sample that may need to be retransmitted.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Internal/MaxQueuedRexmitBytes
  • Format: string
  • Default value: 0 B
  • Occurrences min-max: 0-1

9.6.22   MaxQueuedRexmitMessages

Internal This settings limits the maximum number of samples queued for retransmission.

  • Full path: /DDSI2EService/Internal/MaxQueuedRexmitMessages
  • Format: integer
  • Default value: 200
  • Occurrences min-max: 0-1

9.6.23   MaxSampleSize

Internal This setting controls the maximum (CDR) serialised size of samples that DDSI2E will forward in either direction. Samples larger than this are discarded with a warning.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Internal/MaxSampleSize
  • Format: string
  • Default value: 2147483647 B
  • Occurrences min-max: 0-1

9.6.24   MeasureHbToAckLatency

Internal This element enables heartbeat-to-ack latency among DDSI2E services by prepending timestamps to Heartbeat and AckNack messages and calculating round trip times. This is non-standard behaviour. The measured latencies are quite noisy and are currently not used anywhere.

  • Full path: /DDSI2EService/Internal/MeasureHbToAckLatency
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.25   MinimumSocketReceiveBufferSize

Internal This setting controls the minimum size of socket receive buffers. This setting can only increase the size of the receive buffer, if the operating system by default creates a larger buffer, it is left unchanged.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Internal/MinimumSocketReceiveBufferSize
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

9.6.26   MinimumSocketSendBufferSize

Internal This setting controls the minimum size of socket send buffers. This setting can only increase the size of the send buffer, if the operating system by default creates a larger buffer, it is left unchanged.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Internal/MinimumSocketSendBufferSize
  • Format: string
  • Default value: 64 KiB
  • Occurrences min-max: 0-1

9.6.27   MirrorRemoteEntities

This element controls whether DDSI2E mirrors all entities in the domain in DDSI or only local ones. Default is to discover remote ones iff General/LocalDiscoveryPartition is not the built-in partition.

  • Full path: /DDSI2EService/Internal/MirrorRemoteEntities
  • Format: enumeration
  • Default value: default
  • Valid values: false, default, true
  • Occurrences min-max: 0-1

9.6.28   NackDelay

Internal This setting controls the delay between receipt of a HEARTBEAT indicating missing samples and a NACK (ignored when the HEARTBEAT requires an answer). However, no NACK is sent if a NACK had been scheduled already for a response earlier than the delay requests: then that NACK will incorporate the latest information.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/NackDelay
  • Format: string
  • Default value: 10 ms
  • Occurrences min-max: 0-1

9.6.29   PreEmptiveAckDelay

Internal This setting controls the delay between the discovering a remote writer and sending a pre-emptive AckNack to discover the range of data available.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/PreEmptiveAckDelay
  • Format: string
  • Default value: 10 ms
  • Occurrences min-max: 0-1

9.6.30   PrimaryReorderMaxSamples

Internal This element sets the maximum size in samples of a primary re-order administration. Each proxy writer has one primary re-order administration to buffer the packet flow in case some packets arrive out of order. Old samples are forwarded to secondary re-order administrations associated with readers in need of historical data.

  • Full path: /DDSI2EService/Internal/PrimaryReorderMaxSamples
  • Format: integer
  • Default value: 64
  • Occurrences min-max: 0-1

9.6.31   ResponsivenessTimeout

Internal This element controls for how long an unresponsive reader can block the transmit thread by failing to acknowledge data when a writer’s DDSI2E WHC is full. If after this time the writer’s WHC has not shrunk to below the low-water mark, the reader is considered unresponsive and degraded to unreliable. It will be restored to reliable service once it resumes acknowledging ing samples.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/ResponsivenessTimeout
  • Format: string
  • Default value: 1 s
  • Occurrences min-max: 0-1

9.6.32   RetransmitMerging

Internal This elements controls the addressing and timing of retransmits. Possible values are:

  • never: retransmit only to the NACK-ing reader;
  • adaptive: attempt to combine retransmits needed for reliability, but send historical (transient-local) data to the requesting reader only;
  • always: do not distinguish between different causes, always try to merge.

The default is adaptive. See also Internal/RetransmitMergingPeriod.

  • Full path: /DDSI2EService/Internal/RetransmitMerging
  • Format: enumeration
  • Default value: adaptive
  • Valid values: never, adaptive, always
  • Occurrences min-max: 0-1

9.6.33   RetransmitMergingPeriod

Internal This setting determines the size of the time window in which a NACK of some sample is ignored because a retransmit of that sample has been multicasted too recently. This setting has no effect of unicasted retransmits.

See also Internal/RetransmitMerging.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/RetransmitMergingPeriod
  • Format: string
  • Default value: 5 ms
  • Occurrences min-max: 0-1

9.6.34   RetryOnRejectBestEffort

Internal Whether or not to locally retry pusing a received best-effort sample into the reader caches when resource limits are reached.

  • Full path: /DDSI2EService/Internal/RetryOnRejectBestEffort
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.35   RetryOnRejectDuration

Internal How long to keep locally retrying pushing a received sample into the reader caches when resource limits are reached. Default is dependent on Internal/LateAckMode: if the latter is false, it is 80% of Internal/ResponsivenessTimeout, otherwise it is 0.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/RetryOnRejectDuration
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

9.6.36   SPDPResponseMaxDelay

Internal Maximum pseudo-random delay in milliseocnds between discovering a remote participant and responding to it.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/SPDPResponseMaxDelay
  • Format: string
  • Default value: 0 ms
  • Occurrences min-max: 0-1

9.6.37   ScheduleTimeRounding

Internal This setting allows the timing of scheduled events to be rounded up so that more events can be handled in a single cycle of the event queue. The default is 0 and causes no rounding at all, i.e. are scheduled exactly, whereas a value of 10ms would mean that events are rounded up to the nearest 10 milliseconds.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/ScheduleTimeRounding
  • Format: string
  • Default value: 0 ms
  • Occurrences min-max: 0-1

9.6.38   SecondaryReorderMaxSamples

Internal This element sets the maximum size in samples of a secondary re-order administration. The secondary re-order administration is per reader in need of historical data.

  • Full path: /DDSI2EService/Internal/SecondaryReorderMaxSamples
  • Format: integer
  • Default value: 16
  • Occurrences min-max: 0-1

9.6.39   SquashParticipants

Internal This element controls whether DDSI2E advertises all the domain participants it serves in DDSI (when set to false), or rather only one domain participant (the one corresponding to the DDSI2E process; when set to true). In the latter case DDSI2E becomes the virtual owner of all readers and writers of all domain participants, dramatically reducing discovery traffic.

  • Full path: /DDSI2EService/Internal/SquashParticipants
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.40   SuppressSPDPMulticast

Internal The element controls whether the mandatory multicasting of the participant discovery packets occurs. Completely disabling multicasting requires this element be set to true, and generally requires explicitly listing peers to ping for unicast discovery.

See also General/AllowMulticast.

  • Full path: /DDSI2EService/Internal/SuppressSPDPMulticast
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.6.41   SynchronousDeliveryLatencyBound

Internal This element controls whether samples sent by a writer with QoS settings transport_priority >= SynchronousDeliveryPriorityThreshold and a latency_budget at most this element’s value will be delivered synchronously from the “recv” thread, all others will be delivered asynchronously through delivery queues. This reduces latency at the expense of aggregate bandwidth.

Valid values are finite durations with an explicit unit or the keyword ‘inf’ for infinity. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/SynchronousDeliveryLatencyBound
  • Format: string
  • Default value: inf
  • Occurrences min-max: 0-1

9.6.42   SynchronousDeliveryPriorityThreshold

Internal This element controls whether samples sent by a writer with QoS settings latency_budget <= SynchronousDeliveryLatencyBound and transport_priority greater than or equal to this element’s value will be delivered synchronously from the “recv” thread, all others will be delivered asynchronously through delivery queues. This reduces latency at the expense of aggregate bandwidth.

  • Full path: /DDSI2EService/Internal/SynchronousDeliveryPriorityThreshold
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

9.6.43   Test

Internal Testing options.

  • Full path: /DDSI2EService/Internal/Test
  • Occurrences min-max: 0-1
  • Child elements: XmitLossiness

9.6.43.1   XmitLossiness

Internal This element controls the fraction of outgoing packets to drop, specified as a per mil.

  • Full path: /DDSI2EService/Internal/Test/XmitLossiness
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1

9.6.44   UnicastResponseToSPDPMessages

Internal This element controls whether the response to a newly discovered participant is sent as a unicasted SPDP packet, instead of rescheduling the periodic multicasted one. There is no known benefit to setting this to false.

  • Full path: /DDSI2EService/Internal/UnicastResponseToSPDPMessages
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

9.6.45   Watermarks

Internal Watermarks for flow-control.

  • Full path: /DDSI2EService/Internal/Watermarks
  • Occurrences min-max: 0-1
  • Child elements: WhcHigh, WhcLow

9.6.45.1   WhcHigh

Internal This element sets the high-water mark for the DDSI2E WHCs, expressed in bytes. A writer is suspended when the WHC reaches this size.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Internal/Watermarks/WhcHigh
  • Format: string
  • Default value: 100 kB
  • Occurrences min-max: 0-1

9.6.45.2   WhcLow

Internal This element sets the low-water mark for the DDSI2E WHCs, expressed in bytes. A suspended writer resumes transmitting when its DDSI2E WHC shrinks to this size.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Internal/Watermarks/WhcLow
  • Format: string
  • Default value: 1 kB
  • Occurrences min-max: 0-1

9.6.46   WriterLingerDuration

Internal This setting controls the maximum duration for which actual deletion of a reliable writer with unacknowledged data in its history will be postponed to provide proper reliable transmission. The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/Internal/WriterLingerDuration
  • Format: string
  • Default value: 1 s
  • Occurrences min-max: 0-1

9.7   Partitioning

The Partitioning element specifies DDSI2E network partitions and how DCPS partition/topic combinations are mapped onto the network partitions.

  • Full path: /DDSI2EService/Partitioning
  • Occurrences min-max: 0-1

9.7.1   IgnoredPartitions

The IgnoredPartitions element specifies DCPS partition/topic combinations that are not distributed over the network.

  • Full path: /DDSI2EService/Partitioning/IgnoredPartitions
  • Occurrences min-max: 0-*

9.7.1.1   IgnoredPartition

This element can be used to prevent certain combinations of DCPS partition and topic from being transmitted over the network. DDSI2E will complete ignore readers and writers for which all DCPS partitions as well as their topic is ignored, not even creating DDSI readers and writers to mirror the DCPS ones.

  • Full path: /DDSI2EService/Partitioning/IgnoredPartitions/IgnoredPartition
  • Occurrences min-max: 0-*
  • Required attributes: DCPSPartitionTopic
9.7.1.1.1   DCPSPartitionTopic

This attribute specifies a partition and a topic expression, separated by a single ‘.’, that are used to determine if a given partition and topic will be ignored or not. The expressions may use the usual wildcards ‘*’ and ‘?’. DDSI2E will consider an wildcard DCPS partition to match an expression iff there exists a string that satisfies both expressions.

  • Full path: /DDSI2EService/Partitioning/IgnoredPartitions/IgnoredPartition/DCPSPartitionTopic
  • Format: string
  • Default value: n/a
  • Required: true

9.7.2   NetworkPartitions

The NetworkPartitions element specifies the DDSI2E network partitions.

  • Full path: /DDSI2EService/Partitioning/NetworkPartitions
  • Occurrences min-max: 0-*

9.7.2.1   NetworkPartition

This element defines a DDSI2E network partition.

  • Full path: /DDSI2EService/Partitioning/NetworkPartitions/NetworkPartition
  • Occurrences min-max: 0-*
  • Required attributes: Address, Name
  • Optional attributes: Connected, SecurityProfile
9.7.2.1.1   Address

This attribute specifies the multicast addresses associated with the network partition as a comma-separated list. Readers matching this network partition (cf. Partitioning/PartitionMappings) will listen for multicasts on all of these addresses and advertise them in the discovery protocol. The writers will select the most suitable address from the addresses advertised by the readers.

  • Full path: /DDSI2EService/Partitioning/NetworkPartitions/NetworkPartition/Address
  • Format: string
  • Default value: n/a
  • Required: true
9.7.2.1.2   Connected

This attribute is a placeholder.

  • Full path: /DDSI2EService/Partitioning/NetworkPartitions/NetworkPartition/Connected
  • Format: boolean
  • Default value: true
  • Required: false
9.7.2.1.3   Name

This attribute specifies the name of this DDSI2E network partition. Two network partitions cannot have the same name.

  • Full path: /DDSI2EService/Partitioning/NetworkPartitions/NetworkPartition/Name
  • Format: string
  • Default value: n/a
  • Required: true
9.7.2.1.4   SecurityProfile

This attribute selects the DDSI2E security profile for encrypting the traffic mapped to this DDSI2E network partition. The default “null” means the network partition is unsecured; any other name refers to a security profile defined using the Security/SecurityProfile elements.

  • Full path: /DDSI2EService/Partitioning/NetworkPartitions/NetworkPartition/SecurityProfile
  • Format: string
  • Default value: null
  • Required: false

9.7.3   PartitionMappings

The PartitionMappings element specifies the mapping from DCPS partition/topic combinations to DDSI2E network partitions.

  • Full path: /DDSI2EService/Partitioning/PartitionMappings
  • Occurrences min-max: 0-*

9.7.3.1   PartitionMapping

This element defines a mapping from a DCPS partition/topic combination to a DDSI2E network partition. This allows partitioning data flows by using special multicast addresses for part of the data and possibly also encrypting the data flow.

  • Full path: /DDSI2EService/Partitioning/PartitionMappings/PartitionMapping
  • Occurrences min-max: 0-*
  • Required attributes: DCPSPartitionTopic, NetworkPartition
9.7.3.1.1   DCPSPartitionTopic

This attribute specifies a partition and a topic expression, separated by a single ‘.’, that are used to determine if a given partition and topic maps to the DDSI2E network partition named by the NetworkPartition attribute in this PartitionMapping element. The expressions may use the usual wildcards ‘*’ and ‘?’. DDSI2E will consider an wildcard DCPS partition to match an expression iff there exists a string that satisfies both expressions.

  • Full path: /DDSI2EService/Partitioning/PartitionMappings/PartitionMapping/DCPSPartitionTopic
  • Format: string
  • Default value: n/a
  • Required: true
9.7.3.1.2   NetworkPartition

This attribute specifies which DDSI2E network partition is to be used for DCPS partition/topic combinations matching the DCPSPartitionTopic attribute within this PartitionMapping element.

  • Full path: /DDSI2EService/Partitioning/PartitionMappings/PartitionMapping/NetworkPartition
  • Format: string
  • Default value: n/a
  • Required: true

9.8   SSL

The SSL element allows specifying various parameters related to using SSL/TLS for DDSI over TCP.

  • Full path: /DDSI2EService/SSL
  • Occurrences min-max: 0-1
  • Child elements: CertificateVerification, Ciphers, Enable, EntropyFile, KeyPassphrase, KeystoreFile, SelfSignedCertificates, VerifyClient

9.8.1   CertificateVerification

If disabled this allows SSL connections to occur even if an X509 certificate fails verification.

  • Full path: /DDSI2EService/SSL/CertificateVerification
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

9.8.2   Ciphers

The set of ciphers used by SSL/TLS

  • Full path: /DDSI2EService/SSL/Ciphers
  • Format: string
  • Default value: ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
  • Occurrences min-max: 0-1

9.8.3   Enable

This enables SSL/TLS for TCP.

  • Full path: /DDSI2EService/SSL/Enable
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.8.4   EntropyFile

The SSL/TLS random entropy file name.

  • Full path: /DDSI2EService/SSL/EntropyFile
  • Format: string
  • Occurrences min-max: 0-1

9.8.5   KeyPassphrase

The SSL/TLS key pass phrase for encrypted keys.

  • Full path: /DDSI2EService/SSL/KeyPassphrase
  • Format: string
  • Default value: secret
  • Occurrences min-max: 0-1

9.8.6   KeystoreFile

The SSL/TLS key and certificate store file name. The keystore must be in PEM format.

  • Full path: /DDSI2EService/SSL/KeystoreFile
  • Format: string
  • Default value: keystore
  • Occurrences min-max: 0-1

9.8.7   SelfSignedCertificates

This enables the use of self signed X509 certificates.

  • Full path: /DDSI2EService/SSL/SelfSignedCertificates
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.8.8   VerifyClient

This enables an SSL server checking the X509 certificate of a connecting client.

  • Full path: /DDSI2EService/SSL/VerifyClient
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.9   Security

The Security element specifies DDSI2E security profiles that can be used to encrypt traffic mapped to DDSI2E network partitions.

  • Full path: /DDSI2EService/Security
  • Occurrences min-max: 0-1

9.9.1   SecurityProfile

This element defines a DDSI2E security profile.

  • Full path: /DDSI2EService/Security/SecurityProfile
  • Occurrences min-max: 0-*
  • Required attributes: Name
  • Optional attributes: Cipher, CipherKey

9.9.1.1   Cipher

This attribute specifies the cipher to be used for encrypting traffic over network partitions secured by this security profile. The possible ciphers are:

  • aes128: AES with a 128-bit key;
  • aes192: AES with a 192-bit key;
  • aes256: AES with a 256-bit key;
  • blowfish: the Blowfish cipher with a 128 bit key;
  • null: no encryption;

SHA1 is used on conjunction with all ciphers except “null” to ensure data integrity.

  • Full path: /DDSI2EService/Security/SecurityProfile/Cipher
  • Format: enumeration
  • Default value: null
  • Valid values: null, blowfish, aes128, aes192, aes256
  • Required: false

9.9.1.2   CipherKey

The CipherKey attribute is used to define the secret key required by the cipher selected using the Cipher attribtue. The value can be a URI referencing an external file containing the secret key, or the secret key can be defined in-place as a string value.

The key must be specified as a hexadecimal string with each character representing 4 bits of the key. E.g., 1ABC represents the 16-bit key 0001 1010 1011 1100. The key should not follow a well-known pattern and must exactly match the key length of the selected cipher.

A malformed key will cause the security profile to be marked as invalid, and disable all network partitions secured by the (invalid) security profile to prevent information leaks.

As all DDS applications require read access to the XML configuration file, for security reasons it is recommended to store the secret key in an external file in the file system, referenced by its URI. The file should be protected against read and write access from other users on the host.

  • Full path: /DDSI2EService/Security/SecurityProfile/CipherKey
  • Format: string
  • Default value: “”
  • Required: false

9.9.1.3   Name

This attribute specifies the name of this DDSI2E security profile. Two security profiles cannot have the same name.

  • Full path: /DDSI2EService/Security/SecurityProfile/Name
  • Format: string
  • Default value: n/a
  • Required: true

9.10   Sizing

The Sizing element specifies a variety of configuration settings dealing with expected system sizes, buffer sizes, &c.

  • Full path: /DDSI2EService/Sizing
  • Occurrences min-max: 0-1
  • Child elements: EndpointsInSystem, LocalEndpoints, NetworkQueueSize, ReceiveBufferChunkSize, ReceiveBufferSize

9.10.1   EndpointsInSystem

This endpoint specifies the expected maximum number of endpoints in the network. Underestimating this number will have a significant performance impact, but will not affect correctness; signficantly overestimating it will cause more memory to be used than necessary.

  • Full path: /DDSI2EService/Sizing/EndpointsInSystem
  • Format: integer
  • Default value: 20000
  • Occurrences min-max: 0-1

9.10.2   LocalEndpoints

This element specifies the expected maximum number of endpoints local to one DDSI2E service. Underestimating this number will have a significant performance impact, but will not affect correctness; signficantly overestimating it will cause more memory to be used than necessary.

  • Full path: /DDSI2EService/Sizing/LocalEndpoints
  • Format: integer
  • Default value: 1000
  • Occurrences min-max: 0-1

9.10.3   NetworkQueueSize

This element specifies the maximum number of samples in the network queue. Write/dispose operations add samples to this queue, the DDSI2E service drains it. Larger values allow large bursts of writes to occur without forcing synchronization between the application and the DDSI2E service, but do introduce the potential for longer latencies and increase the maximum amount of memory potentially occupied by messages in the queue.

  • Full path: /DDSI2EService/Sizing/NetworkQueueSize
  • Format: integer
  • Default value: 1000
  • Occurrences min-max: 0-1

9.10.4   ReceiveBufferChunkSize

Size of one allocation unit in the receive buffer. Must be greater than the maximum packet size by a modest amount (too large packets are dropped). Each allocation is shrunk immediately after processing a message, or freed straightaway.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Sizing/ReceiveBufferChunkSize
  • Format: string
  • Default value: 128 KiB
  • Occurrences min-max: 0-1

9.10.5   ReceiveBufferSize

This element sets the size of a single receive buffer. Many receive buffers may be needed. Their size must be greater than ReceiveBufferChunkSize by a modest amount.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Sizing/ReceiveBufferSize
  • Format: string
  • Default value: 1 MiB
  • Occurrences min-max: 0-1

9.11   TCP

The TCP element allows specifying various parameters related to running DDSI over TCP.

  • Full path: /DDSI2EService/TCP
  • Occurrences min-max: 0-1
  • Child elements: Enable, NoDelay, Port, ReadTimeout, WriteTimeout

9.11.1   Enable

This element enables the optional TCP transport.

  • Full path: /DDSI2EService/TCP/Enable
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.11.2   NoDelay

This element enables the TCP_NODELAY socket option, preventing multiple DDSI messages being sent in the same TCP request. Setting this option typically optimises latency over throughput.

  • Full path: /DDSI2EService/TCP/NoDelay
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1

9.11.3   Port

This element specifies the TCP port number on which the service accepts connections. If the port is set it is used in entity locators, published with DDSI discovery. Dynamically allocated if zero. Disabled if -1 or not configured. If disabled other DDSI services will not be able to establish connections with the service, the service can only communicate by establishing connections to other services.

  • Full path: /DDSI2EService/TCP/Port
  • Format: integer
  • Default value: -1
  • Occurrences min-max: 0-1

9.11.4   ReadTimeout

This element specifies the timeout for blocking TCP read operations. If this timeout expires then the connection is closed.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/TCP/ReadTimeout
  • Format: string
  • Default value: 2 s
  • Occurrences min-max: 0-1

9.11.5   WriteTimeout

This element specifies the timeout for blocking TCP write operations. If this timeout expires then the connection is closed.

The unit must be specified explicitly. Recognised units: ns, us, ms, s, min, hr, day.

  • Full path: /DDSI2EService/TCP/WriteTimeout
  • Format: string
  • Default value: 2 s
  • Occurrences min-max: 0-1

9.12   ThreadPool

The ThreadPool element allows specifying various parameters related to using a thread pool to send DDSI messages to multiple unicast addresses (TCP or UDP).

  • Full path: /DDSI2EService/ThreadPool
  • Occurrences min-max: 0-1
  • Child elements: Enable, ThreadMax, Threads

9.12.1   Enable

This element enables the optional thread pool.

  • Full path: /DDSI2EService/ThreadPool/Enable
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.12.2   ThreadMax

This elements configures the maximum number of threads in the thread pool.

  • Full path: /DDSI2EService/ThreadPool/ThreadMax
  • Format: integer
  • Default value: 8
  • Occurrences min-max: 0-1

9.12.3   Threads

This elements configures the initial number of threads in the thread pool.

  • Full path: /DDSI2EService/ThreadPool/Threads
  • Format: integer
  • Default value: 4
  • Occurrences min-max: 0-1

9.13   Threads

This element is used to set thread properties.

  • Full path: /DDSI2EService/Threads
  • Occurrences min-max: 0-1

9.13.1   Thread

This element specifies thread properties, such as scheduling parameters and stack size.

  • Full path: /DDSI2EService/Threads/Thread
  • Occurrences min-max: 0-1000
  • Child elements: StackSize
  • Required attributes: Name

9.13.1.1   Name

The Name of the thread for which properties are being set. The following threads exist:

  • gc: garbage collector thread involved in deleting entities;
  • main: main thread, primarily handling local discovery;
  • recv: receive thread, taking data from the network and running the protocol state machine;
  • dq.builtins: delivery thread for DDSI-builtin data, primarily for discovery;
  • lease: DDSI2E liveliness monitoring;
  • tev: general timed-event handling, retransmits and discovery;
  • xmit.CHAN: transmit thread for channel CHAN;
  • dq.CHAN: delivery thread for channel CHAN;
  • tev.CHAN: timed-even thread for channel CHAN.
  • Full path: /DDSI2EService/Threads/Thread/Name
  • Format: string
  • Default value: n/a
  • Required: true

9.13.1.2   Scheduling

This element configures the scheduling properties of the thread.

  • Full path: /DDSI2EService/Threads/Thread/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Class, Priority
9.13.1.2.1   Class

This element specifies the thread scheduling class (realtime, timeshare or default). The user may need special privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.

  • Full path: /DDSI2EService/Threads/Thread/Scheduling/Class
  • Format: enumeration
  • Default value: default
  • Valid values: realtime, timeshare, default
  • Occurrences min-max: 0-1
9.13.1.2.2   Priority

This element specifies the thread priority (decimal integer or default). Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.

  • Full path: /DDSI2EService/Threads/Thread/Scheduling/Priority
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

9.13.1.3   StackSize

This element configures the stack size for this thread. The default value default leaves the stack size at the the operating system default.

The unit must be specified explicitly. Recognised units: B (bytes), kB & KiB (2 10 bytes), MB & MiB (2 20 bytes), GB & GiB (2 30 bytes).

  • Full path: /DDSI2EService/Threads/Thread/StackSize
  • Format: string
  • Default value: default
  • Occurrences min-max: 0-1

9.14   Tracing

The Tracing element controls the amount and type of information that is written into the tracing log by the DDSI service. This is useful to track the DDSI service during application development.

  • Full path: /DDSI2EService/Tracing
  • Occurrences min-max: 0-1
  • Child elements: AppendToFile, EnableCategory, OutputFile, PacketCaptureFile, Timestamps, Verbosity

9.14.1   AppendToFile

This option specifies whether the output is to be appended to an existing log file. The default is to create a new log file each time, which is generally the best option if a detailed log is generated.

  • Full path: /DDSI2EService/Tracing/AppendToFile
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

9.14.2   EnableCategory

This element enables individual logging categories. These are enabled in addition to those enabled by Tracing/Verbosity. Recognised categories are:

  • fatal: all fatal errors, errors causing immediate termination
  • error: failures probably impacting correctness but not necessarily causing immediate termination
  • warning: abnormal situations that will likely not impact correctness
  • config: full dump of the configuration
  • info: general informational notices
  • discovery: all discovery activity
  • data: include data content of samples in traces
  • radmin: receive buffer administration
  • timing: periodic reporting of CPU loads per thread
  • traffic: periodic reporting of total outgoing data

In addition, there is the keyword trace that enables all but radmin . The categorisation of tracing output is incomplete and hence most of the verbosity levels and categories are not of much use in the current release. This is an ongoing process and here we describe the target situation rather than the current situation. Currently, the most useful is trace.

  • Full path: /DDSI2EService/Tracing/EnableCategory
  • Format: string
  • Occurrences min-max: 0-1

9.14.3   OutputFile

This option specifies where the logging is printed to. Note that stdout and stderr are treated as special values, representing “standard out” and “standard error” respectively. No file is created unless logging categories are enabled using the Tracing/Verbosity or Tracing/EnabledCategory settings.

  • Full path: /DDSI2EService/Tracing/OutputFile
  • Format: string
  • Default value: ddsi2.log
  • Occurrences min-max: 0-1

9.14.4   PacketCaptureFile

This option specifies the file to which received and sent packets will be logged in the “pcap” format suitable for analysis using common networking tools, such as WireShark. IP and UDP headers are ficitious, in particular the destination address of received packets. The TTL may be used to distinguish between sent and received packets: it is 255 for sent packets and 128 for received ones. Currently IPv4 only.

  • Full path: /DDSI2EService/Tracing/PacketCaptureFile
  • Format: string
  • Occurrences min-max: 0-1

9.14.5   Timestamps

This option has no effect.

  • Full path: /DDSI2EService/Tracing/Timestamps
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1
  • Optional attributes: absolute

9.14.5.1   absolute

This attribute specifies whether the timestamps in the log file are absolute or relative to the startup time of the service. Currently not implemented in DDSI2E, all timestamps are absolute.

  • Full path: /DDSI2EService/Tracing/Timestamps/absolute
  • Format: boolean
  • Default value: true
  • Required: false

9.14.6   Verbosity

This element enables standard groups of categories, based on a desired verbosity level. This is in addition to the categories enabled by the Tracing/EnableCategory setting. Recognised verbosity levels and the categories they map to are:

  • none: no DDSI2E log
  • severe: error and fatal
  • warning: severe + warning
  • info: equivalent to warning
  • config: info + config
  • fine: config + discovery
  • finer: fine + traffic, timing & info
  • finest: finer + trace

While none prevents any message from being written to a DDSI2 log file, warnings and errors are still logged in the ospl-info.log and ospl-error.log files.

The categorisation of tracing output is incomplete and hence most of the verbosity levels and categories are not of much use in the current release. This is an ongoing process and here we describe the target situation rather than the current situation. Currently, the most useful verbosity levels are config and finest.

  • Full path: /DDSI2EService/Tracing/Verbosity
  • Format: enumeration
  • Default value: none
  • Valid values: finest, finer, fine, config, info, warning, severe, none
  • Occurrences min-max: 0-1

9.15   Watchdog

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.

  • Full path: /DDSI2EService/Watchdog
  • Occurrences min-max: 0-1

9.15.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.

  • Full path: /DDSI2EService/Watchdog/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Class, Priority

9.15.1.1   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.

  • Full path: /DDSI2EService/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: default
  • Valid values: realtime, timeshare, default
  • Occurrences min-max: 0-1

9.15.1.2   Priority

This element specifies the thread priority. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.

  • Full path: /DDSI2EService/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 0-1
  • Optional attributes: priority_kind
9.15.1.2.1   priority_kind

This attribute specifies whether the specified Priority is a relative or absolute priority.

  • Full path: /DDSI2EService/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: relative
  • Valid values: relative, absolute
  • Required: false

10   TunerService

The purpose of the control & monitoring SOAP service is to provide remote access to the node for OpenSplice tooling.
  • Full path: /TunerService
  • Occurrences min-max: 0-*
  • Required attributes: name

10.1   name

This attribute identifies a configuration for the Tuner Service by name. Multiple Tuner Service configurations can be specified in one single resource file. The actual applicable configuration is determined by the value of the name attribute, which must match the one specified under the OpenSplice/Domain/Service[@name] in the configuration of the Domain Service.
  • Full path: /TunerService/name
  • Format: string
  • Default value: cmsoap
  • Required: true

10.2   Watchdog

This element controls the characteristics of the Watchdog thread.
  • Full path: /TunerService/Watchdog
  • Occurrences min-max: 0-1

10.2.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.
  • Full path: /TunerService/Watchdog/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class

10.2.1.1   Priority

This element specifies the thread priority that will be used by the watchdog thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /TunerService/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
10.2.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /TunerService/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

10.2.1.2   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /TunerService/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

10.3   Server

This element determines the serverside behaviour of the Tuner service.
  • Full path: /TunerService/Server
  • Occurrences min-max: 0-1
  • Child elements: PortNr, Backlog, Verbosity

10.3.1   PortNr

This element determines the port number that the TunerService will use to listen for incoming requests. This port number must also be used by the Tuner tool to connect to this service. Valid portnumbers are 1 till 65535. When using the single process option set this value to Auto.
  • Full path: /TunerService/Server/PortNr
  • Format: string
  • Default value: 50000
  • Occurrences min-max: 0-1

10.3.2   Backlog

This element specifies the maximum number of client requests that are allowed to be waiting when the maximum number of concurrent requests is reached.
  • Full path: /TunerService/Server/Backlog
  • Format: integer
  • Default value: 5
  • Occurrences min-max: 0-1

10.3.3   Verbosity

This element specifies the verbosity level of the logging of the service.
  • Full path: /TunerService/Server/Verbosity
  • Format: enumeration
  • Default value: 0
  • Valid values: 0, 1, 2, 3, 4, 5
  • Occurrences min-max: 0-1

10.4   Client

This element determines how the Tuner service handles the incoming client connections.
  • Full path: /TunerService/Client
  • Occurrences min-max: 0-1
  • Child elements: MaxClients, MaxThreadsPerClient, LeasePeriod

10.4.1   MaxClients

This element determines the maximum allowed number of clients that are allowed to be concurrently connected to the Tuner service. Clients are identified by IP-address.
  • Full path: /TunerService/Client/MaxClients
  • Format: integer
  • Default value: 10
  • Occurrences min-max: 0-1

10.4.2   MaxThreadsPerClient

This element specifies the maximum number of threads that the Tuner service will create for one specific client. The number of threads determines the maximum number of concurrent requests for a client.
  • Full path: /TunerService/Client/MaxThreadsPerClient
  • Format: integer
  • Default value: 10
  • Occurrences min-max: 0-1

10.4.3   LeasePeriod

This element determines the maximum amount of time in which a connected client must update its lease. This can be done implicitly by calling any function or explicitly by calling the update lease function. The Tuner tool will automatically update its lease when it is connected to the Tuner service. This ensures that all resources are cleaned up automatically if the client fails to update its lease within this period.
  • Full path: /TunerService/Client/LeasePeriod
  • Default value: 15.0
  • Occurrences min-max: 0-1

10.4.4   Scheduling

This element specifies the scheduling policies used to control the threads that handle the client requests to the Tuner Service.
  • Full path: /TunerService/Client/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class

10.4.4.1   Priority

This element specifies the thread priority that will be used by the threads that handle client requests to the Tuner Service. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /TunerService/Client/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
10.4.4.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /TunerService/Client/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

10.4.4.2   Class

This element specifies the thread scheduling class that will be used by the threads that handle client requests to the Tuner Service. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /TunerService/Client/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

10.5   GarbageCollector

This element specifies the behaviour of the garbage collection thread of the service.
  • Full path: /TunerService/GarbageCollector
  • Occurrences min-max: 0-1

10.5.1   Scheduling

This element specifies the scheduling policies used to control the garbagage collection thread of the Tuner Service.
  • Full path: /TunerService/GarbageCollector/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class

10.5.1.1   Priority

This element specifies the thread priority that will be used by the garbage collection thread of the Tuner Service. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /TunerService/GarbageCollector/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
10.5.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /TunerService/GarbageCollector/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

10.5.1.2   Class

This element specifies the thread scheduling class that will be used by the garbage collection thread of the Tuner Service. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /TunerService/GarbageCollector/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

10.6   LeaseManagement

This element specifies the behaviour of the lease management thread of the Tuner Service.
  • Full path: /TunerService/LeaseManagement
  • Occurrences min-max: 0-1

10.6.1   Scheduling

This element specifies the scheduling policies used to control the lease management thread of the Tuner Service.
  • Full path: /TunerService/LeaseManagement/Scheduling
  • Occurrences min-max: 0-1
  • Child elements: Priority, Class

10.6.1.1   Priority

This element specifies the thread priority that will be used by the lease management thread of the Tuner Service. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /TunerService/LeaseManagement/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
10.6.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /TunerService/LeaseManagement/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

10.6.1.2   Class

This element specifies the thread scheduling class that will be used by the lease management thread of the Tuner Service. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /TunerService/LeaseManagement/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

11   DbmsConnectService

The DbmsConnect Service configuration is responsible for DDS to DBMS bridging and expects a root element named OpenSplice/DbmsConnectService. Within this root element, the DbmsConnect Service will look for several child-elements. Each of these is listed and explained.
  • Full path: /DbmsConnectService
  • Occurrences min-max: 0-*
  • Required attributes: name

11.1   name

This attribute identifies the configuration for the DBMS connect service by name. Multiple DBMS connect service configurations can be specified in one single resource file. The actual applicable configuration is determined by the value of the name attribute, which must match the one specified under the OpenSplice/Domain/Service[@name] in the configuration of the DomainService.
  • Full path: /DbmsConnectService/name
  • Format: string
  • Default value: dbmsconnect
  • Required: true

11.2   Watchdog

This element controls the characteristics of the Watchdog thread
  • Full path: /DbmsConnectService/Watchdog
  • Occurrences min-max: 0-1

11.2.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.
  • Full path: /DbmsConnectService/Watchdog/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class

11.2.1.1   Priority

This element specifies the thread priority that will be used by the watchdog thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /DbmsConnectService/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
11.2.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /DbmsConnectService/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

11.2.1.2   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /DbmsConnectService/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

11.3   DdsToDbms

This element specifies the configuration properties concerning DDS to DBMS bridging.
  • Full path: /DbmsConnectService/DdsToDbms
  • Occurrences min-max: 0-1
  • Optional attributes: replication_mode

11.3.1   replication_mode

This attribute specifies the default replication mode for all NameSpaces in the DdsToDbms element.

When replicating databases through DDS, the NameSpace elements in the DbmsToDds and DdsToDbms elements map a Table and Topic circularly. To prevent data-modifications from continuously cascading, modifications made by the DBMSConnect service itself should not trigger new updates in the DBMS nor in the DDS.

In replication mode, the DBMS-connect service ignores samples that were published by itself. (Currently that means that everything that is published on the same node as the DBMSConnect Service is considered to be of DBMSConnect origin and therefore ignored). That way, replication of changes that were copied from Dbms to DDS back into Dbms is avoided.

WARNING: This setting does not avoid replication of changes that were copied from DDS to Dbms back into DDS. For that purpose, the replication_user attribute of the DbmsToDds or DbmsToDds/NameSpace elements should be set appropriately as well!

  • Full path: /DbmsConnectService/DdsToDbms/replication_mode
  • Format: boolean
  • Default value: FALSE
  • Required: false

11.3.2   NameSpace

This element specifies the responsibilities of the service concerning the bridging of particular data from DDS to DBMS. At least one NameSpace element has to be present in a DdsToDbms element.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace
  • Occurrences min-max: 1-*
  • Required attributes: dsn, usr, pwd
  • Optional attributes: name, odbc, partition, topic, update_frequency, schema, catalog, replication_mode

11.3.2.1   name

The name of the namespace. If not specified, the namespace will be named “(nameless)”.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/name
  • Format: string
  • Default value: (nameless)
  • Required: false

11.3.2.2   odbc

The service dynamically loads an ODBC library at runtime. This attribute specifies the name of the ODBC library to be loaded. Platform specific pre- and postfixes and extensions are automatically added.

If this attribute is not provided, the service will attempt to load the generic ODBC library. The resulting behaviour is dependent on the platform on which the DbmsConnect Service is running.

  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/odbc
  • Format: string
  • Default value: “”
  • Required: false

11.3.2.3   partition

This attribute specifies an expression that represents one or more DDS partitions. It is allowed to use wildcards in the expression: a ‘*’ represents any sequence of characters and a ‘?’ represents one single character.

This expression is used to specify the DDS partition(s) from which DDS samples must be ‘bridged’ to the DBMS domain.

  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/partition
  • Format: string
  • Default value: *
  • Required: false

11.3.2.4   topic

This attribute specifies an expression that represents one or more DDS topic names. It is allowed to use wildcards in the expression: a ‘*’ represents any sequence of characters and a ‘?’ represents one single character.

This expression is used to specify the topics from which DDS samples must be ‘bridged’ to the DBMS domain. For every matching topic encountered in one or more of the specified partitions, it creates a separate table in the DBMS. The table name will match that of the topic, unless specified otherwise in the table attribute of a Mapping element.

  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/topic
  • Format: string
  • Default value: *
  • Required: false

11.3.2.5   update_frequency

This attribute specifies the frequency (in Hz) at which the service will update the DBMS domain with DDS data. By default, it is 0.0Hz which means it is done event based (every time new DDS data arrives).
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/update_frequency
  • Default value: 0.0
  • Required: false

11.3.2.6   dsn

Represents the ODBC Data Source Name, that represents the DBMS where the service must bridge the DDS data to.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/dsn
  • Format: string
  • Default value: n/a
  • Required: true

11.3.2.7   usr

Represents the user name that is used when connecting to the DBMS.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/usr
  • Format: string
  • Default value: n/a
  • Required: true

11.3.2.8   pwd

Represents the password that is used when connecting to the DBMS.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/pwd
  • Format: string
  • Default value: n/a
  • Required: true

11.3.2.9   schema

Represents the schema that is used when communicating with the DBMS. The exact schema content may be dependent on the DBMS that is being used, so consult your DBMS documentation for more details on this subject.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/schema
  • Format: string
  • Default value: “”
  • Required: false

11.3.2.10   catalog

Represents the catalog that is used when communicating with the DBMS. The exact catalog content may be dependent on the DBMS that is being used, so consult your DBMS documentation for more details on this subject.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/catalog
  • Format: string
  • Default value: “”
  • Required: false

11.3.2.11   replication_mode

This attribute specifies the replication mode for the current NameSpace element. If not specified, the value will be inherited from the replication_mode of the parent DdsToDbms element, which if not explicitly specified defaults to false

When replicating databases through DDS, the NameSpace elements in the DbmsToDds and DdsToDbms elements map a Table and Topic circularly. To prevent data-modifications from continuously cascading, modifications made by the DBMSConnect service itself should not trigger new updates in the DBMS.

In replication mode, the DBMS-connect service ignores samples that were published by itself. (Currently that means that everything that is published on the same node as the DBMSConnect Service is considered to be of DBMSConnect origin and therefore ignored). That way, replication of changes that were copied from Dbms to DDS back into Dbms is avoided.

WARNING: This setting does not avoid replication of changes that were copied from DDS to Dbms back into DDS. For that purpose, the replication_user attribute of the DbmsToDds or DbmsToDds/NameSpace elements should be set appropriately as well!

  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/replication_mode
  • Format: boolean
  • Default value: FALSE
  • Required: false

11.3.2.12   Mapping

This element specifies a modification to the way that the service handles a pre-configured set of data within the specified NameSpace. Its attributes are used to configure the responsibilities of the service concerning the bridging of data from DDS to DBMS.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/Mapping
  • Occurrences min-max: 0-*
  • Required attributes: topic
  • Optional attributes: table, query, filter
11.3.2.12.1   topic
This attribute specifies the name of the topic where the Mapping applies to.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/Mapping/topic
  • Format: string
  • Default value: n/a
  • Required: true
11.3.2.12.2   table
This attribute specifies an alternative name for the table that must be associated with the topic. By default the table name is equal to the topic name.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/Mapping/table
  • Format: string
  • Default value: “”
  • Required: false
11.3.2.12.3   query
This attribute specifies an SQL query expression. Only DDS data that matches the query will be bridged to the DBMS domain. This is realized by means of a DCPS query condition. The default value is an empty string, representing all available samples of the selected topic.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/Mapping/query
  • Format: string
  • Default value: “”
  • Required: false
11.3.2.12.4   filter
This attribute specifies an SQL content filter. Only DDS data that matches the filter will be bridged to the DBMS domain. This is realized by means of a DCPS ContentFilteredTopic. The default value is an empty string, representing all available samples of the selected topic.
  • Full path: /DbmsConnectService/DdsToDbms/NameSpace/Mapping/filter
  • Format: string
  • Default value: “”
  • Required: false

11.4   DbmsToDds

Holds the configuration of the service concerning DBMS to DDS bridging
  • Full path: /DbmsConnectService/DbmsToDds
  • Occurrences min-max: 0-1
  • Optional attributes: publish_initial_data, event_table_policy, trigger_policy, replication_user

11.4.1   publish_initial_data

This attribute specifies the default behaviour with respect to publishing initially available data in the DBMS to the DDS for all NameSpace elements in the current DbmsToDds element. If not specified, it defaults to true. The value of this attribute is ignored when the corresponding event_table_policy is set to NONE.
  • Full path: /DbmsConnectService/DbmsToDds/publish_initial_data
  • Format: boolean
  • Default value: true
  • Required: false

11.4.2   event_table_policy

This attribute specifies the default setting of the event table policy for all NameSpace elements in the current DbmsToDds element.

An event table (sometimes referred to as ‘change table’ or ‘shadow table’) is a support-table that is slaved to an application-table, adding some status flags that are under the control of a trigger mechanism that responds to creation/modification/ deletion events in the application-table.

The following policies are currently supported:

  • FULL: (default) An ‘event table’ will always be created when the service connects, and will always be deleted when the service disconnects. In this mode, the service will replace the table if it already exists.
  • LAZY: An ‘event table’ will only be created if it is not available when the service connects, and it will not be deleted when the service disconnects.
  • NONE: An ‘event table’ will neither be created nor deleted by the service. For each specified NameSpace, the service will poll for the existence of a consistent table with a frequency specified in the coresponding update_frequency attribute. It will start using the table as soon as it is available. With this policy set, no initial data will be published regardless of the value of the applicable publish_initial_data attribute.
  • Full path: /DbmsConnectService/DbmsToDds/event_table_policy
  • Format: enumeration
  • Default value: FULL
  • Valid values: FULL, LAZY, NONE
  • Required: false

11.4.3   trigger_policy

This attribute specifies the default trigger policy for all NameSpace elements in the current DbmsToDds element.

Triggers are used to to update the event table in case of creation/modification/ deletion events on the application-table.

The following policies are currently supported:

  • FULL: (default) Triggers will always be created when the service connects, and will always be deleted when the service disconnects. In this mode, the service will replace the triggers if they already exists.
  • LAZY: Triggers will only be created if they are not available when the service connects, and will not be deleted when the service disconnects.
  • NONE: Triggers will neither be created nor deleted by the service. This allows you to build your own custom triggering mechanism.
  • Full path: /DbmsConnectService/DbmsToDds/trigger_policy
  • Format: enumeration
  • Default value: FULL
  • Valid values: FULL, LAZY, NONE
  • Required: false

11.4.4   replication_user

This attribute specifies the default replication user for all NameSpace elements in the current DdsToDbms element.

When replicating databases through DDS, the NameSpace elements in the DbmsToDds and DdsToDbms elements map a Table and Topic circularly. To prevent data-modifications from continuously cascading, modifications made by the service itself should not trigger new updates in the DBMS nor in the DDS.

To distinguish between DBMS updates coming from an application and DBMS updates coming from DDS, an extra database user (the replication user) has to be introduced that differs from the application users. That way, replication of changes that were copied from DDS to Dbms back into DDS is avoided. The replication_user attribute specifies the user name of that replication user. An empty string (default value) indicates that there is no separate replication user.

WARNING: This setting does not avoid replication of changes that were copied from Dbms to DDS back into Dbms. For that purpose, the replication_mode attribute of the DssToDbms or DssToDbms/NameSpace elements should be set appropriately as well!

  • Full path: /DbmsConnectService/DbmsToDds/replication_user
  • Format: string
  • Default value: “”
  • Required: false

11.4.5   NameSpace

This element specifies the responsibilities of the service concerning the bridging of data from DBMS to DDS. At least one NameSpace element has to be present in a DbmsToDds element.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace
  • Occurrences min-max: 1-*
  • Required attributes: dsn, usr, pwd
  • Optional attributes: name, odbc, partition, table, update_frequency, publish_initial_data, force_key_equality, event_table_policy, trigger_policy, schema, catalog, replication_user

11.4.5.1   name

The name of the namespace. If not specified, the namespace will be named “(nameless)”.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/name
  • Format: string
  • Default value: (nameless)
  • Required: false

11.4.5.2   odbc

The service dynamically loads an ODBC library at runtime. This attribute specifies the name of the ODBC library to be loaded. Platform specific pre- and postfixes and extensions are automatically added.

If this attribute is not provided, the service will attempt to load the generic ODBC library. The resulting behaviour is dependent on the platform on which the DbmsConnect Service is running.

  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/odbc
  • Format: string
  • Default value: “”
  • Required: false

11.4.5.3   partition

This attribute specifies an expression represents one or more DDS partitions. It is allowed to use wildcards in the expression: a ‘*’ represents any sequence of characters and a ‘?’ represents one single character.

This expression is used to specify the DDS partition(s) where DBMS records will be written to as DDS samples by the service.

  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/partition
  • Format: string
  • Default value: *
  • Required: false

11.4.5.4   table

This attribute specifies an expression that represents one or more DBMS table names. It is allowed to use wildcards in the expression: a ‘*’ represents any sequence of characters and a ‘?’ represents one single character.

This expression is used to specify the tables from which DBMS data must be ‘bridged’ to the DDS domain.

  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/table
  • Format: string
  • Default value: *
  • Required: false

11.4.5.5   update_frequency

This attribute specifies the frequency (in Hz) at which the service will update the DDS domain with DBMS data. By default, it is 2.0Hz. Event-based updates are not supported. If 0.0Hz is specified, the default of 2.0Hz will be used.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/update_frequency
  • Default value: 2.0
  • Required: false

11.4.5.6   dsn

Represents the Data Source Name, that represents the DBMS where the service must bridge the DDS data from.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/dsn
  • Format: string
  • Default value: n/a
  • Required: true

11.4.5.7   usr

Represents the user name that is used when connecting to the DBMS.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/usr
  • Format: string
  • Default value: n/a
  • Required: true

11.4.5.8   pwd

Represents the password that is used when connecting to the DBMS.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/pwd
  • Format: string
  • Default value: n/a
  • Required: true

11.4.5.9   publish_initial_data

This attribute specifies the default behaviour with respect to publishing initially available data in the DBMS to the DDS for all Mapping elements in the current NameSpace element. If not specified, the value will be inherited from the publish_initial_data of the parent DbmsToDds element, which defaults to true. The value of this attribute is ignored when the corresponding event_table_policy is set to NONE.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/publish_initial_data
  • Format: boolean
  • Default value: true
  • Required: false

11.4.5.10   force_key_equality

This attribute specifies the default setting for Mapping elements in the current NameSpace element with regard to the enforcement of key equality between table and topic definitions. If true, key definitions from the table and topic must match, otherwise key definitions may differ.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/force_key_equality
  • Format: boolean
  • Default value: true
  • Required: false

11.4.5.11   event_table_policy

This attribute specifies the default setting of the event table policy for all Mapping elements in the current NameSpace element. If not specified, the value will be inherited from the event_table_policy of the parent DbmsToDds element, which if not explicitly specified defaults to FULL.

An event table (sometimes referred to as ‘change table’ or ‘shadow table’) is a support-table that is slaved to an application-table, adding some status flags that are under the control of a trigger mechanism that responds to creation/modification/ deletion events in the application-table.

The following policies are currently supported:

  • FULL: An ‘event table’ will always be created when the service connects, and will always be deleted when the service disconnects. In this mode, the service will replace the table if it already exists.
  • LAZY: An ‘event table’ will only be created if it is not available when the service connects, and it will not be deleted when the service disconnects.
  • NONE: An ‘event table’ will neither be created nor deleted by the service. For each specified NameSpace, the service will poll for the existence of a consistent table with a frequency specified in the coresponding update_frequency attribute. It will start using the table as soon as it is available. With this policy set, no initial data will be published regardless of the value of the applicable publish_initial_data attribute.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/event_table_policy
  • Format: enumeration
  • Default value: FULL
  • Valid values: FULL, LAZY, NONE
  • Required: false

11.4.5.12   trigger_policy

This attribute specifies the default trigger policy for all Mapping elements in the current NameSpace element. If not specified, the value will be inherited from the trigger_policy of the parent DbmsToDds element, which if not explicitly specified defaults to FULL.

Triggers are used to to update the event table in case of creation/modification/ deletion events on the application-table.

The following policies are currently supported:

  • FULL: (default) Triggers will always be created when the service connects, and will always be deleted when the service disconnects. In this mode, the service will replace the triggers if they already exists.
  • LAZY: Triggers will only be created if they are not available when the service connects, and will not be deleted when the service disconnects.
  • NONE: Triggers will neither be created nor deleted by the service. This allows you to build your own custom triggering mechanism.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/trigger_policy
  • Format: enumeration
  • Default value: FULL
  • Valid values: FULL, LAZY, NONE
  • Required: false

11.4.5.13   schema

Represents the schema that is used when communicating with the DBMS.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/schema
  • Format: string
  • Default value: “”
  • Required: false

11.4.5.14   catalog

Represents the catalog that is used when communicating with the DBMS.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/catalog
  • Format: string
  • Default value: “”
  • Required: false

11.4.5.15   replication_user

This attribute specifies the default replication user for all Mapping elements in the current NameSpace element. If not specified, the value will be inherited from the replication_user of the parent DbmsToDds element, which by default has no separate replication user specified.

When replicating databases through DDS, the NameSpace elements in the DbmsToDds and DdsToDbms elements map a Table and Topic circularly. To prevent data-modifications from continuously cascading, modifications made by the service itself should not trigger new updates in the DBMS nor in the DDS.

To distinguish between DBMS updates coming from an application and DBMS updates coming from DDS, an extra database user (the replication user) has to be introduced that differs from the application users. That way, replication of changes that were copied from DDS to Dbms back into DDS is avoided. The replication_user attribute specifies the user name of that replication user. An empty string (default value) indicates that there is no separate replication user.

WARNING: This setting does not avoid replication of changes that were copied from Dbms to DDS back into Dbms. For that purpose, the replication_mode attribute of the DssToDbms or DssToDbms/NameSpace elements should be set appropriately as well!

  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/replication_user
  • Format: string
  • Default value: “”
  • Required: false

11.4.5.16   Mapping

This element specifies a modification to the way that the service handles a pre-configured set of data within the specified NameSpace. Its attributes are used to configure the responsibilities of the service concerning the bridging of data from DBMS to DDS
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/Mapping
  • Occurrences min-max: 0-*
  • Required attributes: table
  • Optional attributes: topic, query, publish_initial_data, force_key_equality, event_table_policy, trigger_policy
11.4.5.16.1   table
This attribute specifies the name of the table where the Mapping applies to.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/Mapping/table
  • Format: string
  • Default value: n/a
  • Required: true
11.4.5.16.2   topic
This attribute specifies an alternative name for the topic that must be associated with the table. By default the topic name is equal to the table name.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/Mapping/topic
  • Format: string
  • Default value: “”
  • Required: false
11.4.5.16.3   query
Optional DBMS query expression. Only DBMS data that matches the query will be bridged to the DDS domain. This is realized by means of a SQL query. The default value is an empty string, representing all available data in the selected table.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/Mapping/query
  • Format: string
  • Default value: “”
  • Required: false
11.4.5.16.4   publish_initial_data
This attribute specifies the behaviour with respect to publishing the initially available data specified in the current Mapping element from DBMS to DDS. If not specified, the value will be inherited from the publish_initial_data of the parent NameSpace element, which if not explicitly specified inherits from the publish_initial_data of the parent DbmsToDds element, which defaults to true. The value of this attribute is ignored when the corresponding event_table_policy is set to NONE.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/Mapping/publish_initial_data
  • Format: boolean
  • Default value: true
  • Required: false
11.4.5.16.5   force_key_equality
This attribute specifies the enforcement of key equality between table and topic definitions. If true, key definitions from the table and topic must match, otherwise key definitions may differ. If not specified, the value will be inherited from the force_key_equality of the parent NameSpace element, which if not explicitly specified defaults to true.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/Mapping/force_key_equality
  • Format: boolean
  • Default value: true
  • Required: false
11.4.5.16.6   event_table_policy

This attribute specifies the event table policy in the current Mapping element. If not specified, the value will be inherited from the event_table_policy of the parent NameSpace element, which if not explicitly specified inherits from the event_table_policy of the parent DbmsToDds element, which defaults to FULL.

An event table (sometimes referred to as ‘change table’ or ‘shadow table’) is a support-table that is slaved to an application-table, adding some status flags that are under the control of a trigger mechanism that responds to creation/modification/ deletion events in the application-table.

The following policies are currently supported:

  • FULL: An ‘event table’ will always be created when the service connects, and will always be deleted when the service disconnects. In this mode, the service will replace the table if it already exists.
  • LAZY: An ‘event table’ will only be created if it is not available when the service connects, and it will not be deleted when the service disconnects.
  • NONE: An ‘event table’ will neither be created nor deleted by the service. For the specified table, the service will poll with a frequency specified in the coresponding update_frequency attribute of the parent NameSpace. It will start using the table as soon as it is available. With this policy set, no initial data will be published regardless of the value of the applicable publish_initial_data attribute.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/Mapping/event_table_policy
  • Format: enumeration
  • Default value: FULL
  • Valid values: FULL, LAZY, NONE
  • Required: false
11.4.5.16.7   trigger_policy

This attribute specifies the trigger policy for the current Mapping element. If not specified, the value will be inherited from the trigger_policy of the parent DbmsToDds element, which if not explicitly specified inherits from the trigger_policy of the parent DbmsToDds element, which defaults to FULL.

Triggers are used to to update the event table in case of creation/modification/ deletion events on the application-table.

The following policies are currently supported:

  • FULL: (default) Triggers will always be created when the service connects, and will always be deleted when the service disconnects. In this mode, the service will replace the triggers if they already exists.
  • LAZY: Triggers will only be created if they are not available when the service connects, and will not be deleted when the service disconnects.
  • NONE: Triggers will neither be created nor deleted by the service. This allows you to build your own custom triggering mechanism.
  • Full path: /DbmsConnectService/DbmsToDds/NameSpace/Mapping/trigger_policy
  • Format: enumeration
  • Default value: FULL
  • Valid values: FULL, LAZY, NONE
  • Required: false

11.5   Tracing

This element controls the amount and type of information that is written into the tracing log file by the DbmsConnect Service. This is useful to track the DbmsConnect Service during application development. In the runtime system it should be turned off.
  • Full path: /DbmsConnectService/Tracing
  • Occurrences min-max: 0-1
  • Child elements: OutputFile, Timestamps, Verbosity

11.5.1   OutputFile

This element specifies where the logging is printed to. Note that “stdout” and “stderr” are considered legal values that represent “standard out” and “standard error” respectively. The default value is an empty string, indicating that all tracing is disabled.
  • Full path: /DbmsConnectService/Tracing/OutputFile
  • Format: string
  • Default value: dbmsconnect.log
  • Occurrences min-max: 0-1

11.5.2   Timestamps

This element specifies whether the logging must contain timestamps.
  • Full path: /DbmsConnectService/Tracing/Timestamps
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 0-1
  • Optional attributes: absolute

11.5.2.1   absolute

This attribute specifies whether the timestamps are absolute or relative to the startup time of the service.
  • Full path: /DbmsConnectService/Tracing/Timestamps/absolute
  • Format: boolean
  • Default value: true
  • Required: false

11.5.3   Verbosity

This element specifies the verbosity level of the logging.
  • Full path: /DbmsConnectService/Tracing/Verbosity
  • Format: enumeration
  • Default value: INFO
  • Valid values: SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST
  • Occurrences min-max: 0-1

12   RnRService

The Record and Replay Service allows to record data from a DDS domain to a storage, and replay data from a storage back into the DDS domain.
  • Full path: /RnRService
  • Occurrences min-max: 0-*
  • Required attributes: name

12.1   name

This attribute identifies a configuration for the Record and Replay Service by name. Multiple service configurations can be specified in one single resource file. The actual applicable configuration is determined by the value of the name attribute, which must match the one specified under the OpenSplice/Domain/Service[@name] in the configuration of the Domain Service.
  • Full path: /RnRService/name
  • Format: string
  • Default value: rnr
  • Required: true

12.2   Watchdog

This element controls the characteristics of the Watchdog thread.
  • Full path: /RnRService/Watchdog
  • Occurrences min-max: 0-1

12.2.1   Scheduling

This element specifies the type of OS scheduling class will be used by the thread that announces its liveliness periodically.
  • Full path: /RnRService/Watchdog/Scheduling
  • Occurrences min-max: 1-1
  • Child elements: Priority, Class

12.2.1.1   Priority

This element specifies the thread priority that will be used by the watchdog thread. Only priorities that are supported by the underlying operating system can be assigned to this element. The user may need special privileges from the underlying operating system to be able to assign some of the privileged priorities.
  • Full path: /RnRService/Watchdog/Scheduling/Priority
  • Format: integer
  • Default value: 0
  • Occurrences min-max: 1-1
  • Optional attributes: priority_kind
12.2.1.1.1   priority_kind
This attribute specifies whether the specified Priority is a relative or absolute priority.
  • Full path: /RnRService/Watchdog/Scheduling/Priority/priority_kind
  • Format: enumeration
  • Default value: Relative
  • Valid values: Relative, Absolute
  • Required: false

12.2.1.2   Class

This element specifies the thread scheduling class that will be used by the watchdog thread. The user may need the appropriate privileges from the underlying operating system to be able to assign some of the privileged scheduling classes.
  • Full path: /RnRService/Watchdog/Scheduling/Class
  • Format: enumeration
  • Default value: Default
  • Valid values: Timeshare, Realtime, Default
  • Occurrences min-max: 1-1

12.3   Storage

This element specifies a storage to use for recording and/or replaying data. Currently the supported storage backends are XML and CDR. Note that storages can also be created, or their properties modified, by Record and Replay configuration-commands. These commands use the same syntax to specify configuration data as the OpenSplice configuration file, so the description given here also applies to commands.
  • Full path: /RnRService/Storage
  • Occurrences min-max: 0-*
  • Required attributes: name

12.3.1   name

The name used to identify the storage in Record and Replay commands.
  • Full path: /RnRService/Storage/name
  • Format: string
  • Default value: default
  • Required: true

12.3.2   rr_storageAttrXML

Attributes describing an XML storage.
  • Full path: /RnRService/Storage/rr_storageAttrXML
  • Occurrences min-max: 0-1
  • Child elements: filename, MaxFileSize

12.3.2.1   filename

The filename template used for files that comprise a storage. The filename may contain a relative or absolute path. If a path is omitted, the storage files are created in the current working directory.
  • Full path: /RnRService/Storage/rr_storageAttrXML/filename
  • Format: string
  • Default value: rnr-storage.dat
  • Occurrences min-max: 1-1

12.3.2.2   MaxFileSize

The maximum size per storage file. When approaching the maximum size while recording, a new storage file is automatically created with a sequence number appended to the filename. The active file is also switched transparently while replaying from a storage that contains multiple data files. The human-readable option lets the user postfix the value with K(ilobyte), M(egabyte) or G(igabtye). For example, 10M results in 10485760 bytes. This element is optional, when omitted or when 0 is configured, the file size is not monitored by the service and limited only by filesystem and/or platform-specific limits.
  • Full path: /RnRService/Storage/rr_storageAttrXML/MaxFileSize
  • Default value: 0
  • Occurrences min-max: 0-1

12.3.3   rr_storageAttrCDR

Attributes describing an CDR storage.
  • Full path: /RnRService/Storage/rr_storageAttrCDR
  • Occurrences min-max: 0-1
  • Child elements: filename, MaxFileSize

12.3.3.1   filename

The filename template used for files that comprise a storage. The filename may contain a relative or absolute path. If a path is omitted, the storage files are created in the current working directory.
  • Full path: /RnRService/Storage/rr_storageAttrCDR/filename
  • Format: string
  • Default value: rnr-storage.dat
  • Occurrences min-max: 1-1

12.3.3.2   MaxFileSize

The maximum size per storage file. When approaching the maximum size while recording, a new storage file is automatically created with a sequence number appended to the filename. The active file is also switched transparently while replaying from a storage that contains multiple data files. The human-readable option lets the user postfix the value with K(ilobyte), M(egabyte) or G(igabtye). For example, 10M results in 10485760 bytes. This element is optional, when omitted or when 0 is configured, the file size is not monitored by the service and limited only by filesystem and/or platform-specific limits.
  • Full path: /RnRService/Storage/rr_storageAttrCDR/MaxFileSize
  • Default value: 0
  • Occurrences min-max: 0-1

12.3.4   Statistics

Maintain and optionally publish statistics for this storage.
  • Full path: /RnRService/Storage/Statistics
  • Occurrences min-max: 0-1
  • Optional attributes: enabled, publish_interval, reset

12.3.4.1   enabled

This attribute specifies if statistics should be maintained for this storage.
  • Full path: /RnRService/Storage/Statistics/enabled
  • Format: boolean
  • Default value: true
  • Occurrences min-max: 1-1
  • Required: false

12.3.4.2   publish_interval

This attribute specifies the publication interval of the statistics belonging to this storage, in a Record and Replay storage-statistics topic. The publish interval is a value in seconds but may also be set to -1. This means the statistics are published when the storage is closed. Note that a value of 0 means statistics are never published.
  • Full path: /RnRService/Storage/Statistics/publish_interval
  • Format: integer
  • Default value: 30
  • Occurrences min-max: 1-1
  • Required: false

12.3.4.3   reset

This attribute allows to reset the current values of statistics belonging to the storage. Note that this only makes sense in a configuration-command for an existing storage, since new storages created from the OpenSplice configuration file always start out with empty statistics.
  • Full path: /RnRService/Storage/Statistics/reset
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1
  • Required: false

12.4   Tracing

This element enables debug output of the R&R service to a logfile.
  • Full path: /RnRService/Tracing
  • Occurrences min-max: 0-1
  • Child elements: OutputFile, AppendToFile, Verbosity, EnableCategory

12.4.1   OutputFile

This option specifies where the logging is printed to. Note that “stdout” is considered a legal value that represents “standard out” and “stderr” is a legal value representing “standard error”.
  • Full path: /RnRService/Tracing/OutputFile
  • Format: string
  • Default value: rnr.log
  • Occurrences min-max: 1-1

12.4.2   AppendToFile

This option specifies whether the output is to be appended to an existing log file. The default is to overwrite the log file if it exists.
  • Full path: /RnRService/Tracing/AppendToFile
  • Format: boolean
  • Default value: false
  • Occurrences min-max: 0-1

12.4.3   Verbosity

This element specifies the verbosity level of the logging information. The higher the level, the more (detailed) information will be logged.
  • Full path: /RnRService/Tracing/Verbosity
  • Format: enumeration
  • Default value: INFO
  • Valid values: SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, NONE
  • Occurrences min-max: 0-1

12.4.4   EnableCategory

This option allows to enable specific logging categories independently of the categories selected by specifiying a verbosity level. Multiple categories, seperated by a comma, can be supplied. The following categories are available:

  • FATAL: Errors that are potentially fatal for the correct operation of the service.
  • ERROR: Non-fatal errors.
  • WARNING: Warnings that indicate for example incorrect or unsupported usage of the service.
  • INFO: Descriptive messages, logged when certain important events occur.
  • CONFIG: Events related to the service configuration.
  • TRACE: Detailed messages describing the behaviour of the service.
  • RECORD: Messages for each recorded sample.
  • REPLAY: Messages for each replayed sample.
  • Full path: /RnRService/Tracing/EnableCategory
  • Format: string
  • Occurrences min-max: 0-1

Table Of Contents

Previous topic

Introduction

This Page