Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kernel 4.9: please enable TCP: BBR congestion control algorithm #1784

Closed
holywen opened this issue Jan 9, 2017 · 14 comments
Closed

kernel 4.9: please enable TCP: BBR congestion control algorithm #1784

holywen opened this issue Jan 9, 2017 · 14 comments

Comments

@holywen
Copy link

holywen commented Jan 9, 2017

tcp: BBR congestion control algorithm
Please enable it as it can increase the network speed much.

About BBR :
http://queue.acm.org/detail.cfm?id=3022184
https://lwn.net/Articles/701177/

from the kernel patch description:

This patch series implements a new TCP congestion control algorithm:
BBR (Bottleneck Bandwidth and RTT). A paper with a detailed
description of BBR will be published in ACM Queue, September-October
2016, as "BBR: Congestion-Based Congestion Control". BBR is widely
deployed in production at Google.

@Morxi
Copy link

Morxi commented Jan 12, 2017

+1

1 similar comment
@enihcam
Copy link

enihcam commented Jan 16, 2017

+1

popcornmix added a commit that referenced this issue Jan 16, 2017
popcornmix added a commit to raspberrypi/firmware that referenced this issue Jan 16, 2017
kernel: config: Add CONFIG_TCP_CONG_BBR
See: raspberrypi/linux#1784

kernel: spi-bcm2835: Disable forced software CS
See: raspberrypi/linux#1547

kernel: BCM270X_DT: Add spi0-cs overlay
popcornmix added a commit to Hexxeh/rpi-firmware that referenced this issue Jan 16, 2017
kernel: config: Add CONFIG_TCP_CONG_BBR
See: raspberrypi/linux#1784

kernel: spi-bcm2835: Disable forced software CS
See: raspberrypi/linux#1547

kernel: BCM270X_DT: Add spi0-cs overlay
@popcornmix
Copy link
Collaborator

Options added to 4.9 tree and in latest BRANCH=next rpi-update kernel.
Please report back if you are able to get measurable benefits from using this option.

@amosnet
Copy link

amosnet commented Jan 17, 2017

Hi,
Just would like to say thank you to Raspberry Pi contributors.

Long story short,

I'm running a socks5 proxy on raspberry pi 3 between two network with very high latency and packet loss rate.
When with old cubic, youtube lags even on 144P.
1080P is now not a problem with BBR.

I think there are definitely obvious measurable benefits for me.

@zgzh
Copy link

zgzh commented Jan 21, 2017

Hi,
Very grateful to upgrade BBR after the speed of the network has undergone a qualitative change in the equipment, the same line environment, the original YouTube only 360P, can now 1440P, the effect is obvious, thanks again.

popcornmix added a commit that referenced this issue Jan 21, 2017
@yichya
Copy link

yichya commented Jan 22, 2017

+1

@BenChud
Copy link

BenChud commented Jan 24, 2017

According to the documentation, BBR should not be used without the fair queue scheduler as it can result in a higher packet loss rate.

I don't think CONFIG_NET_SCH_FQ is currently set as I cannot enable in the stock kernel.

tc qdisc show dev eth0
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

tc qdisc add dev eth0 root fq maxrate 0.1gbit
RTNETLINK answers: No such file or directory

As per commit notes:

NOTE: BBR must be used with the fq qdisc ("man tc-fq") with pacing
enabled, since pacing is integral to the BBR design and
implementation. BBR without pacing would not function properly, and
may incur unnecessary high packet loss rates.

Given the above it would make sense to also set CONFIG_NET_SCH_FQ=m?

popcornmix added a commit that referenced this issue Jan 25, 2017
@popcornmix
Copy link
Collaborator

I've added CONFIG_NET_SCH_FQ module to 4.9 and 4.10 trees.

popcornmix added a commit to raspberrypi/firmware that referenced this issue Jan 25, 2017
kernel: config: Add additional network scheduling modules
See: raspberrypi/linux#1784

kernel: BCM270X_DT: Add reference to audio_pins to CM dtb
popcornmix added a commit to Hexxeh/rpi-firmware that referenced this issue Jan 25, 2017
kernel: config: Add additional network scheduling modules
See: raspberrypi/linux#1784

kernel: BCM270X_DT: Add reference to audio_pins to CM dtb
@popcornmix
Copy link
Collaborator

Latest BRANCH=next rpi-update firmware has fair queue scheduler module included.

