一种数据传输的方法及设备的制造方法

文档序号:10624722阅读:537来源:国知局
一种数据传输的方法及设备的制造方法
【专利摘要】本发明提供一种数据传输的方法及设备,用以解决现有技术中存在的两个控制器在进行数据交互时,降低了带宽利用率,且降低了数据发送效率的问题。本发明的方法包括:发送设备根据需要发送的未经协议栈封装的特定数据的数据类型,确定特定数据在窗口中对应的子窗口;发送设备将特定数据写入到窗口中对应的子窗口中;发送设备根据子窗口的地址和接收设备内存地址的对应关系,确定特定数据在窗口中对应的子窗口的地址对应的接收设备内存地址;发送设备将确定的接收设备内存地址发送给接收设备,并将确定的子窗口中的特定数据发送给接收设备。采用本发明的方法能够提高带宽利用率,且能够提高数据发送效率。
【专利说明】
_种数据传输的方法及设备
技术领域
[0001]本发明涉及计算机技术领域,特别涉及一种数据传输的方法及设备。
【背景技术】
[0002]目前,双控制器存储产品的两个控制器在进行数据交互时,发送端控制器会首先将所有数据(例如:统计数据、命令数据、镜像数据、用户块数据和网卡传输数据等)通过TCP/IP (Transmiss1n Control Protocol/Internet Protocol,传输控制协议及网络互连协议)协议栈进行封包操作,在包头中加入数据类型、数据长度等信息后,写入到窗口,然后通过PC1-E (Peripheral Component Interconnect-Express,高速外设互联总线)高速总线通道以流式方式发送给接收端控制器。
[0003]如图1所示,为现有技术中发送端控制器将数据以流式方式发送给接收端控制器。从图1上可知,发送端控制器端只有一个窗口,其中,白色空心方块为空闲区域(可以存储数据),黑色线条网格方块为占用区域(已存储数据),窗口的起始区域用于存储WP (写指针)和RP(读指针)的值,WP的值表示窗口当前写入数据的位置,RP的值表示接收端控制器当前读数据的位置。从图1上可知,接收端控制器端的内存某一区域对应于发送端控制器的窗口,其中,白色空心方块为空闲区域(可以存储数据),黑色线条网格方块为占用区域(已存储数据),该内存区域的起始区域用于存储WP和RP的值,WP的值表示窗口当前写入数据的位置,RP的值表示接收端控制器当前读数据的位置。发送端控制器端在需要发送数据时,将数据通过TCP/IP协议栈进行封包操作后,将封装后的数据写入到窗口中的WP指向的下一个空闲区域,并更新窗口中的WP的值,并将更新后的WP值发送给接收端控制器,以使接收端控制器更新WP的值,在数据写入完成后发送中断通知接收端控制器;接收控制器在接收到中断后,确定有数据写入完成,根据接收端控制器该内存区域中的RP和更新后的WP,确定写入完成的数据的存储地址,从确定的存储地址中读取该数据,然后对数据进行解包操作,确定数据的数据类型,然后将解包后的数据发送给相应的上层应用。
[0004]现有的两个控制器在进行数据交互时,发送端控制器只有一个窗口,需要交互的数据的数据类型有多种,例如:统计数据类型(接收端控制器并不需要对统计数据进行及时的更新,并且对统计数据的准确性要求也不高,统计数据可以不通过流式方式进行传输)、命令数据类型(两控制器间交互的命令数据的数据流量较少,但是发送端控制器需要等到接收端控制器处理完命令数据,返回处理结果后才能删除该命令数据)、镜像数据类型(发送端控制器在将镜像数据写入到窗口时,可以使用新的镜像数据覆盖旧的镜像数据,只要求保证最后一次写入的镜像数据无误即可,不关心中间的镜像数据传输过程)和用户块数据类型(两控制器间交互的用户块数据的数据量较大,需要保证中间的每次数据的交互的可靠性,接收端控制器在没有处理完发送端控制器发送的用户块数据时,该用户块数据不能被覆盖),将所有类型的数据写入到一个窗口中进行发送,每次需要将需要发送的数据进行封包操作,将数据类型、数据长度等信息加入到包头中,以便接收端控制器对封装后的数据进行解包操作时,根据包头中的数据类型信息确定该数据对应的上层应用,并将该数据发送给确定的上层应用。
[0005]现有技术中,发送端控制器需要将不同类型的数据通过TCP/IP协议栈进行封包操作后,将封装后的数据写入到同一个窗口,并通过流式方式发送给接收端控制器,接收端控制器在接收到封装后的数据后,需要对封装后的数据进行解包操作,在封包和解包过程中需要进行大量的数据拷贝工作,因而大量的占用了 CPU资源,降低了带宽利用率,并且在整个数据发送过程中,将所有类型的数据采用单一的流式方式进行发送,降低了数据发送效率。
[0006]现有技术还有一种情况是,发送端控制器在需要发送数据时,首先将数据进行协议栈封装,然后将封装后的数据发送给接收端控制器,这种方式整个数据传输过程需要发送端控制器和接收端控制器的多个实体的参与,所以系统的硬件成本比较高。
[0007]综上所述,目前的两个控制器在进行数据交互时,降低了带宽利用率,且降低了数据发送效率。

【发明内容】

