一种实时环境下的零拷贝通信方法技术

技术编号:3546603 阅读:211 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种实时环境下的零拷贝通信方法,步骤为:①发送端对待发送数据进行写保护;②发送端将静态系统缓冲作为用户发送缓冲;③发送端判断上述待发送数据的长度L↓[data]是否大于k,其中k为单片包内数据的最大长度,如果大于k,进入步骤④,否则进入步骤⑤;④发送端和接收端采用握手应答方式发送和接收需要分片的待发送数据,处理完毕后通信结束;⑤发送端和接收端采用直接映射方式发送和接收数据,处理完毕后通信结束。本方法在保证实时性的基础上,对不同情况的数据包采用通信延迟最小的方案进行传递,具有实时性、较短的通信延迟和硬件要求较低的特点。

【技术实现步骤摘要】
一种实时环境下的零拷贝通信方法
本方法属于计算机应用领域的网络通信技术,具体涉及一种实时环境下的零拷贝通信方法。
技术介绍
随着集群系统的出现,计算机系统能够提供的处理能力大大加强,可以满足许多新的应用需求,但相对较高的通信延迟限制了集群环境下应用的发展。在用于科学计算的集群系统中,节点之间的通信效率对并行计算的整体性能具有关键的影响。在不提高节点间通信性能的情况下,单处理器节点CPU的性能提高32倍,系统整体性能的提高不到10倍。特别是对于那些运算量不是很大的程序而言,网络通信时间在程序运行的总时间中占了相当大的比例。因此,如何降低通信所消耗的时间是网格集群发展的重要组成部分。网络通信处理时间主要产生在系统、网络接口等各个层次的数据拷贝及数据传输上。减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,可以有效地提高通信效率,这就是所谓的零拷贝技术。零拷贝技术是减小通信延迟的重要技术之一。现有的零拷贝实现方法主要有如下三种。第一种方式在发送端拷贝一次,接收端也拷贝一次。这是零拷贝最初的几种实现方式之一。不具有直接内存存取(DMA)功能或其它直接控制内存能力的网卡都是采用这种零拷贝方式。在发送端,将用户即将发送的数据通过重映射方式映射到内核的数据空间,网卡再将这些数据拷贝到网卡缓冲区,然后从缓冲区将数据发送出去。接收端先将数据接收到网卡缓冲区,然后直接对网卡缓冲区的数据进行处理,找到其对应的用户程序,然后将数据拷贝过去。其优点是:对硬件设备要求很低,并行传输时可以-->进行流水线操作,实现简单。其缺点是:通信中时间延迟仍然较长,不能满足实时通信系统的要求。另一种比较简单实用的零拷贝方式是:发送端不拷贝,接收端拷贝一次。这种方案也被称为单拷贝方案。本方案要求网卡具有DMA功能。发送过程基本类似上述方案,不过网卡直接将内核区的数据空间作为发送缓冲。接收端则将数据接收到主存中的DMA缓冲后通过映射机制将数据交给用户,用户按照需要将数据拷贝到相应位置。这种方案的优点是:并行传输时可以进行流水线操作,实现比较简单,通信效率优于上述的单拷贝方案。其缺点是:还是在接收端进行了一次拷贝,在传送大数据包的时候对通信延迟有着明显的影响。还有一种主要零拷贝通信方式是远程存储访问(RMA)(RemoteMemory Access)方式。它适合于大数据包发送,其主要实现方式为远端直接内存存取(RDMA)(Remote Direct Memory Access)和直接数据放置DDP(Direct Data Placement)方式。这种方案减少了接收端的一次拷贝,而且对于数据包的大小没有要求,但是由于每次数据传送之前硬件都要进行一次信息交互,需要消耗一定的时间,增加了通信延迟,所以采用这种方案需要数据包拷贝所消耗的时间长于数据飞行的时间时才对系统效率有促进作用,不适合用于小数据包的发送。有些协议通过将小数据包拼接为大数据包再发送的方式来避免RMA方式的不利之处,发挥其长处,但是在实时通信中采用这种方案会延长通信响应时间,违反实时性要求。
技术实现思路
本方法的目的在于提供一种实时环境下的零拷贝通信方法,该方法在实时环境下具有相对较短的时间延迟。本方法提供的一种实时环境下的零拷贝通信方法,其步骤为:(1)发送端对待发送数据进行写保护;(2)发送端将静态系统缓冲作为用户发送缓冲;(3)发送端判断上述待发送数据的长度Ldata是否大于k,其中k为单片-->包内数据的最大长度,如果大于k,进入步骤(4),否则进入步骤(5);(4)发送端和接收端采用握手应答方式发送和接收需要分片的待发送数据,处理完毕后通信结束;(5)发送端和接收端采用直接映射方式发送和接收数据,处理完毕后通信结束。本方法针对目前尚不存在实时环境下专用的零拷贝通信协议的情况,利用网卡的DMA功能实现通信时间性能优秀的零拷贝通信方式。本方法的主要思想是在保证实时性的基础上,对不同情况的数据包采用通信延迟最小的方案进行传递。与现有的零拷贝方案相比,本方法主要有如下特点:(1)实时性。本方案能够同时处理实时数据包和非实时数据包,在两种数据包同时到达时可以保证实时数据包优先完成,保证实时通信效率和只接收实时数据包时基本一致。(2)较短的通信延迟。现有的零拷贝方案主要有RMA方式和单拷贝方案。RMA方案在通信之间要进行一次消息交互,使收发双方了解对方与通信有关的信息。单拷贝方案中发送端数据包都按照映射方式以零拷贝方式发送出去,在接收端则采用通用的数据报协议(UDP)协议处理,还是进行了一次拷贝。综合说来,本方法与这两种方式相比在实时环境下具有更短的通信延迟。在处理不分片包的时候,本方法比起单拷贝方式节约了接收端的一次拷贝,比起RMA方式则少了消息的一次交互。在处理分片包的情况下,本方法效率基本与RMA方式一致,比起单拷贝方式节省了接收端的一次拷贝,但是多了一次信息的交互。测试表明,在一般实时通信系统中,分片包一次拷贝的时间大于一次信息交互的时间。所以在处理分片包的时候,本方法在处理分片包的时候在最佳情况下与RMA方式效率一致,好于单拷贝方案。考虑到各种大小的数据包在通信中所占的比例,本方法的综合时间延迟在一般情况下比其它协议要小。(3)硬件要求较低:比起其他的零拷贝通信协议,本方案对于硬件的基本要求较低——只对网卡的DMA功能有要求。如果硬件能够达到RDMA方式的要求,则能够进一步降低通信延迟,降低CPU占用率,但这不是硬-->性要求。附图说明图1为本方法流程示意图;图2为图1中握手应答方式的一种具体实施方式的流程示意图;图3为图1中直接映射方式的一种具体实施方式的流程示意图;图4为本专利技术优化方案的流程示意图;图5为图4中0/1拷贝方式的流程示意图。具体实施方式本方法的硬件环境要求网卡具有DMA功能,软件环境为Linux环境下的UDP/IP(数据报协议/网际协议)方式通信。本方法的原理介绍如下:设单片包内数据的最大长度为k,则分片包的第一片中数据的最大长度为k,其它片中数据的最大长度为k+8;设总的待发送数据包的长度为Ldata,尚未发送的数据长度为Lleft,指针p指向通信套接口(socket接口)对应的内核缓冲开始地址。下面结合附图和实例对本专利技术作进一步详细的说明。如图1所示,本专利技术方法的步骤如下:(1)发送端对要发送的数据进行写保护,使其它程序不能对这段数据进行读以外的操作;(2)发送端通过系统调用申请一个socket接口,并从系统的全局缓冲池分配一个合适大小的内核缓存块给该接口,同时为该接口初始化一个具有一定数目网络缓冲的实时网络缓冲池,定义为rtskb_pool,网络缓冲块定义为rtskb。这样,数据发送过程中需要的网络缓冲资源就直接从rtskb_pool取用而不需要动态申请,同时该网络缓冲相关的内核缓冲空间也不需要动态申请,而是直接指向该实时socket接口的内核缓存块中合适的位置;(3)发送端判断上述待发送数据Ldata是否大于k,如果大于k,则需要分片发送。如果需要分片,进入步骤(4),否则进入步骤(5);(4)发送端和接收端采用握手应答方式对需要分片的待发送数据进-->行收发处理,图2列举了一种实现方式,其步骤具体如下:本文档来自技高网
...

