再谈数据中心网络传输

我在 大历史下的 pacing 中误会程序员了,程序员的路子是正确的(虽然并不指网络方面)。本文接着扯网络,从系统程序员熟悉的开始:

  • 当 cpu 过多时,把大的 spinlock 拆成 percpu lock;
  • 使用 hash 时,倾向于 per bucket lock;
  • 容器过多 per pod 控制复杂,倾向于 per pod 自决,edt 为一例;
  • 前端总线太拥挤,取消了它。

总之就是拆除同步点,简化控制逻辑,让路不堵,而不是让路不那么堵。这些都是正确思路,但看看下面这个列表:

  • cpu 比网卡强劲时,网卡发展到了千兆,网卡厉害时,cpu 开始多核;
  • 多核内存墙,开始多核,numa,多核,numa,gpu 发力,网卡再次成为瓶颈;
  • 优化网卡,各种 xpu,offloading,丢包重传,拥塞控制,端到端传输协议,自研交换机支持端到端协议;

200gbps 网卡部署在 400gbps 网络中出现拥塞就拥塞控制,出现丢包就重传,为保网卡带宽构建无损网络,解决反压导致的拥塞扩散和 deadlock,如果再涉及到 rtt 测量,带宽感知,这个列表将无限加长。

看似在解决网络问题,其实是给网络添堵,网卡带宽越来越大,可不就越来越堵。这个列表的行为,既要把网络当黑盒子,又不甘心它 best effort,但无论如何,数据从高速网卡中出去,真就没人管了。

要解决网络性能问题,用第一个列表同样的思路重新评估问题就好了。

高速网络的根本问题不在网卡,协议和算法,而在交换机。网络拥塞,丢包的原因是交换机做的太多而不是太少。如今的网络架构,交换机不得不做大量工作以支持包分类,qos,aqm,调度等操作,原因是高速网卡注入的流量巨大且不同质,为了确保网络正常工作,交换机不得不做更多的 “判断”,“分类”,“针对” 和 “兼顾”,引入巨大管理开销。

高铁是我非常喜欢的一个例子。在高铁路网建立之前,全国只有一张普速路网,4 位数绿皮车,临客,k 字头快速车,t 字头特快车,z 字头直达车,d 字头动车组,短货车,长货车,全跑在这一张网上,而它们对应的 qos/qoe 更是五花八门,复杂的调度任务自然给到了铁路局和车站,为让快车更快,慢车要频繁停下让车,为不让慢车饿死,快车必须妥协速度,货车太长太慢导致它必须择时而不能随时通过大站,全国各大火车站庞大而凌乱。

如今数据中心网络现状正如上述。但铁路方面已经建立了独立的高铁路网,形成了运输效率极高的网络,而数据中心却依然在 “制造更多类型的火车”,“制造可以跑更快但却没条件跑更快的火车”,“修建更复杂的火车站”。

简单画一个网络(不局限在数据中心)发展图:
在这里插入图片描述

仍和铁路类比,1980s 到 2010s,中国普速列车经几次提速后,止步于 160km/h,因为普速路网控制复杂度太高,无法支撑 200km/h +,于是统一 qos 的高铁路网从普速路网中分离。

高速数据中心网络尚未从 “普速” 数据中心网络中分离,所见的只是构建几个相对隔离的队列,应用打标进特定队列,但每个队列看,里面的流量依然五花八门,规模小一点而已。分流特征不能基于应用,而要基于长短。

高速网络的特征是快网卡,快交换,大 buffer,瞄准这些特征做分流:

  • 长流采用 pacing,浅 buffer;
  • 短突发采用小收敛比;

短突发从 capacity-searching 分离,丢包自然降低,长流从短突发分离,丢包自然降低,拥塞控制更准确。

高速网络分流自然可以从上图中推演出来。

随摩尔定律逼近增长极限,网卡追平交换机,交换带宽的提升自然要靠并行。形象地说,一根光纤最大 400gbps,10 根光纤就是 4tbps,又回到了和网卡相比数量级的优势,不同的是,这次是 10 条链路的总和的结果,更形象点说,可以看作堆了 10 台交换机。

