barchart-udt
barchart-udt copied to clipboard
ip no_fragment flag
We ran into problems with UDT Stream connections from a private network towards a public cloud server. The problem only occurred when the UDP packets exceeded the MTU.
We saw that packets with a size of 1500 bytes did not reach their destination. The reason was that some router in the network had an MTU size of 1488 and just dropped the packets, this happened because the IP flag IP_DONTFRAG was set in the packet.
Now why is this flag set? I looked in the C++ code but could not find it (probably because I don't know enough of C/C++) so I just ask here. Is the UDT C++ implementation setting this flag and why?
Note: We can bypass the problem by lowering the MTU size of the sending computer, but in a production environment we don't have control over this so there must be another solution...
got it; checking.
Did you find anything?
I hit the same problem today. When sending packets from my local pc to a server in a cloud, everything works. The other way causes dropped packets. After lowering the MTU the server was also able to send packets. I have not a real problem with lowering the MTU manually because for now it's just for test purposes but a solution would be really nice.
@siteware IP_DONTFRAG is set by routers sometimes. You can't control those settings in a cloud. The system should be able to figure out the correct MTU.