>> - Fixed maximum packet size, at the moment this is 1400-28 (28 being
>>   UDP headers).
>> - The above, but can be overridden by nodes who know their local MTU;
>>   the overridden maximum sizes would be exchanged on connection setup.
>> - PMTU discovery using native code.
>> - PMTU discovery based on packet loss statistics. We would record the
>>   sizes of packets recently successfully sent and lost, and try to
>>   identify a threshold below which packet loss is significantly lower.
>>   Not sure if this is feasible in the general case.
>>
>> In any case the next step is the new congestion control code, which
>> should make packet loss due to oversize packets being sent less of a
>> catastrophe. The above are on the assumption that we have congestion
>> control.
>> From what I can Google it looks like native code is the only way.


>To implement this would be way too much work for the benefit gained, IMHO

>I suggest leaving it at 1400 with an override setting in advanced
>configuration page.  That way if 2 knowledgeable peers both have their
>MTU set to 1476(etc) they can take advantage of it.  Also make the
>description on the config page

>Obviously the code should use the lowest number both nodes on a
>connection say they can handle.   I.E. One node manually set at 1476
>and one node at default of 1400 would use 1400 for that connection.

I think there's a problem for auto-deteting the max MTU size.
If we use, for example, an algorithm that says MtuSize++ for every packet we 
successfully send or receive the slow increase of the UDP packet size is 
recognizable by network observers.

Also a fixed size of, say, 1400 is bad if Freenet is the only application that 
sends packets of this size. Also the network structure can be reconstructed by 
checking for this packet size. This way it's posible to follow every 
MTU=1450-link from node to node to draw the 
network topology.

In my opinion an easy to implement solution (but not optimal in says of max 
packet size usage) would be to randomize the packet either every node startup 
or even for every transmission, although that might be suspicious, too. But 
this way there is no distinctive packet 
size to be on the lookout for and also the MTU can be recognized if the node 
never received a packet with a randomized packet size greater than x after, 
say, 100 packets. Then x is the MTU for this connection and the packet size 
randomizer can use x as an upper limit 
of the random value range, so there is no packet loss anymore



Reply via email to