【技术保护点】
一种实时环境下的零拷贝通信方法,其步骤为:(1)发送端对待发送数据进行写保护;(2)发送端将静态系统缓冲作为用户发送缓冲;(3)发送端判断上述待发送数据的长度L↓[data]是否大于k,其中k为单片包内数据的最大长度 ,如果大于k,进入步骤(4),否则进入步骤(5);(4)发送端和接收端采用握手应答方式发送和接收需要分片的待发送数据,处理完毕后通信结束;(5)发送端和接收端采用直接映射方式发送和接收数据,处理完毕后通信结束。

【技术特征摘要】
1、一种实时环境下的零拷贝通信方法,其步骤为:(1)发送端对待发送数据进行写保护;(2)发送端将静态系统缓冲作为用户发送缓冲;(3)发送端判断上述待发送数据的长度Ldata是否大于k,其中k为单片包内数据的最大长度,如果大于k,进入步骤(4),否则进入步骤(5);(4)发送端和接收端采用握手应答方式发送和接收需要分片的待发送数据,处理完毕后通信结束;(5)发送端和接收端采用直接映射方式发送和接收数据,处理完毕后通信结束。2、根据权利要求1所述的方法,其特征在于:进入步骤(4)之前,发送端对待发送数据包的长度Ldata进行判断,当Ldata>j或Ldata≥j时,进入步骤(4),其中j为系统通信延迟分界点,否则采用0/1拷贝方式对数据进行处理,处理完毕后通信结束。3、根据权利要求2所述的方法,其特征在于:0/1拷贝方式的步骤为:(A.1)发送端申请一个空白网络缓冲块,将硬件头部、IP头部、UDP头部依次装入指针p开始的内核缓冲区内,形成待发送总数据包,令尚未发送的数据长度Lleft=Ldata;(A.2)发送端将p开始的k+36个字节作为网卡的DMA缓冲,然后网卡通过DMA方式发送该段数据,发送成功后,令Lleft=Lleft-k,同时p向后移动k个字节,接收端采用DMA方式接收数据后,采用UDP协议处理接收数据;(A.3)发送端再申请一个空白网络缓冲块,发送端分别将硬件头部和IP头部依次装入指针p开始的内核缓冲区内;(A.4)发送端将p开始的k+36个字节作为网卡的DMA缓冲,然后网卡通过DMA方式发送该段数据,发送成功后令Lleft=Lleft-k-8,同时p向后移动k+8个字节;(A.5)接收端用DMA方式接收数据后,采用UDP协议处理接收数据;(A.6)如果Lleft>k+8,转步骤(A.3),否则进入步骤(A.7);(A.7)发送端将p开始的Lleft+36个字节作为网卡的DMA缓冲,然后网卡通过DMA方式将这段数据发送出去;(A.8)发送端发送数据包完毕,修改用户发送缓冲标记;(A.9)接收端接收数据包完毕,接收完毕后通知用户。4、根据权利要求1、2或3所述的方法,其特征在于:步骤(4)为:(4.1)发送端申请一个空白网络缓冲块,将...

【专利技术属性】
技术研发人员:金海李胜利袁平鹏张明虎徐力
申请(专利权)人:华中科技大学
类型:发明
国别省市:83[中国|武汉]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利