拥塞控制算法cubic 和bbr

1. 背景

CUBIC 和 BBR 是两种用于网络流量控制的拥塞控制算法,广泛应用于传输中,本质上是用于提升网络速度、稳定性和效率的方案。CUBIC 和 BBR 在本质思想、设计目标和工作方式上存在很大的差异,以下是两者的详细对比。

1.1 CUBIC

提出者: CUBIC 是 TCP 拥塞控制的算法之一,于 2008 年提出,是 TCP Reno 和 TCP Vegas 的后继者。
默认算法:

  • Linux 内核中的默认 TCP 拥塞控制算法。
  • 特点为简单易实现,与传统 TCP 的兼容性良好。

核心特点:

  • 基于增量式带宽探测,以时间和 RTT(Round Trip Time, 往返时间)为核心参数计算网络的可用带宽。
    拥塞窗口(拥塞控制的核心变量)的增长由一个三次方函数(cubic 函数)描述。
  • 更适合高带宽、高延迟的网络环境。

1.2 BBR (Bottleneck Bandwidth and RTT)

提出者: 谷歌(Google),首次发布于 2016 年。
默认算法:

  • 正在逐步应用于一些服务(例如 Google 和 YouTube),作为替代传统 TCP 拥塞控制算法的优化方案。

核心特点:

  • 基于可用带宽和往返时间的主动估算。
  • 思路与传统 TCP 比较激进,倾向于紧贴「瓶颈带宽」传输,精准预测网络容量,最大化利用。
  • 擅长处理高带宽、动态相变的网络(例如慢速 5G 信道)。

1.3 核心机制对比

特性CUBICBBR
设计模型以复合函数(时间和 RTT 结合)逐步增加窗口大小主动探索网络「瓶颈带宽」和「最低 RTT」
拥塞处理遵循「丢包信号」来判断拥塞,减少窗口大小仅通过带宽测量和 RTT 来判断拥塞,无需依赖丢包信号
拥塞窗口增长基于三次方函数,适合高延迟带宽产品(增长速度更快),尤其对长距离链路传输友好无拥塞窗口概念,更专注于估计「实际带宽」而非增加传输速率
RTT 对吞吐量的影响RTT 较长时增长更慢,表现会衰减(如 CUBIC 更适合 LAN 等网络)。RTT 对吞吐量几乎无影响(只需精准捕获最低 RTT,不依赖 RTT 测量传输性能)。
带宽使用优化并未真实估算网络的瓶颈带宽。测量网络瓶颈带宽,确保流量紧贴带宽上限,避免过多流量对网络导致拥塞。
恢复速度默认使用丢包后退避方式逐步恢复流量速率,增长较慢快速恢复网络速率,带宽调整较为灵活。
适应多样链路对高带宽高延迟链路(如光纤线路)更优化对不稳定网络(如卫星通信、无线网络)及非均匀链路自适应能力更好。

2. 实验

在异地场景下,ping大概39ms。

  1. 查看本地拥塞控制算法:

cat /proc/sys/net/ipv4/tcp_congestion_control

  1. 通过iperf3测试TCP网络的总体吞吐量以及带宽,用10个并发

iperf3 -c {ip地址} -P 10

  1. 使用cubic

执行iper3测试发现,部分链接带宽差异很大(甚至10倍), 且频繁发生重传

  1. 使用bbr

sudo sysctl net.ipv4.tcp_congestion_control=bbr

执行iper3测试发现,显示所有链接都十分稳定

在异地网络不稳定场景下,使用BBR效果更好

