]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
This commit adds BBR (Bottleneck Bandwidth and RTT) congestion control. This
authorrrs <rrs@FreeBSD.org>
Tue, 24 Sep 2019 18:18:11 +0000 (18:18 +0000)
committerrrs <rrs@FreeBSD.org>
Tue, 24 Sep 2019 18:18:11 +0000 (18:18 +0000)
commit7648feb4d976c3c75ce6727ef025de4e33afdbeb
tree86d8e5b0cf3413e884c83015ec43bfc66f071641
parenta9cf046cef6f28854aaa5a6d6d3c5d36c0db4ff4
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]