NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

基于 bbr 拥塞控制的云盘提速实践

  • 2019-11-28
  • 本文字数:2082 字

    阅读完需:约 7 分钟

基于bbr拥塞控制的云盘提速实践

云盘的速度是业界硬指标,是产品口碑和形象。传统的提速手段是大多基于代理服务器,用合适的代理连接用户与存储服务器。此方式有一定效果,但未结合国内网络情况和网络原理进行解决。bbr 拥塞控制算法针对长肥网络有很好的疗效,非常适合广域网情况,实践后速度迅猛提升。

引言

云盘作为数据存储产品,无论个人还是公司使用,其速度均是第一指标,也是用户评判云盘好坏的关键因素。速度上的提升会带来好的用户体验,以及用户粘连性。所以提速成为迫切需求。

传统 tcp 拥塞控制

1 广域网络环境

目前广域网普遍属于高带宽,高延迟,存在一定丢包率。网络丢包存在两种情况,第一为拥塞丢包,第二为错误丢包。错误丢包可能是网络传输过程中异常导致,大概有十万分之一的概率。


国内有很多二级运营商,它们大多为共享带宽,其网络 buffer 也是共享,网络共享 buffer 打满,会导致丢包,此类丢包造成滑动窗口折半,发送速率骤降。实则各用户带宽并未完全打满。


此类网络以下统称为长肥网络:即往返时间长,但带宽较大。

2 传统 tcp 拥塞控制算法

传统 tcp 拥塞控制目的是最大化打满网络带宽。一条链路就像水管,装满此水管需要估算管内容量。


管内容量 = 水管粗细(链路带宽) * 水管长度(往返延迟)


拥塞控制过程:慢启动、加性增、乘性减。开始指数增加发送窗口,遇到丢包快速折半发送窗口,降低发送速率。

3 tcp 拥塞控制无法解决如下问题

无法定位丢包原因

无法区分丢包是拥塞导致还是错误导致,如果是网络传输错误导致丢包,其实还未打满带宽。在有一定丢包率的长肥网络中发送窗口会收敛到很小,导致发包速率很小。

缓冲区膨胀问题

网络缓冲区膨胀,网络中有一些 buffer,用于吸收波动的流量。开始阶段以指数级速率快速发包,导致 buffer 快速打满,buffer 满后会产生丢包。丢包造成发送窗口骤降,而后发送窗口和 buffer 都会逐渐下降收敛。此情况未能打满带宽以及 buffer 使用率。认为此类丢包是带宽打满,实则不然,只是开始过快的增长导致 buffer 打满丢包而已。



图 2.1 缓冲区膨胀现象

bbr 拥塞控制

1 解决上述两类问题

  1. 不考虑丢包情况,因为无法区分拥塞丢包,错误丢包。

  2. 缓冲区膨胀现象是同时估计带宽和延迟导致的。因为发送窗口需要这两参数计算出管内容量,但同时计算会导致不准。例如:要测最大带宽需灌满水管,此时延迟必然高,因为缓冲区占满,包排队需时间。而要测最低延迟,需网络流量低,此时缓冲区基本为空,延迟低,但此时管内带宽估值也低。所以无法同时测量带宽和延迟的最好情况,即最大带宽和最低延迟。这就是本质,为什么传统 tcp 在长肥网络中很难打满带宽。


解决办法:分别估算带宽和延迟,以计算出最合适的管内容量。

2 bbr 拥塞控制过程

慢启动

指数增长发包,不理会丢包,不折半窗口,只检查有效带宽是否还再增长,直到有效带宽不再增长为止。有效带宽是指还未开始占用 buffer。

排空阶段

慢启动后,发包量依然有 3 倍管内容量,此时降低发包速率,以免管中多余包占满 buffer,导致丢包。

带宽探测阶段

每 8 个往返为一个周期,第一个往返,bbr 尝试以 5/4 速率增大发包,以估算带宽是否打满,第二个周期以 3/4 速率降低发包,以排空 buffer 中的冗余包,避免发生膨胀。剩下 6 个往返以新的带宽估算速率发包。如此为一个周期,不断探测直到打满真实带宽,如图 3.1 所示。

延迟探测阶段

每隔 10 秒,如果未发现新的最低延迟。此时发送窗口减到 4 个包,以此段时间发包的最低延迟作为估值。然后发送窗口回到之前的状态。



图 3.1 带宽检测持续增长,绿色为发包数量,蓝色为延迟



图 3.2 丢包率和有效带宽示意图。绿色为 bbr,红色为传统 tcp

3 bbr 小结

