Skip to main content

Ubuntu XanMod + BBR3 网络优化

适用环境:Ubuntu 22.04 LTS -> Ubuntu 24.04 LTS,KVM 虚拟化,800Mbps 带宽
目标:安装 XanMod 内核(含 BBR3)并完成 TCP 调优

目录

  1. Ubuntu 22.04 升级到 24.04
  2. 安装 XanMod 内核
  3. TCP 优化配置
  4. 重启并验证
  5. 参数说明

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
x64v1linux-xanmod-lts-x64v12003 年前老 CPU
x64v2linux-xanmod-x64v2Nehalem/Bulldozer 以上
x64v3linux-xanmod-x64v3Haswell/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_controlbbr3BBRv3(XanMod 提供),适合高带宽场景
default_qdiscfqBBR 常见搭配,减少队列膨胀
tcp_ecn1显式拥塞通知,兼容性较好

缓冲区

参数说明
rmem_max / wmem_max512MB系统允许的最大读写缓冲
tcp_rmem / tcp_wmem4K / 1M / 512Mmin/default/max,适配高带宽
tcp_moderate_rcvbuf1允许内核动态调整接收缓冲

重传优化

参数说明
tcp_retries28缩短死连接放弃时间
tcp_sack1丢包时优先重传缺失片段
tcp_dsack1帮助识别不必要重传
tcp_recovery1启用 RACK 恢复
tcp_early_retrans3提前重传,减少等待

其他优化

参数说明
tcp_fastopen3同时开启客户端和服务端 TFO
tcp_slow_start_after_idle0空闲后不重新慢启动
tcp_mtu_probing1减少 MTU 黑洞问题
tcp_notsent_lowat131072控制发送队列水位
tcp_tw_reuse1减少高并发下 TIME_WAIT 压力

注意事项

  • XanMod 主要支持 noble (24.04)、plucky (25.04) 及以上,jammy (22.04) 支持有限。
  • KVM 单核场景下,调度器收益可能有限,但 BBR3 网络优化仍可能有效。
  • 800Mbps 是共享带宽上限,优化无法突破物理限制。
  • 建议稳定运行几天后再考虑清理旧内核,保留回退能力。
# 稳定后再清理旧内核(按实际版本号调整)
sudo apt autoremove --purge