DPU有哪些应用场景?

最佳答案 匿名用户编辑于2023/05/09 09:10

以下 就典型的应用场景进行简要的分析。

1.云计算卸载

1.1 网络功能卸载

云计算技术的蓬勃发展对计算节点的网络功能提出了很高的要求。计算节点中运行的虚 拟交换机软件,需要完成类似于物理交换机的功能,同时提供大容量的转发表项。流量的高 速转发对 CPU 算力造成了很大的负担。

依据上一章节针对 DPU 核心特性的分析,DPU 可以利用通用 DPU 具备的层级化可编 程能力实现对计算节点中的网络功能进行卸载,主要包括:虚拟交换机功能的卸载、虚机主 机接口的硬件加速、网络协议的卸载等。对网络功能进行卸载可以显著提升转发性能,同时 大大降低对主机侧 CPU 算力的消耗,从而显著提升可售卖的计算资源的占比。

1.1.1 虚拟交换机功能的卸载

云计算场景中,计算节点中的虚拟交换机承载着大量的转发业务。不同虚拟机(VM) 之间、VM 和外部节点之间的流量,都需要通过计算节点内部的虚拟交换机进行转发。计算 节点中的虚拟交换机通常是 OVS(Open vSwitch)。OVS 需要对报文进行复杂的处理,包 括报文头分析、L2/L3 转发决策、Overlay 网络报文的封装/解封装等。因此,基于软件实现 的 OVS 会大量消耗服务器上宝贵的 CPU 资源,流量越大,消耗的 CPU 资源越多。

结合 DPU 三层可编程能力,可以对 OVS 的数据面和控制面进行全卸载,进一步降低CPU 的负担。

OVS 的数据面被卸载到了 DPU 中的硬件 Hardware Accelerator 上, 并且基于 DPU 的通用可编程特性,OVS 的控制面也可以卸载到 DPU 中。这样,OVS 的相 关功能都被卸载到了 DPU 上,实现了 OVS 的全卸载。

除了 OVS 的卸载之外,DPU 还可以支持 P4 等编程语言。P4 语言具备强大的数据面 编程能力,可以结合用户业务需求定义数据面转发 Pipeline 处理流程。P4 是协议无关的, 除了可以支持标准协议的报文解析与编辑外,还可结合业务需求自定义新的协议,通过 P4 完成对硬件 Pipeline 的编程以支持自定义协议的解析与处理。

1.1.2 虚拟主机接口的硬件加速

在云计算场景中,需要为海量的虚拟主机提供网络接口,以便和外部进行通信。业务流 量的爆发式增长,使得网络接口的性能成为衡量云计算整体性能的一个重要因素。

云计算技术的发展过程中,出现过多种虚拟化网络接口的实现方式,主要包括:QEMU 纯软件模拟的网络接口、内核态的 vhost-net 后端(半虚拟化接口)、用户态的 vhost-user 后端(半虚拟化接口)、SR-IOV、vDPA 接口等,但是无论什么形式的虚拟化接口,都只能 围绕在 bypass kernel、减少 DMA 数据搬运层面,对网络 I/O 吞吐性能的提升都很有限,并且适配接口的多样化也带来了额外的运维开销。

DPU 可以提供通用的标准化的 virtio-net 硬件接口,由于标准 Linux 内核已集成支持 virtio-net 驱动,虚机/裸金属实例使用的镜像的各个发行版本中已内置集成 virtio-net 驱 动,因此 DPU 能够和主机侧 VM 实现无缝对接,提升网络 I/O 的性能,完全卸载主机侧 CPU 对 Virtio 接口处理的资源开销。

1.1.3 RDMA 协议的硬件卸载

传统的 TCP/IP 技术处理报文时,需要经过一个较长的处理路径,数据需要在系统内存、 处理器缓存和网络控制器缓存之间进行内存拷贝,因此会占用大量的 CPU 资源和内存带宽。 随着网络接口速率的不断提升,这个问题表现得更加明显,也进一步加剧了网络延迟效应。 在一些性能要求极高的场景中,传统的 TCP/IP 体系已经无法满足苛刻的时延要求。

RDMA 是一种直接内存访问技术,RDMA 使得一台计算机可以直接存取其他计算机的 内存,而不需要经过 CPU 的处理。也就是说,RDMA 可以将数据从一个节点快速地搬移到 远端节点的内存中。

DPU 的低时延网络特性正是吸收和采纳了 RDMA/RoCEv2 的技术实现可编程化的硬 件协议卸载能力,利用硬件的性能优势来大幅提升传输性能,并且显著降低计算节点的 CPU 开销,对云计算业务的开展形成强大的助力。

1.2 存储功能卸载

