TCP BBR 拥塞控制模块编译

Linux 内核中的 TCP BBR 拥塞控制模块源码,它不能像普通用户态程序那样用 gcc bbr.c 直接编译。

它必须在内核源码树环境下,以外部模块内建模块的方式编译,且依赖运行内核的版本和头文件。


1. 编译为独立内核模块(针对当前运行的内核)

假设你的系统已安装了内核头文件(linux-headers-$(uname -r)),可以按以下步骤操作:

步骤 1:创建工作目录并放入源码

bash 复制代码
mkdir -p ~/bbr_module
cp tcp_bbr.c ~/bbr_module/          # 源码文件重命名或保持原名
cd ~/bbr_module

如果你习惯使用 bbr.c,可以:
cp tcp_bbr.c bbr.c

但模块名称仍由源码中的 tcp_congestion_ops .name = "bbr" 决定,不影响最终模块名。

步骤 2:编写 Makefile

创建 Makefile 文件,内容如下:

makefile 复制代码
obj-m := tcp_bbr.o
# 如果文件已重命名为 bbr.c,则改为 obj-m := bbr.o

如果保持文件名为 tcp_bbr.c,模块对象会自动是 tcp_bbr.o

模块最终会被编译为 tcp_bbr.ko,加载时使用的名称是 tcp_bbr

步骤 3:编译模块

bash 复制代码
# 一般用下述方法编译即可:
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules

# 开启-O3编译(需要优化):
# make -C /lib/modules/$(uname -r)/build M=$(pwd) modules EXTRA_CFLAGS="-O3"
  • -C 指向当前内核的构建目录(由 linux-headers 包提供)。
  • M=$(pwd) 指定模块源码所在目录。

如果成功,会生成 tcp_bbr.ko

步骤 4:加载/测试模块

bash 复制代码
sudo modprobe tcp_bbr        # 或 insmod tcp_bbr.ko
sysctl net.ipv4.tcp_congestion_control=bbr   # 启用 BBR

2. 常见问题说明

问题 原因 解决
提示缺少 net/tcp.h 等头文件 直接 gcc 编译会失败 必须使用内核构建系统(make -C /lib/modules/...
头文件版本不匹配 内核版本与头文件不一致 安装正确版本的 linux-headerssudo apt install linux-headers-$(uname -r)
需要修改内核配置才能使用 当前内核可能已有 BBR 模块 如果有,直接 modprobe tcp_bbr 即可,无需编译

多数现代 Linux 发行版已内置 BBR 模块,你只需:

bash 复制代码
sudo modprobe tcp_bbr
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
相关推荐
深圳市宝华视联11 分钟前
Python 读取 IP 视频流简单 Demo
python·嵌入式硬件·opencv·网络协议·tcp/ip·实时音视频·嵌入式实时数据库
Raas10043 分钟前
企业AI网关哪个好?MAI Gateway(魔芋企业级AI网关)入选2026年企业AI网关推荐清单
网络·人工智能·gateway·企业·ai网关·mai gateway
芯盾时代1 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(一)
网络·安全·web安全
深蓝海拓1 小时前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(五)为当前动作画面的信号连接变量
网络·笔记·python·学习·pyqt
啦啦啦啦啦zzzz2 小时前
时间轮定时器
linux·服务器·网络·c++·定时器
ITyunwei09872 小时前
从 ITIL 视角量化-第三集:工单系统如何成为 ITSM 治理抓手?架构+量化
运维·网络·企业微信
DLYSB_2 小时前
让 PLC“开口说话”:基于 Modbus TCP 的声光语音告警设计与 Python 调试
python·网络协议·tcp/ip·报警灯
半桶水专家2 小时前
MQTT协议使用手册
网络
那年窗外下的雪.2 小时前
AIDC 学习日志|第 14 天|MAC Flapping 与 EVPN 多归属分层排障
网络·git·学习·macos·github·spine
2601_963282772 小时前
油田、工矿厂区 DMR 专网对讲系统:部署实施、干扰治理与防爆终端选型实战
网络·架构