Opened 3 weeks ago

Last modified 5 days ago

#2649 new enhancement

UDP Transport: allow multiple retransmissions

Reported by: jogger Owned by: zzz
Priority: major Milestone: undecided
Component: router/transport Version: 0.9.43
Keywords: Cc:
Parent Tickets: Sensitive: no

Description

Currently the entire UDP transport is seriously choked down by retransmissions as those block the entire connection. However packet loss is no error condition and will happen even on commercial grade equipment running well below specified capacity. So I propose to allow multiple parallel retransmissions roughly sized to 1 + packets_acked / 5, minimum 2.
Sample test results logged on the current live net:

  • 2 retransmissions at > 25% packet loss: connection speed over tunnel lifetime 5-10 KBps
  • 10% packet loss, size logic above: connection speed over tunnel lifetime 100 - 200 KBps

Subtickets

#2654: PeerState.java: remove _retransmitternewzzz

Change History (2)

comment:1 Changed 7 days ago by zzz

Add a subticket #2654 (PeerState?.java: remove _retransmitter).

comment:2 Changed 5 days ago by jogger

After longer tests I have come up with calculating the number of max retrans a bit lower as shown in #2648, using a slower window upscaling factor of 1.25:

_retransmax = 1 + _sendWindowBytes / MINIMUM_WINDOW_BYTES;

Test results as above. The number of allowed retransmissions run down within seconds along with the send window in case of an error.

Note: See TracTickets for help on using tickets.