云计算市场的迅猛增长,使得存储技术也面临着严峻的挑战。在云数据中心中,通过集 群应用、网格技术以及分布式文件系统等技术将网络中大量不同类型的存储设备通过软件汇 集起来协同工作,共同提供数据存储和业务访问功能。随着存储技术的发展,基于 SSD 存 储介质的存储节点在云数据中心得到更为广泛的部署。相较于传统的存储介质而言,遵循 NVMe 规范的 SSD 产品在 IO 性能和节能方面具有明显的优势。计算和存储的解耦,也要 求采用新的存储传输协议,NVMe-oF、RDMA 就是其中的典型代表。

1.2.1 NVMe-oF 存储协议的卸载

2016 年 6 月,NVMe-oF(NVMe over Fabric)规范发布了 1.0 版本,将 NVMe 技 术扩展到了 PCIe 之外的传输方式,例如:以太网、光纤通道、InfiniBand。后续的版本进 一步丰富了 NVMe-oF 的功能和特性。在 NVMe-oF 技术的支撑下,可以通过网络将计算 节点和存储节点进行对接,实现高性能的远程 I/O 存取操作。NVMe-oF 技术解决了性能瓶 颈问题,也可以满足分布式、高可用的横向扩展需求。

NVMe-oF 是一个统称,其中的“F”实际上包括 3 类传输方式,分别为 FC、RDMA 和 TCP,其中的 RDMA 又分为 3 种类型,即前文所述的 InfiniBand RDMA、RoCE 和 iWARP。 其中,RoCE 和 iWarp 方式采用了以太网作为承载网络,因此通用性较强,部署成本和维护 成本较低。NVMe-oF/TCP 使用了极其成熟的 TCP 协议作为传输协议,和 TCP/IP 网络之间 具有良好的互操作性,缺点是性能和 RDMA 传输方式存在一定的差距。对于性能要求不是 太高的场景,可以考虑 NVMe-oF/TCP 方式。

1.2.2 存储接口的硬件加速

DPU 可以向主机侧呈现 virtio-blk 存储接口或者 NVMe 存储接口。在主机侧来看, DPU 提供了若干数量的 virtio-blk 磁盘或者 NVMe 磁盘。和 virtio-net 虚拟化接口类似, DPU 可以将 virtio-blk 接口硬件化。由于计算节点已经普遍支持 virtio-blk 接口,无需使 用其他专用驱动,DPU 能够和主机侧 VM 实现无缝对接。这样可以提升存储 I/O 的性能, 同时显著降低主机 CPU 资源的开销。NVMe 接口的硬件加速,也是类似的情况。 在 DPU 上,virtio-blk 或者 NVMe 接口通过 SPDK 和远端的存储节点进行对接,也可 以直接对接 DPU 上的存储设备。

1.2.3 存储应用的卸载

SPDK 是由 Intel 发起的,用于加速 NVMe SSD 作为后端存储使用的应用软件加速库。 SPDK 的应用并非仅限于 NVMe,也可以和其他存储方案对接。目前看来,SPDK 并不是一 个通用的适配解决方案。SPDK 使用了轮询式的用户态驱动,现在并没有基于用户态驱动的 完整 I/O 栈,文件系统就是其中的重要一环,内核态的文件系统并不能直接使用。

SPDK 提供了 vhost-blk、vhost-nvme、vhost-scsi Target 等组件。在 QEMU/KVM 作为 Hypervisor 管理虚拟机的场景中,使用 vhost 协议可以实现对虚拟机中的virtio-blk、 Kernel Native NVMe、SCSI 驱动的加速。其主要原理是减少了 VM 中断等事件的数目(如: 中断、VM_EXIT),并且缩短了 host OS 中的 I/O 栈。

借助 DPU 层级 1 的通用可编程能力,可以在 DPU 内部完全继承 SPDK 的优良特性。原本运行在计算节点上的 SPDK 可以卸载到 DPU 卡上运行。DPU 呈现给主机侧的 virtioblk 或 NVMe 接口,可以和 SPDK 的 vhost 组件对接。SPDK 下层的 NVMe-oF initiator、 iSCSI initiator 等组件能够和远端的存储节点建立连接,从而将主机侧可见的磁盘关联到远 端的存储节点上。

1.3 Service Mesh 的卸载

2015 年,Pivotal 公司提出了云原生的概念,为云计算注入了新的内涵。之后,云原生 计算基金会(CNCF)对云原生的概念进行了修改。云原生最初的定义是“容器化封装+自动 化管理+面向微服务”。2018 年,CNCF 加入了服务网格(Service Mesh)和声明式 API 的 概念。

