]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
This commit adds BBR (Bottleneck Bandwidth and RTT) congestion control. This
authorRandall Stewart <rrs@FreeBSD.org>
Tue, 24 Sep 2019 18:18:11 +0000 (18:18 +0000)
committerRandall Stewart <rrs@FreeBSD.org>
Tue, 24 Sep 2019 18:18:11 +0000 (18:18 +0000)
commit35c7bb340788f0ce9347b7066619d8afb31e2123
tree86d8e5b0cf3413e884c83015ec43bfc66f071641
parent749597dc1d21dce46fb94bfbe34cdb20ec1d9ab3
This commit adds BBR (Bottleneck Bandwidth and RTT) congestion control. This
is a completely separate TCP stack (tcp_bbr.ko) that will be built only if
you add the make options WITH_EXTRA_TCP_STACKS=1 and also include the option
TCPHPTS. You can also include the RATELIMIT option if you have a NIC interface that
supports hardware pacing, BBR understands how to use such a feature.

Note that this commit also adds in a general purpose time-filter which
allows you to have a min-filter or max-filter. A filter allows you to
have a low (or high) value for some period of time and degrade slowly
to another value has time passes. You can find out the details of
BBR by looking at the original paper at:

https://queue.acm.org/detail.cfm?id=3022184

or consult many other web resources you can find on the web
referenced by "BBR congestion control". It should be noted that
BBRv1 (which this is) does tend to unfairness in cases of small
buffered paths, and it will usually get less bandwidth in the case
of large BDP paths(when competing with new-reno or cubic flows). BBR
is still an active research area and we do plan on  implementing V2
of BBR to see if it is an improvement over V1.

Sponsored by: Netflix Inc.
Differential Revision: https://reviews.freebsd.org/D21582
17 files changed:
sys/conf/files
sys/kern/subr_filter.c [new file with mode: 0644]
sys/modules/tcp/Makefile
sys/modules/tcp/bbr/Makefile [new file with mode: 0644]
sys/netinet/ip_output.c
sys/netinet/ip_var.h
sys/netinet/tcp.h
sys/netinet/tcp_stacks/bbr.c [new file with mode: 0644]
sys/netinet/tcp_stacks/rack.c
sys/netinet/tcp_stacks/rack_bbr_common.c
sys/netinet/tcp_stacks/rack_bbr_common.h
sys/netinet/tcp_stacks/sack_filter.c
sys/netinet/tcp_stacks/sack_filter.h
sys/netinet/tcp_stacks/tcp_bbr.h [new file with mode: 0644]
sys/netinet/tcp_stacks/tcp_rack.h
sys/sys/mbuf.h
sys/sys/tim_filter.h [new file with mode: 0644]