[14652] Incorrect UDP receiver buffers size when configuring UDPv4TransportDescriptor::maxMessageSize #2691
Replies: 2 comments 1 reply
-
@ma30002000 Currently, as stated in the documentation, Member We could have different members on the transport descriptor for incoming and outgoing messages in the future. That's why I marked this as an enhancement. In the mean time, you could use the Chaining of transports feature as a workaround. |
Beta Was this translation helpful? Give feedback.
-
I have moved this issue to the proper discussion forum. According to our CONTRIBUTING guidelines enhancements are to be tracked and discussed in the Ideas forum, leaving the Issues as proper bug reports. Thanks @ma30002000 for your contribution! |
Beta Was this translation helpful? Give feedback.
-
Is there an already existing issue for this?
Expected behavior
Receive complete DDS messages sent over UDP.
Current behavior
Received DDS messages get truncated if they are larger than maxMessageSize.
Steps to reproduce
Configure maxMessageSize < 64 kb. Try to receive messages from an endpoint that has a larger maxMessageSize configured.
Fast DDS version/commit
all
Platform/Architecture
Other. Please specify in Additional context section.
Transport layer
UDPv4
Additional context
Per default, UDP transport of FastDDS sends UDP packets up to 64kb of data, which get
fragmented at the IP layer when they do no fit the MTU of a network interface.
When changing the maximum message size to a lower value (in my case because of having
issues with broken network devices dropping certain types of fragmented IP packets),
data fom endpoints transmitting larger messages can apparently no longer be received.
The issue seems to be located in UDPTransportInterface.h:
This code will lead to the UDP receive buffer being as large as the larges message size
that is supposed to be sent, which is obviously too small to contain a larger message
sent by a differently configured endpoint. The message will thus get truncated and dropped
due to inconsisten length fields.
My proposal ist to change the code mentioned above to
Not only does it fix the mentioned issue but also makes more sense vocabulary-wise...
XML configuration file
No response
Relevant log output
No response
Network traffic capture
No response
Beta Was this translation helpful? Give feedback.
All reactions