拥塞控制算法系列之: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.mzph.cn/news/788716.shtml

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

相关文章

C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测效果一览基本介绍程序设计参考…

stream使用

stream流式计算 在Java1.8之前还没有stream流式算法的时候&#xff0c;我们要是在一个放有多个User对象的list集合中&#xff0c;将每个User对象的主键ID取出&#xff0c;组合成一个新的集合&#xff0c;首先想到的肯定是遍历&#xff0c;如下&#xff1a; List<Long> u…

xss【2】

1.xss钓鱼 钓鱼攻击利用页面&#xff0c;fish.php黑客钓鱼获取到账号密码存储的位置 xss进行键盘记录 2.xss常规防范 3.xss验证payload XSS&#xff08;跨站攻击&#xff09;_details/open/ontoggle-CSDN博客

C++ 哈希思想应用:位图,布隆过滤器,哈希切分

C 哈希思想应用:位图,布隆过滤器,哈希切分 一.位图1.位图的概念1.问题2.分析3.位图的概念4.演示 2.位图的操作3.位图的实现1.char类型的数组2.int类型的数组3.解决一开始的问题位图开多大呢?小小补充验证 4.位图的应用1.给定100亿个整数&#xff0c;设计算法找到只出现一次的整…

C#开发中一些常用的工具类分享

一、配置文件读写类 用于在开发时候C#操作配置文件读写信息 1、工具类 ReadIni 代码 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks;namesp…

VScode debug python(服务器)

方法一&#xff1a; 创建launch.json文件&#xff1a; launch.json文件地址&#xff1a; launch.json文件内容&#xff1a; {"version": "0.2.0", //指定了配置文件的版本"configurations": [{"name": "Python: Current File&…

达梦数据库 优化

谁进行优化&#xff1f;优化什么&#xff1f; 优化不能仅从数据库方面考虑&#xff0c;比如&#xff0c;在存储达到数据库极限、应用涉及人员设计的代码稀巴烂的情况下&#xff0c;进行调优就是杯水车薪的效果。 涉及到优化人员&#xff1a; 数据库管理员应用程序架构师应用…

MySQL高可用MHA

一、MHA概述 1.1 什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点故障的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在…

笔记本电脑win7 Wireless-AC 7265连不上wifi6

1.背景介绍 旧路由器连接人数有限&#xff0c;老旧&#xff0c;信号不稳定更换了新路由器&#xff0c;如 TL-XDR5430易展版用户电脑连不上新的WIFI网络了&#xff0c;比较着急 核心问题&#xff1a;有效解决笔记本连接wifi上网问题&#xff0c;方法不限 2.环境信息 Windows…

Nginx 高级

文章目录 Nginx反向代理概念配置 负载均衡概念配置 动静分离概念配置 网关防盗链keepalivednginx跨域 Nginx 反向代理 概念 反向代理&#xff08;Reverse Proxy&#xff09;方式是指以代理服务器来接受internet上的连接请求&#xff0c;然后将请求转发给内部网络上的服务器&…

LabVIEW挖坑指南

一、挖坑指南 1.1、输出变量放在条件框内 错误写法&#xff1a; 现象&#xff1a;如果没进入对应的分支&#xff0c;输出为默认值 正常写法&#xff1a; 让每个分支输出的值都在预料之内。 1.2、统计耗时不准 错误写法 现象&#xff1a;统计出来的耗时是2000ms 正常写法&a…

ES8 学习 -- async 和 await / 对象方法扩展 / 字符串填充

文章目录 1. async 和 await1.1 基本语法1.2 使用示例1.3 案例练习 2. 对象方法扩展2.1 Object.values(obj)2.2 Object.entries(obj)2.3 Object.getOwnPropertyDescriptors(obj)使用示例 3. 字符串填充4. 函数参数的末尾加逗号 1. async 和 await async 函数&#xff0c;使得异…

基于SSM的“汽车销售分析与管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“汽车销售分析与管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 销售经理系统首页图 客户管理图 车辆…

c++的学习之路:8、内存管理与模板

一、 C/C内存分布 首先在c语言的动态内存管理中我知道了代码是如何存储数据的&#xff0c;然后c是根据c语言底层变化来的&#xff0c;那么c语言的内存管理就是适用c的内存管理&#xff0c;在c语言中程序是分为几个部分存储&#xff0c;例如在栈堆等等&#xff0c;他们的分布如…

Golang并发模型-Pipeline模型、Fan-in Fan-out模型

这段时间由于项目的需要&#xff0c;本人正在研究关于如何优雅的进行go的并发&#xff0c;以下是结合资料和视频的结果&#xff0c;文末会给出参考资料 Go语言的并发模型主要通过goroutine和channel实现&#xff0c;通过这个我们可以更有效地使用IO和CPU 这里我们围绕生成一个…

【随笔】Git 基础篇 -- 分支与合并(九)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

mysql 基本查询

学习了mysql函数&#xff0c;接下来学习mysql基本查询。 1&#xff0c;基本查询语句 MySQL从数据表中查询数据的基本语句为SELECT 语句。SELECT语句的基本格式是&#xff1a; SELECT (*I <字段列表>} FROM <表1>,<表2>..[WHERE<表达式> [GROUP BY <…

手写简易操作系统(二十一)--硬盘驱动

前情提要 上面一节我们实现了 malloc 和 free 的系统调用&#xff0c;这一节我们来实现硬盘驱动。 一、硬盘分区 我们的文件系统安装在一块全新的硬盘中&#xff0c;我们先创建它&#xff0c;然后在给他分区。 1.1、创建硬盘 首先是创建&#xff0c;这个之前我们已经干过一…

Linux网络编程一(协议、TCP协议、UDP、socket编程、TCP服务器端及客户端)

文章目录 协议1、分层模型结构2、网络应用程序设计模式3、ARP协议4、IP协议5、UDP协议6、TCP协议 Socket编程1、网络套接字(socket)2、网络字节序3、IP地址转换4、一系列函数5、TCP通信流程分析 第二次更新&#xff0c;自己再重新梳理一遍… 协议 协议&#xff1a;指一组规则&…

Kafka架构概述

Kafka的体系结构 Kafka是由Apache软件基金会管理的一个开源的分布式数据流处理平台。Kafka具有支持消息的发布/订阅模式、高吞吐量与低延迟、持久化、支持水平扩展、高可用性等特点。可以将Kafka应用于大数据实时处理、高性能数据管道、流分析、数据集成和关键任务应用等场景。…