Using default domain announcements to find participants on different domains

 

RTI Connext DDS uses a special discovery mechanism that allows RTI Tools such as Admin Console to find participants on different domains. The messages that make this possible are called default domain announcements.

RTI Connext provides a couple of QoS settings that allow this special discovery mechanism to be configured.

 

default_domain_announcement_period

There is a property in DDS_DiscoveryConfigQosPolicy named default_domain_announcement_period. At intervals of this period, the participant will send out a participant announcement to the default multicast address and port for domain 0 (239.255.0.1:7400). This is a non-standard message with a UDP data payload that starts with a magic string of “RTPX” instead of “RTPS”, but the payload is otherwise the same as participant built-in topic data.

Example: Wireshark captures of a participant on Domain 1 sending out an RTPX default domain announcement (on the left) and a normal participant announcement (on the right).
Example: Wireshark captures of a participant on Domain 1 sending out an RTPX default domain announcement (on the left) and a normal participant announcement (on the right).

These announcements can be disabled by setting an infinite period. The default period is 30 seconds. They are also disabled when UDPv4 is disabled as a transport at the participant or discovery level of the QoS.

<!-- Turning off default domain announcements in XML QoS -->
<participant_qos>
   <discovery_config>
      <default_domain_announcement_period>
         <sec>DURATION_INFINITE_SEC</sec>
         <nanosec>DURATION_INFINITE_NSEC</nanosec>
      </default_domain_announcement_period> 
   </discovery_config>
</participant_qos>

 

ignore_default_domain_announcements

If the ignore_default_domain_announcements property in DDS_DiscoveryConfigQosPolicy is set to “false”, an application on domain 0 using the default multicast address and port mapping for discovery will be able to process default domain announcement messages. This would be useful for applications that need to dynamically join domains as they are discovered at runtime. The application would be able to read the “domain_id” field in the DDS_ParticipantBuiltinTopicData structure and create a new participant on that domain. This is similar to how RTI Admin Console operates when “Automatically discover and join domains” is enabled.

The default value for the ignore_default_domain_announcements property is “true”. The following snippet shows how to set it to "false" in a QoS XML file.

<!-- Enable receipt of default domain announcements in XML QoS -->
<participant_qos>
   <discovery_config>          
      <ignore_default_domain_announcements>false</ignore_default_domain_announcements>
   </discovery_config>
</participant_qos>