Page MenuHomeFreeBSD

Rework initial congestion window calculation.
Needs RevisionPublic

Authored by hiren on Feb 2 2016, 10:23 PM.

Details

Reviewers
rrs
lstewart
gnn
rwatson
Group Reviewers
transport
Summary

Rework initial congestion window calculation.

The patch is my first (barely compiling) attempt at:

  1. add ability to specify initcwnd in number of bytes
  2. move entire calculation into a separate function
  3. add a new sysctl to enable RFC6928 which is ON by default
  4. D5124's fix included.

Approach here is, user can specify initcwnd of choice in number of segments or bytes. If none is present, we default to RFC6928 and have initcwnd as 10 segments.

AFAIK, this is not changing the default behavior of what we have in FreeBSD-head right now. OR at least, that is the plan.
This change also makes enabling RFC3390 (to get initcwnd at 4 segments) more obvious/easier. (You just have to disable RFC6928.)

Suggestions?

(I need to remember to do any manpage updates with this.)

Test Plan

I'll work on it once we have a general consensus on the approach.

Diff Detail

Repository
rS FreeBSD src repository
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 2457
Build 2474: arc lint + arc unit

Event Timeline

hiren updated this revision to Diff 12966.Feb 2 2016, 10:23 PM
hiren retitled this revision from to Rework initial congestion window calculation..
hiren updated this object.
hiren edited the test plan for this revision. (Show Details)
hiren added a reviewer: lstewart.
hiren added a subscriber: transport.
hiren updated this object.Feb 2 2016, 10:35 PM
hiren edited the test plan for this revision. (Show Details)
hiren edited reviewers, added: gnn, rwatson; removed: transport.
hiren updated this object.Feb 2 2016, 10:38 PM
hiren added a comment.Feb 8 2016, 7:35 AM

Bump!
I'd appreciate any feedback on the approach taken so I can move this forward.

hiren planned changes to this revision.Feb 8 2016, 8:47 AM

Talked to Lawrence on IRC and need to make a bunch of changes. bbib

hiren updated this revision to Diff 13171.Feb 10 2016, 8:21 AM
hiren updated this object.
hiren edited the test plan for this revision. (Show Details)
    • Rework initial congestion window calculation.
    • Rework the rework after talking to lstewart@. :-) Let's see if this is something people like, if so, I'd do more testing.

      An obvious problem I am seeing is,
  1. sysctl net.inet.tcp.rfc3390=1

net.inet.tcp.rfc3390: 0 -> 0

instead of what I want: 0 -> 1.

lstewart edited edge metadata.Feb 10 2016, 9:08 AM

You're a bit "warmer" with the revised changes but still a fair ways off the mark. Apologies to anyone watching but I'm too time poor at the moment to engage in the proper but protracted back-and-forth public Phabricator discussion to resolve all the problems with this work. Perhaps another brief sync on IRC is in order and you can always summarise the chat logs here as context for others.

hiren updated this revision to Diff 13194.Feb 10 2016, 11:45 PM
hiren edited edge metadata.
  • Rework initial congestion window calculation.
  • Rework the rework after talking to lstewart@. :-)
  • Sysctl handlers now work as expected.

    Lawrence and I need to talk before making further changes here.
rrs requested changes to this revision.Jul 5 2016, 1:30 PM
rrs added a reviewer: rrs.
rrs added a subscriber: rrs.

Should there not be a check to the experimental setting to allow a IW of 10?

This revision now requires changes to proceed.Jul 5 2016, 1:30 PM