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

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

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用