How to config TRANSPORT_UNICAST QoS for DataWriter or DataReader?

3 posts / 0 new
Last post
ykyqx1985's picture
Offline
Last seen: 5 years 4 months ago
Joined: 01/31/2018
Posts: 3
How to config TRANSPORT_UNICAST QoS for DataWriter or DataReader?

I want to use TRANSPORT_UNICAST QoS,  I use rtiddsgen tool to make a simple demo, then just add this QoS to the USER_QOS_PROFILES.xml as follow:

QoS configuration

after config qos, I run the Program,then DDS show some error message:

error message

now I want to know what's wrong with that configuration? or should I config some other QoS to keep consistent with TRANSPORT_UNICAST QoS? 

 

Thanks!

Organization:
Gerardo Pardo's picture
Offline
Last seen: 1 month 2 weeks ago
Joined: 06/02/2010
Posts: 601

Hi,

The error messages indicate that the middleware is not able to find the transport you specified. This is because it is looking for a transport called builtin.udpv4://192.168.0.1 which is not known by the middleware. The reason is that the <transports>element should contain only the name of the transport (transport aliases), that is either a built-in one or one you have registered with the middleware. These "aliases" just select transport names, not the actual IP addresses/interfaces to use. For the case of the builtin UDPv4 transports it should be something like:

<unicast> 
  <value> 
    <element> 
        <receive_port>25452</receive_port> 
        <transports> 
            <element>builtin.udpv4</element> 
        </transports> 
     </element> 
  </value> 
</unicast> 

I there a reason you are trying to limit the DataReader to only use the 192.168.0.1 interface? This is not needed in general and leaving it unspecified will make the application more portable.

I do not think we currently have a way to restrict the interface used by a specific DataReader. What we do provide is a way to restrict the interfaces used by the whole domain participant which will impact all the DataReader entities created by the DomainParticipant. 

To restrict the interfaces used by the whole DomainParticipant you can use the DomainParticipant properties "dds.transport.UDPv4.builtin.parent.allow_interfaces_list" and/or "dds.transport.UDPv4.builtin.parent.deny_interfaces_list". There are examples of this in knowledge base: https://community.rti.com/forum-topic/how-do-i-configure-dds-work-multiple-network-interfaces and https://community.rti.com/kb/how-do-i-restrict-rti-connext-use-only-subset-interfaces

 Gerardo

ykyqx1985's picture
Offline
Last seen: 5 years 4 months ago
Joined: 01/31/2018
Posts: 3

Many thanks Gerardo!  I think I made a stupid mistake...

I have read the other two links you give and I know how to configure my QoS file.

thanks again.