专利名称:本地存储协议接口和网络存储协议接口间的数据传输方法
技术领域:
本发明涉及信息处理技术领域,更具体地说,本发明涉及一种本地存 储协议接口和网络存储协议接口之间的数据传输方法。
背景技术:
本地存储数据以命令为请求单位,每一W令由命令^L和命令数据 两部分组成;网络存储数据以报文为请求单位,每一个报文由报文头部和 有效载荷两部分组成。本地存储数据的命令参数部分可以转换为网络存储 数据的报文头部部分,本地存储数据的命令数据部分可以转换为网络存储 数据的有效载荷部分,同时,网络存储数据的报文头部部分可以转换为本 地存储数据的命令参数部分,网络存储数据的有效载荷部分可以转换为本 *储数据的命令数据部分。在实现本地存储数据与网络存储数据相互转换传输中,由于本地存储 数据具有协议简单、要求处理延时短的特性,通常采用现场可编程门阵列 (FPGA)进行本地存储数据的处理。而对于网络存储数据而言,网络存储 协议复杂,允许较长的处理延时,通常采用在"式CPU上运行操作系统, 并且结合协议栈进行处理。现有的数据传输方法,本地存储数据和网络存储数据分别在不同位置 处理,处理结束时进行处理结杲的传输,两种数据的处理过程在处理时序 上是串行的,没有发挥两种数据在处理过程中的并行性。而且,通常现有 的本地存储数据与网络存储数据传输方法处理过程复杂,相应的处理延时较长,无法有效提升数据传输的整体性能。发明内容较长的缺陷,本发明提供了一种本地存储协议接口和网络存储协议接口间 的数据传输方法。根据本发明的一个方面,提供了一种本地存储协议接口从网络存储协议接口读取数据的方法,包括步骤IO)、协议转换模块接收网络存储协议接口发送的数据应^^艮文 分片;步骤20)、按照数据应^艮文分片的顺序,协议转换模块在从网络存 储协议接口接收所述数据应^艮文分片的同时,向本地存储协议接口发送 命令数据。其中,步骤10)进一步包括协议转换模块接收并解析所述数据应答 报文,解析其中第一分片的包头部分,并且解析所述网络存储数据应^^艮 文的头部。其中,步骤20)进一步包括步骤210)、协议转换模块按照所述包头部分解析得到的数据地址顺 序,在从网络存储协议接口接收所述数据应^H文的有效载荷的同时,向 本地存储协议接口发送第一分片转换的命令数据;步骤220)、协议转换模块接收完所述第一分片的有效载荷后,接收 并解析第二分片的包头部分,按照上述步骤执行,直到接收完所有分片, 并且报文的全部有效载荷传输到本地存储协议接口 。其中,步骤210)中,在网络存储协议接口和本地存储协议接口之间建立数据队列,存储分片数据;当解析每一分片的包头后,将所述分片在 网络存储数据有效载荷中的偏移地址存储在所述数据队列中,按照偏移地 址顺序,发送所述数据队列到本地存储协议接口 。其中,当网络存储数据净艮文对应的分片没有按照所述偏移地址顺序到 达,而是部分提前到达,则提前到达的分片在队列中等待,不发送到本地 存储协议接口。根据本发明的另一方面,提供了一种本地存储协议接口向网络存储协 议接口发送数据的方法,包括步骤IO)、协议转换模块接收本地存储协议接口发送的命令数据;步骤2 0)、协议转换模块在从本地存储协议接口接收命令数据的同时, 向网络存储协议接口发送数据请求报文分片。其中,步骤20)进一步包括步骤210)、协议转换模块生成请求报文第一分片的包头部分,并向 网络存储协议接口发送;步骤220 )、协议转换模块生成请求报文的头部,启动本地存储协议 接口,发送命令数据,协议转换模块在从本地存储协议接口接收所述命令 数据的同时,向网络存^H义接口发送命令数据转换的请求报文第一分片 的数据,其中,所述第一分片的数据包括包头部分和有效载荷;步骤230 )、协议转换模块发送完所述第一分片的数据后,按照上述 步骤,生成报文第二分片并发送,直到发送完所有分片,本地存储协议接 口的命令数据全部发送到网络存储协议接口 。其中,步骤220 )中,在本M储协议接口发送命令数据后,协议转 换模块可以开始向网络存储祐4义接口发送分片,向网络存储协议接口发送 分片数据的过程与从本地存储协议接口接收数据的过程并行执行。通过应用本发明的方法,实现了向网络芯片发送/接收分片数据的过程 与从本地存储协议接口接收/发送数据的过程的并行执行,发送/接收分片 拆分的零等待,由于无需等待本地存储全部数据的时间,数据传输性能得到提高。
图l是数据转换系统结构图; 图2为现有的读取数据流程图; 图3为现有的发送数据流程图;图4为以太网分片与网络存储数据报文内容对应关系拆分示意图;图5为根据本发明的实施例的读取数据流程图;图6为根据本发明的实施例的发送数据流程图;图7为根据本发明的实施例的读取数据部分优化流程图;图8为根据本发明的实施例的发送数据部分优化流程图。
具体实施方式
下面结合附图和具体实施方式
对本发明提出的 一种本地存储协议接口 和网络存储协议接口间的数据传输方法作进一步详细描述。图1示出实施本发明的一个实施例的一种数据转换系统结构,如图1 所示,所述系统主要包括本地存储协议接口 11、协议转换模块12、网络 存储协议接口 13。本地存储协+义接口 ll和网络存储协议接口 13通过协议 转换模块12连接,并且数据双向传输,系统外部的客户机与本地存储协议 接口连接,数据双向传输;网络存储协议接口与网^^口芯片连接,网络 接口芯片通过网络与网络存储服务器连接,其中,协议转换模块12是本地存储数据与网络存储数据转换系统的核心部分。本系统用于实现本地客户 机与网络中的服务器的信息交流,更主要用于本^户机向网络服务器读 取和发送数据。图2示出现有的读取数据流程,在读取数据的过程中,传输过程包括:201、 协议转换模块12从本地存储协议接口 11接收命令参数;202、 协议转换模块12向网络存储协议接口 13发送读取数据请求报文, 其中,报文中仅有报文头部,不含有效载荷;203、 协议转换模块12从网络存储协议接口 13接收读取数据应^艮文, 其中,报文包含报文头部和有效载荷;204、 协议转换模块12从网络存储协议接口 13接收报文完成后,协议 转换模块12向本地存储协i义接口 11发送命令数据;205、 协议存储模块12向本地存储协议接口 ll返回设备状态。 其中,上述步骤中,步骤203和步骤204用于数据的读取和转发,占用的时间远大于其余三个步骤占用的时间。图3示出现有的发送数据流程,在发送数据的过程中,传输过程包括:301、 协议转换模块12从本地存储协议接口 ll接收命令参数;302、 协议转换模块12从本地存储协议接口 ll接收命令数据;303、 协议转换模块12从本地存储协议接口 ll接收命令数据完成后, 协议转换模块12向网络存储协议接口 13发送写入数据请求报文,其中, 所述请求报文包含报文头部和有效载荷;304、 协议转换模块12从网络存储协议接口 13接收写入数据应^^艮文, 其中,报文仅有报文头部,不含有效载荷部分;305、 协议转换模块12向本地存储协议接口 ll返回设备状态。 上述步骤中,步骤302和步骤303用于数据的接收和转发,占用的时间远大于其余三个步骤占用的时间。在现有的数据转换系统中,采用协议栈处理通用网络数据包,并不区 分网络存储数据报文,统一采用逐层处理、逐层拷贝的方法。在上述数据 读取和数据发送过程中,所述步骤是顺序执行的。在现有的串行处理过程中,数据读取过程的步骤203和步骤204处理的总时间是所述两步骤处理 时间和,数据发送过程的步骤302和步骤303处理的总时间是所述两步骤 处理时间和。因为现有网络存储数据运行在因特网参考模型的第l层(物理层)、 第2层(^L据链路层)和第3层(IP层)之上,并且由于第1和第2层协 议(以太网协议)对能够传输的数据包最大长度进行了限制,所以,现有 数据转换系统使用串行处理,网络存储数据在第3层进行分片,才能在第 1和第2层协议上传输。图4示出以太网分片与网络存储数据报文内容对应关系拆分示意图。 以一个网络存储数据报文被拆分为4个分片为例,第一个分片包含网络存 储数据^1文的头部和部分净艮文有效载荷,第二个分片和其后的第三、第四 个分片包含报文余下的有效载荷。拆分后,各个分片添加包头后就形成了 4个IP层的分片,每个分片的包头部分包含该分片在整个报文中的偏移地 址,用来在接收方重组。由于现有数据转换系统采用通用的协议栈接收应^^艮文的重组处理信 息,使得在接收过程中必须等待全部分片接收完毕才能进行应^艮文的解 析。而且,由于现有数据转换系统采用通用的协议栈发送请求报文的拆分 处理,使得在发送过程中必须等待全部数据到达才能开始拆分并发送请求 报文。数据的处理过程在处理时序上是串行的,没有发挥两种数据在处理 过程中的并行性;而且现有的本地存储数据与网络存储数据传输方法往往处理过程复杂,相应的处理延时较长,无法有效提升转换系统整体性能。在根据本方法的一个实施例中,利用在存储网络上传输的网络数据包 相对单一的特性,针对存储网络上传输的网络存储数据报文的结构特点,把分片的网络存储数据才艮文看作多个连续的数据队列进行操作。在接收分片的过程中,如图5所示,在分片顺序到达的情况下,协i义 转换模块可以在接收到第一个分片的第一个单位数据的同时,开始向本地 存储协议接口传输数据,把上述现有的数据读取过程中的步骤203和步骤 204并行处理,也就是,协议转换模块在从网络存储协议接口接收数据应 ^m文的同时,向本地存储协议接口返回命令数据;从网^^口芯片读取 出全部的网络存储数据接收才艮文后,本地存储协i义接口也已经接收到全部 (或大部分)数据,实现了接收数据的零等待。此时,通过本实施例的并 行处理,数据读取流程中的步骤203和步骤204处理的总时间为两步骤处 理时间较长的那个步骤的时间。在发送分片的过程中,如图6所示,协议转换模块从本地存储协议接 口接收到第一个单位数据的同时,开始向网络存储协议接口传输数据,把 现有的数据发送过程中步骤302和步骤303并行处理,也就是协议转换模 块从本地存储协议接口接收命令数据的同时,向网络存储协议接口发送数 据请求报文,当本地存W^议接口传输完全部数据时,网络存储数据报文 的全部(或大部分)数据也已经传输到网络接口芯片中,实现了发送翁:据 的零等待。此时,通过本实施例的并行处理,数据写入流程中的步骤302 和步骤303处理的总时间为两步骤中处理时间较长的那个步骤的时间。在根据本发明的实施例中,由于现有数据读取过程中的步骤201、步 骤202和步骤205的处理方法并未做改变,所以以下仅详述步骤203和步 骤204的改进实现。如图7所示,以整个数据读取应^艮文被拆分为4个分片为例,分别 为分片1、分片2、分片3和分片4,在应用中,可以^L据所述才艮文长度大 小选用其他数量分片。数据读取过程阶段中,协议转换模块接收并解析分 片1的包头部分;协议转换模块接收并解析网络存储数据应^^艮文的头部; 协议转换模块接收应^艮文有效载荷,同时启动本地存储协议接口,在从 网络存储协议接口接收数据的过程中,向本地存储协议接口发送数据,也 就是分片1的一部分;协议转换模块接收完分片1包含的全部内容后,接 收并解析分片2的包头部分;协议转换模块接收应^m文的有效载荷部分, 再次启动本地存储协议接口;协议转换模块接收并解析分片3的包头部分; 协议转换模块接收应^m文的有效载荷部分,再次启动本地存储协议接口 ; 协议转换模块接收并解析分片4的包头部分;协议转换模块接收应^艮文 的有效载荷部分,再次启动本地存储协议接口;净艮文的全部有效载荷传输 到本地存储协议接口。需要说明的是,在网络上传输的分片可能不会顺序传输,到达网络存 储协议接口的数据顺序可能错乱,所以必须对分片调整顺序后,才能传输 给本地存储协议接口。为了解决这一问题,在根据本发明的实施例的方法 中,在网络存储协议接口和本地存储协议接口之间建立一个数据队列,当 接收并解析完分片的包头后,判断该分片包含的数据长度和数据在网络存 储数据有效载荷中的偏移地址。在接下来读取分片携带的数据内容的过程 中,该数据内容就被存储在队列的对应地址中。然后,该队列可以传递给 本地存储协;义接口。如果一次网络存储数据报文对应的所有分片在网络上顺序传输时,第 一个分片携带的数据ii7v队列后必然处于队列的头部,当数据队列的头部 已经有数据时,数据队列可以立即被本地存储协议接口读取;后续分片顺序到达,依次1数据队列緩存,依次被本地存储协议接口读取,在分片 顺序传输的情况下,网络存储协议接口通过数据队列传输数据到本地存储 协议接口的时间很短,可以忽略。在另外一种情况下, 一个网络存储数据 报文对应的所有分片不是顺序到达,而是部分分片提前或者延后到达。在 某一个分片没有到达的情况下,即使后续分片提前到达,也必须在队列中 等待,不能传输给本地存储协议接口,在这种情况下,会产生一定的等待, 传输性能根据分片乱序的情况会相应下降。在最恶劣的情况下,第一个分 片最后一个到达,就会造成全部数据在队列中等待,直到第一个分片到达 后才能开始向本地存储接口传输,这时,数据在队列中的等待时间与原系 统重组完所有分片的等待时间相等。但是由于在存储网络中,网络拓朴结构相对简单,网络长度相对短, 网络传输的环境是相对良好的。在这样的网络传输环境下,出现部分分片 乱序,甚至是全部分片逆序传输的情况很少。因此,根据本发明的实施例 的方法的接收分片重组的零等待特性就可以充分发挥,实现性能的提升。现有的数据发送过程中的步骤301、步骤304和步骤305的处理步骤 没有改变,以下仅对其余两个步骤的改进进行详述。以整个数据发送请求:报文被拆分为4个分片为例,如图8所示,协议 转换模块生成分片l的包头部分,并向网络存储协议接口发送;协议转换 模块生成请求报文的头部,并向网络存储协议接口发送;启动本地存储协 议接口,同时发送请求报文有效载荷,协议转换模块在从本地存储协议接 口接收命令数据的同时向网络存储协议接口发送命令数据,该命令数据是 分片1的一部分;协议转换模^iL送完分片1包含的全部内容后,生成分 片2的包头部分发送;启动本地存储协议接口,向协议转换模^JL送请求 报文的有效载荷部分;协议转换模块生成并向网络存储协议接口发送分片3的包头部分;启动本地存储协议接口,发送请求报文的有效栽荷部分; 协议转换模块生成并向网络存储协议接口发送分片4的包头部分;启动本 地存储协议接口,向协议转换模^iL送请求报文的有效载荷部分;分片2、 分片3和分片4的数据发送过程与分片1的数据发送过程相同,报文的全 部有效载荷传输到网络存储协议接口 。需要说明的是,由于本地存储数据传输路径简单,而且不存在分片问 题,从本地存储协议接口传输到网络存储协议接口的数据不存在数据乱序 问题,可以直接传输。在此过程中,向网,口芯片传送分片操作只需要等待本地存储协议 接口传输一部分数据后就可以开始,向网络芯片发送分片数据的过程与从 本地存储协议接口接收数据的过程并行执行,实现了发送分片拆分的零等 待,由于不存在等待本地存储数据全部数据的等待时间,本系统的发送数 据性能得到了提高。最后应说明的是,以上实施例仅用以说明本发明的技术方案而非对其 限制,并且在应用上可以延伸到其他的^f务改、变化、应用和实施例,同时 认为所有这样的修改、变化、应用、实施例都在本发明的精神和范围内。
权利要求
1、一种本地存储协议接口从网络存储协议接口读取数据的方法,包括步骤10)、协议转换模块接收网络存储协议接口发送的数据应答报文分片;步骤20)、按照数据应答报文分片的顺序,协议转换模块在从网络存储协议接口接收所述数据应答报文分片的同时,向本地存储协议接口发送命令数据。
2、 权利要求1的方法,其中,步骤10)进一步包括协议转换模块 接收并解析所述数据应叙艮文,解析其中第一分片的包头部分,并且解析 所述网络存储数据应答报文的头部。
3、 权利要求2的方法,其中,步骤20)进一步包括步骤210)、协议转换模块按照所述包头部分解析得到的数据地址顺 序,在从网络存储协议接口接收所述数据应叙艮文的有效载荷的同时,向 本地存储协议接口发送第 一分片转换的命令数据;步骤220)、协议转换模块接收完所述第一分片的有效载荷后,接收 并解析第二分片的包头部分,按照上述步骤执行,直到接收完所有分片, 并且报文的全部有效栽荷传输到本地存储协议接口 。
4、 权利要求3的方法,其中,步骤210)中,在网络存储协议接口和 本地存储协议接口之间建立数据队列,存储分片数据;当解析每一分片的据队列中,按照偏移地址顺序,发送所述数据队列到本地存储协议接口。
5、 权利要求4的方法,其中,当网络存储数据报文对应的分片没有按 照所述偏移地址顺序到达,而是部分提前到达,则提前到达的分片在队列中等待,不发送到本M储协议接口。
6、 一种本地存储协议接口向网络存储协议接口发送数据的方法,包括: 步骤IO)、协议转换模块接收本地存储协议接口发送的命令数据; 步骤2 0)、协议转换模块在从本地存储协议接口接收命令数据的同时,向网络存储协议接口发送数据请求报文分片。
7、 权利要求6的方法,其中,步骤20)进一步包括步骤210)、协议转换模块生成请求报文第一分片的包头部分,并向 网络存储协议接口发送;步骤220 )、协议转换模块生成请求报文的头部,启动本地存储协议 接口,发送命令数据,协议转换模块在从本地存储协议接口接收所述命令 数据的同时,向网络存储协议接口发送命令数据转换的请求报文第一分片 的数据,其中,所述第一分片的数据包括包头部分和有效载荷;步骤230 )、协议转换模块发送完所述第一分片的数据后,按照上述 步骤,生成报文第二分片并发送,直到发送完所有分片,本地存储协议接 口的命令数据4^P发送到网络存储协议接口 。
8、 权利要求7的方法,其中,步骤220 )中,在本地存储协议接口发 送命令数据后,协议转换模块可以开始向网络存储协议接口发送分片,向 网络存储协议接口发送分片数据的过程与从本地存储协议接口接收数据的 过程并行执行。
全文摘要
本发明公开了一种本地存储协议接口和网络存储协议接口间的数据传输方法,包括本地存储协议接口读取数据过程中,协议转换模块在从网络存储协议接口接收数据应答报文的同时,向本地存储协议接口返回命令数据;本地存储协议接口发送数据过程中,协议转换模块在从本地存储协议接口接收命令数据的同时,向网络存储协议接口发送数据请求报文。通过应用本发明的方法,实现了向网络芯片发送/接收分片数据的过程与从本地存储协议接口接收/发送数据的过程的并行执行,发送/接收分片拆分的零等待,由于无需等待本地存储全部数据的时间,数据传输性能得到提高。
文档编号H04L29/06GK101217551SQ20081005614
公开日2008年7月9日 申请日期2008年1月14日 优先权日2008年1月14日
发明者杨碧波, 爽 梁, 焦尚伟, 韩晓明, 马一力 申请人:中国科学院计算技术研究所