@BenChud
Copy link

BenChud commented Jan 25, 2017

Thanks - can confirm I've been able to enable now

@popcornmix
Copy link
Collaborator

@holywen Everything good? Okay to close?

@holywen
Copy link
Author

holywen commented Jan 27, 2017

Yes, Thanks and please close it.

popcornmix added a commit that referenced this issue Jan 30, 2017
popcornmix added a commit that referenced this issue Jan 30, 2017
popcornmix added a commit that referenced this issue Feb 1, 2017
popcornmix added a commit that referenced this issue Feb 4, 2017
popcornmix added a commit that referenced this issue Feb 6, 2017
popcornmix added a commit that referenced this issue Feb 10, 2017
popcornmix added a commit that referenced this issue Feb 13, 2017
popcornmix added a commit that referenced this issue Feb 16, 2017
popcornmix added a commit that referenced this issue Feb 20, 2017
popcornmix added a commit that referenced this issue Mar 23, 2017
popcornmix added a commit that referenced this issue Mar 27, 2017
fuzeman pushed a commit to fuzeman/linux-ubuntu-zesty that referenced this issue Mar 30, 2017
popcornmix added a commit that referenced this issue Mar 31, 2017
popcornmix added a commit that referenced this issue Apr 2, 2017
popcornmix added a commit that referenced this issue Apr 10, 2017
popcornmix added a commit that referenced this issue Apr 13, 2017
popcornmix added a commit that referenced this issue Apr 18, 2017
popcornmix added a commit that referenced this issue Apr 22, 2017
popcornmix added a commit that referenced this issue Apr 24, 2017
popcornmix added a commit that referenced this issue Apr 27, 2017
popcornmix added a commit that referenced this issue May 5, 2017
popcornmix added a commit that referenced this issue May 9, 2017
popcornmix added a commit that referenced this issue May 15, 2017
popcornmix added a commit that referenced this issue May 21, 2017
popcornmix added a commit that referenced this issue May 24, 2017
popcornmix added a commit that referenced this issue Jul 12, 2017
popcornmix added a commit that referenced this issue Aug 10, 2017
popcornmix added a commit that referenced this issue Aug 13, 2017
popcornmix added a commit that referenced this issue Oct 29, 2017
raspbian-autopush pushed a commit to raspbian-packages/linux-4.9 that referenced this issue Nov 2, 2017
commit 695542a
Author: popcornmix <popcornmix@gmail.com>
Date:   Mon Jan 16 16:33:54 2017 +0000

    config: Add CONFIG_TCP_CONG_BBR
    See: raspberrypi/linux#1784


Gbp-Pq: Topic rpi
Gbp-Pq: Name rpi_1124_695542ac4e9c13407263a9087d4388f9ec820593.patch
ryncsn pushed a commit to ryncsn/linux-rasp that referenced this issue Nov 21, 2017
raspbian-autopush pushed a commit to raspbian-packages/linux-4.9 that referenced this issue Apr 7, 2018
commit a58317a
Author: popcornmix <popcornmix@gmail.com>
Date:   Mon Jan 16 16:33:54 2017 +0000

    config: Add CONFIG_TCP_CONG_BBR
    See: raspberrypi/linux#1784


Gbp-Pq: Topic rpi
Gbp-Pq: Name rpi_1123_a58317abd009d9032d12c2e91561bd41313ff476.patch
raspbian-autopush pushed a commit to raspbian-packages/linux-4.9 that referenced this issue Nov 11, 2018
commit a58317a
Author: popcornmix <popcornmix@gmail.com>
Date:   Mon Jan 16 16:33:54 2017 +0000

    config: Add CONFIG_TCP_CONG_BBR
    See: raspberrypi/linux#1784


Gbp-Pq: Topic rpi
Gbp-Pq: Name rpi_1123_a58317abd009d9032d12c2e91561bd41313ff476.patch
@free-the-internet
Copy link

Kernel 5.15.61-v8+
BBR is not available.

@popcornmix
Copy link
Collaborator

CONFIG_TCP_CONG_BBR is enabled:
https://github.com/raspberrypi/linux/blob/3f4092766eaf692ed79b69f59c98dbe38e557fe7/arch/arm/configs/bcm2711_defconfig#LL105C17-L105C20

and this is a resolved issue.
If you have a problem, please create a new issue, and explain exactly what you have tried and how it failed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants