Error with multicast using FlatData and Zero Copy

4 posts / 0 new
Last post
Offline
Last seen: 3 days 5 hours ago
Joined: 07/22/2019
Posts: 8
Error with multicast using FlatData and Zero Copy

I'm sending images using a docker. I created a publisher and subscriber which sends a simple image. And I want to use the recording service to log info from this images. 

I created this xml, based on the example in the RTI_RecordingService_UsersManual.pdf page 27.

 

<?xml version="1.0" encoding="UTF-8"?>

 

 

 

<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://community.rti.com/schema/6.0.0/rti_recording_service.xsd">

<types>
     <include file="image.xml"/>
</types>

 

 

 

<qos_library name="MyQosLib">
    <qos_profile name="ShmemOnly">
         <participant_qos>
             <discovery>
                  <initial_peers>
                      <element>shmem://</element>
                  </initial_peers>
             </discovery>
             <transport_builtin>
                 <mask>SHMEM</mask>
             </transport_builtin>
         </participant_qos>
    </qos_profile>
</qos_library>

 

 

 

<!-- The name of the library, and the function used to create an instance
of the StorageWriter --> 
<plugin_library name="ImageStorageLibrary">
<storage_plugin name="ImageStoragePlugin">
<dll>ImageStorageWriterCpp</dll>
<create_function>ImageStorageWriter_get_storage_writer</create_function>
</storage_plugin>
</plugin_library>

<!-- A definition of a Recording Service instance to run that
loads a library written in C -->
<recording_service name="ImageFileWriter">
<!-- Storage properties. These are passed to the plugin in the 
plugin_library -->
<storage>
<plugin plugin_name="ImageStorageLibrary::ImageStoragePlugin">
<property>
<value>
<element>
<name>pcore.image_storage_writer.filename</name>
<value>Image_PluggableStorage.dat</value>
<propagate>1</propagate>
</element>
</value>
</property>
</plugin>
</storage>
<!-- Domain Participant, by default in domain 0. Use the 
-domainIdBase command-line parameter to adjust -->
<domain_participant name="Domain0">
<domain_id>0</domain_id>
<participant_qos base_name="MyQosLib::ShmemOnly"/>
<register_type name="ImageTopic" type_ref="Images::Image"/>
</domain_participant>

 

 

 

<session name="Session">
<!-- Use only the topic and type this example expects -->
<topic name="Images_Image" participant_ref="Domain0">
<registered_type_name>Images::Image</registered_type_name>
</topic>
</session>
</recording_service>
</dds>

 

When I  run the recording service I get this error: 

 

