黄朝波 · 2021年08月13日

NVIDIA DPU的核心技术:ASAP2和SNAP

编者按:

NVIDIA在2020年10月份GTC大会正式发布DPU以来,已经成为行业的明星处理器类型。本文是《软硬件融合——超大规模云计算架构创新之路》中NVIDIA DPU相关内容的节选,通过介绍NVIDIA DPU里核心的网络卸载加速ASAP2技术和存储卸载加速SNAP技术,来大致的理解和学习NVIDIA DPU的整个系统架构。

1 NVIDIA Bluefield DPU介绍

如图1,NVIDIA BlueField 2代是一个高度集成的DPU,集成ConnectX-6 DX网络适配器与ARM处理器核阵列,BlueField-2可为安全性、机器学习、云计算、边缘计算和存储应用程序提供灵活而高性能的解决方案,同时降低总拥有成本(TCO)。Bluefield-2 DPU的主要功能包括:

l8个功能强大的64位ARMv8 A72内核,这些内核通过一个Mesh网络与DDR4内存控制器和双端口以太网(或InfiniBand)适配器互连;

  • 支持两个10/25/40/50/100 Gbps或一个200Gbps以太网(或InfiniBand)网络端口;
  • 一个用于连接ARM子系统的带外管理端口;
  • 一个16通道PCIe Gen 3.0/4.0交换机,提供EP或RC功能;
  • 集成了ConnectX-6 Dx网络适配器,提供网络相关处理加速;
  • 硬件加速包括RDMA/RoCE功能以及加密、存储和网络加速;
  • 依靠这些内置的硬件加速功能,结合ARM处理器阵列编程,可以实现复杂的自定义加速和控制路径。

1.jpg

图1 NVIDIA Bluefield DPU架构图

BlueField-2 DPU,集成了各种安全加速,可以为数据中心提供隔离、安全性和加解密加速功能;通过ASAP2的网络加速方案以及完整的数据面及控制面卸载,可以高效、高性能的支持虚拟化、裸金属、边缘计算场景的快速部署;同时通过SNAP机制为存储提供完整的端到端解决方案。

2 ASAP2:虚拟网络卸载

最常用的虚拟交换软件解决方案之一是针对服务器虚拟化场景的OVS(Open vSwitch)。尽管OVS具有非常好的灵活性,但也面临一些挑战:

  • IO性能不佳。云服务商采用的NIC带宽从10Gbps升级到25Gbps,并且即将要升级到100Gbps。OVS在10Gbps下只有500K PPS,而理论上最大的数据包性能可以达到15M PPS。
  • 不可预料的应用程序性能。当OVS处理不过来数据包的时候,等待时间增大,部分包会被丢弃。这样会严重影响用户应用,例如VoIP场景,将以音质下降、暂停或掉线的形式影响客户体验。
  • 高CPU开销。如今主流的硬件路由器和交换机,数据包处理和转发都是在ASIC或网络处理器中完成。在裸机场景,大多数数据包转发都可以卸载到NIC。但在云计算的网络虚拟化场景场景,数据包处理却是由CPU处理。随着网络流量的持续增加,这部分开销会越来越多的抢占其他用户业务的CPU资源。

NVIDIA公司在其ConnectX-5(简称CX5) NIC中实现的ASAP2(Accelerated Switch and Packet Processing,加速的交换和包处理)技术功能实现了在NIC硬件中支持加速的虚拟交换。NIC中内置了基于流水线的可编程eSwitch,能够在硬件中进行大部分数据包的处理。这些处理包括VxLAN封装/解封装、基于一组常用L2-L4标头字段的数据包分类、QoS以及访问控制列表(ACL)。

如图2,ASAP2为OVS硬件卸载提供了两全其美的方法:数据路径的硬件加速以及未经修改的OVS控制路径,以实现灵活性和匹配规则的编程。ASAP2 OVS卸载技术将虚拟交换数据路径完全的卸载到NIC中的嵌入式交换机(e-switch),控制面依然保持在主机侧(软件)。并且ASAP2实现了开源的核心框架和API(例如TC Flower Offload),从而使其可以在Linux内核和OVS标准版本中使用。这些API极大地加速了网络功能处理,例如覆盖(Overlay)、交换、路由、安全性和负载均衡等。

2.jpg

图2 ASAP2 OVS卸载方案

如图3,我们可以看到在没有ASAP2硬件卸载OVS的情况下,两个CPU Core运行DPDK包处理程序,其VxLAN包处理性能只能达到7.2 MPPS,而硬件卸载OVS的情况下,几乎不需要消耗CPU资源,处理性能却高达55 MPPS。

3.jpg

图3 ASAP2的VxLAN包处理性能

3 SANP:远程存储卸载

考虑到性能、延迟、IOPS等方面的苛刻需求,这里我们重点关注远程块存储服务。远程块存储可以更好的解决存储盘的弹性以及自动化运维的工作,相比本地块存储,可以有效的降低运维管理等方面的成本。因此,远程块存储服务已经作为云计算一项基础的服务,广泛的服务于用户。

NVIDIA NVMe SNAP(Software-defined Network Accelerated Processing,软件定义的网络加速处理)技术可实现NVMe存储虚拟化的硬件加速。如图4,NVMe SNAP使得远程存储看起来像本地NVMe SSD,模仿PCIe总线上的NVMe驱动器。主机OS /Hypervisor使用标准的NVMe驱动程序,而不会意识到访问的不是物理驱动器而是通过NVMe SNAP连接到远程存储集群。理论上,任何软件处理都可以通过NVMe SNAP框架来处理数据,并通过以太网或InfiniBand网络传输到目标存储服务器。

4.jpg

