Ubuntu XanMod + BBR3 网络优化
适用环境:Ubuntu 22.04 LTS -> Ubuntu 24.04 LTS,KVM 虚拟化,800Mbps 带宽
目标:安装 XanMod 内核(含 BBR3)并完成 TCP 调优
目录
- Ubuntu 22.04 升级到 24.04
- 安装 XanMod 内核
- TCP 优化配置
- 重启并验证
- 参数说明
1. Ubuntu 22.04 升级到 24.04
1.1 升级前准备
# 确保系统完全更新
sudo apt update && sudo apt upgrade -y
# 安装升级工具
sudo apt install -y update-manager-core
# 确认当前版本
cat /etc/os-release
1.2 执行版本升级
sudo do-release-upgrade
升级过程中遇到配置文件询问,一般选择保留当前版本;SSH 端口询问建议保留。
1.3 升级后确认
# 确认版本为 24.04 (noble)
cat /etc/os-release
# 确认内核
uname -r
2. 安装 XanMod 内核
Ubuntu 22.04 (jammy) 不在 XanMod 官方支持列表,建议先升级到 24.04 (noble)。
2.1 导入 GPG Key
wget -qO - https://dl.xanmod.org/archive.key \
| gpg --dearmor -vo /etc/apt/keyrings/xanmod-archive-keyring.gpg
2.2 添加仓库
echo "deb [signed-by=/etc/apt/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/xanmod-release.list
2.3 确认 CPU 等级
| 等级 | 包名 | 适用 CPU |
|---|---|---|
| x64v1 | linux-xanmod-lts-x64v1 | 2003 年前老 CPU |
| x64v2 | linux-xanmod-x64v2 | Nehalem/Bulldozer 以上 |
| x64v3 | linux-xanmod-x64v3 | Haswell/Zen 以上(推荐) |
检查 CPU 是否支持 x64v3(需要 avx2):
grep -o 'avx2' /proc/cpuinfo | head -1
输出 avx2 即可使用 x64v3。也可以用官方检测脚本:
bash <(wget -qO - https://dl.xanmod.org/check_x86-64_psabi.sh)
2.4 安装内核
# 1) 验证仓库
sudo apt update && apt-cache search xanmod
# 2) 安装(EPYC 7542 支持 AVX2,用 x64v3)
sudo apt install -y linux-xanmod-x64v3
3. TCP 优化配置
建议在重启加载新内核前写入,重启后直接生效。
sudo tee /etc/sysctl.d/99-network-tune.conf >/dev/null << 'EOF_SYSCTL'
# 拥塞控制(BBR3 由 XanMod 内核提供)
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr3
net.ipv4.tcp_ecn = 1
# 缓冲区(针对 800Mbps 高带宽)
net.core.rmem_max = 536870912
net.core.wmem_max = 536870912
net.core.rmem_default = 1048576
net.core.wmem_default = 1048576
net.ipv4.tcp_rmem = 4096 1048576 536870912
net.ipv4.tcp_wmem = 4096 1048576 536870912
net.ipv4.tcp_mem = 786432 2097152 536870912
# 连接队列
net.core.somaxconn = 32768
net.core.netdev_max_backlog = 65536
net.core.optmem_max = 65536
net.ipv4.tcp_max_syn_backlog = 16384
# TCP 特性
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_dsack = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_notsent_lowat = 131072
# TIME_WAIT 优化
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_tw_buckets = 32768
# 端口与 KeepAlive
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 9
# 丢包与重传优化
net.ipv4.tcp_retries2 = 8
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_recovery = 1
net.ipv4.tcp_early_retrans = 3
EOF_SYSCTL
# 立即应用
sudo sysctl --system
4. 重启并验证
4.1 更新 GRUB 并重启
sudo update-grub && sudo reboot
4.2 验证清单
# 1) 内核版本(应含 xanmod)
uname -r
# 2) BBR3 生效
sysctl net.ipv4.tcp_congestion_control
# 3) 查看可用拥塞算法
cat /proc/sys/net/ipv4/tcp_available_congestion_control
# 4) ECN 状态
sysctl net.ipv4.tcp_ecn
# 5) 队列算法
tc qdisc show
# 6) 缓冲区确认
sysctl net.core.rmem_max net.ipv4.tcp_rmem net.ipv4.tcp_wmem
4.3 带宽测试
# 安装测速工具
sudo apt install -y iperf3
# 单连接测试
iperf3 -c ping.online.net -p 5200 -t 10
# 多线程测试(更容易跑满带宽)
iperf3 -c ping.online.net -p 5200 -t 10 -P 4
5. 参数说明
拥塞控制
| 参数 | 值 | 说明 |
|---|---|---|
tcp_congestion_control | bbr3 | BBRv3(XanMod 提供),适合高带宽场景 |
default_qdisc | fq | BBR 常见搭配,减少队列膨胀 |
tcp_ecn | 1 | 显式拥塞通知,兼容性较好 |
缓冲区
| 参数 | 值 | 说明 |
|---|---|---|
rmem_max / wmem_max | 512MB | 系统允许的最大读写缓冲 |
tcp_rmem / tcp_wmem | 4K / 1M / 512M | min/default/max,适配高带宽 |
tcp_moderate_rcvbuf | 1 | 允许内核动态调整接收缓冲 |
重传优化
| 参数 | 值 | 说明 |
|---|---|---|
tcp_retries2 | 8 | 缩短死连接放弃时间 |
tcp_sack | 1 | 丢包时优先重传缺失片段 |
tcp_dsack | 1 | 帮助识别不必要重传 |
tcp_recovery | 1 | 启用 RACK 恢复 |
tcp_early_retrans | 3 | 提前重传,减少等待 |
其他优化
| 参数 | 值 | 说明 |
|---|---|---|
tcp_fastopen | 3 | 同时开启客户端和服务端 TFO |
tcp_slow_start_after_idle | 0 | 空闲后不重新慢启动 |
tcp_mtu_probing | 1 | 减少 MTU 黑洞问题 |
tcp_notsent_lowat | 131072 | 控制发送队列水位 |
tcp_tw_reuse | 1 | 减少高并发下 TIME_WAIT 压力 |
注意事项
- XanMod 主要支持 noble (24.04)、plucky (25.04) 及以上,jammy (22.04) 支持有限。
- KVM 单核场景下,调度器收益可能有限,但 BBR3 网络优化仍可能有效。
- 800Mbps 是共享带宽上限,优化无法突破物理限制。
- 建议稳定运行几天后再考虑清理旧内核,保留回退能力。
# 稳定后再清理旧内核(按实际版本号调整)
sudo apt autoremove --purge