可预期的是网络中的链路数量大大增加。如何充分利用这些高速的,分离的链路是高速网络发展的目标,非常直观的两个层面可交叉论证的两个结论:

  • 多路径传输以及协议支持;
  • 长短流量分流在不同链路。

比如 m 条路径用于承载短突发并保持低收敛比,afap(as fast as possible),m / k 条路径用于承载长流并使能 pacing,afan(as fast as necessary)。

高速网络的重心将从 “充分填充链路但不至于拥塞” 转移到 “将同质流量导入不同链路路径并充分利用这些路径”,交换机将仅仅做简单的 red or ecn 以及路径调度(比如拥塞后换路),而不再需要做限速,整形等流量调度工作。更简单更少,更少更快。

直接从这一切背后起作用的摩尔定律视角来看,应对这种 “增长的极限” 有两个路子:

  • 从交换机卸掉算力,彻底摆脱摩尔定律;
  • 并行化已逼近极限的集成。

若卸掉算力,交换机将仅做傻瓜交换,不再 “判断” 和 “计算”,这种情况下,流量必须同质,试想允许所有各种能走的人,机动车,非机动车上没有红绿灯的 “傻瓜” 高速公路会怎样。

若选并行化路子,链路就一分为多,充分利用多链路自然的想法就是同质流量分流。

殊途同归了,因为这是历史发展的必然趋势。在增长的极限附近,优化措施几乎一致:

  • 摩天大楼太集中,下面的路就会堵,多修路而不是统一调度;
  • 摩天大楼太高,电梯会堵,采用高速电梯并在不同高度区间分区运行,而不是统一调度;
  • cpu 太多,前端总线会堵,取消它并每核独享控制并引入 numa,而不是统一调度;
  • 容器太多,协议栈队列管理会堵,简化控制或独享队列,而不是统一调度;
  • 公路或铁路上交通工具型号太多,为高速车型修单独的路网,而不是统一调度;

怎么换到高速网络场景下,这个一致的思路就像被遗忘了一样,竟然不提为不同类型流量创建单独的链路,然后在流量离开网卡甚至在网卡中第一时间导入特定链路,而坚持一定存在某个优秀的算法可以统一调度所有流量呢?

有朋友提到网络切片技术,确实是一个先进的路子。我也曾设想过一种多网口网卡,一些口专门出入长流,另一些口则出入短突发。

未来的数据中心端到端传输协议一定更简化,因为在专门的链路中,很多通用性假设是不言自明的,无需协议字段指示,亦无需在端侧基于复杂字段做计算。

涉及报文在网络中转发的信息,往往可用封包,拆包,stacked 的方式进行封装解封装操作,类似 sr 但更简化,同样得益于不言自明的路径假设。

推荐一本写于 1970 年代的好书,和 tcp 的诞生同年:
在这里插入图片描述

本文很多视角观点来自于此书。

