The TCP congestion avoidance algorithm affects how fast the throughput is able to recover after packet loss. There's no ideal solution, and over time several approaches have been described.
The ByteBlower GUI implementes a couple of the most popular ones, you can choose from following list: “None”, “New Reno”, “New Reno with Cubic”, “SACK” and “SACK with Cubic”.
Regardless of the option, the ByteBlower’s TCP implementation will always perform the basic congestion avoidance measures like exponential backoff and slow start. (See Wikipedia’s article on TCP congestion control for more information.).
The summation below explain each available option:
- When selecting “None” then no fast recovery algorithm will be used. It does, however, implement fast retransmit.
- “New Reno” is a loss recovery algorithm that improves recovery speed when multiple packets have been dropped.
- “SACK” (short for “selective ack”) is an even faster recovery algorithm where the receiver can tell the sender which segments are missing . This algorithm can only be used if both sides support it. This is negotiated during connection establishment using the “SACK Permitted” option in the TCP header. If one of the sides does not support SACK then ByteBlower will use New Reno instead.
- “Cubic” improves the TCP recovery speed on high latency networks while still providing good performance on low-latency networks. It can be combined with SACK and New Reno (by selecting "SACK with cubic" or "New Reno with Cubic")
- “SACK with cubic” is the option that should provide the best performance in most situations.