Git Product home page Git Product logo

bbrplus's People

Contributors

cx9208 avatar out0fmemory avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bbrplus's Issues

更了一波,新增支持5.10版本内核

更新一波,现支持4.9/4.14/4.19/5.4/5.9/5.10,大家可到我的github主页看看

目前提供源码包(CentOS、Debian/Ubuntu源码格式)和已编译内核(CentOS、Debian/Ubuntu)的版本是

5.10.4
5.9.16
5.4.86
4.19.164
4.14.213
4.9.249


是否 merge 的适配难度讨论

先感谢 op 找出一个新玩具

因为有一段时间没追 kernel 了,我在意的是 dog250 mod 于更新版本下的适配问题,即这份源码的 patches 具体包括了哪些代码,以及能否用于更新的内核环境

我目前还没看源码,先想到了这个问题

op 你怎么看

我编译了bbrplus 4.14/4.19/5.4版本

大家可到我的github主页,欢迎来测试。支持: CentOS 6-8、Debian 8-10、Ubuntu 14-20。

有编译好的版本、有所编译版本的源码包,也提供patch补丁,可用Linux官方内核源码编译。

其中4.14应该解决了某些系统启动慢的问题(我猜),自己持续更新自用了一年多没啥问题。

4.19、5.4是刚编译好的,只简单测试在几种OS安装正常、基本运行正常、启用bbrplus正常。

40 41行中应该修改

centos 7X 中安装后 因为没有使用空格 导致 不能使用BBR
需要 把 bbrplus/ok_bbrplus_centos.sh 中第40 41 行 应该是:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbrplus

我更了一波,新支持4.9版本内核

假期结束,更新一波,大家可到我的github主页看看

本次更新的新特性有:

  • 新增支持4.9内核......性能不能保证哈哈
  • 内核默认 net.ipv4.tcp_congestion_control=bbrplus 和 net.core.default_qdisc=fq ,不需sysctl设置。但注意新系统,如ubuntu 18+、centos 8等,在 /usr/lib/sysctl.d/50-default.conf 会自带 net.core.default_qdisc 设置,要注释掉
  • 解决补丁在一些情况下编译出错的问题

以前更新的特性:

  • 支持4.14/4.19/5.4内核,除4.14外,其他版本性能不能保证,大家跑跑看.....
  • 保留了各版的原版BBR模块,sysctl可设置bbrplus或bbr,但icsk_ca_priv变动是否影响原版BBR......不太清楚
  • 整合了4.14原版BBR在18~20年间的更新,把与bbrplus代码不冲突的更新都整合进bbrplus了
  • 我github主页提供内核源码补丁、内核源码(centos或debian/ubuntu格式)、编译好的内核(centos或debian/ubuntu格式)

目前提供的源码包和内核版本是

5.4.70
4.19.150
4.14.200
4.9.228


在CentOS7上一键安装bbrplus(内核版本4.14.91)后,编译UnixBench时出现奇怪的错误

UnixBench/
UnixBench/README
UnixBench/src/
UnixBench/src/looper.c
UnixBench/src/time-polling.c
UnixBench/src/arith.c
UnixBench/src/hanoi.c
UnixBench/src/timeit.c
UnixBench/src/dhry_1.c
UnixBench/src/dhry.h
UnixBench/src/dhry_2.c
UnixBench/src/fstime.c
UnixBench/src/syscall.c
UnixBench/src/execl.c
UnixBench/src/context1.c
UnixBench/src/whets.c
UnixBench/src/dummy.c
UnixBench/src/big.c
UnixBench/src/spawn.c
UnixBench/src/pipe.c
UnixBench/src/ubgears.c
UnixBench/pgms/
UnixBench/pgms/index.base
UnixBench/pgms/gfx-x11
UnixBench/pgms/multi.sh
UnixBench/pgms/unixbench.logo
UnixBench/pgms/tst.sh
UnixBench/WRITING_TESTS
UnixBench/.project
UnixBench/Run
UnixBench/testdir/
UnixBench/testdir/sort.src
UnixBench/testdir/cctest.c
UnixBench/testdir/dc.dat
UnixBench/testdir/large.txt
UnixBench/.cproject
UnixBench/results/
UnixBench/Makefile
UnixBench/USAGE
Checking distribution of files
./pgms exists
./src exists
./testdir exists
./tmp exists
./results exists
gcc -o ./pgms/context1 -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall ./src/context1.c
In file included from /usr/include/errno.h:35:0,
from ./src/context1.c:29:
/usr/include/bits/errno.h:24:26: fatal error: linux/errno.h: No such file or directory

更了一波,新增支持5.9版本内核

更新一波,现支持4.9/4.14/4.19/5.4/5.9,大家可到我的github主页看看

本次更新的新特性有:

  • 新增支持5.9内核,目前编译了5.9.11版
  • CentOS安装包分开CentOS 7、CentOS 8版本,其中CentOS 8只支持5.4/5.9内核。CentOS 8在云主机上一般安装core包就行了,其他包通常不需要
  • release标注解了必要的包(required)和可选(optional)的包,云主机一般装required即可,不用什么都装哈
  • 同步了bbr官方11月24日最新的补丁到bbrplus里

以前更新的特性:

  • 支持4.14/4.19/5.4内核,除4.14外,其他版本性能不能保证,大家跑跑看.....
  • 保留了各版的原版BBR模块,sysctl可设置bbrplus或bbr,但icsk_ca_priv变动是否影响原版BBR......不太清楚
  • 整合了4.14原版BBR在18~20年间的更新,把与bbrplus代码不冲突的更新都整合进bbrplus了
  • 内核默认 net.ipv4.tcp_congestion_control=bbrplus 和 net.core.default_qdisc=fq ,不需sysctl设置。但注意新系统,如ubuntu 18+、centos 8等,在 /usr/lib/sysctl.d/50-default.conf 会自带 net.core.default_qdisc 设置,要注释掉
  • 我github主页提供内核源码补丁、内核源码(centos或debian/ubuntu格式)、编译好的内核(centos或debian/ubuntu格式)