[0008]本发明提供一种数据传输的方法,用以解决现有技术中存在的两个控制器在进行数据交互时,降低了带宽利用率,且降低了数据发送效率的问题。
[0009]本发明实施例提供一种数据传输的方法,包括:
[0010]发送设备根据需要发送的未经协议栈封装的特定数据的数据类型,确定所述特定数据在窗口中对应的子窗口;
[0011]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中;
[0012]所述发送设备根据子窗口的地址和接收设备内存地址的对应关系,确定所述特定数据在窗口中对应的所述子窗口的地址对应的接收设备内存地址;
[0013]所述发送设备将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备。
[0014]本发明实施例发送设备将不同类型的未经协议栈封装的特定数据写入到不同的子窗口中后,将接收设备内存地址和特定数据发送给接收设备,由于在整个数据发送过程中不需要对特定数据进行协议栈封装,且发送端能将不同类型的数据写入到不同的子窗口中,因而提高了带宽利用率,且提高了数据发送效率。
[0015]较佳地,所述数据类型为统计数据;
[0016]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0017]所述发送设备根据统计数据类型和子窗口区域的对应关系,确定所述特定数据的统计数据类型对应的子窗口区域;
[0018]所述发送设备根据确定的子窗口区域,将所述特定数据写入到窗口中对应的所述子窗口中。
[0019]由于本发明实施例将统计数据对应的子窗口,根据统计数据类型划分成多个子窗口区域,将不同类型的统计数据分开进行处理,降低了 CPU使用率,降低了内存占用率,便于数据的处理。
[0020]较佳地,所述数据类型为命令数据;
[0021]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0022]所述发送设备确定所述子窗口中空闲的命令项,并将所述特定数据写入到所述子窗口中空闲的命令项中。
[0023]由于本发明实施例将命令数据对应的子窗口划分成若干个固定大小的命令项,将命令数据存储到一个空闲命令项中,每次只需要对固定大小的数据进行处理,便于处理操作。
[0024]较佳地,所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中之前,还包括:
[0025]所述发送设备将所述特定数据进行封包操作,将命令码和目标模块信息加入到包头中;
[0026]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中之后,还包括:
[0027]所述发送设备将存储所述特定数据的命令项对应的数据状态标志设置为数据准备;
[0028]所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,还包括:
[0029]所述发送设备将所述命令项对应的数据状态标志和封装后的所述特定数据一起发送给所述接收设备,以使所述接收设备在确定所述数据状态标志为数据准备后,将特定数据和命令码发送给所述目标模块信息对应的目标模块。
[0030]较佳地,所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备之后,还包括:
[0031]所述发送设备在接收到所述接收设备的反馈信息和存储地址后,根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中;
[0032]所述发送设备在存储的所述反馈信息为完成信息后,将存储所述反馈信息的反馈区域对应的命令项的数据状态标志设置为数据完成;
[0033]所述发送设备在确定需要向上层应用上报后,将数据完成的数据状态标志的命令项对应的反馈区域中存储的反馈信息上报给上层应用后,删除所述命令项和所述命令项对应的反馈区域中的数据,将所述命令项作为空闲的命令项。
[0034]由于本发明实施例发送设备在确定需要向上层应用上报后,将数据完成的数据状态标志的命令项对应的反馈区域中存储的反馈信息上报给上层应用后,删除命令项和命令项对应的反馈区域中的数据,将命令项作为空闲的命令项,以便于将新的命令数据存储到该命令项中。
[0035]较佳地,所述数据类型为镜像数据;
[0036]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中之后,还包括:
[0037]所述发送设备根据子窗口的地址和发送设备内存地址的对应关系,确定写入所述特定数据的所述子窗口对应的发送设备内存地址;
[0038]所述发送设备根据确定的发送设备内存地址,将所述特定数据写入到发送设备内存中。
[0039]由于本发明实施例发送设备将特定数据写入到子窗口中之后,并将该特定数据写入到发送设备内存中,以使发送设备和接收设备的镜像数据保持一致。
[0040]较佳地,所述数据类型为用户块数据;
[0041]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0042]所述发送设备确定需要存储所述特定数据的块设备对应的虚拟块设备接口,并将所述特定数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;
[0043]所述发送设备通过确定的所述虚拟块设备接口,将封装后的所述特定数据写入到窗口中对应的所述子窗口中;
[0044]所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:
[0045]所述发送设备将确定的所述子窗口中的封装后的所述特定数据发送给所述接收设备,以使所述接收设备将所述特定数据发送给包头中的虚拟块设备标识和/或块设备标识对应的块设备。
[0046]由于本发明实施例发送端通过虚拟块设备接口将特定数据写入到子窗口中,并发送给接收设备,接收设备将接收到的特定数据发送给对应的块设备,以使发送设备将特定数据存储到接收设备的块设备中。
[0047]较佳地,所述发送设备将确定的所述子窗口中的封装后的所述特定数据发送给所述接收设备之后,还包括:
[0048]所述发送设备在接收到所述接收设备的封装后的反馈数据和接收设备内存地址后,根据子窗口的地址和接收设备内存地址的对应关系,确定所述反馈数据在接收设备中的接收设备内存地址对应的子窗口的地址,其中封装后的所述反馈数据的包头中包括虚拟块设备标识和/或块设备标识;
[0049]所述发送设备将所述反馈数据存储到确定的所述子窗口的地址中,并在确定需要向上层应用上报后,将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0050]较佳地,所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0051]所述发送设备以队列形式将所述特定数据写入到窗口中对应的所述子窗口中;
[0052]所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:
[0053]所述发送设备将确定的所述子窗口中的多个队列数据并行发送给所述接收设备。
[0054]由于本发明实施例将特定数据以队列形式写入到子窗口中,并将确定的子窗口中的多个队列数据并行发送给接收设备,提高了数据传输效率。
[0055]较佳地,所述数据类型为网卡传输数据;
[0056]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0057]所述发送设备将所述特定数据经过协议栈进行封装,并通过虚拟网卡将经过协议栈封装后的所述特定数据进行媒体接入控制MAC封装;
[0058]所述发送设备将MAC封装后的所述特定数据写入到窗口中对应的所述子窗口中;
[0059]所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:
[0060]所述发送设备将确定的所述子窗口中的MAC封装后的所述特定数据通过流式方式发送给接收设备。
[0061]由于本发明实施例能将需要通过网卡发送的特定数据进行MAC封包操作后,将封装后的特定数据写入到相应的子窗口中,并通过高速总线通道以流式方式发送给接收设备,整个数据传输过程是通过虚拟网卡而不是网卡芯片实现数据传输的,因而降低了系统的硬件成本。
[0062]较佳地,所述发送设备将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:
[0063]所述发送设备通过高速总线通道将确定的接收设备内存地址发送给接收设备,并通过高速总线通道将确定的所述子窗口中的所述特定数据发送给所述接收设备。
[0064]本发明实施例提供一种数据传输的方法,包括:
[0065]接收设备接收到来自发送设备的接收设备内存地址和特定数据,其中所述接收设备内存地址是所述发送设备根据存储所述特定数据的窗口中的子窗口确定的;
[0066]所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中。
[0067]由于本发明实施例接收设备根据接收设备内存地址和子窗口的地址的对应关系,确定接收设备内存地址,并将特定数据存储到确定的接收设备内存地址中,便于需要将该特定数据上报给上层应用时,根据特定数据对应的接收设备内存地确定需要上报的上层应用。
[0068]较佳地,所述特定数据为下列数据中的一种:
[0069]统计数据、命令数据、镜像数据、用户块数据和网卡传输数据。
[0070]较佳地,所述特定数据为命令数据;
[0071 ] 所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:
[0072]所述接收设备在确定命令项对应的数据状态标志为数据准备后,将所述特定数据和命令码发送给所述目标模块信息对应的目标模块;
[0073]所述接收设备在接收到所述目标模块反馈的反馈信息后,将所述反馈信息和存储地址发送给所述发送设备,以使所述发送设备根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中。
[0074]较佳地,所述特定数据为用户块数据;
[0075]所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:
[0076]所述接收设备在确定需要发送所述特定数据时,将所述特定数据发送给所述特定数据的包头中的虚拟块设备标识和/或块设备标识对应的块设备;
[0077]所述接收设备在接收到所述块设备反馈的反馈数据和接收设备内存地址后,将所述反馈数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;
[0078]所述接收设备将封装后的所述反馈数据和接收设备内存地址发送给所述发送设备,以使所述发送设备将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0079]较佳地,所述特定数据为网卡传输数据;
[0080]所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:
[0081]所述接收设备将MAC封装后的所述特定数据进行解包操作,将解包后的所述特定数据发送给所述特定数据对应的上层应用。
[0082]本发明实施例提供一种数据传输的发送设备,包括:
[0083]第一确定模块,用于根据需要发送的未经协议栈封装的特定数据的数据类型,确定所述特定数据在窗口中对应的子窗口 ;
[0084]写入模块,用于将所述特定数据写入到窗口中对应的所述子窗口中;
[0085]第二确定模块,用于根据子窗口的地址和接收设备内存地址的对应关系,确定所述特定数据在窗口中对应的所述子窗口的地址对应的接收设备内存地址;
[0086]发送模块,用于将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备。
[0087]较佳地,所述数据类型为统计数据;
[0088]所述写入模块具体用于:
[0089]根据统计数据类型和子窗口区域的对应关系,确定所述特定数据的统计数据类型对应的子窗口区域;根据确定的子窗口区域,将所述特定数据写入到窗口中对应的所述子窗口中。
[0090]较佳地,所述数据类型为命令数据;
[0091]所述写入模块具体用于:
[0092]确定所述子窗口中空闲的命令项,并将所述特定数据写入到所述子窗口中空闲的命令项中。
[0093]较佳地,所述写入模块还用于:
[0094]将所述特定数据进行封包操作,将命令码和目标模块信息加入到包头中;
[0095]所述第二确定模块还用于:
[0096]将存储所述特定数据的命令项对应的数据状态标志设置为数据准备;
[0097]所述发送模块还用于:
[0098]将所述命令项对应的数据状态标志和封装后的所述特定数据一起发送给所述接收设备,以使所述接收设备在确定所述数据状态标志为数据准备后,将特定数据和命令码发送给所述目标模块信息对应的目标模块。
[0099]较佳地,所述发送模块还用于:
[0100]在接收到所述接收设备的反馈信息和存储地址后,根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中;在存储的所述反馈信息为完成信息后,将存储所述反馈信息的反馈区域对应的命令项的数据状态标志设置为数据完成;在确定需要向上层应用上报后,将数据完成的数据状态标志的命令项对应的反馈区域中存储的反馈信息上报给上层应用后,删除所述命令项和所述命令项对应的反馈区域中的数据,将所述命令项作为空闲的命令项。
[0101]较佳地,所述数据类型为镜像数据;
[0102]所述写入模块还用于:
[0103]根据子窗口的地址和发送设备内存地址的对应关系,确定写入所述特定数据的所述子窗口对应的发送设备内存地址;根据确定的发送设备内存地址,将所述特定数据写入到发送设备内存中。
[0104]较佳地,所述数据类型为用户块数据;
[0105]所述写入模块具体用于:
[0106]确定需要存储所述特定数据的块设备对应的虚拟块设备接口,并将所述特定数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;通过确定的所述虚拟块设备接口,将封装后的所述特定数据写入到窗口中对应的所述子窗口中;
[0107]所述发送模块具体用于:
[0108]将确定的所述子窗口中的封装后的所述特定数据发送给所述接收设备,以使所述接收设备将所述特定数据发送给包头中的虚拟块设备标识和/或块设备标识对应的块设备。
[0109]较佳地,所述发送模块还用于:
[0110]在接收到所述接收设备的封装后的反馈数据和接收设备内存地址后,根据子窗口的地址和接收设备内存地址的对应关系,确定所述反馈数据在接收设备中的接收设备内存地址对应的子窗口的地址,其中封装后的所述反馈数据的包头中包括虚拟块设备标识和/或块设备标识;将所述反馈数据存储到确定的所述子窗口的地址中,并在确定需要向上层应用上报后,将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0111]较佳地,所述写入模块具体用于:
[0112]以队列形式将所述特定数据写入到窗口中对应的所述子窗口中;
[0113]所述发送模块具体用于:
[0114]将确定的所述子窗口中的多个队列数据并行发送给所述接收设备。
[0115]较佳地,所述数据类型为网卡传输数据;
[0116]所述写入模块具体用于:
[0117]将所述特定数据经过协议栈进行封装,并通过虚拟网卡将经过协议栈封装后的所述特定数据进行媒体接入控制MAC封装;将MAC封装后的所述特定数据写入到窗口中对应的所述子窗口中;
[0118]所述发送模块具体用于:
[0119]将确定的所述子窗口中的MAC封装后的所述特定数据通过流式方式发送给接收设备。
[0120]较佳地,所述发送模块具体用于:
[0121]通过高速总线通道将确定的接收设备内存地址发送给接收设备,并通过高速总线通道将确定的所述子窗口中的所述特定数据发送给所述接收设备。
[0122]本发明实施例提供一种数据传输的接收设备,包括:
[0123]接收模块,用于接收到来自发送设备的接收设备内存地址和特定数据,其中所述接收设备内存地址是所述发送设备根据存储所述特定数据的窗口中的子窗口确定的;
[0124]存储模块,用于将所述特定数据存储到所述确定的接收设备内存地址中。
[0125]较佳地,所述特定数据为下列数据中的一种:
[0126]统计数据、命令数据、镜像数据、用户块数据和网卡传输数据。
[0127]较佳地,所述特定数据为命令数据;
[0128]所述存储模块还用于:
[0129]在确定命令项对应的数据状态标志为数据准备后,将所述特定数据和命令码发送给所述目标模块信息对应的目标模块;在接收到所述目标模块反馈的反馈信息后,将所述反馈信息和存储地址发送给所述发送设备,以使所述发送设备根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中。
[0130]较佳地,所述特定数据为用户块数据;
[0131]所述存储模块还用于:
[0132]在确定需要发送所述特定数据时,将所述特定数据发送给所述特定数据的包头中的虚拟块设备标识和/或块设备标识对应的块设备;在接收到所述块设备反馈的反馈数据和接收设备内存地址后,将所述反馈数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;将封装后的所述反馈数据和接收设备内存地址发送给所述发送设备,以使所述发送设备将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0133]较佳地,所述特定数据为网卡传输数据;
[0134]所述存储模块还用于:
[0135]将MAC封装后的所述特定数据进行解包操作,将解包后的所述特定数据发送给所述特定数据对应的上层应用。
[0136]本发明实施例发送设备将不同类型的未经协议栈封装的特定数据写入到不同的子窗口中后,将接收设备内存地址和特定数据发送给接收设备,由于在整个数据发送过程中不需要对特定数据进行协议栈封装,且发送端能将不同类型的数据写入到不同的子窗口中,因而提高了带宽利用率,且提高了数据发送效率。
【附图说明】
[0137]图1为【背景技术】中的发送端控制器将数据以流式方式发送给接收端控制器示意图;
[0138]图2a为本发明实施例一数据传输的方法流程示意图;
[0139]图2b为本发明实施例二窗口同内存的映射示意图;
[0140]图3为本发明实施例三统计数据子窗口的子窗口区域同内存的映射示意图;
[0141]图4为本发明实施例四命令数据子窗口的命令项同内存的映射示意图;
[0142]图5为本发明实施例五镜像数据子窗口同内存的映射不意图;
[0143]图6为本发明实施例六用户块数据子窗口同内存的映射示意图;
[0144]图7为本发明实施例七需要通过网卡传输的数据的数据子窗口同内存的映射示意图;
[0145]图8为本发明实施例八基于NTB的子窗口模块框图;
[0146]图9为本发明实施例九数据传输的方法流程示意图;
[0147]图10为本发明实施例十数据传输的发送设备结构示意图;
[0148]图11为本发明实施例十一数据传输的接收设备结构示意图。
【具体实施方式】
[0149]本发明实施例发送设备:根据需要发送的未经协议栈封装的特定数据的数据类型,确定所述特定数据在窗口中对应的子窗口 ;将所述特定数据写入到窗口中对应的所述子窗口中;根据子窗口的地址和接收设备内存地址的对应关系,确定所述特定数据在窗口中对应的所述子窗口的地址对应的接收设备内存地址;将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备。接收设备:接收到来自发送设备的接收设备内存地址和特定数据,其中所述接收设备内存地址是所述发送设备根据存储所述特定数据的窗口中的子窗口确定的;将所述特定数据存储到所述确定的接收设备内存地址中。由于本发明实施例发送设备将不同类型的未经协议栈封装的特定数据写入到不同的子窗口中后,将接收设备内存地址和特定数据发送给接收设备,由于在整个数据发送过程中不需要对特定数据进行协议栈封装,且发送端能将不同类型的数据写入到不同的子窗口中,因而提高了带宽利用率,且提高了数据发送效率。
[0150]其中,本发明实施例特定数据的数据类型包括但不限于下述数据类型:统计数据、命令数据、镜像数据、用户块数据和网卡传输数据等。
[0151]其中,本发明实施例协议栈包括但不限于下述协议栈:TCP/IP协议栈等。
[0152]下面结合说明书附图对本发明实施例作进一步详细描述。
[0153]如图2a所示,本发明实施例一数据传输的方法包括:
[0154]步骤200、发送设备根据需要发送的未经协议栈封装的特定数据的数据类型,确定所述特定数据在窗口中对应的子窗口 ;
[0155]步骤201、所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中;
[0156]步骤202、所述发送设备根据子窗口的地址和接收设备内存地址的对应关系,确定所述特定数据在窗口中对应的所述子窗口的地址对应的接收设备内存地址;
[0157]步骤203、所述发送设备将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备。
[0158]如图2b所示,本发明实施例二窗口同内存的映射示意图,从图2b可知,发送设备窗口分为5个子窗口,子窗口 I为统计数据子窗口,子窗口 2为镜像数据子窗口,子窗口 3为需要通过网卡传输的数据的数据子窗口,子窗口 4为命令数据子窗口,子窗口 5为用户块数据子窗口,子窗口 I映射到接收设备的内存地址1,子窗口 2映射到接收设备的内存地址2,子窗口 3映射到接收设备的内存地址3,子窗口 4映射到接收设备的内存地址4,子窗口5映射到接收设备的内存地址5 ;接收设备窗口分为5个子窗口,子窗口 I为统计数据子窗口,子窗口 2为镜像数据子窗口,子窗口 3为需要通过网卡传输的数据的数据子窗口,子窗口 4为命令数据子窗口,子窗口 5为用户块数据子窗口,子窗口 I映射到发送设备的内存地址1,子窗口 2映射到发送设备的内存地址2,子窗口 3映射到发送设备的内存地址3,子窗口 4映射到发送设备的内存地址4,子窗口 5映射到发送设备的内存地址5。任一子窗口都是通过高速总线通道与对应的内存地址进行数据交互。图2b只是用于举例,实际的子窗口的个数根据实际的数据类型的多少确定,若有4种类型的数据,可以将窗口划分为4个子窗口,若有6种类型的数据,可以将窗口划分为6个子窗口。本发明实施例子窗口的大小可以根据实际经验进行设置,也可以根据实际需要对子窗口的大小进行调整。
[0159]例如:在图2b中,发送设备的窗口的存储地址为I?500,子窗口 I的存储地址为I?20,子窗口 2的存储地址为21?40,子窗口 3的存储地址为41?60,子窗口 4的存储地址为61?80,子窗口 5的存储地址为81?500。接收设备与发送设备窗口对应的内存地址为100?600,内存地址I为101?120,内存地址2为121?140,内存地址3为141?160,内存地址4为161?180,内存地址5为181?600。发送设备在向子窗口 I中的第5号存储地址写入数据后,接收设备将写入的该数据存储到内存地址I的第105号存储地址中。
[0160]本发明实施例发送设备对不同类型的数据写入到不同的子窗口中,并通过不同的发送方式发送写入对应子窗口中的数据,具体的实现方式为:
[0161]方式一:所述数据类型为统计数据;
[0162]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0163]所述发送设备根据统计数据类型和子窗口区域的对应关系,确定所述特定数据的统计数据类型对应的子窗口区域;
[0164]所述发送设备根据确定的子窗口区域,将所述特定数据写入到窗口中对应的所述子窗口中。
[0165]本发明实施例统计数据类型包括但不限于下述类型:CPU占用率数据、内存占用率数据、网络使用率数据和1负荷数据等。
[0166]如图3所示,本发明实施例三统计数据子窗口的子窗口区域同内存的映射示意图,从图3可知,发送设备统计数据子窗口分为4个子窗口区域,子窗口区域I为CPU (Central Processing Unit,中央处理单元)占用率数据子窗口区域,子窗口区域2为内存占用率数据子窗口区域,子窗口区域3为网络使用率数据子窗口区域,子窗口区域4为1(Input/Output,输入/输出)负荷数据子窗口区域,子窗口区域I映射到接收设备的内存地址11,子窗口区域2映射到接收设备的内存地址12,子窗口区域3映射到接收设备的内存地址13,子窗口区域4映射到接收设备的内存地址14。在发送设备的任一子窗口区域中写入数据时,会将写入的数据传输到接收设备相应的内存地址中。图3只是用于举例,实际的子窗口区域的个数根据实际的统计数据类型的多少确定,若有3种类型的统计数据,可以将统计数据子窗口划分为3个子窗口区域,若有6种类型的统计数据,可以将统计数据子窗口划分为6个子窗口区域。
[0167]例如:在图3中,发送设备将CPU占用率数据写入到子窗口区域I中后,接收设备将写入的该CPU占用率数据存储到内存地址11中的相应位置。
[0168]方式二:所述数据类型为命令数据;
[0169]本发明实施例将命令数据子窗口划分成若干个固定大小的命令项,以便于每次处理固定大小的数据,具体的将命令数据写入命令数据子窗口的实现方式为:
[0170]所述发送设备确定所述子窗口中空闲的命令项,并将所述特定数据写入到所述子窗口中空闲的命令项中。
[0171]本发明实施例空闲的命令项为未存入数据的命令项。
[0172]本发明实施例根据实际的处理需要,在将命令数据写入到命令数据子窗口之前,对命令数据进行简易封装成操作,具体的实现方式为:
[0173]所述发送设备将所述特定数据进行封包操作,将命令码和目标模块信息加入到包头中;
[0174]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中之后,还包括:
[0175]所述发送设备将存储所述特定数据的命令项对应的数据状态标志设置为数据准备;
[0176]所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,还包括:
[0177]所述发送设备将所述命令项对应的数据状态标志和封装后的所述特定数据一起发送给所述接收设备,以使所述接收设备在确定所述数据状态标志为数据准备后,将特定数据和命令码发送给所述目标模块信息对应的目标模块。
[0178]本发明实施例发送设备将命令数据子窗口中的命令数据发送给接收设备后,接收设备会根据接收到的命令数据进行相应处理,并返回操作结果,具体的实现方式为:
[0179]所述发送设备在接收到所述接收设备的反馈信息和存储地址后,根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中;
[0180]所述发送设备在存储的所述反馈信息为完成信息后,将存储所述反馈信息的反馈区域对应的命令项的数据状态标志设置为数据完成;
[0181]所述发送设备在确定需要向上层应用上报后,将数据完成的数据状态标志的命令项对应的反馈区域中存储的反馈信息上报给上层应用后,删除所述命令项和所述命令项对应的反馈区域中的数据,将所述命令项作为空闲的命令项。
[0182]如图4所示,本发明实施例四命令数据子窗口的命令项同内存的映射示意图,从图4可知,发送设备命令数据子窗口有4个命令项和4个命令项一一对应的4个反馈区域,白色空心命令项为空闲的命令项(未存入数据的命令项),黑色线条网格命令项为已存入数据的命令项,白色空心反馈区域为未存入反馈信息的反馈区域,黑色线条网格反馈区域为已存入反馈信息的反馈区域。命令项21对应反馈区域211,命令项22对应反馈区域212,命令项23对应反馈区域213,命令项24对应反馈区域214 ;接收设备的内存地址211对应内存地址221,内存地址212对应内存地址222,内存地址213对应内存地址223,内存地址214对应内存地址224。命令项21对应内存地址211、反馈区域211对应内存地址221,命令项22对应内存地址212、反馈区域212对应内存地址222,命令项23对应内存地址213、反馈区域213对应内存地址223,命令项24对应内存地址214、反馈区域214对应内存地址224。图4只是用于举例,实际的命令项和反馈区域的个数根据实际的命令数据子窗口大小进行确定,根据命令数据子窗口大小,可以命令数据子窗口分为100个命令项和100个反馈区域,根据命令数据子窗口大小,也可以命令数据子窗口分为500个命令项和500个反馈区域。
[0183]例如:在图4中,发送设备将封包后的命令数据写入到命令项22中,并将命令项22的数据标识设置为数据准备后,接收设备将写入的该命令数据存储到内存地址212中,并根据该命令数据包头中的目标模块信息,将该命令数据发送给目标模块信息对应的目标模块,目标模块根据命令数据进行处理后将反馈信息发送给发送设备,发送设备将反馈信息和存储地址发送给发送设备。发送设备将反馈信息存储到反馈区域212中,并将将命令项22的数据标识设置为数据完成。发送设备在确定需要向上层应用上报后,将数据完成的数据状态标志的命令项22对应的反馈区域212中的反馈信息上报给上层应用后,删除命令项22中的命令数据和反馈区域212中的反馈信息。
[0184]方式三:所述数据类型为镜像数据;
[0185]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中之后,还包括:
[0186]所述发送设备根据子窗口的地址和发送设备内存地址的对应关系,确定写入所述特定数据的所述子窗口对应的发送设备内存地址;
[0187]所述发送设备根据确定的发送设备内存地址,将所述特定数据写入到发送设备内存中。
[0188]如图5所不,本发明实施例五镜像数据子窗口同内存的映射不意图,从图5可知,发送设备镜像数据子窗口有12个项,白色空心项为空闲的项(未存入数据的项),黑色线条网格项为已存入数据的项。项301?项312分别对应于接收设备的内存地址310?内存地址312,白色空心内存地址为空闲的内存地址(未存入数据的内存地址),黑色线条网格内存地址为已存入数据的内存地址。项301?项312分别对应于发送设备的内存地址310?内存地址312,白色空心内存地址为空闲的内存地址(未存入数据的内存地址),黑色线条网格内存地址为已存入数据的内存地址。图5只是用于举例,实际的镜像数据子窗口的项的个数根据实际的镜像数据子窗口大小进行确定,根据镜像数据子窗口大小,可以镜像数据子窗口分为100个项,根据镜像数据子窗口大小,也可以镜像数据子窗口分为500个项。
[0189]例如:在图5中,发送设备将镜像数据写入到项301、项303、项304、项307和项309中后,接收设备将写入的该镜像数据存储到内存地址301、内存地址303、内存地址304、内存地址307和内存地址309中,接收设备在将该镜像数据存储完成后,发送设备将该镜像数据存储到内存地址301、内存地址303、内存地址304、内存地址307和内存地址309中,以使发送设备内存中的镜像数据同接收设备内存中的镜像数据保持一致。
[0190]方式四:所述数据类型为用户块数据;
[0191]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0192]所述发送设备确定需要存储所述特定数据的块设备对应的虚拟块设备接口,并将所述特定数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;
[0193]所述发送设备通过确定的所述虚拟块设备接口,将封装后的所述特定数据写入到窗口中对应的所述子窗口中;
[0194]所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:
[0195]所述发送设备将确定的所述子窗口中的封装后的所述特定数据发送给所述接收设备,以使所述接收设备将所述特定数据发送给包头中的虚拟块设备标识和/或块设备标识对应的块设备。
[0196]本发明实施例发送设备将封装后的用户块数据发送给接收设备后,或接收到接收设备反馈的反馈数据,在确定需要向上层应用上报后,将接收到的反馈数据上报,具体的实现方式为:
[0197]所述发送设备在接收到所述接收设备的封装后的反馈数据和接收设备内存地址后,根据子窗口的地址和接收设备内存地址的对应关系,确定所述反馈数据在接收设备中的接收设备内存地址对应的子窗口的地址,其中封装后的所述反馈数据的包头中包括虚拟块设备标识和/或块设备标识;
[0198]所述发送设备将所述反馈数据存储到确定的所述子窗口的地址中,并在确定需要向上层应用上报后,将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0199]本发明实施例由于用户块数据的数据量较大,可以一队列的形式进行存储与发送,具体的实现方式为:
[0200]较佳地,所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0201]所述发送设备以队列形式将所述特定数据写入到窗口中对应的所述子窗口中;
[0202]所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:
[0203]所述发送设备将确定的所述子窗口中的多个队列数据并行发送给所述接收设备。
[0204]如图6所示,本发明实施例六用户块数据子窗口同内存的映射示意图,从图6可知,发送设备的用户块数据子窗口与虚拟块设备接口相连,用户块数据子窗口中有数据队列1、数据队列3、数据队列3和数据队列4 ;发送设备具有块设备1、块设备2…块设备n(n为大于2的正整数),内存中有数据队列5、数据队列6、数据队列7和数据队列8。接收设备的用户块数据子窗口与虚拟块设备接口相连,用户块数据子窗口中有数据队列5、数据队列6、数据队列7和数据队列8 ;接收设备具有块设备1、块设备2…块设备n(n为大于2的正整数),内存中有数据队列1、数据队列2、数据队列3和数据队列4。发送设备的用户块数据子窗口中的数据队列I对应于接收设备内存中的数据队列1,发送设备的用户块数据子窗口中的数据队列2对应于接收设备内存中的数据队列2,发送设备的用户块数据子窗口中的数据队列3对应于接收设备内存中的数据队列3,发送设备的用户块数据子窗口中的数据队列4对应于接收设备内存中的数据队列4 ;接收设备的用户块数据子窗口中的数据队列5对应于发送设备内存中的数据队列5,接收设备的用户块数据子窗口中的数据队列6对应于发送设备内存中的数据队列6,接收设备的用户块数据子窗口中的数据队列7对应于发送设备内存中的数据队列7,接收设备的用户块数据子窗口中的数据队列8对应于发送设备内存中的数据队列8。图6只是用于举例,实际的用户块数据子窗口中的数据队列的个数根据实际的用户块数据子窗口大小进行确定,根据用户块数据子窗口大小,可以用户块数据子窗口分为50个数据队列,根据用户块数据子窗口大小,也可以用户块数据子窗口分为170个数据队列。
[0205]例如:在图6中,发送设备将用户块数据写入到用户块数据子窗口的数据队列I?数据队列4中后,接收设备将写入的该用户块数据存储到内存中的数据队列I?数据队列4中,接收设备在将该用户块数据存储完成后,将该用户块数据发送给对应的块设备。块设备向接收设备发送反馈数据,接收设备在接收到来自块设备的反馈数据后将该反馈数据进行封装后存储到用户块数据窗口中的数据队列5?数据队列8中后,发送设备将该封装后的反馈数据存储到内存中的数据队列5?数据队列8中,并在确定需要向上层应用上报后,将该反馈数据通过包头中的虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0206]方式五:所述数据类型为网卡传输数据;
[0207]所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括:
[0208]所述发送设备将所述特定数据经过协议栈进行封装,并通过虚拟网卡将经过协议桟封装后的所述特定数据进行MAC (Medium Access Control,媒体接入控制)封装;
[0209]所述发送设备将MAC封装后的所述特定数据写入到窗口中对应的所述子窗口中;
[0210]所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:
[0211]所述发送设备将确定的所述子窗口中的MAC封装后的所述特定数据通过流式方式发送给接收设备。
[0212]本发明实施例通过为发送设备和接收设备增加一个虚拟网卡,发送设备能将需要通过网卡传输的数据进行协议栈封装和MAC封装后,将封装后的数据写入到需要通过网卡传输的数据的数据子窗口中,以流式方式发送给接收设备。整个数据传输过程是通过虚拟网卡而不是网卡芯片实现数据传输的,因而降低了系统的硬件成本。
[0213]如图7所示,本发明实施例七需要通过网卡传输的数据的数据子窗口同内存的映射示意图,从图7可知,发送设备的数据子窗口被分成若干项,其中,白色空心方块为空闲项(可以存储数据),黑色线条网格方块为占用项(已存储数据),数据子窗口的第一个项用于存储WP和RP的值,WP的值表示数据子窗口当前写入数据的位置,RP的值表示接收设备当前读数据的位置。从图10上可知,接收设备的内存某一区域对应于发送设备的数据子窗口,该内存区域也分成若干项,其中,白色空心方块为空闲项(可以存储数据),黑色线条网格方块为占用项(已存储数据),该内存区域的第一个项用于存储WP和RP的值,WP的值表示数据子窗口当前写入数据的位置,RP的值表示接收设备当前读数据的位置。发送设备在需要发送数据时,将数据通过TCP/IP协议栈进行封包操作后,将封装后的数据写入到数据子窗口中的WP指向的下一个空闲项,并更新数据子窗口中的WP的值,并将更新后的WP值发送给接收设备,以使接收设备更新WP的值,在数据写入完成后发送中断通知接收设备;接收设备在接收到中断后,确定有数据写入完成,根据接收设备该内存区域中的RP和更新后的WP,确定写入完成的数据的存储地址,从确定的存储地址中读取该数据,然后对数据进行解包操作,确定数据的数据类型,然后将解包后的数据发送给相应的上层应用。
[0214]本发明实施例发送设备可以通过高速总线通道同接收设备进行数据交互,具体的实现方式为:
[0215]较佳地,所述发送设备将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:
[0216]所述发送设备通过高速总线通道将确定的接收设备内存地址发送给接收设备,并通过高速总线通道将确定的所述子窗口中的所述特定数据发送给所述接收设备。
[0217]本发明实施例高速总线通道可以是PC1-E高速总线通道,PC1-E高速总线通道包括但不限于下述通道:NTB (Non Transparent Bridge,非透明桥)、TB (TransparentBridge,透明桥)等。
[0218]如图8所示,本发明实施例八基于NTB的子窗口模块框图,从图8可知,发送设备或接收设备包括:统计数据子窗口、镜像数据子窗口、需要通过网卡传输的数据的数据子窗口、命令数据子窗口和用户块数据子窗口,5个子窗口都与NTB相连。
[0219]如图9所示,本发明实施例九数据传输的方法包括:
[0220]步骤900、接收设备接收到来自发送设备的接收设备内存地址和特定数据,其中所述接收设备内存地址是所述发送设备根据存储所述特定数据的窗口中的子窗口确定的;
[0221]步骤901、所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中。
[0222]本发明实施例接收设备会接收到不同类型的数据,包括但不限于下述数据:统计数据、命令数据、镜像数据、用户块数据和网卡传输数据。接收设备将接收到的不同类型的数据存储到确定的接收设备内存地址中之后,对于某些数据需要进行特别的处理过程:
[0223]若所述特定数据为命令数据,则所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:
[0224]所述接收设备在确定命令项对应的数据状态标志为数据准备后,将所述特定数据和命令码发送给所述目标模块信息对应的目标模块;
[0225]所述接收设备在接收到所述目标模块反馈的反馈信息后,将所述反馈信息和存储地址发送给所述发送设备,以使所述发送设备根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中。
[0226]例如:在图4中,接收设备将发送设备写入到命令项22中的命令数据存储到内存地址212中,并根据该命令数据包头中的目标模块信息,将该命令数据发送给目标模块信息对应的目标模块,目标模块根据命令数据进行处理后将反馈信息发送给发送设备,发送设备将反馈信息和存储地址发送给发送设备,以使发送设备根据反馈信息和存储地址进行相应的存储操作后,在确定需要向上层应用上报后,将反馈信息上报给上层应用、删除命令项中的命令数据和反馈区域中的反馈信息。
[0227]若所述特定数据为用户块数据,则所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:
[0228]所述接收设备在确定需要发送所述特定数据时,将所述特定数据发送给所述特定数据的包头中的虚拟块设备标识和/或块设备标识对应的块设备;
[0229]所述接收设备在接收到所述块设备反馈的反馈数据和接收设备内存地址后,将所述反馈数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;
[0230]所述接收设备将封装后的所述反馈数据和接收设备内存地址发送给所述发送设备,以使所述发送设备将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0231]例如:在图6中,接收设备将发送设备写入到用户块数据子窗口中的数据队列I?数据队列4中的用户块数据存储到内存中的数据队列I?数据队列4中,接收设备在将该用户块数据存储完成后,将该用户块数据发送给对应的块设备。块设备向接收设备发送反馈数据,接收设备在接收到来自块设备的反馈数据后,将该反馈数据进行封装后存储到用户块数据窗口中的数据队列5?数据队列8中反馈给发送设备,以使发送设备将该封装后的反馈数据进行存储操作,并在确定需要向上层应用上报后,将该反馈数据上报给上层应用。
[0232]若所述特定数据为网卡传输数据,则所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:
[0233]所述接收设备将MAC封装后的所述特定数据进行解包操作,将解包后的所述特定数据发送给所述特定数据对应的上层应用。
[0234]基于同一发明构思,本发明实施例中还提供了一种数据传输的发送设备和一种数据传输的接收设备,由于图10的数据传输的发送设备对应的方法为本发明实施例一种数据传输的方法,由于图11的数据传输的接收设备对应的方法为本发明实施例一种数据传输的方法,因此本发明实施例设备的实施可以参见系统的实施,重复之处不再赘述。
[0235]如图10所示,本发明实施例十数据传输的发送设备包括:
[0236]第一确定模块1000,用于根据需要发送的未经协议栈封装的特定数据的数据类型,确定所述特定数据在窗口中对应的子窗口 ;
[0237]写入模块1001,用于将所述特定数据写入到窗口中对应的所述子窗口中;
[0238]第二确定模块1002,用于根据子窗口的地址和接收设备内存地址的对应关系,确定所述特定数据在窗口中对应的所述子窗口的地址对应的接收设备内存地址;
[0239]发送模块1003,用于将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备。
[0240]较佳地,所述数据类型为统计数据;
[0241]所述写入模块1001具体用于:
[0242]根据统计数据类型和子窗口区域的对应关系,确定所述特定数据的统计数据类型对应的子窗口区域;根据确定的子窗口区域,将所述特定数据写入到窗口中对应的所述子窗口中。
[0243]较佳地,所述数据类型为命令数据;
[0244]所述写入模块1001具体用于:
[0245]确定所述子窗口中空闲的命令项,并将所述特定数据写入到所述子窗口中空闲的命令项中。
[0246]较佳地,所述写入模块1001还用于:
[0247]将所述特定数据进行封包操作,将命令码和目标模块信息加入到包头中;
[0248]所述第二确定模块1002还用于:
[0249]将存储所述特定数据的命令项对应的数据状态标志设置为数据准备;
[0250]所述发送模块1003还用于:
[0251]将所述命令项对应的数据状态标志和封装后的所述特定数据一起发送给所述接收设备,以使所述接收设备在确定所述数据状态标志为数据准备后,将特定数据和命令码发送给所述目标模块信息对应的目标模块。
[0252]较佳地,所述发送模块1003还用于:
[0253]在接收到所述接收设备的反馈信息和存储地址后,根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中;在存储的所述反馈信息为完成信息后,将存储所述反馈信息的反馈区域对应的命令项的数据状态标志设置为数据完成;在确定需要向上层应用上报后,将数据完成的数据状态标志的命令项对应的反馈区域中存储的反馈信息上报给上层应用后,删除所述命令项和所述命令项对应的反馈区域中的数据,将所述命令项作为空闲的命令项。
[0254]较佳地,所述数据类型为镜像数据;
[0255]所述写入模块1001还用于:
[0256]根据子窗口的地址和发送设备内存地址的对应关系,确定写入所述特定数据的所述子窗口对应的发送设备内存地址;根据确定的发送设备内存地址,将所述特定数据写入到发送设备内存中。
[0257]较佳地,所述数据类型为用户块数据;
[0258]所述写入模块1001具体用于:
[0259]确定需要存储所述特定数据的块设备对应的虚拟块设备接口,并将所述特定数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;通过确定的所述虚拟块设备接口,将封装后的所述特定数据写入到窗口中对应的所述子窗口中;
[0260]所述发送模块1003具体用于:
[0261]将确定的所述子窗口中的封装后的所述特定数据发送给所述接收设备,以使所述接收设备将所述特定数据发送给包头中的虚拟块设备标识和/或块设备标识对应的块设备。
[0262]较佳地,所述发送模块1003还用于:
[0263]在接收到所述接收设备的封装后的反馈数据和接收设备内存地址后,根据子窗口的地址和接收设备内存地址的对应关系,确定所述反馈数据在接收设备中的接收设备内存地址对应的子窗口的地址,其中封装后的所述反馈数据的包头中包括虚拟块设备标识和/或块设备标识;将所述反馈数据存储到确定的所述子窗口的地址中,并在确定需要向上层应用上报后,将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0264]较佳地,所述写入模块1001具体用于:
[0265]以队列形式将所述特定数据写入到窗口中对应的所述子窗口中;
[0266]所述发送模块1003具体用于:
[0267]将确定的所述子窗口中的多个队列数据并行发送给所述接收设备。
[0268]较佳地,所述数据类型为网卡传输数据;
[0269]所述写入模块1001具体用于:
[0270]将所述特定数据经过协议栈进行封装,并通过虚拟网卡将经过协议栈封装后的所述特定数据进行MAC封装;将MAC封装后的所述特定数据写入到窗口中对应的所述子窗口中;
[0271]所述发送模块1003具体用于:
[0272]将确定的所述子窗口中的MAC封装后的所述特定数据通过流式方式发送给接收设备。
[0273]较佳地,所述发送模块1003具体用于:
[0274]通过高速总线通道将确定的接收设备内存地址发送给接收设备,并通过高速总线通道将确定的所述子窗口中的所述特定数据发送给所述接收设备。
[0275]如图11所示,本发明实施例^^一数据传输的接收设备包括:
[0276]接收模块1100,用于接收到来自发送设备的接收设备内存地址和特定数据,其中所述接收设备内存地址是所述发送设备根据存储所述特定数据的窗口中的子窗口确定的;
[0277]存储模块1101,用于将所述特定数据存储到所述确定的接收设备内存地址中。
[0278]较佳地,所述特定数据为下列数据中的一种:
[0279]统计数据、命令数据、镜像数据、用户块数据和网卡传输数据。
[0280]较佳地,所述特定数据为命令数据;
[0281]所述存储模块1101还用于:
[0282]在确定命令项对应的数据状态标志为数据准备后,将所述特定数据和命令码发送给所述目标模块信息对应的目标模块;在接收到所述目标模块反馈的反馈信息后,将所述反馈信息和存储地址发送给所述发送设备,以使所述发送设备根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中。
[0283]较佳地,所述特定数据为用户块数据;
[0284]所述存储模块1101还用于:
[0285]在确定需要发送所述特定数据时,将所述特定数据发送给所述特定数据的包头中的虚拟块设备标识和/或块设备标识对应的块设备;在接收到所述块设备反馈的反馈数据和接收设备内存地址后,将所述反馈数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;将封装后的所述反馈数据和接收设备内存地址发送给所述发送设备,以使所述发送设备将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。
[0286]较佳地,所述特定数据为网卡传输数据;
[0287]所述存储模块1101还用于:
[0288]将MAC封装后的所述特定数据进行解包操作,将解包后的所述特定数据发送给所述特定数据对应的上层应用。
[0289]综上所述,本发明实施例发送设备将不同类型的未经协议栈封装的特定数据写入到不同的子窗口中后,将接收设备内存地址和特定数据发送给接收设备,由于在整个数据发送过程中不需要对特定数据进行协议栈封装,且发送端能将不同类型的数据写入到不同的子窗口中,因而提高了带宽利用率,且提高了数据发送效率。
[0290]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0291]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0292]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0293]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0294]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0295]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种数据传输的方法,其特征在于,该方法包括: 发送设备根据需要发送的未经协议栈封装的特定数据的数据类型,确定所述特定数据在窗口中对应的子窗口; 所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中; 所述发送设备根据子窗口的地址和接收设备内存地址的对应关系,确定所述特定数据在窗口中对应的所述子窗口的地址对应的接收设备内存地址; 所述发送设备将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备。2.如权利要求1所述的方法,其特征在于,所述数据类型为统计数据; 所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括: 所述发送设备根据统计数据类型和子窗口区域的对应关系,确定所述特定数据的统计数据类型对应的子窗口区域; 所述发送设备根据确定的子窗口区域,将所述特定数据写入到窗口中对应的所述子窗口中。3.如权利要求1所述的方法,其特征在于,所述数据类型为命令数据; 所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括: 所述发送设备确定所述子窗口中空闲的命令项,并将所述特定数据写入到所述子窗口中空闲的命令项中。4.如权利要求3所述的方法,其特征在于,所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中之前,还包括: 所述发送设备将所述特定数据进行封包操作,将命令码和目标模块信息加入到包头中;所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中之后,还包括:所述发送设备将存储所述特定数据的命令项对应的数据状态标志设置为数据准备;所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,还包括:所述发送设备将所述命令项对应的数据状态标志和封装后的所述特定数据一起发送给所述接收设备,以使所述接收设备在确定所述数据状态标志为数据准备后,将特定数据和命令码发送给所述目标模块信息对应的目标模块。5.如权利要求4所述的方法,其特征在于,所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备之后,还包括: 所述发送设备在接收到所述接收设备的反馈信息和存储地址后,根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中; 所述发送设备在存储的所述反馈信息为完成信息后,将存储所述反馈信息的反馈区域对应的命令项的数据状态标志设置为数据完成; 所述发送设备在确定需要向上层应用上报后,将数据完成的数据状态标志的命令项对应的反馈区域中存储的反馈信息上报给上层应用后,删除所述命令项和所述命令项对应的反馈区域中的数据,将所述命令项作为空闲的命令项。6.如权利要求1所述的方法,其特征在于,所述数据类型为镜像数据; 所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中之后,还包括: 所述发送设备根据子窗口的地址和发送设备内存地址的对应关系,确定写入所述特定数据的所述子窗口对应的发送设备内存地址; 所述发送设备根据确定的发送设备内存地址,将所述特定数据写入到发送设备内存中。7.如权利要求1所述的方法,其特征在于,所述数据类型为用户块数据; 所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括: 所述发送设备确定需要存储所述特定数据的块设备对应的虚拟块设备接口,并将所述特定数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中; 所述发送设备通过确定的所述虚拟块设备接口,将封装后的所述特定数据写入到窗口中对应的所述子窗口中; 所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:所述发送设备将确定的所述子窗口中的封装后的所述特定数据发送给所述接收设备,以使所述接收设备将所述特定数据发送给包头中的虚拟块设备标识和/或块设备标识对应的块设备。8.如权利要求7所述的方法,其特征在于,所述发送设备将确定的所述子窗口中的封装后的所述特定数据发送给所述接收设备之后,还包括: 所述发送设备在接收到所述接收设备的封装后的反馈数据和接收设备内存地址后,根据子窗口的地址和接收设备内存地址的对应关系,确定所述反馈数据在接收设备中的接收设备内存地址对应的子窗口的地址,其中封装后的所述反馈数据的包头中包括虚拟块设备标识和/或块设备标识; 所述发送设备将所述反馈数据存储到确定的所述子窗口的地址中,并在确定需要向上层应用上报后,将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。9.如权利要求7所述的方法,其特征在于,所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括: 所述发送设备以队列形式将所述特定数据写入到窗口中对应的所述子窗口中; 所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括: 所述发送设备将确定的所述子窗口中的多个队列数据并行发送给所述接收设备。10.如权利要求1所述的方法,其特征在于,所述数据类型为网卡传输数据; 所述发送设备将所述特定数据写入到窗口中对应的所述子窗口中,包括: 所述发送设备将所述特定数据经过协议栈进行封装,并通过虚拟网卡将经过协议栈封装后的所述特定数据进行媒体接入控制MAC封装; 所述发送设备将MAC封装后的所述特定数据写入到窗口中对应的所述子窗口中; 所述发送设备将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括:所述发送设备将确定的所述子窗口中的MAC封装后的所述特定数据通过流式方式发送给接收设备。11.如权利要求1?10任一所述的方法,其特征在于,所述发送设备将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备,包括: 所述发送设备通过高速总线通道将确定的接收设备内存地址发送给接收设备,并通过高速总线通道将确定的所述子窗口中的所述特定数据发送给所述接收设备。12.—种数据传输的方法,其特征在于,该方法包括: 接收设备接收到来自发送设备的接收设备内存地址和特定数据,其中所述接收设备内存地址是所述发送设备根据存储所述特定数据的窗口中的子窗口确定的; 所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中。13.如权利要求12所述的方法,其特征在于,所述特定数据为下列数据中的一种: 统计数据、命令数据、镜像数据、用户块数据和网卡传输数据。14.如权利要求13所述的方法,其特征在于,所述特定数据为命令数据; 所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:所述接收设备在确定命令项对应的数据状态标志为数据准备后,将所述特定数据和命令码发送给所述目标模块信息对应的目标模块; 所述接收设备在接收到所述目标模块反馈的反馈信息后,将所述反馈信息和存储地址发送给所述发送设备,以使所述发送设备根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中。15.如权利要求13所述的方法,其特征在于,所述特定数据为用户块数据; 所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:所述接收设备在确定需要发送所述特定数据时,将所述特定数据发送给所述特定数据的包头中的虚拟块设备标识和/或块设备标识对应的块设备; 所述接收设备在接收到所述块设备反馈的反馈数据和接收设备内存地址后,将所述反馈数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中; 所述接收设备将封装后的所述反馈数据和接收设备内存地址发送给所述发送设备,以使所述发送设备将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。16.如权利要求13所述的方法,其特征在于,所述特定数据为网卡传输数据; 所述接收设备将所述特定数据存储到所述确定的接收设备内存地址中之后,还包括:所述接收设备将MAC封装后的所述特定数据进行解包操作,将解包后的所述特定数据发送给所述特定数据对应的上层应用。17.一种数据传输的发送设备,其特征在于,该发送设备包括: 第一确定模块,用于根据需要发送的未经协议栈封装的特定数据的数据类型,确定所述特定数据在窗口中对应的子窗口 ; 写入模块,用于将所述特定数据写入到窗口中对应的所述子窗口中; 第二确定模块,用于根据子窗口的地址和接收设备内存地址的对应关系,确定所述特定数据在窗口中对应的所述子窗口的地址对应的接收设备内存地址; 发送模块,用于将确定的接收设备内存地址发送给接收设备,并将确定的所述子窗口中的所述特定数据发送给所述接收设备。18.如权利要求17所述的发送设备,其特征在于,所述数据类型为统计数据; 所述写入模块具体用于: 根据统计数据类型和子窗口区域的对应关系,确定所述特定数据的统计数据类型对应的子窗口区域;根据确定的子窗口区域,将所述特定数据写入到窗口中对应的所述子窗口中。19.如权利要求17所述的发送设备,其特征在于,所述数据类型为命令数据; 所述写入模块具体用于: 确定所述子窗口中空闲的命令项,并将所述特定数据写入到所述子窗口中空闲的命令项中。20.如权利要求19所述的发送设备,其特征在于,所述写入模块还用于: 将所述特定数据进行封包操作,将命令码和目标模块信息加入到包头中; 所述第二确定模块还用于: 将存储所述特定数据的命令项对应的数据状态标志设置为数据准备; 所述发送模块还用于: 将所述命令项对应的数据状态标志和封装后的所述特定数据一起发送给所述接收设备,以使所述接收设备在确定所述数据状态标志为数据准备后,将特定数据和命令码发送给所述目标模块信息对应的目标模块。21.如权利要求20所述的发送设备,其特征在于,所述发送模块还用于: 在接收到所述接收设备的反馈信息和存储地址后,根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中;在存储的所述反馈信息为完成信息后,将存储所述反馈信息的反馈区域对应的命令项的数据状态标志设置为数据完成;在确定需要向上层应用上报后,将数据完成的数据状态标志的命令项对应的反馈区域中存储的反馈信息上报给上层应用后,删除所述命令项和所述命令项对应的反馈区域中的数据,将所述命令项作为空闲的命令项。22.如权利要求17所述的发送设备,其特征在于,所述数据类型为镜像数据; 所述写入模块还用于: 根据子窗口的地址和发送设备内存地址的对应关系,确定写入所述特定数据的所述子窗口对应的发送设备内存地址;根据确定的发送设备内存地址,将所述特定数据写入到发送设备内存中。23.如权利要求17所述的发送设备,其特征在于,所述数据类型为用户块数据; 所述写入模块具体用于: 确定需要存储所述特定数据的块设备对应的虚拟块设备接口,并将所述特定数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;通过确定的所述虚拟块设备接口,将封装后的所述特定数据写入到窗口中对应的所述子窗口中; 所述发送模块具体用于: 将确定的所述子窗口中的封装后的所述特定数据发送给所述接收设备,以使所述接收设备将所述特定数据发送给包头中的虚拟块设备标识和/或块设备标识对应的块设备。24.如权利要求23所述的发送设备,其特征在于,所述发送模块还用于: 在接收到所述接收设备的封装后的反馈数据和接收设备内存地址后,根据子窗口的地址和接收设备内存地址的对应关系,确定所述反馈数据在接收设备中的接收设备内存地址对应的子窗口的地址,其中封装后的所述反馈数据的包头中包括虚拟块设备标识和/或块设备标识;将所述反馈数据存储到确定的所述子窗口的地址中,并在确定需要向上层应用上报后,将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。25.如权利要求23所述的发送设备,其特征在于,所述写入模块具体用于: 以队列形式将所述特定数据写入到窗口中对应的所述子窗口中; 所述发送模块具体用于: 将确定的所述子窗口中的多个队列数据并行发送给所述接收设备。26.如权利要求17所述的发送设备,其特征在于,所述数据类型为网卡传输数据; 所述写入模块具体用于: 将所述特定数据经过协议栈进行封装,并通过虚拟网卡将经过协议栈封装后的所述特定数据进行媒体接入控制MAC封装;将MAC封装后的所述特定数据写入到窗口中对应的所述子窗口中; 所述发送模块具体用于: 将确定的所述子窗口中的MAC封装后的所述特定数据通过流式方式发送给接收设备。27.如权利要求17?26任一所述的发送设备,其特征在于,所述发送模块具体用于: 通过高速总线通道将确定的接收设备内存地址发送给接收设备,并通过高速总线通道将确定的所述子窗口中的所述特定数据发送给所述接收设备。28.一种数据传输的接收设备,其特征在于,该接收设备包括: 接收模块,用于接收到来自发送设备的接收设备内存地址和特定数据,其中所述接收设备内存地址是所述发送设备根据存储所述特定数据的窗口中的子窗口确定的; 存储模块,用于将所述特定数据存储到所述确定的接收设备内存地址中。29.如权利要求28所述的接收设备,其特征在于,所述特定数据为下列数据中的一种: 统计数据、命令数据、镜像数据、用户块数据和网卡传输数据。30.如权利要求29所述的接收设备,其特征在于,所述特定数据为命令数据; 所述存储模块还用于: 在确定命令项对应的数据状态标志为数据准备后,将所述特定数据和命令码发送给所述目标模块信息对应的目标模块;在接收到所述目标模块反馈的反馈信息后,将所述反馈信息和存储地址发送给所述发送设备,以使所述发送设备根据所述存储地址将所述反馈信息存储到命令项对应的反馈区域中。31.如权利要求29所述的接收设备,其特征在于,所述特定数据为用户块数据; 所述存储模块还用于: 在确定需要发送所述特定数据时,将所述特定数据发送给所述特定数据的包头中的虚拟块设备标识和/或块设备标识对应的块设备;在接收到所述块设备反馈的反馈数据和接收设备内存地址后,将所述反馈数据进行封包操作,将虚拟块设备标识和/或块设备标识加入到包头中;将封装后的所述反馈数据和接收设备内存地址发送给所述发送设备,以使所述发送设备将所述反馈数据通过所述虚拟块设备标识和/或块设备标识确定的虚拟块设备接口上报给上层应用。32.如权利要求29所述的接收设备,其特征在于,所述特定数据为网卡传输数据; 所述存储模块还用于: 将MAC封装后的所述特定数据进行解包操作,将解包后的所述特定数据发送给所述特定数据对应的上层应用。
【文档编号】G06F13/42GK105988948SQ201510078538
【公开日】2016年10月5日
【申请日】2015年2月13日
【发明人】杨国全, 王欢, 吴波, 范伟云, 肖文文, 张兴明
【申请人】浙江大华技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1