【网络】TOE、RDMA、smartNIC 是什么和区别|DPU

目录

TOE、RDMA、smartNIC 简介

TOE(TCP/IP Offload Engine)

RDMA

SmartNIC

区别

TOE、RDMA、smartNIC详细说明

TOE(TCP/IP Offload Engine)

RDMA

SmartNIC

DPU

扫描二维码关注公众号,回复: 13771243 查看本文章

摘抄和参考列表


作者:bandaoyu,本文原始连接:https://blog.csdn.net/bandaoyu/article/details/122868925

TOE、RDMA、smartNIC 简介

TOE(TCP/IP Offload Engine)

简介:

通过网卡上专用处理器来完成一些或所有数据包的相关协议计算任务,以减轻系统负载,包括TCP在内的四层处理请示都可以从主机处理器转移到网卡,其最终的结果就是在加速网络响应的同时提高服务器的性能,但TOE需要配合理想环境才能取得更好的效果,还达不到高性能网络应用的要求。

传统的TCP/IP处理网络数据传输过程中,要占用大量的主机CPU资源,为了减轻CPU的压力,一种称为TCP减负引擎(TCP Offload Engine :TOE)的技术应运而生。TCP减负引擎一般由软硬两部分组件构成,将传统的TIP/IP协议栈的功能进行延伸,把网络数据流量的处理工作全部转到TOE硬件(网卡 )上的集成硬件中进行,服务器只承担TCP/IP控制信息的处理任务。这种为服务器减轻负担的技术,得到了大多数厂商的肯定。

RDMA

RDMA是一种概念,在两个或者多个计算机进行通讯的时候使用DMA, (DMA硬件将数据)从一个主机的内存直接读写到另一个主机的内存。

RDMA是一种host-offload(硬件处理), host-bypass(绕过内核)技术,允许应用程序(包括存储)在它们的内存空间之间直接做数据传输。

详情见:https://blog.csdn.net/bandaoyu/article/details/112859853

SmartNIC

TOE网卡和RDMA网卡,都属于SmartNIC。

上面二者的简介都可以总结为:

      传统网卡仅实现了 L1-L2 层的逻辑,而由 Host CPU 负责处理网络协议栈中更高层的逻辑。即:CPU 按照 L3-L7 的逻辑,负责数据包的封装与解封装;网卡则负责更底层的 L2 层数据帧的封装和解封装,以及 L1 层电气信号的相应处理。

为适应高速网络,现代网卡中普遍卸载了部分 L3-L4 层的处理逻辑(e.g. 校验和计算、传输层分片重组等),来减轻 Host CPU 的处理负担。甚至有些网卡(e.g. RDMA 网卡)还将整个 L4 层的处理都卸载到硬件上,以完全解放 Host CPU。得益于这些硬件卸载技术,Host OS 的网络协议栈处理才能与现有的高速网络相匹配。

区别

相同点:

都具有给cpu减负的功能

不同点:

1、工作原理不同,见上面的简介。

2、RDMA的网卡使用需要两端都支持RDMA技术的网卡才能发挥,TOE只需要单端即可。

3、TOE网卡和RDMA网卡,都属于SmartNIC。

TOE、RDMA、smartNIC详细说明

TOE(TCP/IP Offload Engine)

TOE引擎需要做的一件事情就是将IP头、TCP头、UDP头的checksun计算由网卡来计算,CPU不需要计算IP头、TCP头、UDP头的检验和, 这些工作由网卡来进行。这样可以减轻CPU的负担,如下图所示,但是这样会带来一个问题,就是在user application抓的发送出去的报文的检验和是不对的,如果直接对报文进行回放,会被设备丢弃,导致报文回放失败。

 普通网卡用软件方式进行一系列TCP/IP相关操作,因此,会在三个方面增加服务器的负担,这三个方面是:数据复制、协议处理和中断处理。


     网络上每个应用程序在收发大量数据包时,要引发大量的网络I/O中断,对这些I/O中断信号进行响应,成了服务器的沉重负担。比如,一个典型的 64Kbps的应用程序在向网络发送数据时,为了将这些数据装配成以太网的数据包,并对网络接收确认信号进行响应,要在服务器和网卡间触发60多个中断事 件,这么高的中断率和协议分析工作量已经是相当可观的了。虽然某些网络操作系统具有中断捆绑功能,能够有效减少中断信号的产生,但却无法减少服务器和网卡 间响应事件的处理总量。
  
    TCP减负引擎网卡的工作原理与普通网卡不同。普通网卡处理每个数据包都要触发一次中断,TCP 减负引擎网卡则让每个应用程序完成一次完整的数据处理进程后才触发一次中断,显著减轻服务器对中断的响应负担。还是以64Kbps的应用程序为例,应用程 序向网络发送数据全部完成后,才向服务器发送一个数据通道减负事件中断,数据包的处理工作由TCP减负引擎网卡来做,而不是由服务器来做,从而消除了过于 频繁的中断事件对服务器的过度干扰。网络应用程序在收发数据时,经常是同一数据要复制多份,在这种情形下,TCP减负引擎网卡发挥的效益最明显。
  
     普通网卡通过采用支持校验功能的硬件和某些软件,能够在一定程度上减少发送数据的复制量,但却无法减少接收数据的复制量。对大量接收数据进行复制通 常要占用大量的机器工作周期。普通网卡先将接收到的数据在服务器的缓冲区中复制一份,经系统处理后分配给其中一个TCP连接,然后,系统再将这些数据与使 用它的应用程序相关联,并将这些数据由系统缓冲区复制到应用程序的缓冲区。TCP减负引擎网卡在接收数据时,在网卡内进行协议处理,因此,它不必将数据复 制到服务器缓冲区,而是直接复制到应用程序的缓冲区,这种“零拷贝”方式避免了网卡和服务器间的不必要的数据往复拷贝。
  
    TCP减负引擎网卡能显著减轻由数据大量移动造成的服务器过载负担。实测证明,对于文件服务器和以内容服务为主的服务器应用环境来说,如果用TCP减负引擎网卡代替普通网卡,相当于为服务器增加了一个CPU

