拥塞控制算法系列之:Swift-谷歌2020年SIGCOM-包级别端到端TIMELY拥塞控制算法

核心要点:

  1. 谷歌 2020 SIGCOM
  2. 基于delay的AIMD
  3. 拥塞拆分EC和FC,时延敏感场景优势
  4. 分别计算EC和FC的wnd(最核心)
  5. 保障吞吐和低延迟。Swift 因利用延迟的简单性和有效性而闻名
  6. 包级别的
  7. 论文:https://dl.acm.org/doi/pdf/10.1145/3387514.3406591
  8. 论文翻译版:参考附件

其他:

  • Swift 是 Google 提出的一种用于数据中心内通信的基于延迟的拥塞控制算法
  • 基于delay的拥塞控制算法(不是基于丢包)
  • Swift 的发展是由存储工作负载、主机网络堆栈和数据中心交换机的趋势推动的
  • 通过AIMD(加性增加乘性减少)控制和在极端拥塞情况下的流量控制来实现端到端的延迟目标
  • 拆分拥塞:Swift 将拥塞分为两个部分:NIC-to-NIC (fabric) 延迟(数据中心内不同节点间)、Endpoint 延迟(主机之间的传输延迟)。EC和FC,fabric congeston和endpoint congestion。
  • Swift 通过分别计算这两部分的拥塞窗口(ecwnd 和 fcwnd)来控制发送速率
  • 传统的研究主要集中在 fabric 拥塞上
  • 包级别的CC,perPacket。(其他算法还有QP级别、IP级别等)
  • 记录数据包在各个时间戳,包括软件、NIC等收发时间戳
  • 时间戳影响点:(参考论文原文图)
    • 端侧Tx delay,影响因子Tx queue
    • 交换机 Forward delay,影响因子 SW queue
    • 端侧Rx delay,影响因子Rx queue
      在这里插入图片描述
      在这里插入图片描述
  • 广域网和数据中心网络延迟不一样,端侧影响也不一样
  • 包含快速恢复机制,拥塞消退时,迅速增加发送速率,以便快速恢复到高效的传输状态。
  • 支持QoS,共享网络环境中,在大规模incast流量发生时,保持关键业务流量的性能。
  • 在拥塞窗口小于1的情况下,启用流控,计算数据包之间的发送间隔(基于RTT)控制速率。保障在高拥塞情况下维持低延迟和减少丢包。
  • 特点:
    • 易于部署和维护:使用简单的延迟目标来控制拥塞
    • 端到端的RTT分解为网络基础设施(fabric)和主机(host)部分,从而分别对不同原因的拥塞做出响应。
    • 能够在每台服务器上维持约100Gbps的吞吐量,同时保持低延迟和接近零的数据包丢失。long RPC场景要吞吐,short RPC要时延都能满足
    • 能够有效地处理大规模的incast流量,并且在多租户环境中保持良好的性能。
    • 延迟作为拥塞信号简单而有效,Swift的设计从TIMELY演变而来,通过简化绝对目标延迟的使用,提高了性能和鲁棒性。
    • 关注主机层面的拥塞,这在处理延迟敏感、IOPS密集型和字节密集型工作负载方面有帮助。
    • Swift算法的未来发展方向,包括如何进一步提高在极短传输中的延迟预测能力。
  • 优势:
    • 低延迟:在网络负载接近100%时仍能保持低延迟。
    • 简单:简单,易部署和维护。无需特殊的交换机配置,无需交换机协调
    • 端到端控制:独立适应网络和主机(包括NIC和主机网络栈)的拥塞,提供了端到端的拥塞控制,而不仅仅是在网络层面。
  • 不足:
    • 特定环境:只能数据中心,无法广域网
    • 对硬件的依赖:主要是时间戳精度
    • 动态调整挑战:快速变化的网络条件时,需要精心设计和调整算法参数。
    • 兼容性:混合使用传统TCP和其他拥塞控制算法的环境中需要适配。
    • 大规模incast流量的处理:虽然Swift算法设计了处理大规模incast流量的机制,但在实际部署中可能需要额外的策略来确保在极端情况下的性能。
    • 高性能:保持高吞吐量的同时,实现低延迟和低丢包率。关键关注点:吞吐、实验、丢包
    • 多租支持:为不同的流量类型提供有效的拥塞控制,避免单租大量流量影响其他租户
  • 典型拥塞场景支持:
    • 多租场景:不会相互干扰。
    • 混合流量场景:混合,包括短期、突发流量和长期的、稳定的流量。适应这种多样性,通过动态调整拥塞窗口和目标延迟来优化性能。
    • 存储和分析工作负载场景:适合于对存储和分析工作负载进行优化,这些工作负载通常需要高IOPS(输入/输出操作每秒)和低延迟的网络性能。
    • 大规模并行计算场景:低延迟和高吞吐
    • 网络拓扑变化场景:适应拓扑变化,如节点添加或移除,以及链路速度的变化。通过动态调整目标延迟。
    • 网络故障和恢复场景:包含快速恢复机制
    • 数据中心网络升级场景:适应速率升级如100G到200G这些变化,调整目标延迟来优化新旧硬件的性能。
    • 虚拟化和容器化环境场景:可在虚拟化和容器化环境中工作
  • 术语:AIMD英文全称:Additive Increase Multiplicative Decrease。TCP/IP模型中,属于运输层,为了解决拥塞控制的一个方法,即:加性增,乘性减,或者叫做“和式增加,积式减少”。加增乘减
  • 论文摘要信息:
    在这里插入图片描述
  • 论文:https://dl.acm.org/doi/pdf/10.1145/3387514.3406591
  • 其他
    • 行业中闪存的需求是100K+ IOPS的delay在100u (u表示us )
    • 行业中NVMe的需求是 1M+ IOPS的delay在 10u,需求来源是如果等太久服务器资源浪费
    • 拥塞控制是数据中心系统性能的关键推动因素(或限制因素)
    • DCTCP在长尾延迟在ms级别,尤其是大规模时候
    • DCTCP 、PFC 、DCQCN 和 HPCC 等协议使用来自交换机的显式反馈ECN来保持网络队列较短和 RPC 完成时间较短。它们可以提供良好的性能,但在大型incase和 IOPS 密集型工作负载下无济于事。原文:

    but they do not help under large incasts and IOPS-intensive workloads.

  • 核心算法(待进一步研究)
    在这里插入图片描述

