Don't Fragment (DF) bit in real time UDP on XPC
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dear all,
Is there a way to unset the Don't Fragment (DF) bit in the header of UDP packets sent using an XPC target running the real time UDP send block?
To give you a description of my problem:
I have a device that is controlled over UDP. I'd like to control this device using a desktop running XPC target, which has a dedicated network card (Intel 82558) for real time UDP.
To test my device I made a simple Simulink model (non real time) and used it to send some UDP packets from my laptop to the device, without the XPC desktop involved. This works fine, and I can control the device.
But if I send the exact same packets from the XPC using real time UDP, nothing happens. I used Wireshark to compare the packets coming from my pc and from the XPC, and the data is exactly the same. However, I noticed that the packets coming from the XPC have the Don't Fragment (DF) bit set in their header, while this is not the case for packets coming from my laptop.
I suspect that my device needs fragmentation to handle the packets, and therefore drops packets if the DF bit is set.
Is there any way to make sure the DF bit is not set for packets coming from the XPC?
Best,
Mark
3 comentarios
Walter Roberson
el 8 de Abr. de 2014
If the packet fits within the MTU, then according to the standards, setting DF is not an error. Setting DF on a call is a technique used in some operating systems to force the packet to not be buffered, which connects to the fact that UDP can be used in Socket mode or in Stream mode.
It is possible that the device's stack does not handle the DF bit properly.
I do not know if the DF bit is configurable in XPC.
Respuestas (1)
Suneesh
el 8 de Abr. de 2014
It is not possible to UN-set the DF flag for packets that are sent from a target using real-time UDP blocks. The blocks are designed this way due to the real-time UDP protocol stack in the target currently not supporting fragmented packets. So if the target is unable to send fragmented IP packets the "do not fragment" flag should always be set.
I tested using the (non real-time UDP) packets in the xPC Target library. They behave similarly, except that when run on the host they can cause fragmentation since the Windows (host OS) drivers are used. DId you not use these blocks? If you did then as long as the data is accommodated within the max MTU size (1512) of the Ethernet packets, the DF bit would still be set. Only when the pack size exceeds this, will the DF flag be unset since the data will be fragmented and sent out.
6 comentarios
Suneesh
el 14 de Abr. de 2014
The "Flags" parameter on the IP Init block does not have anything to do with the DF flag. It sets other flags that are used internally, such as disabling ICMP etc.
Ver también
Categorías
Más información sobre Development Computer Setup en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!