9. The NetworkingBridge Service¶
The OpenSplice NetworkingBridge is a pluggable service that allows bridging of data between networking services. This section gives an overview of the features of the NetworkingBridge.
The configuration parameters that control the behaviour of the NetworkingBridge are described in the Configuration section.
9.1. Background¶
When a networking service is selected that best suits a specific deployment,
sometimes a part of the data needs to be obtained from or disclosed to a system that
is using a different kind of networking service. The NetworkingBridge allows
DCPSPublications
and DCPSSubscriptions
to be matched and the related
data forwarded between a RTNetworking system and a DDSI2 system and vice
versa.
The NetworkingBridge employs a fast path in the OpenSplice kernel by directly connecting the network queues of the bridged services. This also allows full end-to-end flow control mechanisms to be realised across the bridge. Which publications/subscriptions are bridged can be controlled by means of white- and black-lists.
The NetworkingBridge relies on the discovery of publications and subscriptions by
the common means for the networking services. This means that it relies on the real
transient topics, aligned by the Durability service, for the RTNetworking part of the
bridge. For the part that connects to DDSI2 the native DDSI2 discovery of
end-points is used. In order for DDSI2 to only advertise bridged publications and
subscriptions, the LocalDiscoveryPartition
used for regular discovery should
be set to a non-existent partition, as can be seen in the following example. This
discovery takes some time and can introduce a short delay before data is bridged.
9.2. Example Configuration¶
In order to properly configure the NetworkingBridge for bridging data between RTNetworking and DDSI2, both networking services (and the Durability service for the alignment of the builtin topics of the RTNetworking side) have to be configured. Filtering is also configured with the NetworkingBridge.
An example configuration file for bridging of all data (excluding Topic MyLocalTopic) in partition BridgedPartition is shown below.
<OpenSplice>
<Domain>
<Name>NetworkingBridgeExample</Name>
<Id>0</Id>
<Service name="networking">
<Command>networking</Command>
</Service>
<Service name="ddsi2e">
<Command>ddsi2e</Command>
</Service>
<Service name="nwbridge">
<Command>nwbridge</Command>
</Service>
<Service name="durability">
<Command>durability</Command>
</Service>
</Domain>
<NetworkService name="networking">
<Partitioning>
<GlobalPartition Address="broadcast"/>
</Partitioning>
<Channels>
<Channel default="true" enabled="true" name="BestEffort" reliable="false">
<PortNr>54400</PortNr>
</Channel>
<Channel enabled="true" name="Reliable" reliable="true">
<PortNr>54410</PortNr>
</Channel>
</Channels>
<Discovery enabled="true">
<PortNr>54420</PortNr>
</Discovery>
</NetworkService>
<DDSI2EService name="ddsi2e">
<Discovery>
<LocalDiscoveryPartition>ThisIsNotAPartition</LocalDiscoveryPartition>
</Discovery>
</DDSI2EService>
<NetworkingBridgeService name="nwbridge">
<Include>
<!-- Multiple entries can be added here with DCPSPartitionTopic expressions
on what to include -->
<Entry DCPSPartitionTopic="BridgedPartition.*"/>
</Include>
<Exclude>
<!-- Multiple entries can be added here with DCPSPartitionTopic expressions
on what to exclude.
If a DCPSPublication or DCPSSubscription matches both the include- and
exclude expressions it will be excluded. -->
<Entry DCPSPartitionTopic="*.MyLocalTopic"/>
</Exclude>
</NetworkingBridgeService>
<DurabilityService name="durability">
<Network>
<Alignment>
<TimeAlignment>FALSE</TimeAlignment>
<RequestCombinePeriod>
<Initial>2.5</Initial>
<Operational>0.1</Operational>
</RequestCombinePeriod>
</Alignment>
<WaitForAttachment maxWaitCount="10">
<ServiceName>networking</ServiceName>
<ServiceName>ddsi2e</ServiceName>
</WaitForAttachment>
</Network>
<NameSpaces>
<NameSpace name="defaultNamespace">
<Partition>*</Partition>
</NameSpace>
<Policy nameSpace="defaultNamespace" durability="Durable"
alignee="Initial" aligner="True"/>
</NameSpaces>
</DurabilityService>
<Description>Federated deployment for extending an RTNetworking-based
domain into a DDSI network.</Description>
</OpenSplice>