首页/系统/Linux 内核与性能调优速查/tcp_available_congestion_control 算法清单
sysctl 内核参数72 条

tcp_available_congestion_control 算法清单

内核当前支持的拥塞控制算法(available)与允许应用切换的算法(allowed);切 bbr 前先在清单中确认。

拥塞算法清单与启用

tcp_available_congestion_control 与 tcp_allowed_congestion_control 是两个只读清单:前者列出内核当前支持(已编译或已加载模块)的算法,后者列出允许应用通过 setsockopt 自行切换的算法。想用 BBR 必须先在 available 里看到它,通常意味着需要加载 tcp_bbr 模块;默认算法由 net.ipv4.tcp_congestion_control 指定,只作用于新建连接。

基本信息

可用清单net.ipv4.tcp_available_congestion_control
允许清单net.ipv4.tcp_allowed_congestion_control
默认算法net.ipv4.tcp_congestion_control
常见值cubic、reno,加载模块后出现 bbr
权限查看无需权限,切换需要 root 或容器内相应能力

典型使用场景

  • 启用 BBR 前确认模块是否已经加载
  • 应用 setsockopt(TCP_CONGESTION) 失败时确认 allowed 是否包含目标算法
  • 网络性能复盘:确认线上连接实际使用的算法与预期一致
  • 同机多业务需要不同算法时评估可行性
  • 内核升级后核对算法清单是否发生变化

查看与切换

查看与切换
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_allowed_congestion_control
sysctl net.ipv4.tcp_congestion_control
modprobe tcp_bbr                        # 先加载模块,再回看 available 清单
sysctl -w net.ipv4.tcp_congestion_control=bbr    # 设为新连接的默认算法
ss -tin state established | head -20    # 看连接上的算法标记(cubic/bbr)

三个参数的分工

参数作用注意
available内核当前可用的算法清单模块加载后才会出现新算法
allowed允许应用内切换的算法集合不在集合内时 setsockopt 会被拒绝
tcp_congestion_control新建连接的默认算法已建立的连接保持原算法不变
清单里没有目标算法时,先解决模块加载或内核版本问题;反复写 tcp_congestion_control 只会报 No such file or directory。
改默认算法只影响之后新建的连接,长连接业务需要应用重建连接或滚动重启才会生效。

确认算法真的在用

  • 用 ss -i 或 ss -tin 看单条连接的算法标记与 rtt、cwnd、retrans 指标
  • 加载模块后立即回看 available 清单,确认目标算法已出现再改默认值
  • 在容器内确认宿主内核是否已加载该模块,容器自身无法加载宿主模块

常见算法与适用场景

  • cubic:多数发行版的默认算法,通用场景下表现稳定
  • bbr:基于带宽与延迟估计,在高丢包或长肥管道上常优于丢包驱动的算法
  • reno:最基础的算法,适合作为兼容性与排障时的对照基线

易错点

  • 不查清单直接写参数:模块未加载时切换 BBR 会失败,误判成权限问题
  • 忽略 allowed 清单:受限环境里应用内切换会被拒绝,系统层看着配置正确
  • 以为改默认值会立刻影响所有连接:已建立连接沿用旧算法,需要重建连接
  • 把 available 当成已启用:它只是可用清单,实际默认算法另由 tcp_congestion_control 决定
  • 不做前后对比就固定算法:收益依赖丢包率与 RTT 特征,必须实测验证

数据来源与参考

  • Linux 内核 Documentation/networking/ip-sysctl.rst
  • man 7 tcp(TCP_CONGESTION)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