[Bloat] Taxonomy of various sender-side TCPs

Jonathan Morton chromatix99 at gmail.com
Fri Mar 11 02:24:33 EST 2011


There's a lot of literature about how various TCP congestion-control algorithms compare to each other, but there's not much in the way of 10,000 foot overviews.  So this is an attempt to bring the most relevant data into one place.

I've sorted some common TCPs into groups in roughly ascending order of aggressiveness in the face of congestion, and considered how they might react to the introduction of ECN at the bottleneck.

1: Vegas.
Strategy:  Fill the pipe, not the buffers.
Reaction to congestion:  Backs off until RTT approaches baseline, ie. buffers empty.
Probable reaction to 1% ECN marking:  Very little (but it doesn't need to).

2: Illinois, Compound.
Strategy:  Fill the pipe quickly, then probe the buffer slowly to avoid being outcompeted.
Reaction to congestion:  Backs off firmly on packet loss, then quickly re-probes for the pipe.
Probable reaction to 1% ECN marking:  Window should stabilise near pipe length.

3: Reno (and subtle variations thereof).
Strategy:  Avoid congestion collapse in a simple, standardisable way.
Reaction to congestion:  Halves the window on packet loss.
Probable reaction to 1% ECN marking:  Window should stabilise near 100 packets.

4: Veno, Westwood+.
Strategy:  Distinguish congestion loss from random channel loss.
Reaction to congestion:  Identical to Reno.
Probable reaction to 1% ECN marking:  Identical to Reno.

5: CUBIC.
Strategy:  Fill pipe and all buffers to capacity.  This is the most aggressive widely-deployed TCP.
Reaction to congestion:  On packet loss, quickly re-probes for buffer capacity.
Probable reaction to 1% ECN marking:  UNKNOWN.

Currently, CUBIC is the default TCP send-side algorithm in Linux.  It seems likely that it will react correctly to ECN marking, but that a higher rate of marking may be needed to bring it down to a given buffering level.  From what I've read, SFB should be able to probe for the correct marking rate on a per-flow basis, which is nice.

On the subject of ECN, my impression is that YouTube currently doesn't enable it, but a one-man company I recently downloaded some stuff from does.  I wonder if there's any reliable data on how many of the most popular sites enable ECN if you ask for it.  Personally, I think IPv6 and ECN should probably go together - v6 gear is new or upgraded anyway so there shouldn't be any legacy problems.

 - Jonathan




More information about the Bloat mailing list