-
Notifications
You must be signed in to change notification settings - Fork 239
Description
https://github.com/corrados/jamulus/blob/017796919c814a74adcf916a6f200e7c157e58f1/ChangeLog#L19
Going down from 200 to 150 won't remove UDP fragmentation. In a Wireshark trace a couple of weeks ago, a list of 198 servers took 8 fragments, which when reassembled had a payload size of 6780 bytes. The fragments in that instance appeared to have an MTU of only 778 bytes, which is something over which neither end has control, as it may be due to an intermediate hop. Even if the path had the maximum possible MTU of 1500 bytes, it would still take around 4 or 5 fragments to send a list of 200 servers.
The only way really to solve it would be for the server also to listen on a TCP port (could use the same port number). A client wanting the server list could then connect to the central server on TCP, fetch the list and then close the connection. Fragmentation should no longer be a problem then.
For backward compatibility, a client could fall back to UDP if the TCP connection was refused, and the central server would still serve UDP requests for the server list if asked.
(Of course, it is only broken or misconfigured routers or computers that do not correctly handle fragmented UDP packets)