浙江温州皮鞋湿,下雨进水不会胖。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++之智能指针std::unique_ptr与std::make_unique分配内存方式总结(二百六十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【Zblog搭建博客网站】windows环境搭建属于自己的博客并发布上线 – cpolar内网穿透

目录 1. 前言 2. Z-blog网站搭建 2.1 XAMPP环境设置 2.2 Z-blog安装 2.3 Z-blog网页测试 2.4 Cpolar安装和注册 3. 本地网页发布 3.1. Cpolar云端设置 3.2 Cpolar本地设置 4. 公网访问测试 5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网…

Nacos单机版安装

1. 下载 nacos-server-2.0.3.tar.gz 官网 https://github.com/alibaba/nacos/releases 2. 上传到服务器 3. 解压 tar -zxvf nacos-server-2.0.3.tar.gz -C /opt 4. 配置数据库 4.1准备好mysql数据库 4.2创建一个新的数据库 创建新数据库nacos 4.3执行nacos建库脚本 在…

XMind 2023 下载地址及安装教程

XMind是一款流行的思维导图软件,它帮助用户以图形化的方式组织和呈现思维、概念和信息。XMind可以应用于各个领域,如项目管理、思维导图、会议记录、学习笔记等。 XMind提供了直观和易于使用的界面,用户可以通过拖放和连线来创建思维导图。它…

2024第16届成都学校团餐供应链展6月1日举办

2024第16届成都学校团餐供应链展6月1日举办 邀请函 主办单位: 中国西部教体融合博览会组委会 承办单位:重庆港华展览有限公司 博览会主题:责任教育 科教兴邦 学校团餐,就是老师和学生团体用餐的简称,也叫学校食堂…

使用Flutter混淆技术保护应用隐私与数据安全

在移动应用开发中,保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具,帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆,并提供了相关的操作步骤和注意事项。 📝 摘要 本…

深入理解指针1:指针变量、指针运算、野指针、const修饰指针

生活中我们把门牌号也叫地址,在计算机中我们把内存单元的编号也称为地址。C语⾔中给地址起 了新的名字叫:指针。 所以我们可以理解为:内存单元的编号地址指针 1、指针变量 我们知道的是:数组名是数组首元素的地址。也就是说&…

linux离线安装NodeJs

一、官方下载 地址:Node.js — Download Node.js 选择linux系统版本 为了防止安装过程出现一些适配问题,我没有选择下载最新版,实际应该下载你的前端所用的nodejs版本 未完待续。。

Object 类的使用

如何理解根父类 类 java.lang.Object是类层次结构的根类,即所有其它类的父类。每个类都使用 Object 作为超类。 Object类型的变量与除Object以外的任意引用数据类型的对象都存在多态引用 method(Object obj){…} //可以接收任何类作为其参数 Person o new Person(…

奇趣相机AI摄影,让每个儿童成长故事都独一无二

随着科技的日新月异,亲子互动方式也在不断进化。近日,一款名为“奇趣相机”的微信小程序凭借其精准捕捉亚洲儿童特质与激发创意的独特功能,在年轻父母群体中引发热烈关注。这款应用程序不仅革新了儿童摄影的传统模式,更成为连接科…

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

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

Node.js-知识点学习总结归纳

Node.js-知识点学习总结归纳 安装nodenode运行方式通过Node.js直接运行js文件(也就不用通过网页html了)绝对路径调用:相对路径调用:直接运行js命令: Vscode控制台使用node运行js文件 安装node 这个就不用讲了吧,网上搜…

浅谈物联网高速公路智慧配电室系统构建方案

关键词:高速公路;智慧供配电;电力监控;配电室智能运维托管;安全隐患 0、引言 随着高速公路事业的不断发展和路网的不断延伸,传统的管理方式已难以满足日益增长的需求,动态管理和安全隐患预警成…

使用Python绘制发散条形图案例

发散条形图用于简化多个组的比较。它的设计允许我们比较各组中的数值。它还帮助我们快速地想象出有利的和不利的或积极的和消极的反应。条形图由从中间开始的两个水平条的组合组成-一个条从右向左延伸,另一个从左向右延伸。条形的长度与它所代表的数值相对应。 通常…

<网络> 网络Socket 编程基于UDP协议模拟简易网络通信

目录 前言: 一、预备知识 (一)IP地址 (二)端口号 (三)端口号与进程PID (四)传输层协议 (五)网络字节序 二、socket 套接字 (…

【javaWeb 第十篇】(SpringBoot )yml配置文件

yml配置文件 配置文件参数配置化yml配置文件yml配置文件的基本语法yml数据格式 yml配置ConfigurationProperties 配置文件 参数配置化 为什么要使用配置文件配置参数: 以阿里云OSS工具类为例,在工具类中,需要给出连接阿里云服务器的种种参数…

delphi获取windows右下角任务栏图标信息

今天在群里,看有人问怎么获取windows右下角任务栏图标信息 win7 x64 测试通过 unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs,commctrl, Vcl.StdCtr…

MVC模式和三层架构

一.概述 M:Model,业务模型,处理业务V:View,视图,界面展示C:Controller,控制器,处理请求,调用模型和视图 M即model模型是指模型表示业务规则。在MVC的三个部件中&#xf…

鸿蒙OS开发实例:【ArkTS类库异步并发简述Promise】

Promise和async/await提供异步并发能力,是标准的JS异步语法。异步代码会被挂起并在之后继续执行,同一时间只有一段代码执行,适用于单次I/O任务的场景开发,例如一次网络请求、一次文件读写等操作。异步语法是一种编程语言的特性&am…