“零拷贝网络”与“内核旁路”?

2024-11-13 08:36:00
admin
原创
47
摘要:问题描述:“零拷贝网络”和“内核旁路”有什么区别?这两个短语是同一个意思,还是不同?内核旁路是“零拷贝网络”中使用的一种技术,两者之间的关系是这样的吗?解决方案 1:“零拷贝网络”和“内核旁路”有什么区别?这两个短语是同一个意思,还是不同?内核旁路是“零拷贝网络”中使用的一种技术,两者之间的关系是这样的吗?T...

问题描述:

“零拷贝网络”和“内核旁路”有什么区别?这两个短语是同一个意思,还是不同?内核旁路是“零拷贝网络”中使用的一种技术,两者之间的关系是这样的吗?


解决方案 1:

“零拷贝网络”和“内核旁路”有什么区别?这两个短语是同一个意思,还是不同?内核旁路是“零拷贝网络”中使用的一种技术,两者之间的关系是这样的吗?

TL;DR - 它们是不同的概念,但很可能在内核旁路 API/框架中支持零拷贝。


用户绕过

还应考虑这种通信模式。对于完全不涉及 CPU 的DMA 到 DMAsplice()事务,这可能是可行的。这个想法是使用或类似函数来完全避免用户空间splice()。请注意,使用,整个数据流不需要绕过用户空间。可以在用户空间中读取标头,并将数据直接流式传输到磁盘。最常见的缺点是splice()没有进行校验和卸载。

零拷贝

零拷贝概念只是网络缓冲区固定在原处,不会移动。在许多情况下,这并没有真正带来好处。大多数现代网络硬件都支持分散聚集(也称为缓冲区描述符)等。这个想法是网络硬件理解物理指针。缓冲区描述符通常由以下部分组成:

  1. 数据指针

  2. 长度

  3. 下一个缓冲区描述符

好处是网络报头不需要并存,并且IP TCP应用程序报头可以物理上与应用程序数据分开存在。

如果控制器不支持此功能,则TCP/IP标头必须位于用户数据之前,以便在发送到网络控制器之前可以填充它们。

零拷贝还意味着一些内核用户 MMU 设置,以便共享页面。

内核绕过

当然,您可以绕过内核。这是pcap和其他嗅探软件一段时间以来一直在做的事情。但是,pcap 不会阻止正常的内核处理;但其概念类似于内核旁路框架所允许的。即直接将数据包传送到用户空间,在那里处理报头。

然而,除非与特定硬件绑定,否则很难看到用户空间会获得绝对胜利的情况。一些网络控制器可能在控制器中支持分散聚集,而其他网络控制器可能不支持。

有各种内核接口来实现内核旁路。困难在于如何处理接收到的数据以及生成要传输的数据。这通常涉及其他设备,因此有很多解决方案。


把它们放在一起...

这两个短语的意思相同还是不同?

它们是不同的,如上所述,希望能够解释清楚。

内核旁路是“零拷贝网络”中使用的技术吗?它们之间有什么关系吗?

事实恰恰相反。内核旁路可以使用零拷贝,而且很可能会支持它,因为缓冲区完全由应用程序控制。此外,内核和用户空间之间没有内存共享(这意味着不需要 MMU 共享页面以及可能导致的任何缓存/TLB 效果)。因此,如果您使用内核旁路,支持零拷贝通常会很有利;所以乍一看,情况可能看起来一样。

如果分散-集中 DMA 可用(大多数现代控制器),则用户空间或内核都可以使用它。在这种情况下,零拷贝并不那么有用。

参考:

  • 有关高带宽内核旁路系统OnLoad 的技术参考。

  • 自 2.6.32 起的PF 环(如果已配置)

  • David Miller 撰写的Linux 内核网络缓冲区管理。它介绍了如何在内核中管理协议头/尾。

解决方案 2:

零拷贝网络

当您从不在用户空间和内核空间(我指的是内存空间)之间复制数据时,您就进行了零复制网络。例如:

C 语言
recv(fd, buffer, BUFFER_SIZE, 0);

默认情况下,数据被复制:

  1. 内核从网络堆栈获取数据

  2. 内核将此数据复制到buffer位于用户空间的。

使用零拷贝方法,数据不会被复制,而是直接从网络堆栈进入用户空间。

内核绕过

内核旁路是指在用户空间中管理自己、网络堆栈和硬件。这很难,但你会获得很大的性能(没有复制,因为所有数据都在用户空间中)。如果你想了解更多信息,这个链接可能会很有趣。

解决方案 3:

零拷贝:

在发送和接收数据包时,所有数据包数据必须从用户空间缓冲区复制到内核空间缓冲区以进行发送,反之亦然。零拷贝驱动程序通过让用户空间和驱动程序直接共享数据包缓冲区内存来避免这种情况。

发送接收不再指向内核空间中稍后需要复制的缓冲区,而是分配用户空间中的一块内存,并将其映射到给定的物理内存区域,作为内核缓冲区和用户空间缓冲区之间的共享内存,然后将每个描述符缓冲区指向新分配的内存中的相应位置。

解决方案 4:

内核旁路和零拷贝的其他示例是 DPDK 和 RDMA。当应用程序使用 DPDK 时,它会绕过内核 TCP/IP 堆栈。应用程序正在创建以太网帧,NIC 使用 DMA 直接从用户空间内存抓取这些帧,因此它是零拷贝,因为没有从用户空间到内核空间的拷贝。应用程序可以使用 RDMA 做类似的事情。应用程序写入 NIC 直接访问和传输的队列对。RDMA iblibverbs 也在内核中使用,因此当 iSER 使用 RDMA 时,它不是内核旁路,而是零拷贝。

http://dpdk.org/

https://www.openfabrics.org/index.php/openfabrics-software.html

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   681  
  在项目管理领域,集成产品开发(IPD)流程以其高效、协同的特点,被众多企业视为提升产品竞争力的关键。IPD流程强调跨部门、跨职能的紧密合作,以确保产品从概念到市场各个环节的无缝衔接。然而,实现这一目标并非易事,它需要企业深刻理解并掌握IPD流程中的跨部门协作艺术。本文将深入探讨IPD流程中跨部门协作的三个关键点,旨在为...
IPD项目管理咨询   9  
  掌握IPD流程图:提升团队协作的关键路径在当今快速变化的商业环境中,团队协作的效率与效果直接关系到项目的成功与否。集成产品开发(Integrated Product Development,简称IPD)作为一种先进的研发管理理念,通过跨部门、跨领域的协同工作,能够显著提升产品开发的速度与质量。而IPD流程图,则是这一理...
IPD流程阶段   9  
  IPD流程概述:理解其核心价值与实施背景集成产品开发(Integrated Product Development,简称IPD)是一种先进的产品开发管理理念,它强调跨部门协作、市场导向和快速响应变化的能力。IPD流程不仅关注产品本身的技术创新,更注重将市场、研发、生产、销售等各个环节紧密集成,以实现产品从概念到市场的高...
华为IPD是什么   7  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程以其跨部门协作、高效决策和快速响应市场变化的特点,被众多企业视为提升竞争力的关键。然而,实践IPD流程并非易事,项目管理中的种种错误往往阻碍了其效果的充分发挥。本文旨在深入探讨如何在实施IPD流程时避免这些常见错误,...
IPD框架   7  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用