参考:
https://zhuanlan.zhihu.com/p/566563035
https://baike.baidu.com/item/AIMD/10641459?fr=ge_ala

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587813.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【25考研】:四川大学计算机学院24届874考研考情分析

去年的考情分析也是我做的, 今年就在去年的基础上做了。保持形式不变,更改数据。 21考情: 万载月寒肠断客:四川大学计算机学院21届CS考研考情分析 22考情: 懒羊羊:四川大学计算机学院2022考研考情分析 2…

嵌入式数据库-Sqlite3

阅读引言: 本文将会从环境sqlite3的安装、数据库的基础知识、sqlite3命令、以及sqlite的sql语句最后还有一个完整的代码实例, 相信仔细学习完这篇内容之后大家一定能有所收获。 目录 一、数据库的基础知识 1.数据库的基本概念 2.常用数据库 3.嵌入式…

【已解决】Error: error:0308010C:digital envelope routines::unsupported

前言 场景🎬 使用 Ant Design , 执行 npm run dev 出现异常。 文章目录 前言场景🎬 异常信息解决方案方案一(推荐)MAC | Linux 电脑成功⬇️ Windows 电脑 方案2: 不懂留言 JavaPub 异常信息 我直接异常信息,你可以…

开源流程图表库(04):mxGraph,都是可视化编辑,导出使用。

mxGraph是一个用于创建和展示图形的JavaScript库。它提供了丰富的功能和工具,可以用于构建各种类型的图形应用程序,包括流程图、组织结构图、网络拓扑图等。 mxGraph的编辑器 一、mxGraph的特点和功能 以下是一些mxGraph的特点和功能: 强大…

Python PDF页面设置 -- 旋转页面、调整页面顺序

在将纸质文档扫描成PDF电子文档时,有时可能会出现页面方向翻转或者页面顺序混乱的情况。为了确保更好地浏览和查看PDF文件,本文将分享一个使用Python来旋转PDF页面或者调整PDF页面顺序的解决方案。 目录 使用Python旋转PDF页面 使用Python调整PDF页面…

Java设计模式:代理模式的静态和动态之分(八)

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在软件设计中,代理模式是一种常用的设计模式,它为我们提供了一种方式来控制对原始对象的访问。在Java中&a…

华为ensp路由器模拟ftp服务器访问

众所周知ensp的pc只有ping功能,ssh、telnet、ftp都无法实现,所以想实现需要更换为路由器 R1需要FTP到server的ftp服务 server的FTP配置就这些命令,主要的是路径,然后在网络可达的情况下就可以进行登录测试了 aaa local-user hu…

AJAX——Axios

步骤 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, …

iOS App Store审核要求与Flutter应用的兼容性分析

本文探讨了使用Flutter开发的iOS应用能否上架&#xff0c;以及上架的具体流程。苹果提供了App Store作为正式上架渠道&#xff0c;同时也有TestFlight供开发者进行内测。合规并通过审核后&#xff0c;Flutter应用可以顺利上架。但上架过程可能存在一些挑战&#xff0c;因此可能…

FFmpeg获取视频详情

话不多说&#xff0c;直接上代码&#xff1a; pom依赖&#xff1a; <!--视频多媒体工具包 包含 FFmpeg、OpenCV--><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.3</versi…

并发编程之线程池的底层原理的详细解析

线程池的底层原理 Executors源码&#xff1a; public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads, nThreads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());} ​public static ExecutorServ…

Kaggle:收入分类

先看一下数据的统计信息 import pandas as pd # 加载数据&#xff08;保留原路径&#xff0c;但在实际应用中建议使用相对路径或环境变量&#xff09; data pd.read_csv(r"C:\Users\11794\Desktop\收入分类\training.csv", encodingutf-8, encoding_errorsrepl…