All Projects → KozakaiAya → TCP_BBR

KozakaiAya / TCP_BBR

Licence: GPL-2.0 license
BBR implementation and research resources

Programming Languages

c
50402 projects - #5 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to TCP BBR

khttpd
An experimental HTTP server implemented as Linux kernel module
Stars: ✭ 41 (-4.65%)
Mutual labels:  tcp, linux-kernel
epoller
epoll implementation for connections in Linux, MacOS and Windows
Stars: ✭ 58 (+34.88%)
Mutual labels:  tcp
python-holdup
A tool to wait for services and execute command. Useful in Docker containers.
Stars: ✭ 29 (-32.56%)
Mutual labels:  tcp
easytcp
✨ 🚀 EasyTCP is a light-weight TCP framework written in Go (Golang), built with message router. EasyTCP helps you build a TCP server easily fast and less painful.
Stars: ✭ 416 (+867.44%)
Mutual labels:  tcp
swagger routerl
Routing library that generate the routing table from swagger.yaml.
Stars: ✭ 14 (-67.44%)
Mutual labels:  tcp
kernel new features
一个深挖 Linux 内核的新功能特性,以 io_uring, cgroup, ebpf, llvm 为代表,包含开源项目,代码案例,文章,视频,架构脑图等
Stars: ✭ 1,094 (+2444.19%)
Mutual labels:  linux-kernel
pheromones
实现长/短链接方式的p2p网络
Stars: ✭ 18 (-58.14%)
Mutual labels:  tcp
jwEngine
A cross-platform C++<->lua server quick solution
Stars: ✭ 226 (+425.58%)
Mutual labels:  tcp
neteng-roadmap
Network Engineering at Scale Roadmap/Landscape
Stars: ✭ 53 (+23.26%)
Mutual labels:  tcp
Vaser
Vaser is a powerful high performance event based network engine library for C# .Net. It’s possible to start multiple servers in one program and use the same network code for all servers. In the network communication are all strings are omitted, instead it is based on a unique binary identifier, which the CPU and memory relieves massively.
Stars: ✭ 23 (-46.51%)
Mutual labels:  tcp
asyncio-socks-server
A SOCKS proxy server implemented with the powerful python cooperative concurrency framework asyncio.
Stars: ✭ 154 (+258.14%)
Mutual labels:  tcp
udp2raw
A Tunnel which Turns UDP Traffic into Encrypted UDP/FakeTCP/ICMP Traffic by using Raw Socket,helps you Bypass UDP FireWalls(or Unstable UDP Environment)
Stars: ✭ 5,256 (+12123.26%)
Mutual labels:  tcp
Mgx
🌈 A high performance network framework written in c++ (support tcp and http)
Stars: ✭ 15 (-65.12%)
Mutual labels:  tcp
linux-grsec
Arch Linux package for the Linux Kernel and modules with grsecurity/PaX patches.
Stars: ✭ 19 (-55.81%)
Mutual labels:  linux-kernel
im-bass
基础IM通信
Stars: ✭ 56 (+30.23%)
Mutual labels:  tcp
w1-gpio-cl
Command line configured kernel mode 1-wire bus master driver. w1-gpio standard Linux module enhancement/substitution.
Stars: ✭ 17 (-60.47%)
Mutual labels:  linux-kernel
Linux-Kernel-Exploitation
Linux kernel development & exploitation lab.
Stars: ✭ 130 (+202.33%)
Mutual labels:  linux-kernel
net-Socket
A minimalist wrapper around System.Net.Sockets.Socket.
Stars: ✭ 21 (-51.16%)
Mutual labels:  tcp
createprocess-windows
A complete, robust command-line utility to construct highly customized calls to the CreateProcess() Windows API. Released under a MIT or LGPL license.
Stars: ✭ 74 (+72.09%)
Mutual labels:  tcp
SocketIOUnity
A Wrapper for socket.io-client-csharp to work with Unity.
Stars: ✭ 69 (+60.47%)
Mutual labels:  tcp

TCP_BBR

BBR implementation and research resources.

Enhanced BBR variants are modified by Yankee@hostloc and nanqinglang.

This repository keeps track of tcp_bbr.c from Elixir Bootlin.

Installation

DKMS installation (recommended)

  1. Install dkms.
  2. Download dkms_install.sh.
  3. Run the script as root and follow the instructions.

This script will install BBR as a dkms module, which will be recompiled and reinstalled whenever the kernel gets updated. It will also let the system auto-load the BBR module at boot time and set the default congestion control method to BBR or the variant you choose during the installation.

Automated installation

  1. Download install.sh.
  2. Download the source code of your desired congestion control algorithm w.r.t. your kernel version.
  3. Put the source code in the same directory as install.sh.
  4. Run ./install.sh <algo> as root.

<algo> should be chosen from bbr, tsunami, nanqinlang or bbrplus (deprecated in v5.1+). The script assumes that the corresponding source code for <algo> is tcp_<algo>.c.

Manual installation (deprecated)

wget -O ./tcp_tsunami.c https://raw.githubusercontent.com/KozakaiAya/TCP_BBR/master/code/v5.5/tcp_tsunami.c
echo "obj-m:=tcp_tsunami.o" > Makefile
make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc
cp tcp_tsunami.ko /lib/modules/$(uname -r)/kernel/drivers/
echo 'tcp_tsunami' | sudo tee -a /etc/modules
depmod
modprobe tcp_tsunami
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=tsunami" >> /etc/sysctl.conf
sysctl -p

Special note for Linux Kernel 4.15 & gcc 7.3

For some strange reasons, the compiler cannot find necessary header files. Therefore, echo "ccflags-y=-I/usr/lib/gcc/x86_64-linux-gnu/7/include" >> Makefile is needed.

Supported Ubuntu Versions

Ubuntu GA HWE HWE-Edge
16.04 N/A 4.15 4.15
18.04 4.15 5.4 5.4
20.04 5.4 5.4 5.8

Ubuntu kernel version is obtained from Ubuntu Packages. Other supported version of BBR code can be found here.

Research Resources

Please refer to research/README.md.

Remark

Since Linux Kernel v5.1, bbrplus no longer needs to be updated, because most of its ideas have been merged to the mainline kernel.

Future Plan

  • Port enhanced BBR from Kernel v5.0 to higher version without merging bbrplus.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].