新一波潮流来袭:网络与计算之融合

从计算机诞生伊始,“计算”这个词汇便随着时代的变迁不断丰富着自己的内涵,IT从业者为了提高计算效率也给“计算”赋予了更多载体,高性能计算、云计算、量子计算都在通过各个领域为计算赋能。时代发展离不开网络,本文要讨论的话题就是——网络如何与计算融合。

为什么要关心计算和网络的融合?

计算与网络一直密不可分,网络与计算的高效融合也成为了未来计算发展的趋势。我们也可以看到与计算机相关的硬件和软件(如运行虚拟机的通用CPU、传统操作系统和编程语言)越来越多地被用于各类网络功能。诸如交换机,路由器和NIC之类的网络设备也正在变得可编程,以允许在网络中完成各类通用计算。

在以数据中心为代表的高密度计算集群中,应用呈多元化和分布化,更大的网络带宽也带来了海量数据,对I/O处理的计算需求也不断飙升,新型的网络功能虚拟化也在进一步蚕食CPU的算力,同时GPU的负载转移工作也是杯水车薪。

网络带宽远远超过计算能力

目前,服务器网络带宽正面临快速增长。200Gbps以太网网卡已经成为主流,厂商还在不断研发新的400Gbps NIC,而1Tbps很快将成为下一个目标。另一方面,处理网络I/O的计算容量空间正在不断缩小。例如,对于典型的使用32字节键值的键值存储,为了在100 X86 CPU内核的情况下保持400Gb/s的线速,一个内核大约需要500个周期来处理每个键值对。即使在这种理想的假设下,这种微不足道的计算能力也仅仅能够在网络堆栈中执行一些LLC或内存访问,留给应用程序逻辑的东西少得可怜。换句话说,未来具有线速I/O处理需求的应用程序注定要受到CPU和内存的限制。

多年来,各种底层网络层功能已经被应用到了网卡硬件中。这些硬件卸载构成了网络I/O处理的主干,范围从简单的分散聚集I/O、校验、计算和数据包分段到完整的传输层加速器,如TCP卸载和RDMA。

商用服务器对于线速I/O的低延迟处理需求达到了前所未有的高度,硬件无法跟上数据中心网络工作负载的快速变化。例如,用于访问网络附加存储、新标准和隧道格式的压缩技术都在快速发展,超过了ASIC开发和部署的生命周期。此外,数据中心网络范式从专有的中间盒,例如防火墙和入侵检测系统,转变为虚拟网络功能(VNF) ,这也进一步推动了计算需求。VNF给CPU的网络处理带来了负担,并且也对计算提出了更高的要求。

CPU和GPU的挑战

网络I/O的性能问题长期以来一直备受关注,其重点在于消除操作系统网络堆栈中的低效率以及优化NIC-CPU交互。目前实现VNF的常用方法是完全绕过网络堆栈,直接从用户级库(例如DPDK)访问原始数据包。此外,CPU和NIC硬件提供了几种机制来提高I/O处理的效率,例如,将数据直接引入CPU LLC(DDIO),并通过减少CPU内核之间的缓存争用(例如,接收端扩展)和降低中断频率(例如,中断调制)来提高可扩展性。但即使采用了这些增强功能,在10Gbps的速度下依旧需要多个CPU内核来执行公共网络功能。此外,现有系统也会因为CPU资源争用而导致延迟增加,包处理性能也出现波动。

GPU也被用于加速网络数据包处理应用(例如,PacketShader、SSLShader、SNAP和GASPP)。不幸的是,由于GPU控制和PCIe数据传输,GPU引入了高延迟开销。此外,在大多数I/O密集型工作负载(如路由)中,GPU的TCO增益和功率效率受到了质疑,仅在CPU上使用延迟隐藏技术就能够在较低的延迟下实现类似的性能。目前关于使用GPU加速网络处理还存在许多争议。伴随着一系列的挑战,网络与计算的高效融合势在必行。

网内计算:网络与计算融合的助推器

网内计算(In-network computing)是近年来出现的一个新的研究领域,侧重于网络内的计算,利用新型可编程网络设备(如可编程交换机ASIC,网络处理器,FPGA和可编程NIC)的功能,将计算从CPU转移到网络。

虽然网内计算的概念最早可以追溯到二十年前,但许多人认为,如今将软硬件创新结合的时代正是网内计算真正发挥作用的时代。从系统的角度看,网内计算的定义意味着无需向网络中添加新设备,因为你已经使用了交换机和NIC。因此,网内计算的开销很小,因为不需要额外的空间、成本或空闲功率。此外,网内计算在事务通过网络时就终止事务,可以减少网络上的负载。迄今为止,网内计算是在三类设备上实现的:FPGA,SmartNIC和可编程交换机。

可编程switch-ASIC的引入和SmartNIC的兴起是网内计算的推动力。在过去,网络设备的功能是固定的,仅支持制造商定义的功能。相比之下,可编程网络设备允许用户在用高级语言编写代码时实现自己想要的功能。今天,可编程网络领域使用的主要语言是P4,是一种开源的、特定领域的语言。最初,该语言主要用于定义新协议和网络相关功能(例如,带内网络遥测)。很快,研究人员就开始在语言和平台的基础上将更复杂的功能移植到网络中。

网内计算的优势:高吞吐量、低延迟、低能耗

网内计算的主要优势是性能,包括吞吐量和延迟。如今,许多网络设备支持亚微秒级的延迟,在非超额订阅的情况下差异很小。但是,这并不是减少延迟的主要来源。由于网内计算指的是网络内的处理,这意味着事务在其路径中就终止,无需到达终端主机,从而节省了终端主机引入的延迟,以及网内计算节点到终端主机之间的网络设备。特别是在云环境中,服务提供商都在努力克服服务延迟,因此减少延迟非常重要。

第二个性能优势吞吐量,它是数据包处理速率的属性。交换机ASIC处理速度高达每秒100亿个数据包,因此可能支持每秒数十亿次的操作。这类交换机被设计为管道,连续移动数据而不出现卡顿。在大多数情况下,即使一个操作(数据包)暂停(排队),例如在共享资源(拥塞)上竞争时,其他数据包的处理并不会受影响。使用网内计算实现的应用程序与基于主机的同类产品相比,性能提升了一万倍。

网内计算还有一个让人意想不到好处是能耗。尽管大家都认为网络交换机是一个耗电的设备,但如果只考虑每瓦操作,网络交换机更具吸引力,每瓦特支持数百万次操作,这意味着对于某些应用程序来说,这种方法的效率比基于软件的解决方案高一千倍。举例来说,在一个交换机上,一百万个键值存储查询的“成本”小于一瓦特。由于网络交换机是用户网络的一部分,因此大部分功耗已经包含在包转发过程中,并且网内计算的开销很小,仅占交换机总功耗的几个百分点。
查看更多内容

猜你喜欢

转载自www.cnblogs.com/sdnlab1509/p/11316565.html