Right now if you use rack with cubic (the new default cc) you will have
improper results. This is because rack uses different variables than
the base stack (or bbr) and thus tcp_compute_pipe() always returns
so that cubic will choose a 30% backoff not the 50% backoff it should
when it is newreno compatibility mode. The fix is to allow a stack (rack)
to override its own compute_pipe.
Details
Details
- Reviewers
tuexen glebius rscheff - Group Reviewers
transport - Commits
- rGe5049a173352: TCP rack does not work properly with cubic.
This is easy to test in a lab setting where you setup multiple flows with
BB logging on. You then make sure cubic does the "right" thing after
it calls the new compute pipe.
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
Hmm... I'm slightly unhappy by not populating the new tfb_compute_pipe field in the base stack, and point that to a do_newreno_compute_pipe(). That would feel somehow more symetrical. However, we already rely on proper (NULL) initialization of the tfb_ struct, so this is good for now.