<think>首先,用户的问题是:“我想查找将Linux的TCP拥塞控制算法修改为BBR的方法 请问将Linux的TCP拥塞控制算法修改为BBR的方法”。我需要基于用户提供的引用来回答这个问题。用户提供了四个引用,这些引用都涉及如何启用TCP BBR拥塞控制算法。 关键点: - 用户要求“将Linux的TCP拥塞控制算法修改为BBR的方法”。 - 我需要使用提供的引用,并在回答中引用它们。 - 引用末尾要自然地添加引用标识,如[^1]、[^2]等。 - 回答必须结构化清晰,帮助用户逐步解决问题。 回顾引用: - [^1]: 启用谷歌的TCP拥塞控制算法以及Linux内核升级。执行sysctl命令检查BBR是否开启。 - [^2]: Centos开启BBR拥塞控制算法,解释BBR的好处。 - [^3]: 如何配置TCP BBR作为默认的拥塞控制算法,使用sysctl命令。 - [^4]: 开启TCP BBR,通过echo命令写入sysctl.conf文件以持久化。 用户的问题具体是“修改为BBR的方法”,所以我要提供步骤。 步骤总结: 1. **内核要求**:BBR需要较新的Linux内核(4.9+)。用户可能已经满足,但如果不满足,需要升级内核。 2. **启用BBR**:通过sysctl命令临时设置或持久化设置。 - 临时方法:`sysctl -w net.ipv4.tcp_congestion_control=bbr` - 持久化:编辑`/etc/sysctl.conf`文件,添加两行: ```bash net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr ``` 然后运行`sysctl -p`应用更改。 3. **验证**:检查BBR是否启用: - `sysctl net.ipv4.tcp_available_congestion_control` 应该显示bbr - `sysctl net.ipv4.tcp_congestion_control` 应该显示bbr 从引用中: - [^1] 提到检查命令。 - [^3] 提到临时设置持久化。 - [^4] 提到写入sysctl.conf并持久化。 - [^2] 解释BBR的好处,但用户需要方法,所以我可以简要提到。 回答结构: - 先介绍BBR是什么(简短)。 - 然后提供逐步方法。 - 结束时生成相关问题。 - 确保使用正确的LaTeX格式:行内用$...$,独立用$$...$$,但这里可能不需要复杂公式。 - 命令是文本,不需要LaTeX,除非有数学表达式。例如,没有数学表达式,所以直接使用代码块。 - 使用中文回答。 最终回答结构: 1. **简介**:BBR的好处(基于引用)。 2. **前提条件**:内核要求。 3. **修改方法**:详细步骤。 4. **验证**:如何检查。 5. **相关问题**:生成一些相关问题。 相关问题生成(基于用户指令): - 类似于示例,生成2-3个相关问题。 - 可能如:如何升级内核?BBR与其他算法的区别?如何优化BBR设置? 引用标识: - 在回答中引用相关部分时添加[^number]。 完整回答: - 开头:直接回答问题。 - 步骤:清晰、逐步。 - 结尾:相关问题。 </think>以下是将Linux的TCP拥塞控制算法修改为BBR(Bottleneck Bandwidth and Round-trip Propagation Time)的详细方法。BBR是谷歌开发的拥塞控制算法,可优化网络掉包导致的卡顿问题,通过动态调整发包速率提升吞吐量延迟性能[^2]。修改方法依赖于Linux内核版本(需4.9或更高),如果内核较旧,需先升级。以下是逐步操作指南,基于官方推荐流程。 ### 前提条件 - **内核检查**:确保内核版本≥4.9。运行命令检查: ```bash uname -r ``` 如果版本低于4.9,需先升级内核(例如在CentOS/Ubuntu使用包管理器升级)。 - **BBR可用性确认**:运行以下命令,确保内核支持BBR: ```bash sysctl net.ipv4.tcp_available_congestion_control ``` 输出应包含`bbr`,例如:`net.ipv4.tcp_available_congestion_control = reno cubic bbr`[^1]。若无,需安装支持BBR的内核模块。 ### 启用BBR的逐步方法 #### 1. **临时启用(重启后失效)** 适用于测试或临时优化: ```bash sysctl -w net.ipv4.tcp_congestion_control=bbr ``` 此命令直接修改内核参数,无需重启[^3]。 #### 2. **持久化启用(永久生效)** 确保BBR在系统重启后自动生效: - **步骤1**: 编辑系统配置文件: ```bash echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf # 设置公平队列调度器,优化BBR性能 echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf # 设置BBR为默认拥塞算法 ``` - **步骤2**: 应用配置更改: ```bash sysctl -p ``` 这将加载新配置,确保BBR生效[^4]。 #### 3. **验证BBR是否生效** 运行以下命令检查: ```bash sysctl net.ipv4.tcp_congestion_control ``` 输出应为:`net.ipv4.tcp_congestion_control = bbr`[^1]。 同时确认可用算法: ```bash sysctl net.ipv4.tcp_available_congestion_control ``` 输出应包含`bbr`(如:`bbr reno cubic`)[^1]。 ### 注意事项 - **兼容性**:BBR在大多数现代Linux发行版(如CentOS、Ubuntu)上工作良好,但需内核支持。 - **优化效果**:BBR能显著减少网络掉包导致的卡顿,尤其在高延迟或拥塞链路中[^2],但需测试实际网络环境。 - **回滚方法**:如果需要恢复默认算法(如cubic),删除`/etc/sysctl.conf`中添加的行,并运行`sysctl -p`[^3]。 通过以上步骤,您已成功将TCP拥塞控制算法修改为BBRBBR在云服务器或高延迟网络中表现优异,能提升数据传输效率[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值