[Ecn-sane] paper idea: praising smaller packets

Bob Briscoe research at bobbriscoe.net
Mon Sep 27 10:50:14 EDT 2021


Dave,

On 26/09/2021 21:08, Dave Taht wrote:
> ... an exploration of smaller mss sizes in response to persistent congestion
>
> This is in response to two declarative statements in here that I've
> long disagreed with,
> involving NOT shrinking the mss, and not trying to do pacing...

I would still avoid shrinking the MSS, 'cos you don't know if the 
congestion constraint is the CPU, in which case you'll make congestion 
worse. But we'll have to differ on that if you disagree.

I don't think that paper said don't do pacing. In fact, it says "...pace 
the segments at less than one per round trip..."

Whatever, that paper was the problem statement, with just some ideas on 
how we were going to solve it.
after that, Asad (added to the distro) did his whole Masters thesis on 
this - I suggest you look at his thesis and code (pointers below).

Also soon after he'd finished, changes to BBRv2 were introduced to 
reduce queuing delay with large numbers of flows. You might want to take 
a look at that too:
https://datatracker.ietf.org/meeting/106/materials/slides-106-iccrg-update-on-bbrv2#page=10

>
> https://www.bobbriscoe.net/projects/latency/sub-mss-w.pdf
>
> OTherwise, for a change, I largely agree with bob.
>
> "No amount of AQM twiddling can fix this. The solution has to fix TCP."
>
> "nearly all TCP implementations cannot operate at less than two packets per RTT"

Back to Asad's Master's thesis, we found that just pacing out the 
packets wasn't enough. There's a very brief summary of the 4 things we 
found we had to do in 4 bullets in this section of our write-up for netdev:
https://bobbriscoe.net/projects/latency/tcp-prague-netdev0x13.pdf#subsubsection.3.1.6
And I've highlighted a couple of unexpected things that cropped up below.

Asad's full thesis:
               Ahmed, A., "Extending TCP for Low Round Trip Delay",
               Masters Thesis, Uni Oslo , August 2019,
               <https://www.duo.uio.no/handle/10852/70966>.
Asad's thesis presentation:
     https://bobbriscoe.net/presents/1909submss/present_asadsa.pdf

Code:
     https://bitbucket.org/asadsa/kernel420/src/submss/
Despite significant changes to basic TCP design principles, the diffs 
were not that great.

A number of tricky problems came up.

* For instance, simple pacing when <1 ACK per RTT wasn't that simple. 
Whenever there were bursts from cross-traffic, the consequent burst in 
your own flow kept repeating in subsequent rounds. We realized this was 
because you never have a real ACK clock (you always set the next send 
time based on previous send times). So we set up the the next send time 
but then re-adjusted it if/when the next ACK did actually arrive.

* The additive increase of one segment was the other main problem. When 
you have such a small window, multiplicative decrease scales fine, but 
an additive increase of 1 segment is a huge jump in comparison, when 
cwnd is a fraction of a segment. "Logarithmically scaled additive 
increase" was our solution to that (basically, every time you set 
ssthresh, alter the additive increase constant using a formula that 
scales logarithmically with ssthresh, so it's still roughly 1 for the 
current Internet scale).

What became of Asad's work?
Altho the code finally worked pretty well {1}, we decided not to pursue 
it further 'cos a minimum cwnd actually gives a trickle of throughput 
protection against unresponsive flows (with the downside that it 
increases queuing delay). That's not to say this isn't worth working on 
further, but there was more to do to make it bullet proof, and we were 
in two minds how important it was, so it worked its way down our 
priority list.

{Note 1: From memory, there was an outstanding problem with one flow 
remaining dominant if you had step-ECN marking, which we worked out was 
due to the logarithmically scaled additive increase, but we didn't work 
on it further to fix it.}



Bob


-- 
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/



More information about the Ecn-sane mailing list