Page MenuHomeFreeBSD

Let congestion control algorithms decide congestion window.
Needs ReviewPublic

Authored by hiren on Oct 12 2016, 6:19 AM.



First draft of the idea we've been discussing for quite some time to fix
stack overwriting cwnd value set by CC algos.

  • Prevent stack from changing cwnd value when CC is present.
  • Update CCs to set cwnd on NDUPACKS.
  • Update CCs to have RTO handling.

This work is in collaboration with Matt Macy.

As I mentioned, this is the first draft and review is cretaed to discuss/refine
how to best fix this.

Test Plan

Local dummynet setup and later with LLNW prod traffic.

Diff Detail

rS FreeBSD src repository - subversion
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

hiren retitled this revision from to Let congestion control algorithms decide congestion window..
hiren updated this object.
hiren edited the test plan for this revision. (Show Details)
hiren added reviewers: rrs, lstewart, jtl.
hiren added a subscriber: transport.

Summary of verbal feedback today:

  1. If it can be done without major surgery, please consider changing (u_)long to (u)int32_t.
  2. Because this changes the assumption about who sets snd_cwnd, please verify that all the congestion control modules follow the new assumption.

With that said, I think this is a great idea! :-)

hiren edited edge metadata.

Changing snd_cwnd tracking variable's name from win to cwin and its type to uint32_t.
I'll run all my tests tomorrow and update here with results.

I tried running a few loss scenarios with various available CC algos and nothing seem broken. Loss scenarios include : dropping a single packet, dropping a bunch of packets, dropping a lot of packets to create severe loss situation, ack loss, etc.

This revision was automatically updated to reflect the committed changes.
sbruno added a subscriber: sbruno.

This was reverted at svn R321480. I'm reopening for further discussion.