RDMA

详细说明见:https://blog.csdn.net/bandaoyu/article/details/112859853

SmartNIC

一文读懂SmartNIC_开源Linux-CSDN博客

     传统网卡仅实现了 L1-L2 层的逻辑,而由 Host CPU 负责处理网络协议栈中更高层的逻辑。即:CPU 按照 L3-L7 的逻辑,负责数据包的封装与解封装;网卡则负责更底层的 L2 层数据帧的封装和解封装,以及 L1 层电气信号的相应处理。

为适应高速网络,现代网卡中普遍卸载了部分 L3-L4 层的处理逻辑(e.g. 校验和计算、传输层分片重组等),来减轻 Host CPU 的处理负担。甚至有些网卡(e.g. RDMA 网卡)还将整个 L4 层的处理都卸载到硬件上,以完全解放 Host CPU。得益于这些硬件卸载技术,Host OS 的网络协议栈处理才能与现有的高速网络相匹配。

然而,由于 SDN、NFV 驱动的云计算/数据中心网络通信的快速增长,例如:随着 100G 浪潮的到来,Host CPU 将面临更大的压力,异构计算 Offload(异构加速技术)已是大势所趋。市场上需要一种具有更强卸载能力的新型 Smart NIC。

0.0 代。具体来说,传统网卡面向的用户痛点包括:

  • 随着 VXLAN 等 Overlay 网络协议,以及 OpenFlow、Open vSwitch 等虚拟交换技术的引入,使得基于服务器的网络数据平面的复杂性急剧增加。

  • 网络接口带宽的增加,意味着在软件中执行这些功能会给 CPU 资源造成难以承受的负载,留给应用程序运行的 CPU 资源很少或根本没有。

  • 传统网卡固定功能的流量处理功能无法适应 SDN 和 NFV。

1.0 代。在 SmartNIC 出现之前,解决这些问题的方法大概有:

  • 使用 DPDK 作为加速手段,但处理过程仍然依赖标配(未针对数据传输进行优化)的服务器及网卡,这始终是一个瓶颈,吞吐量性能低下,并且需要大量的 CPU 资源,还是没能节省昂贵的 CPU 资源。

  • 使用 SR-IOV 技术,将 PF 映射为多个 VFs,使得每个 VF 都可以绑定到 VM。如此,吞吐量性能和 CPU 使用效率确实得到了改善,但灵活性却降低了,复杂性也增加了。并且,大多数 SR-IOV 网卡最多有效支持 1Gb 以太网端口的 8-16 个 VFs,和 10Gb 以太网端口的 40-64 个 VFs。

2.0 代。而 SmartNIC 的存在能够:

  • 将 vSwitch 完全 Offload 到 SmartNIC,释放昂贵的 Host CPU 资源,将计算能力还给应用程序。

  • 可以实现基于服务器的复杂网络数据平面功能,例如:多匹配操作处理、计量整形、流统计等。

  • 支持网络的可编程性(通过更新的固件或客户编程),即便 SmartNIC 已经被插入到服务器使用。

  • 与现有的开源生态系统无缝协作,以最大程度地提高软件功能的速度和影响力。

3.0 代。白盒交换机作为最受欢迎的 COTS 硬件,可以加入 Plugin 轻松实现 SDN 和 NFV 的各种计算及网络功能。

Smart NIC

简而言之,SmartNIC 就是通过从 Host CPU 上 Offload(卸载)工作负载到网卡硬件,以此提高 Host CPU 的处理性能。其中的 “工作负载” 不仅仅是 Networking,还可以是 Storage、Security 等。

Smart NIC 的实现方式

1、多核智能网卡,基于包含多个 CPU 内核的 ASIC(特殊应用集成电路)芯片:ASIC 具有价格优势,但灵活性有限,尽管基于 ASIC 的 NIC 相对容易配置,但最终功能将受到基于 ASIC 中定义的功能的限制,这可能会导致某些工作负载无法得到支持。

2、基于 FPGA(可编程门阵列)的智能网卡:FPGA 是高度可编程的,并且可以相对有效地支持几乎任何功能,不过众所周知的是,FPGA 最大的问题是编程难度大且价格昂贵。

3、FPGA 增强型智能网卡,将 FPGA 与 ASIC 网络控制器相结合。

多核智能网卡

多核智能网卡设计可能包括一个集成了许多 ASIC。这些 ASIC 内核通常是性能更高的 ARM 处理器,它们处理数据包并从主服务器 CPU(昂贵)上卸载任务。多核智能网卡 ASIC 还可以集成固定功能硬件引擎,它们可以卸载定义明确的任务,如标准化的安全和存储协议。

多核智能网卡至少受到两个制约因素的限制:

1、这些智能网卡基于软件可编程处理器,由于缺乏处理器并行性,它们在被用于网络处理时速度较慢。

2、这些多核 ASIC 中的固定功能硬件引擎缺乏智能网卡卸载功能越来越需要的数据平面可编程性和灵活性。

基于处理器的多核智能网卡设计在 10G 这一代网卡中得到了广泛的应用。然而,随着数据中心中的以太网数据速率从 10G 上升到 25G、40G、50G、100G 甚至更高,这些以软件为中心的多核智能网卡就已经难以跟上了。

这些多核智能网卡在这些较高的数据速率下无法达到所需的峰值带宽。同时,多核智能网卡 ASIC 中的固定功能引擎无法扩展去处理新的加密或安全算法,这是因为它们缺乏足够的可编程性,只能适应算法的细微改变。

基于 FPGA 的智能网卡

基于 FPGA 的智能网卡利用 FPGA 更大硬件可编程性来构建卸载到智能网卡上的任务所需的任何数据平面功能。由于 FPGA 是可重编程的,利用 FPGA 实现的数据平面功能可以任意并且实时地去除和重新配置。所有这些卸载功能都以硬件而非软件速度运行。

与单纯基于软件的实现相比,基于 FPGA 的智能网卡设计可以将网络功能提速几个数量级。在智能网卡设计中使用 FPGA 可提供定制硬件的线速性能和功率效率,并能够创建支持复杂卸载任务和提高单数据流网络性能的深度数据包/网络处理流水线。

通过利用 FPGA 中固有的大量硬件并行性来复制这些流水线,可以提高巨大数据性能,足以满足基于更快的以太网网络的下一代数据中心架构的高性能、高带宽、高吞吐量需求。

FPGA 增强型智能网卡

对向后兼容性的需求催生了 FPGA 增强型智能网卡,它为多核智能网卡网卡增加了 FPGA 功能。基于这种设计,网卡可以是现有的多核智能网卡,也可以只是一个简单的网卡专用集成电路(NIC ASIC)。

集成到这些设计中的网卡提供了向后兼容性,特别是对于超级管理程序的兼容性。因此,基于现有网卡的 FPGA 增强型智能网卡设计,加上用于扩展功能的 FPGA,可以立即实现其投资收益,因为它自动与现有网络 API 和接口协议兼容,因此可以使用现有的 API 和驱动程序。一个 FPGA 增强型智能网卡设计中的板载 FPGA 能够显著提高性能和扩展功能。

Smart NIC 的应用场景

面向网络加速的 Smart NIC

以 FPGA 来实现 Smart NIC 举例,了解到底有什么网络功能任务是可以 Offload 到 Smart NIC 上进行处理的。并且,使用 FPGA 可以根据需要轻松添加、或删除这些功能。

示例 1 到 13 说明了可以添加到 base NIC 的处理元素,以创建功能更加强大的 Smart NIC。

1、base NIC。采用多个 Ethernet MAC 和一个用于 Host CPU 接口的 PCIe Block。Host CPU 必须处理所有的 Ethernet 通信,包括主动的从 NIC 的存储器读取 pkts。

2、添加 DMA Engine 功能。NIC 的存储器 Mapping 到 Memory,CPU 可以直接从 Memory 读取 pkts,而不需要从 NIC 存储器中 Copy,从而减少了 Host CPU 的工作负载。

3、添加 Filter Engine 功能。过滤器会阻止无需 Host CPU 处理的 pkts,进一步减少了 Host CPU 的任务负载。

4、添加外部 DRAM 到 Filter Engine。外部 DRAM 用于存储 Filter Engine 的 Rules,有了足够的外部 DRAM,NIC 可以管理数百万条规则。

5、添加 L2/L3 Offload Engine 功能。用于处理 NIC 的 Ethernet Ports 之间的低层 L2 交换和 L3 路由,进一步减少 Host CPU 的工作负载。同样的,可以为 L2/L3 Offload Engine 共用外部 DRAM 来缓冲网络数据包。

6、添加 Tunnel Offload Engine 功能。用于卸载各种隧道协议封包(e.g. VxLAN、GRE),并进一步减轻 Host CPU 的周期密集型隧道性需求。

7、添加 Deep Buffering(深度缓冲)外部存储。用于对输入的 pkts 进行深度缓冲,从而实现了线速数据包交换和具有多个队列的分层 QoS 调度。

8、添加一个具有自己的外部 DRAM 存储的 Flows Engine 功能。使 Smart NIC 的 Routing Engine 能够处理数百万个路由表条目,同时还有助于卸载 NAT/PAT 网络能力。

9、添加 TCP Offload Engine 功能。用于处理 TCP 协议的全部或部分工作,这样可以在不消耗更多 CPU 周期的情况下提高 Smart NIC 性能。

10、添加 Security Offload Engine 功能。将部分/全部安全引擎添加到 Smart NIC 中,以每个 Flows 为基础从 Host CPU 卸载加密/解密任务。

11、添加 QoS Engine 功能。Smart NIC 以此提供 SLA(服务等级协议)功能,而无需 Host CPU 的干预。

12、添加一个可编程的数据包解码器。该解码器将类似 P4 的可编程功能集成到 Smart NIC 中。P4 是一种标准的网络编程语言,专门用于描述和编程分组数据包转发面的操作。

13、添加一个或多个 ASIC 板载处理器。它们为 Smart NIC 提供了完整的软件可编程性(用于诸如 OAM 等任务),进一步实现了 Host CPU 的任务卸载。

可见,Smart NIC 为面向 SDN、NFV 的云计算/数据中心带来的优势主要有:

  • CPU(昂贵)资源的节约。

  • NIC 数据处理性能(网络带宽、吞吐量)的提升。

面向存储加速的 Smart NIC

在虚拟化爆发之前,大多数服务器只是运行本地存储,这虽然不是很高效,但是很容易使用。然后是网络存储的兴起:SAN、NAS、NVMe-oF(NVMe over Fabrics)。

但是,并非每个应用程序都可识别 SAN,并且某些操作系统和虚拟机管理程序(e.g. Windows 和 VMware)尚不支持 NVMe-oF。SmartNIC 可以虚拟化网络存储,效率更高、更易于管理,且应用程序更易于使用。

面向超融合基础设施的 Smart NIC

超融合基础设施使用了 VMM 来虚拟化本地存储和网络,以使其可用到群集中的其他服务器或客户端,能够实现快速部署,有利于共享存储资源。但是 VMM 占用了本应用于运行应用程序的 CPU 周期。与标准服务器一样,网络运行的速度越快,存储设备的速度越快,则必须投入更多的 CPU 来虚拟化这些资源。

SmartNIC 一方面可以卸载并帮助虚拟化网络,用于加速私有云和公共云,这就是为什么它们有时被称为 CloudNIC 的原因;另一方面可以卸载网络和大部分的存储虚拟化,可以减轻 SDS 和 HCI 的功能负担,例如:压缩、加密、重复数据删除、RAID、报告等。SmartNIC 甚至可以虚拟化 GPU 或其他神经网络处理器,这样任何服务器都可以在需要的时候通过网络访问任意数量的 GPU。

超融合架构数据中心中,Smart NIC 为 SDN 和虚拟化应用程序提供硬件加速与网络接口紧密结合,并可分布在大型服务器网络中,减小 CPU 负载,提供额外的边缘计算能力,加速特定应用和虚拟化功能,并且通过正确的语言和工具链支持,为用户提供应用加速即服务的附加价值。

DPU

DPU是什么?DPU现状:

《DPU究竟是一个什么U?和CPU、GPU有什么关系?》https://xw.qq.com/cmsid/20211108A045FK00?pgv_ref=baidutw&ivk_sa=1024320u

摘抄和参考列表

关于TOE(TCP/IP Offload Engine)

TOE(TCP/IP Offload Engine)网卡与一般网卡的区别_游手好弦 信步涂鸦-CSDN博客

一文读懂SmartNIC_开源Linux-CSDN博客

猜你喜欢

转载自blog.csdn.net/bandaoyu/article/details/122868925
今日推荐