$ /opt/rti_connext_dds-6.0.0/bin/rtirecordingservice -cfgFile pluggable_storage_image.xml -cfgName ImageFileWriter -domainIdBase 41 -verbosity 4
[/recording_services/ImageFileWriter|CREATE]
[/recording_services/ImageFileWriter|CREATE] product='RTI Recording Service', version=6.0.0.0, config_name=ImageFileWriter, app_name='', arch=x64Linux2.6gcc4.4.5, build=NDDSC_BUILD_6.0.0.0_20190301T054126Z_RTI_REL, user='Lavy.David', host='L4DLAVYLINUX', process_id=7342
[/recording_services/ImageFileWriter|CREATE] load file='/opt/rti_connext_dds-6.0.0/resource/xml/RTI_RECORDING_SERVICE.xml'
[/recording_services/ImageFileWriter|CREATE] load_default_files:file USER_RECORDING_SERVICE.xml not found
[/recording_services/ImageFileWriter|CREATE] load file='pluggable_storage_image.xml'
[/recording_services/ImageFileWriter|CREATE] load configuration from string
[/recording_services/ImageFileWriter|CREATE] configuration detected as version=6.0.0.0
RTI Recording Service (Recorder) 6.0.0 starting...
[/recording_services/ImageFileWriter|START]
[/recording_services/ImageFileWriter|START] start:service started at 16:44:50
[/recording_services/ImageFileWriter|START|/domain_participants/Domain0|CREATE]
[/recording_services/ImageFileWriter|START|/storage|CREATE]
[/recording_services/ImageFileWriter|START|/sessions/Session|CREATE]
[/recording_services/ImageFileWriter|START|/sessions/Session|CREATE|/topics/Images_Image|CREATE]
[/recording_services/ImageFileWriter|START] got type with registered_name=DDS_ParticipantBuiltinTopicData, stream=DCPSParticipant, source_connection=<unknown>
[/recording_services/ImageFileWriter|START] got type with registered_name=DDS_ParticipantBuiltinTopicData, stream=DCPSParticipant, source_connection=<unknown>
[/recording_services/ImageFileWriter|START] load plugin name=rti.routingservice.RoutingProcessor, version=6.0.0, library=
[/recording_services/ImageFileWriter|START] got type with registered_name=DDS_PublicationBuiltinTopicData, stream=DCPSPublication, source_connection=<unknown>
[/recording_services/ImageFileWriter|START] got type with registered_name=DDS_PublicationBuiltinTopicData, stream=DCPSPublication, source_connection=<unknown>
[/recording_services/ImageFileWriter|START] got type with registered_name=DDS_SubscriptionBuiltinTopicData, stream=DCPSSubscription, source_connection=<unknown>
[/recording_services/ImageFileWriter|START] got type with registered_name=DDS_SubscriptionBuiltinTopicData, stream=DCPSSubscription, source_connection=<unknown>
[/recording_services/ImageFileWriter|START] registered XML type with name=ImageTopic
[/recording_services/ImageFileWriter|START|D0041|ENABLE] DDS_DiscoveryQosPolicy_to_multicast_locators:no multicast locators for: multicast address = "239.255.0.1", transports = "", enabled_transports = ""
[/recording_services/ImageFileWriter|START|D0041|ENABLE] DDS_DomainParticipantDiscovery_add_peer:no peer locators for: peer descriptor(s) = "builtin.udpv4://239.255.0.1", transports = "", enabled_transports = ""
[/recording_services/ImageFileWriter|START|D0041|ENABLE] DDS_DomainParticipantDiscovery_add_peer:no peer locators for: peer descriptor(s) = "4@builtin.udpv4://127.0.0.1", transports = "", enabled_transports = ""
COMMENDBeWriterService_assertRemoteReader:Discovered remote reader with GUID 0X101441C,0X903ABBC4,0X67C866A8,0X200C7 using a non-addressable multicast locator.
This can occur if multicast is not enabled in the local participant.
See https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean for additional info.
can't reach: locator: udpv4://239.255.0.1:17650
COMMENDBeWriterService_assertRemoteReader:Discovered remote reader with GUID 0X101441C,0X903ABBC4,0X67C866A8,0X200C7 using a non-addressable locator.
This can occur if the transport is not installed and/or enabled in the local participant.
See https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean for additional info.
can't reach: locator: udpv4://10.30.42.124:17660
can't reach: locator: udpv4://10.30.41.150:17660
COMMENDSrWriterService_assertRemoteReader:Discovered remote reader with GUID 0X101441C,0X903ABBC4,0X67C866A8,0X20087 using a non-addressable multicast locator.
This can occur if multicast is not enabled in the local participant.
See https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean for additional info.
can't reach: locator: udpv4://239.255.0.1:17650
COMMENDSrWriterService_assertRemoteReader:Discovered remote reader with GUID 0X101441C,0X903ABBC4,0X67C866A8,0X20087 using a non-addressable locator.
This can occur if the transport is not installed and/or enabled in the local participant.
See https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean for additional info.
can't reach: locator: udpv4://10.30.42.124:17660
can't reach: locator: udpv4://10.30.41.150:17660
COMMENDSrWriterService_assertRemoteReader:Discovered remote reader with GUID 0X101441C,0X903ABBC4,0X67C866A8,0X4C7 using a non-addressable multicast locator.
This can occur if multicast is not enabled in the local participant.
See https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean for additional info.
can't reach: locator: udpv4://239.255.0.1:17650
COMMENDSrWriterService_assertRemoteReader:Discovered remote reader with GUID 0X101441C,0X903ABBC4,0X67C866A8,0X4C7 using a non-addressable locator.
This can occur if the transport is not installed and/or enabled in the local participant.
See https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean for additional info.
can't reach: locator: udpv4://10.30.42.124:17660
can't reach: locator: udpv4://10.30.41.150:17660
COMMENDSrWriterService_assertRemoteReader:Discovered remote reader with GUID 0X101441C,0X903ABBC4,0X67C866A8,0X3C7 using a non-addressable multicast locator.
This can occur if multicast is not enabled in the local participant.
See https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean for additional info.
can't reach: locator: udpv4://239.255.0.1:17650
COMMENDSrWriterService_assertRemoteReader:Discovered remote reader with GUID 0X101441C,0X903ABBC4,0X67C866A8,0X3C7 using a non-addressable locator.
This can occur if the transport is not installed and/or enabled in the local participant.
See https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean for additional info.
can't reach: locator: udpv4://10.30.42.124:17660
can't reach: locator: udpv4://10.30.41.150:17660
[/recording_services/ImageFileWriter|START] registered XML type with name=ImageTopic
[/recording_services/ImageFileWriter|START|/sessions/Session|ENABLE]
[/recording_services/ImageFileWriter|START|/sessions/Session|START]
[/recording_services/ImageFileWriter|START|/sessions/Session|START|/topics/Images_Image|ENABLE]
RTI Recording Service started
DISCBuiltin_deserializeTypeObjectLb:!TypeObject serializedSize exceeds DDS_DomainParticipantResourceLimitsQosPolicy's type_object_max_serialized_length
DISCBuiltinTopicSubscriptionDataPlugin_deserializeParameterValue:Problems receiving type object information. Check type_object_max_deserialized_length parameter in <domainQos>.resource_limits
DISCBuiltin_deserializeTypeObjectLb:!TypeObject serializedSize exceeds DDS_DomainParticipantResourceLimitsQosPolicy's type_object_max_serialized_length
DISCBuiltinTopicSubscriptionDataPlugin_deserializeParameterValue:Problems receiving type object information. Check type_object_max_deserialized_length parameter in <domainQos>.resource_limits
ROUTERDdsDiscovery_assertDiscoveredEntity:TypeCode not available for type name=RTI::Service::Monitoring::Config
ROUTERDdsDiscovery_assertDiscoveredEntity:TypeCode not available for type name=RTI::Service::Monitoring::Periodic
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/distlog] type_name=com::rti::dl::LogMessage
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/distlog/administration/state] type_name=com::rti::dl::admin::State
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/distlog/administration/command_response] type_name=com::rti::dl::admin::CommandResponse
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/service/monitoring/config] type_name=RTI::Service::Monitoring::Config
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/service/monitoring/config] ROUTERConnection_assertDiscoveredStream:Discovered stream with unknown representation for type=RTI::Service::Monitoring::Config
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/service/monitoring/event] type_name=RTI::Service::Monitoring::Event
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/service/monitoring/periodic] type_name=RTI::Service::Monitoring::Periodic
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/service/monitoring/periodic] ROUTERConnection_assertDiscoveredStream:Discovered stream with unknown representation for type=RTI::Service::Monitoring::Periodic
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/administration/command_response] type_name=RTI::RoutingService::Administration::CommandResponse
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/routing_service_data] type_name=RTI::RoutingService::Monitoring::RoutingServiceData
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/domain_route_data] type_name=RTI::RoutingService::Monitoring::DomainRouteData
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/session_data] type_name=RTI::RoutingService::Monitoring::SessionData
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/route_data] type_name=RTI::RoutingService::Monitoring::RouteData
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/auto_route_data] type_name=RTI::RoutingService::Monitoring::AutoRouteData
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/routing_service_status_set] type_name=RTI::RoutingService::Monitoring::RoutingServiceStatusSet
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/domain_route_status_set] type_name=RTI::RoutingService::Monitoring::DomainRouteStatusSet
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/session_status_set] type_name=RTI::RoutingService::Monitoring::SessionStatusSet
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/route_status_set] type_name=RTI::RoutingService::Monitoring::RouteStatusSet
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/monitoring/auto_route_status_set] type_name=RTI::RoutingService::Monitoring::AutoRouteStatusSet
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/recorder/administration/command_response] type_name=RTI::RecordingService::Administration
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/replay/administration/command_response] type_name=RTI::PlaybackService::Administration::CommandResponse
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/persistence_service/administration/command_response] type_name=RTI::PersistenceService::Administration::CommandResponse
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/service/admin/command_reply] type_name=RTI::Service::Admin::CommandReply
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/distlog/administration/command_request] type_name=com::rti::dl::admin::CommandRequest
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/routing_service/administration/command_request] type_name=RTI::RoutingService::Administration::CommandRequest
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/recorder/administration/command_request] type_name=RTI::RecordingService::Administration
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/replay/administration/command_request] type_name=RTI::PlaybackService::Administration::CommandRequest
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/persistence_service/administration/command_request] type_name=RTI::PersistenceService::Administration::CommandRequest
[/recording_services/ImageFileWriter/domain_participants/Domain0|STREAM_DISCOVERED name=rti/service/admin/command_request] type_name=RTI::Service::Admin::CommandRequest

 