bbr 开始阶段不会迅猛打满管道,主要是避免缓冲区膨胀带来的丢包和延迟,后续交替探测带宽和延迟。探测带宽时,先增大发送速率后减小,也是避免缓冲区膨胀问题,丢包率降低不断收到有效 ack,进而持续增大发送窗口,如此轮回得到最大带宽。探测延迟时,发送窗口降为 4 个包,此时缓冲区未占满,管内通畅,探测到的延迟也是低而准的。交替探测带宽和延迟得到准确的管内容量,排空方式能避免缓冲区膨胀带来的丢包和延迟。

4 bbr 适合场景

  1. 存在一定丢包率的高带宽,高延迟网络。

  2. buffer 较小的慢接入网络。

bbr 在云盘中的实践

内核升级

代理服务器内核升级到 4.9 以上

开启 bbr 拥塞控制算法

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf       echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf       sysctl -p       sysctl net.ipv4.tcp_available_congestion_control       sysctl -n net.ipv4.tcp_congestion_control
复制代码

调整 tcp 内核参数

调整 tcp 内核参数,让滑动窗口大小突破 64kb


sysctl net.ipv4.tcp_window_scaling=1
复制代码

提速结果

人均速度提升


图 4.1 人均速度图


人均速度提升:50%左右

速度区域占比提升


图 4.2 速度区域占比图,蓝色为 1M/s- 2M/s,绿色为 2M/s 以上


1M 以上人数占比提升:100%左右


参考文献:

[1] Cardwell, Neal, et al. “BBR: Congestion-Based Congestion Control.” Queue14.5 (2016): 50.


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/dD395lMqLD4U61ZT2eAsoQ


2019-11-28 14:581042

评论

发布
暂无评论
发现更多内容

CodeFuse开源ModelCache

百度开发者中心

深度学习 大模型 人工智能、

【教程】APP开发后如何上架?

雪奈椰子

新零售SaaS架构:订单履约系统的概念模型设计

不在线第一只蜗牛

架构 零售 SaaS 平台开发

LangChain与Chroma的大模型语义搜索应用

百度开发者中心

人工智能 深度学习 大数据 大模型

模型驱动测试:引领软件质量的新潮流

测试人

软件测试 自动化测试 测试开发

Commander One PRO for mac 3.7.0中文激活版 文件管理器

iMac小白

Desktop Stickers for Mac(桌面贴纸)v2.6激活版

iMac小白

MetaRename for Mac(文件重命名工具)v1.0.10激活版

iMac小白

模型驱动测试:引领软件质量的新潮流

霍格沃兹测试开发学社

流行 NFT 的必备指南

Footprint Analytics

NFT

转型敏捷中,有哪些无形的障碍?

敏捷开发

项目管理 Scrum 敏捷开发 敏捷转型

ConfigMap挂载与Subpath在Nginx容器中的应用

华为云开发者联盟

容器 开发 华为云 华为云开发者联盟

剧透!3月9日deepin Meetup · 成都站,精彩议题&活动环节早知道

nn-30

大模型时代下的视觉识别任务

百度开发者中心

人工智能 图像处理 图像 大模型

一文讲明白Java中线程与进程、并发与与并行、同步与异步

EquatorCoco

Java 线程 进程

Topaz Video AI for mac v4.2.0激活版 强大的视频增强软件

iMac小白

华为云云原生专家入选全球顶级开源组织CNCF技术监督委员会

华为云开发者联盟

华为云 云原生开源 华为云开发者联盟 华为云云原生

MO干货 | shuffle执行计划解析(上篇)

MatrixOrigin

数据库 云原生 分布式,

开篇语 | 容器中的⼤模型 (LLM in Containers)

智领云科技

容器 大模型

SecureCRT for mac v9.5.1注册激活版 强大的终端仿真软件

iMac小白

NUKE 14 for mac v14.0v5激活版 电影后期特效合成软件

iMac小白

Java IDEA 插件新升级,帮助生成 API 文档

Apifox

Java IDEA Apifox 接口文档 API

实例详解如何构建动态SQL语句

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

Animate 2024 for mac(An2024)v24.0.1中文激活版

iMac小白

如何做代币分析:以 CRO 币为例

Footprint Analytics

Token

2024年2月NFT市场激增:NFT趋势、热门项目和市场分析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

容器中的⼤模型(一)| 三行命令,大模型让Excel直接回答问题

智领云科技

容器 大模型

EndNote 21 for Mac(文献管理软件) v21.2激活版

iMac小白

2024上海国际自动驾驶技术展览会

AIOTE智博会

自动驾驶展 智能驾驶展

多任务一次搞定!selenium自动化复用浏览器技巧大揭秘

霍格沃兹测试开发学社

JSON 和 Form-data: 深入理解 Web 开发中的数据提交方式

Liam

json 程序员 前端 数据交互 Form-data

基于bbr拥塞控制的云盘提速实践_文化 & 方法_卿鹏_InfoQ精选文章