图4 NVIDIA NVMe SNAP远程存储解决方案

如图5,NVMe SNAP支持两种数据路径:

  • 第一个是全负载,将来自NVMe PCIe的数据流量直接转换为NVMe-oF(RoCE)并直接传输到网络,数据完全在硬件中传输。该路径可提供最佳性能,但缺乏ARM内核上运行软件来处理数据或更改存储协议的能力。
  • 第二个是把数据流量经过ARM,在ARM内核上运行的SPDK程序的处理,这样可以在NVMe流量上实施相应的远程存储处理逻辑。然后再将数据通过NVMe-oF传输到网络。此路径使用ARM内核,并提供全面的灵活性,以在线升级任何类型的存储解决方案。

5.jpg



图5 支持SNAP的Bluefield SmartNIC

云计算场景的远程块存储服务,通常使用第二种数据路径。即通过SNAP把存储的访问从主机侧移动到SmartNIC侧,经过SmartNIC的ARM内核处理,再通过NVMeoF传递到网络。基于SNAP技术的实现,跟通常的基于主机Hypervisor侧的远程存储方案比较,SNAP技术在性能方面存在一些不足之处,具体分析如表1。

表1 NVMe SNAP的性能分析

Capture.PNG

NVMe SNAP实现了远程存储的SmartNIC卸载,有效的把运行在主机侧的任务转移到了SmartNIC侧,这已经是非常大的一个技术优势。例如,给用户提供物理机服务的场景,可以通过SNAP支持远程云盘,避免物理机本地盘无法迁移的问题。在SNAP当前软件卸载存储任务的基础上,类似ASAP2的网络卸载路径,可以把存储任务从嵌入式ARM CPU进一步卸载到存储硬件加速器,可以实现更高的吞吐率、更高的IOPS以及更低的延迟。

4 NVIDIA网络包处理流水线FlexFlow

高性能的以太网交换机是现代数据中心的网络核心,不断变化的虚拟化和能自我修复的网络架构,都要求交换机具有动态的编程功能。NVIDIA FlexFlow使得交换机支持用户自定义功能,FlexFlow具有非常好的可编程能力以及灵活性,支持大规模并行数据包处理以及完全共享的有状态的转发数据库。

如图6,NVIDIA FlexFlow的包处理流水线跟传统交换机的包处理流水线相比:

  • 传统的包处理流水线具有严格的流水线功能约束;而FlexFlow具有可编程的解析器、编辑器以及可编程的流水线。
  • 传统包处理流水线所有的流量是串行的处理;而FlexFlow支持大量的并行以确保最大吞吐。
  • 因为串行,传统的包处理流水线具有很高的延迟;而FlexFlow针对每个流进行优化,确保更低的延迟。
  • 传统的包处理流水线采用分散的查找表资源,更低的扩展性但更高的功耗;而FlexFlow共享查找表资源,因此具有更高的扩展性以及更低的功耗。

6.jpg
(a) 传统交换机流水线

7.jpg
(b) NVIDIA FlexFlow流水线

图6 传统的交换机流水线和FlexFlow比较

FlexFlow具有如下典型特征:

  • 深度的包解析。解析器是数据包处理流水线的第一个阶段。该阶段负责将输入的数据翻译成有意义的数据包头字段,这些字段会被用于转发、策略实施和QoS。FlexFlow支持可编程的数据包处理,可以解析多达512B的数据包。更大的解析深度和自定义支持的数据包格式,数据包处理流水线可以支持更丰富的隧道传输、更先进的遥测,同时还可以支持新的网络协议。
  • 灵活的特定于流的查找表。FlexFlow可编程流水线可以定义查找表数量,可以以流为单位配置查找关键字。查找动作包括标准的转发、策略行为以及指向下一个查找表的指针。可以在每一条流的粒度,定制表的数量、查找的序列、匹配关键字和动作。基于流粒度的查找序列,数据包处理可以多次访问同一张表。基于流粒度的查找序列,FlexFlow可以在固定的物理网络拓扑中实现灵活多变的网络抽象。
  • 功能强大的隧道。灵活的数据包编辑引擎通过编程添加、修改和删除多层数据包头。FlexFlow支持可编程的封装和解封装、IPv4选项、IPv6扩展以及多种Overlay协议。FlexFlow为未来的隧道和Overlay技术提供了很好的支持,这些技术是未来几年网络虚拟化的根本。
  • 完全共享的查找表。传统的交换机使用碎片化的转发表,这些转发表硬连线到特定的流水线阶段。用于流水线阶段的表的资源和查找表大小都是预先定义好的。在某个特定的流水线阶段中的表资源可能存在浪费。FlexFlow可以实现高效的表共享,可以提供几乎无限的查找表大小的设定,这使得基于FlexFlow的交换机可以支持当前的以及未来的网络协议所需的所有数据包转换。
  • 综合遥测。FlexFlow流水线使用灵活的有状态的流水线阶段,以编程的方式提取元数据并提供实时遥测。随着数据中心网络复杂性日益提升,FlexFlow提供了完全集成的遥测功能,减少了故障时间,增加正常运行时间,更好的优化了网络架构的利用率。

(正文完)

作者:黄朝波
来源:https://mp.weixin.qq.com/s/Z1oP3ogRn27rm49gDBsY9w
微信公众号:
软硬件.jpg

相关文章推荐

更多软硬件技术干货请关注软硬件融合专栏。
5 阅读 1.2k
推荐阅读
0 条评论
关注数
1288
内容数
56
软硬件融合
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
Arm中国学堂公众号
关注Arm中国学堂
实时获取免费 Arm 教学资源信息
Arm中国招聘公众号
关注Arm中国招聘
实时获取 Arm 中国职位信息