- 以secondary方式
- 以primary方式
- 以primary方式
- 以secondary方式
作者:大空新一
随着软件定义网络SDN的不断发展,网络数据转发面的需求越来越多样化,这体现在更快的数据包处理速率,更高的网络吞吐带宽,更灵活的自定义网络协议。
传统的硬件设备无法满足网络协议的自定义,而基于Linux内核网络协议栈的网络数据转发则存在处理流程繁琐,效率低下等问题。在此背景下,Intel公司提供了一款高性能网络数据平面开发套件DPDK(data plane development kit),它提供了一个简单方便的,完整的,快速的数据包处理解决方案。
目前,DPDK被广泛应用在网络转发组件的开发当中,如负载均衡网关,NAT网关,虚拟机交换机OVS也同样包含了对DPDK的支持。由于DPDK能够向网络转发面组件提供快速高效的对原生数据包进行处理的能力,其在DPU的研发上也扮演着重要的角色。
DPDK主要包含以下几大特性,借助这些特性网络转发面组件得以实现快速高效的数据包处理:
作者:大空新一
DPU是Data Processing Unit的简称,它是近几年发展起来的专用处理器,是CPU、GPU之后,数据中心场景中的第三颗重要的算力芯片,为诸如云平台等需要高带宽、低延迟、数据密集的计算场景提供计算能力。
为什么需要DPU
传统的云计算主机上,CPU除了负担客户购买的计算能力之外,还需要负担云平台中必要的支撑组件的运行,典型例子如云平台VPC网络数据转发平面的常见组件OVS。
一般场景下,OVS运行在云计算主机上,基于VXLAN技术实现云平台VPC网络。在转发网络数据包的过程中,需要处理大量的计算工作,如流表匹配,数据包的封装与解封,checksum计算等,这些工作必然要消耗云主机大量的CPU资源。那么是否可以有一个额外的处理单元,替CPU分担这些支撑组件的运行工作呢?
DPU就是这个额外的处理单元。DPU在物理上体现为一个插在主机上的PCIe设备,通过PCI总线与主机进行交互。
DPU存在一个ARM架构的片上系统(SoC),SoC上可运行基础的Linux,如此类似OVS这样的云平台中的支撑组件则不必运行在主机中,而是运行在DPU的SoC上。
这样主机上的CPU则可专注于处理客户的计算任务,使得CPU能够发挥其最大的计算能力为客户提供服务。
DPU的发展历程
Fungible最先于2016年提出DPU的概念,也是第一家专注于设计DPU的创业公司。
Mellanox在2019年率先推出了基于BlueField的DPU,后Nvidia于2020年收购Mellanox,同年提出BlueField 2.0 DPU,自此,DPU开始活跃起来,并吸引了大量国内外知名创业公司的加入。
国外公司的典型代表有Marvell、Pensando、Broadcom、Intel,国内的公司集中在创业团队,他们凭借自身的技术积累入局DPU,如中科驭数、星云智联等。
2021年Nvidia推出了基于BlueField 3.0的DPU。
DPU的工作内容
DPU的角色类似于CPU的“小秘书”,主机将一些需要重复计算或者计算量大的“杂活”“累活”卸载给DPU进行处理。
DPU卸载的内容常见的有:数据中心网络服务,比如前文提到的OVS虚拟交换、虚拟路由;数据中心存储服务,比如RDMA、NVMe(一种远程存储技术);数据中心的安全服务,比如防火墙、加解密等等。
DPU有自己的处理单元和硬件设备,前面提到的加密和虚拟交换等通常使用软件实现,并在CPU里运行。而DPU可以使用硬件实现并运行这些支撑组件,这样比在CPU运行要快好几个数量级,这也就是我们常常会听到的“硬件加速”。
此外,由于将支撑组件运行在了DPU中,而客户的应用则在CPU里运行,这样就把二者隔离开了,会带来很多安全和性能上的好处。
DPU在网络上的应用
DPU的前身是Smart NIC,Smart NIC是没有SoC的,运行不能脱离主机CPU,且其对网络的卸载主要是在数据面上,控制面仍然是主机CPU上的工作。
Smart NIC在网络方面的可卸载的工作内容是由硬件设定好的,内容不可变,而DPU中引入了可编程硬件,使用方可根据自身需要自行决定硬件行为,而无需再受限于固定化程式化的硬件处理流程。
在诸如云计算等数据中心不断提高对带宽要求的背景下,DPU相比于Smart NIC的灵活性使得其在网络上的应用更加的宽泛。
典型的应用场景包括: