0%

硬件加速

网络通信技术

  多次内存拷贝需要CPU多次介入,导致处理延时大,达到数十微秒。同时整个过程中CPU过多参与,大量消耗CPU性能,影响正常的数据计算。

  在高速网络条件下,传统的 TPC/IP 网络在主机侧数据移动和复制操作带来的高开销限制了可以在机器之间发送的带宽。为了提高数据传输带宽,人们提出了多种解决方案,这里主要介绍下面两种:

  • TCP Offloading Engine(TOE)
  • Remote Direct Memroy Access(RDMA)

TOE

  TOE (TCP Offloading Engine),在主机通过网络进行通信的过程中,CPU 需要耗费大量资源进行多层网络协议的数据包处理工作,包括数据复制、协议处理和中断处理。当主机收到网络数据包时,会引发大量的网络 I/O 中断,CPU 需要对 I/O 中断信号进行响应和确认。为了将 CPU 从这些操作中解放出来,人们发明了TOE(TCP/IP Offloading Engine)技术,将上述主机处理器的工作转移到网卡上。TOE 技术需要特定支持 Offloading 的网卡,这种特定网卡能够支持封装多层网络协议的数据包。

  • TOE 技术将原来在协议栈中进行的IP分片、TCP分段、重组、checksum校验等操作,转移到网卡硬件中进行,降低系统CPU的消耗,提高服务器处理性能。
  • 普通网卡处理每个数据包都要触发一次中断,TOE 网卡则让每个应用程序完成一次完整的数据处理进程后才触发一次中断,显著减轻服务器对中断的响应负担。
  • TOE 网卡在接收数据时,在网卡内进行协议处理,因此,它不必将数据复制到内核空间缓冲区,而是直接复制到用户空间的缓冲区,这种“零拷贝”方式避免了网卡和服务器间的不必要的数据往复拷贝。

RDMA

  RDMA:在数据中心领域,远程直接内存访问(remote direct memory access,RDMA)是一种绕过远程主机操作系统内核访问其内存中数据的技术,由于不经过操作系统,不仅节省了大量CPU资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用。在基于NVMe over Fabric的数据中心中,RDMA可以配合高性能的NVMe SSD构建高性能、低延迟的存储网络。

  • IB(InfiniBand)
  • iWARP(Internet Wide Area RDMA Protocal)
  • RoCE(RDMA over Converged Ethernet)

区别

相同点:
都具有给cpu减负的功能
不同点:
1、工作原理不同,见上面的简介。
2、RDMA的网卡使用需要两端都支持RDMA技术的网卡才能发挥,TOE只需要单端即可。
3、TOE网卡和RDMA网卡,都属于SmartNIC。

  协议卸载主要针对网络数据包的处理过程,将一些CPU密集型的任务交给网卡来完成,减少CPU和内核空间的开销。RDMA主要针对网络数据包的传输过程,将数据直接从源主机内存发送到目标主机内存,减少内存拷贝和上下文切换的开销。

硬件基础

智能网卡

  传统网卡:早期的网卡仅实现数据链路层和物理层的功能,而端系统CPU负责处理网络协议栈中更高层的逻辑。CPU按照网络协议栈中传输层、路由层的逻辑,负责数据包的封装和解封;网卡则负责更底层的数据链路层帧的封装和解封,以及物理层电气信号的相应处理。
  智能网卡:为适应高速网络,现代网卡硬件中普遍卸载了部分传输层和路由层的处理逻辑(如校验和计算、传输层分片重组等),来减轻CPU的处理负担。甚至有些网卡如RDMA网卡还将整个传输层的处理都卸载到网卡硬件上,以完全解放CPU。得益于这些硬件卸载技术,端系统的网络协议栈处理才能与现有的高速网络相匹配。

  根据其加速不同的工作负载将它分为:

  同时,由于不同的供应商的架构不同,因此SmartNIC可以基于ASIC、FPGA和片上系统(SOC)。

DPU

  DPU(Data Processing Unit)是以数据为中心构造的专用处理器,采用软件定义技术路线支撑基础设施层资源虚拟化,支持存储、安全、服务质量管理等基础设施层服务。DPU要解决的核心问题是基础设施的“降本增效”,即将“CPU处理效率低下、GPU处理不了”的负载卸载到专用DPU,提升整个计算系统的效率、降低整体系统的总体拥有成本(TCO)。新一代的DPU不仅可以作为运算的加速引擎,还具备控制平面的功能,能够运行Hypervisor,更高效的完成网络虚拟化、IO虚拟化、存储虚拟化等任务,彻底将CPU的算力释放给应用程序。

协议卸载

TCP/IP offload

  根据卸载的功能范围,TCP/IP卸载技术可以分为两类:状态无关的卸载和状态相关的卸载。

  • 状态无关的卸载是指只卸载TCP/IP协议栈中不涉及连接状态的功能,如校验和计算、分段、重组等;
    • 实现简单,不需要修改操作系统或应用程序;
    • 适用于多种网络环境,不受网络拓扑或路由器的影响;
    • 但是只能减少主机处理器的部分负担,不能解决网络延迟或带宽瓶颈问题。
  • 状态相关的卸载是指将整个TCP/IP连接或部分连接状态卸载到NIC,由NIC负责数据包的发送和接收,以及拥塞控制、重传等功能。
    • 实现复杂,需要修改操作系统或应用程序;
    • 适用于高速网络环境,能够充分利用网络带宽;
    • 但是需要与网络设备进行配合,可能受到网络拓扑或路由器的影响;
    • 并且存在安全性和兼容性等问题。

FPL’19. Limago: an FPGA-based Open-source 100 GbE TCP/IP Stack
NSDI’20. AccelTCP: Accelerating Network Applications with Stateful TCP Offloading
NSDI’22. FlexTOE: Flexible TCP Offload with Fine-Grained Parallelism
NSDI’23. Rearchitecting the TCP Stack for I/O-Offloaded Content Delivery

QUIC offload

  QUIC协议卸载的主要挑战是如何处理QUIC协议的加密和解密过程,以及如何支持QUIC协议的动态特性,如连接迁移、0-RTT握手等。

EPIQ’20. Making QUIC Quicker With NIC Offload
APNOMS’22. QUIC Cryption Offloading Based on NanoBPF
腾讯. STGW 下一代互联网标准传输协议QUIC大规模运营之路

其它协议

  加解密卸载,用于解决服务器性能问题和加密通信之间的矛盾。加密卸载器位于服务器和网络之间,可以加速数据的加密和解密过程,同时保护数据的安全性。如 ipsec、TSL/SSL、SSH等协议。

ASPLOS’21. Autonomous NIC Offloads

参考

【RDMA】技术详解(一):RDMA概述
详谈RDMA技术原理和三种实现方式
从网络虚拟化,看智能网卡发展史
专⽤数据处理器(DPU) 技术白皮书