Using your own QoS profile in RTI Admin Console

RTI Admin Console uses several non-default QoS settings when interacting with Topics that are used to communicate with other RTI products. The out-of-the-box settings attempt to satisfy the majority of use cases customers have with other configurations, but sometimes it is necessary to change these QoS settings. Common use cases for adding a custom QoS profile include disabling multicast support or using a non-default transport such as TCP.

Admin Console also makes use of some less-frequently-used QoS settings (such as ignore_default_domain_announcements) in order to implement certain features.

As a result, simply replacing the QoS settings that ship with Admin Console can lead to unexpected behavior such as auto-join or remote administration not working. This article walks you through using your own QoS settings while preserving the functionality of Admin Console.

Let's start by reviewing the different use cases of custom QoS profiles. There are two possible ways we can use a custom QoS profile in Admin Console:

  • Administration: this scenario represents the main view used to join domains, perform discovery, and administer RTI products (such as RTI Routing Service).
  • Data Visualization: this scenario is only present when subscribing to Topics and displaying data.

In order to correctly use your custom QoS profile in Admin Console, we may need to modify it a bit depending on the goal.

The first step is to open the RTI_ADMIN_CONSOLE_EXAMPLE_PROFILE.xml file that is located in the installation directory ($NDDSHOME/resource/xml/).

NOTE: Prior to 6.1: The file is called admin_console_example_profiles.xml

This file contains three profiles with all the configuration settings used by Admin Console. From this file, copy ExampleAdminConsole::BaseProfile and ExampleAdminConsole::Default profiles to your custom XML file. Be sure to put the profiles ahead of other profiles in your file since we’ll be referencing them. Copy only the profiles themselves and not the ExampleAdminConsole library. Even though the RTI_ADMIN_CONSOLE_EXAMPLE_PROFILE.xml file is not used by Admin Console itself, it is not recommended to modify it since there is no other way of recovering it apart from reinstalling Connext DDS

NOTE: Prior to 6.1: you should copy the ExampleAdministration profile (instead of BaseProfile and Default) and do the same following steps as if it were the Default profile. 

 

<qos_library name="MyLibrary">
        <!-- Insert BaseProfile and Default above your profile -->
        <qos_profile name="BaseProfile">
             ...
        </qos_profile>

        <qos_profile name="Default" 
                base_name="MyLibrary::BaseProfile">
              ...
        </qos_profile> 

        <qos_profile name="MyProfile">
             ...
        </qos_profile>
</qos_library> 

Important

If your profile defines any datareader_qos or datawriter_qos settings, make sure to add a topic_filter to them so that they are only used in your topic of interest. Otherwise, your profile will override all the configuration defined in Default profile for RTI’s internal topics, causing lots of errors when loading the profile. More info about topic_filter here.

Next, make your custom profile inherit from the Default profile. There are two possible scenarios depending on your profile:

Your profile does NOT inherit from any other profile:

In this case you would only add the base_name="MyLibrary::Default" to your profile.

<qos_library name="MyLibrary">
        <!-- Insert BaseProfile and Default above your profile -->
        <qos_profile name="BaseProfile">
             ...
        </qos_profile>   
 
        <qos_profile name="Default" 
                base_name="MyLibrary::BaseProfile">
             ... 
        </qos_profile>  
  
        <qos_profile name="MyProfile"
                base_name="MyLibrary::Default"> 
             ...   
        </qos_profile>
</qos_library> 

This is how your profiles should look like: 

Profile inherits from Default that inherits from BaseProfile

Your profile DOES inherit from another profile:

  1. Add base_name="another_profile" to the BaseProfile profile.
    <qos_library name="MyLibrary">
            <!-- Insert BaseProfile and Default above your profile -->
            <qos_profile name="BaseProfile"
                    base_name="another_profile">
    
                 ...     
            </qos_profile> 
    
            <qos_profile name="Default"
                    base_name="MyLibrary::BaseProfile"> 
                 ...
            </qos_profile> 
     
            <qos_profile name="MyProfile"
                    base_name="another_profile"> 
                 ...
            </qos_profile> 
    </qos_library> 
    
     
  2. Change the base_name="MyLibrary::Default" of your profile.
    <qos_library name="MyLibrary">
            <!-- Insert BaseProfile and Default above your profile --> 
            <qos_profile name="BaseProfile"
                    base_name="another_profile">
                 ...
            </qos_profile>   
    
    
            <qos_profile name="Default"
                    base_name="MyLibrary::BaseProfile"> 
                 ...   
            </qos_profile>
    
            <qos_profile name="MyProfile"
                    base_name="MyLibrary::Default">
                  ... 
            </qos_profile>
    </qos_library>

This is how your profiles should look like:

Profile inheritance

Adding the custom profile to Admin Console

Open the Admin Console preferences to add your custom QoS file. If you want to use this profile for already-joined domains, click on the “Apply to currently joined domains” button. This profile will be used for administrative purposes, such as discovering participants to show them in a graph. If you want to use your profile to subscribe to a DataReader, add it to the Data Visualization profile as explained below.

Admin Console will now be able to discover other applications/DomainParticipants using your provided QoS profile.

Using your custom profile for Data Visualization

Changes to your profile are not needed if you already have followed the steps above.

NOTE: Prior to 6.1:

To provide a profile to be used for Data Visualization, change your profile similarly to how you did  for Administration above. From admin_console_example_profiles.xml, copy the ExampleAdministration and ExampleDataVisualization profiles to your custom file. This time, change the base name library to match your file’s library:

<qos_profile name="ExampleDataVisualization">
  <participant_qos base_name="MyLibrary::ExampleAdministration"> 
    ...
  </participant_qos>
    ...  
</qos_profile>

The rest of the steps for modifying your profile are the same asfor the Administration profile, depending on whether your profile inherits from another profile. This time, instead of your custom profile (MyProfile) inheriting from "MyLibrary::ExampleAdministration", it should inherit from "MyLibrary::ExampleDataVisualization". Add your custom profile to the Admin Console preferences  the same way as explained above.

Once all the changes have been made, subscribe to a Topic and click “Advanced Settings”.

In the Create Subscription window that appears, select your custom QoS profile to be used for the subscription. 

Now Admin Console will subscribe to the Topic with your provided QoS profile.