How to Identify Participants with Different message_size_max Settings
The message_size_max field in RTI Connext DDS specifies the maximum size of a message, in bytes, that can be sent or received by a transport plugin in the DomainParticipant. This property is crucial for configuring the transport layer to handle messages of varying sizes efficiently.
Having DomainParticipants with an inconsistent message_size_max transport configuration can lead to any of the following issues:
- Discovery issues: If the message_size_max is set too low, it might not accommodate the size of built-in topic data that is sent from other DomainParticipants with a higher message_size_max, which may prevent discovery from completing.
- Data Loss: Out-of-the-box if a DomainParticipant sends a message larger than the message_size_max of the receiving DomainParticipant, the latter won’t be able to process it.
- Configuration Complexity: Managing different message_size_max settings across DomainParticipants can increase the complexity of the system configuration, making it more prone to errors and harder to maintain.
To reduce the risk of having an inconsistent message_size_max configuration, if a DomainParticipant discovers another DomainParticipant that has a different message_size_max configuration, it will print the following log message with WARNING verbosity:
[0x01016E70,0x94B11CD7,0x58A76B96:0x000100C7{E=DR,I=21}|RECEIVE FROM 0x00000000,0x00000000,0x00000000:0x000100C2] PRESParticipant_checkTransportInfoMatching:Warning: the message_size_max, 1450, for udpv4, of the remote participant (key: 101e867,c73db445,b594efd1), does not match the message_size_max, 65507, of the local participant (key: 1016e70,94b11cd7,58a76b96). Will lose RTPS packets with size > 1450
This will help you identify the GUID of the DomainParticipants that have an inconsistent message_size_max configuration.
In addition to DDS logs, you can find out the message_size_max configuration of the transports a DomainParticipant has enabled, and the applications where those DomainParticipants are running using different tools and utilities:
Using RTI Admin Console
With RTI Admin Console you can inspect the message_size_max configuration of a DomainParticipant for each of its enabled transports. You can check it when selecting a DomainParticipant within the “DDS QoS” view and then “transport_info” QoS. Here you have an example for UDPv4:
Also within the “DDS QoS” view you can inspect the dds.sys_info.hostname, dds.sys_info.executable_filepath, and dds.sys_info.process_id System Properties to get the hostname, the executable path, and the process’ PID where the DomainParticipant is running.
Using Wireshark
DomainParticipants propagate the message_size_max of their enabled transports on the wire as part of the DATA(p) rtps packets in Wireshark.
You can capture rtps traffic and then use a Wireshark filter to display the DATA(p) packets of DomainParticipants that have a particular message_size_max configuration. For example, to filter DomainParticipants with a message_size_max set to 1450, you can use the following filter:
rtps.transportInfo.messageSizeMax == 1450
Then within the DATA(p) you can inspect the message_size_max as part of the PID_TRANSPORT_INFO_LIST:
You can also get the dds.sys_info.hostname, dds.sys_info.executable_filepath, and dds.sys_info.process_id within the PID_PROPERTY_LIST:
With this information you can locate the DomainParticipants in your DDS system.