Linkerd 公司的 CEO Willian Morgan 曾经这样阐述 Service Mesh:Service Mesh 是一个致力于解决服务间通信的基础设施层。构成现代云原生应用的服务有着复杂的拓扑, 它负责在这样的拓扑中进行请求的可靠传递。在实践中,Service Mesh 通常实现为一组轻 量级网络代理,这些代理和应用程序部署在一起,并且对应用程序透明。

Service Mesh 的提出与云原生应用程序的大规模普及有关。在云原生模型中,单个应 用程序可能包含数百个服务,每个服务又可能包含数千个实例,而且这些实例中的每一个都 可能处于不断变化的状态,因为它们是由 Kubernetes 之类的服务编排程序动态调度的。服 务之间的通信不仅极其复杂,而且是运行时环境中一个基本的组成部分,管理好它对于确保 端到端的性能和可靠性是至关重要的。

Service Mesh 通常被比作应用程序或者微服务间的 TCP/IP,负责服务之间的网络调 用、限流、熔断和监控。使用 Service Mesh 的情况下,应用程序无需关心服务之间那些通 过应用程序或者其他框架实现的事情,这些事情交给 Service Mesh 就可以了。应用程序或 者服务只需要关注一个目标——“从 A 到 B 发送一些数据”,而 Service Mesh 的职责和 TCP/IP 一样,就是在这个数据的发送过程中解决故障并圆满完成数据传送任务。

总体来讲,Sidecar 模式将应用程序的组件部署到单独的进程或容器中,以提供隔离和 封装。Sidecar 与父应用程序具有相同的生命周期:与父应用程序一起创建,一起停用。

目前,Service Mesh 的开源解决方案主要有:Buoyant 公司推出的 Linkerd、Google、 IBM 和 Lyft 等公司牵头的 Istio。Linkerd 更加成熟稳定些,Istio 功能更加丰富、设计上更 为强大,社区相对也更加强大一些。

Service Mesh 组件通常以代理模式运行,对来自服务的请求进行决策和转发。这在一定程度上会增加系统资源的开销,也会降低通信系统的性能。DPU 层级 1 的通用可编程特 性,提供了将 Service Mesh 组件卸载到 DPU 中的可行方案。通用 DPU 进行统一的管理, 不仅可以降低主机侧系统资源的开销,同时实现了和业务负载的隔离。相关组件卸载到 DPU 之后,也可以更方便地利用 DPU 层级 3 的领域可编程特性,直接使用 DPU 中的硬件加速 资源。

2.统一的存储

存储的连接方式有服务器内置存储、DAS 存储(Direct Attached Storage,直接附加 存储)、SAN 存储(Storage Area Network,存储区域网络)。存储的协议有本地协议(AHCI、 SCSI、NVMe 等),网络存储协议(iSCSI、iSER、NVMe-oF RDMA、NVMe-oF TCP 等)。 存储的部署方式又分为集中式部署和分布式部署。

服务器上挂载的存储设备可能是本地的,也可能是远端的;可能是通过 iSCSI 连接的, 也可能是 NVMe-oF RDMA 连接的;可能对应远端的一个逻辑盘,也可能是分布式存储分 配的一个块设备;可能是单一类型的,更一般的情况是多种类型并存,这使得存储设备的使 用和维护变得复杂和困难。为了支持远端存储协议、本地存储盘的虚拟化、分布式存储客户 端等,会消耗宝贵的服务器计算资源。

通过 DPU 卸载存储,可以对服务器提供统一的存储设备。如下图所示,DPU 通过 SRIOV 技术,对服务器呈现虚拟的 virtio-blk,虚拟的 NVMe 等 PCIe 存储设备,服务器侧只需要 支持标准的 virtio-blk 驱动或标准的 NVMe 驱动。

DPU 通过网络存储协议(如 iSCSI,iSER,NVMe-oF TCP,NVMe-oF RDMA 等等) 连接远端的存储设备。DPU 的低时延网络特性,继承了 RDMA 的低延时、内核旁路、零拷 贝、CPU 卸载等技术优势,使得可以在单一的 DPU 这个点上实现对存储的统一管理和应用 的强大支撑。RDMA 配合 NVMe 盘,可以提供高性能的远端存储。值得一提的一点,DPU 内部集成了 CPU 和可编程的转发引擎(DPU 层级化可编程特性),使得用户可以定制或者 自己开发存储协议。

出于对性能、分布式存储、本地启动等因素的考虑,服务器有本地盘的需求。如下图所 示,DPU 可以下挂本地存储盘,对上统一呈现虚拟的存储盘。如果存储盘直接挂在 HOST 上,存在着不支持带外管控,软件虚拟化存储盘的性能差、CPU 负载重,无法支持硬件级 别的 QoS 等问题。