目前提供源码包(CentOS、Debian/Ubuntu源码格式)和已编译内核(CentOS、Debian/Ubuntu)的版本是

5.9.11
5.4.80
4.19.160
4.14.209
4.9.246


v EYE

Is really ?
Is realistic?
Is real man?
Who am I
Animation?
Any motion?
"矩陣數列》》
@frāctus (structure) @vector
Anticipation
Atomy?
Atom?
Or Am I?

双网卡服务器经常宕机

万兆双网卡,配置策略路由,默认路由配置在p4p1。
最长一周时间服务器就会宕机,没有显示报错信息,关闭bbr没有再宕机,多台双网卡服务器测试过都有此情况。

我编译了保留有原版BBR的版本,支持4.14/4.19/5.4

2020-10-02编译了新版,支持4.14/4.19/5.4。主要有两个改进:


1、整合了4.14版BBR从18~20年所有和plus不冲突的补丁到BBRplus里,个别冲突的没整合
2、保留了各版的BBR模块,可在sysctl指定net.ipv4.tcp_congestion_control=bbrplus 或 bbr


可到我的github主页下载对官方源码的补丁、centos/debian格式源码、或编译好的rpm/deb


编译好的安装包版本:

4.14.200
4.19.149
5.4.69

编译问题

大佬你好我为我的米9编译bbrplus内核,版本是4.14,都按照你说的改了,但在最后报错

AR drivers/staging/built-in.o
AR drivers/built-in.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
AR init/built-in.o
AR built-in.o
LD vmlinux.o
MODPOST vmlinux.o
net/ipv4/tcp_bbrplus.o: In function bbr_drain_to_target_cycling': /root/kernel_MIUI_Q_cepheusbbrplus/out/../net/ipv4/tcp_bbrplus.c:278: undefined reference to tcp_snd_wnd_test'
/root/kernel_MIUI_Q_cepheusbbrplus/Makefile:1120: recipe for target 'vmlinux' failed
make[1]: *** [vmlinux] Error 1
make[1]: Leaving directory '/root/kernel_MIUI_Q_cepheusbbrplus/out'
Makefile:146: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2
root@ubuntu:~/kernel_MIUI_Q_cepheusbbrplus#

说是`tcp_snd_wnd_test'并未定义,但我确实是在net/ipv4/tcp_output.c中添加了EXPORT_SYMBOL(tcp_snd_wnd_test);
并且我是将bbrplus编译进内核而不是编译出模块

不知道为什么会这样
求大佬解答XD

老哥,自编译这个地方是这样改的吗?

修改/net/ipv4/tcp_output.c#L,1823行
tcp_snd_wnd_test函数大括号后}
换行添加EXPORT_SYMBOL(tcp_snd_wnd_test);

/* Does at least the first segment of SKB fit into the send window? */
static bool tcp_snd_wnd_test(const struct tcp_sock *tp,
const struct sk_buff *skb,
unsigned int cur_mss)
{
u32 end_seq = TCP_SKB_CB(skb)->end_seq;

    if (skb->len > cur_mss)
            end_seq = TCP_SKB_CB(skb)->seq + cur_mss;

    return !after(end_seq, tcp_wnd_end(tp));

}
EXPORT_SYMBOL(tcp_snd_wnd_test);

自编译出错

net/ipv4/tcp_bbrplus.c: In function 'bbr_set_tso_segs_goal':
net/ipv4/tcp_bbrplus.c:387:5: error: implicit declaration of function 'tcp_tso_autosize' [-Werror=implicit-function-declaration]
bbr->tso_segs_goal = min(tcp_tso_autosize(sk, tp->mss_cache, min_segs),
^
In file included from ./include/linux/list.h:9:0,
from ./include/linux/module.h:9,
from net/ipv4/tcp_bbrplus.c:59:
./include/linux/kernel.h:846:29: warning: comparison of distinct pointer types lacks a cast [enabled by default]
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
./include/linux/kernel.h:860:4: note: in expansion of macro '__typecheck'
(__typecheck(x, y) && __no_side_effects(x, y))
^
./include/linux/kernel.h:870:24: note: in expansion of macro '__safe_cmp'
__builtin_choose_expr(__safe_cmp(x, y),
^
./include/linux/kernel.h:879:19: note: in expansion of macro '__careful_cmp'
#define min(x, y) __careful_cmp(x, y, <)
^
net/ipv4/tcp_bbrplus.c:387:26: note: in expansion of macro 'min'
bbr->tso_segs_goal = min(tcp_tso_autosize(sk, tp->mss_cache, min_segs),
^
net/ipv4/tcp_bbrplus.c: At top level:
net/ipv4/tcp_bbrplus.c:1147:5: error: unknown field 'tso_segs_goal' specified in initializer
.tso_segs_goal = bbr_tso_segs_goal,
^
net/ipv4/tcp_bbrplus.c:1147:5: warning: initialization from incompatible pointer type [enabled by default]
net/ipv4/tcp_bbrplus.c:1147:5: warning: (near initialization for 'tcp_bbr_cong_ops.cong_avoid') [enabled by default]
cc1: some warnings being treated as errors
make[4]: *** [net/ipv4/tcp_bbrplus.o] Error 1
make[3]: *** [net/ipv4] Error 2
make[2]: *** [net] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.PTvtC5 (%build)

RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.PTvtC5 (%build)
make[1]: *** [rpm-pkg] Error 1
make: *** [rpm-pkg] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.