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
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

hiren updated this revision to Diff 21290.Oct 12 2016, 6:19 AM
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.
jtl edited edge metadata.EditedOct 20 2016, 4:43 PM

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 updated this revision to Diff 21575.Oct 21 2016, 6:36 AM
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.

hiren added a comment.Oct 22 2016, 8:01 AM

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 reopened this revision.Jul 25 2017, 3:09 PM
sbruno added a subscriber: sbruno.

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