综上所述,在存储领域,借助 DPU 的核心特性,可以为裸金属、虚机和容器提供统 一的 SRIOV 形式的虚拟存储设备,同时也向主机(HOST)端屏蔽了后端存储形态的差 异。DPU 不仅提供了针对不同存储系统形态的统一管控,还可以提供丰富的存储硬件加速 功能,释放了服务器的 CPU 算力。

3.5G/UPF 卸载 

3.1 UPF 简介

UPF 作为 5GC(5G 核心网) 用户面网元,主要支持 UE 业务数据的路由和转发、数 据和业务识别、动作和策略执行等。UP 通过 N4 接口与会话管理功能(SMF, Session Management Function)进行交互,直接受 SMF 控制和管理,依据 SMF 下发的各种策 略执行业务流的处理。

UPF 作为移动⽹络和数据⽹络(DN, Data Network)的连接点,重要接⼝包括 N3、 N4、N6、N9 等。以 N 开头是 UPF 与 5G 核⼼⽹控制⾯⽹元或者外部⽹络交互的接⼝。 N3 接⼝是 NG RAN 与 UPF 间的接⼝,采⽤GTP-U 协议进⾏⽤户数据的隧道传输。N4 接 ⼝是 SMF 和 UPF 之间的接⼝,控制⾯⽤于传输节点消息和会话消息,采⽤PFCP 协议,⽤ 户⾯⽤于传输 SMF 需要通过 UPF 接收或发送的报⽂,采⽤GTP-U 协议。N6 接⼝是 UPF 和外部 DN 之间的接⼝,在特定场景下(例如企业专⽤MEC 访问),N6 接⼝要求⽀持专线 或 L2/L3 层隧道,可基于 IP 与 DN⽹络通信。N9 接⼝是 UPF 之间的接⼝,在移动场景下, UE 与 PSA UPF 之间插⼊I-UPF 进⾏流量转发,两个 UPF 之间使⽤GTP-U 协议进⾏⽤户⾯报⽂的传输。

UPF 通过 N4 参考点从 SMF 接收用户面规则,并最终根据规则实现数据分流。N4 采 用了 PFCP(Packet Forwarding Control Protocol,报文转发控制协议)。外部可以使用 UPF 建立的 PFCP Session 来识别(PDRs, Packet Detection Rules,数据包发现规则)、 转发(FARs, Forwarding Action Rules)、处理(BARs, Buffering Action Rules)、标记 (QERs, QoS Enforcement Rules)、报告(URRs, Usage Reporting Rules)数据包。

3.2 UPF 卸载和加速

这种基于通用 CPU 的数据面处理方案,在受多线程同步、cache miss 等影响下,时延 抖动和最大速率很难得到保证。在越来越大的流量下,该方案到了性能瓶颈期。 面对这种复杂情况,将 UPF 拆分为 UPF-C(控制面)和 UPF-U(用户数据面)两部分, 并将用户数据面完全卸载到 DPU。由于 UPF-U 的数据量远大于 UPF-C 的数据量,因此 DPU 将 UPF-U 数据卸载后可以节省 Host 大量处理 UPF-U 报文的 CPU 资源,同时 DPU 可借助内置的各种硬件加速引擎,保证 QoS、时延和带宽,从而满足 UPF 的业务需求。

3.3 UPF DPU 管控方案

UPF 要求基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等,因此, DPU 不仅可以对 UPF 报文进行加速和硬件卸载,还可以借助 DPU 层级 1 的通用可编 程能力,支持对 UPF 开放自动化管控接口的实现和卸载,同时方便 UPF 做裸金属、虚 拟机及容器自动化统一运维。

4.零侵入管控

管控平台在数据中心中发挥着重要的作用,管控平台的架构和性能直接影响着数据中心 对外提供服务的能力,影响着数据中心的运维效率和成本。高效可靠运行的数据中心是数字经济核心竞争力的体现,现在的云数据中心存在着诸多的挑战。

现实中,面对这些挑战,数据中心的传统管控平台为了满足实际应用的需要,不仅要管 理多种不同种类的 SDN 交换机,也需要将管控软件运行和部署在不同的主机侧、不同的 OS 上。随着数据中心规模、异构资源、混合应用场景的不断扩展,运维的复杂度、新业务上线 的时间和难度以及开发运维的成本都迅速攀升。

基于 DPU 的零侵入管控,可以有效解决上述痛点和难题。如下图左边部分所示,传统 的数据中心管控系统中,无论数据中心采用开源的软件组件还是非开源的软件组件,这些组 件都必须运行和部署在服务器的 HOST 端,势必侵入到租户的生产环境中。不仅与租户环 境耦合增加了复杂度,也带来了安全的风险。