I looked at the issue listed https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean and it looks a multicast issue. I don't know much knowledge about multicast where I have to enable UDPv4 in my recording service (?). 

Any help is appreciated. 

 

Thanks! 

 

harish's picture
Offline
Last seen: 2 weeks 4 days ago
Joined: 09/17/2014
Posts: 11

Hi David,

While running DDS applications with docker containers using shared memory, a few additional configurations in the docker container and the DDS applications are needed. This information is provided in the following community article - Communicate two Docker containers using RTI Connext DDS and shared memory. Let us know if you continue to face difficulty after making the requested changes.

Regards

Harish

 

Offline
Last seen: 3 days 5 hours ago
Joined: 07/22/2019
Posts: 8

Hi harish, 

After careful inspection, I found out that I don't need to communicate the logger and the publisher/subscriber from 2 different machines (one being the docker). I moved the logger to the same docker where the publisher/subscriber are running. Since now all apps are running from the same host I expected to have my original xml file works just fine. However I am getting the exact same error as before when I was running two machines, which I don't understand. I believe with my new configuration I don't need to use the article you referred to, is there something I am missing? 

harish's picture
Offline
Last seen: 2 weeks 4 days ago
Joined: 09/17/2014
Posts: 11

Hi David,

Yes you are correct. If all applications are run from the same docker container, then additional configurations are not needed. The error messages which you observe indicate that the entities used by recording service is trying to communicate with other entities(potentially user app) with transport the recording service doesnt have such as udp and multicast. Can you check if your publisher and subscriber application uses only shared memory transport? The participant QoS should be similar to the participant_qos used by recording service.

   <participant_qos>
             <discovery>
                  <initial_peers>
                      <element>shmem://</element>
                  </initial_peers>
             </discovery>
             <transport_builtin>
                 <mask>SHMEM</mask>
             </transport_builtin>
         </participant_qos>  

Regards

Harish