一种超远程数据交互系统及方法
技术领域
本申请涉及数据传输领域,特别的,涉及一种超远程数据交互系统及方法。
背景技术
现有技术中大多数远距离数据传输的通讯协议底层都是基于TCP/IP协议,换句话说就是绝大多数的上层应用协议的数据包都包裹在TCP/IP协议包中。而由于传输距离过大,采用TCP/IP协议进行数据传输的吞吐量和传输时间都受到限制,即传输效率有限。而InfiniBand架构是一种支持多并发链接的“转换线缆”技术,在这种技术中,每种链接都可以达到2.5Gbps的运行速度。这种架构在一个链接的时候速度是500MB/秒,四个链接的时候速度是2GB/秒,12个链接的时候速度可以达到6GB/秒,并且InfiniBand网络支持高吞吐量和超低延时的RDMA协议。但是IP数据包不能在直接利用RDMA协议,在InfiniBand网络上运行。因此,如何能够将数据传输过程彻底脱离以太网和TCP/IP,完全采用Infiniband高速网络和RDMA协议,保证超远距离数据传输的高带宽利用率和低延时,成为现有技术亟需解决的技术问题。
发明内容
本发明的目的在于提出一种超远程数据交互系统及方法,将数据传输过程彻底脱离以太网和TCP/IP,完全采用Infiniband高速网络和RDMA协议,保证超远距离数据传输的高带宽利用率和低延时。
为达此目的,本发明采用以下技术方案:
一种超远程数据发送装置,包括协议解析模块和发送模块,
所述协议解析模块,用于解析待发送的数据包,分析待发送数据包的类型,以及该数据包是一个独立的包还是分片包中的一个,并根据解析的结果,选择是否直接将数据包发送至发送模块,还是等待其它分片后打包发送至发送模块;
发送模块,用于和接收模块建立RDMA连接,接收所述协议解析模块传递过来的数据,并将该数据包封装成RDMA数据包发送至接收装置。
可选的,所述协议解析模块具体为分析待发送数据包是否是IP数据包,如果不是则直接发送至发送模块,如果是IP数据包,则分析该数据包是一个独立的包还是被分片包中的一个,如果是独立的包,则立即发送至发送模块,如果是一个分片的包,则先保存以等待其他分片,待接收到最后一个分片,则将所有分片组合在一起传递给发送模块。
可选的,所述协议解析模块能够分析IP数据包上层协议类型是TCP协议还是UDP协议,如果是TCP协议,则根据TCP协议包中的相关字段模拟一个ACK响应并进行发送。
本发明还公开了一种超远程数据接收装置,包括接收模块,和协议还原模块,
所述接收模块,用于接收从发送装置的发送模块发送过来的RDMA数据包,并将所述RDMA数据包传递至协议还原模块;
协议还原模块,用于接收从接收模块传递过来的RDMA数据包,对于包含IP数据包的解析并还原成单个IP数据包,并依次发送。
可选的,所述协议还原模块能够分析RDMA数据包,对于包含IP数据包的,根据IP数据包的协议表头,得知该数据包是独立IP数据包,还是多个IP数据包的组合,如果是独立IP数据包,则直接还原并发送该IP数据包,如果是多个IP数据包的组合,则将该组合拆分还原成多个IP数据包并按照IP协议的分片序号逐个发送,如果本次接收到的RDMA数据包中没有容纳下所有的IP分片,则先发送已有的IP分片,等接收到下一个RDMA数据包再拆分发送剩余的IP分片。
本发明进一步公开了一种超远程数据交互系统,在发送端具有上述的发送装置,在接收端具有上述的接收装置,所述发送装置和接收装置能够分别作为数据发送方和数据接收方。
本发明进一步公开了一种超远程数据交互装置,同时具有上述的发送装置中的协议解析模块和发送模块,和上述的接收装置中的协议还原模块和接收模块,所述发送模块和所述接收模块组成该交互装置的传输模块,所述数据交互装置能够在双工的模式下工作。
本发明还公开了一种超远程数据交互方法,包括如下步骤:
协议解析步骤,解析待发送的数据包,分析待发送数据包的类型,以及该数据包是一个独立的包还是分片包中的一个,并根据解析的结果,选择是否直接将数据包发送,还是等待其它分片后打包发送;
发送步骤,和接收方建立RDMA连接,将待发送的数据包封装成RDMA数据包并发送至接收方;
接收步骤,接收发送方所发送的RDMA数据包;
协议还原步骤,解析接收步骤所接收的RDMA数据包,对于包含IP数据包的解析并还原成单个IP数据包,并依次发送。
可选的,所述协议解析步骤分析待发送数据包是否是IP数据包,如果不是则直接将该数据包进行发送步骤,如果是IP数据包,则分析该数据包是一个独立的包还是被分片包中的一个,如果是独立的包,则立即将该数据包进行发送步骤,如果是一个分片的包,则先保存以等待其他分片,待接收到最后一个分片,则将所有分片组合在一起进行发送步骤。
所述协议还原步骤协议分析RDMA数据包,对于包含IP数据包的,根据IP数据包的协议表头,得知该数据包是独立IP数据包,还是多个IP数据包的组合,如果是独立IP数据包,则直接还原并发送该IP数据包,如果是多个IP数据包的组合,则将该组合拆分还原成多个IP数据包并按照IP协议的分片序号逐个发送,如果本次接收到的RDMA数据包中没有容纳下所有的IP分片,则先发送已有的IP分片,等接收到下一个RDMA数据包再拆分发送剩余的IP分片。
可选的,在协议解析步骤中,当所述数据包为IP数据包,还继续分析该IP数据包上层协议类型是TCP协议还是UDP协议,如果是TCP协议,则根据TCP协议包中相关字段模拟一个ACK响应并进行发送。
在协议还原步骤中,当发送出去的IP数据包为TCP数据包时,还接收该TCP数据包发送后回应的ACK包。
因此,本发明在协议解析时确定了是否为连续的数据包,并且对每个被分片的TCP包均进行了回应,保证了对应用的透明,在应用服务器,或者各个网络应用终端无感知的情况下,彻底脱离TCP/IP协议栈和以太网的束缚,将IP数据包封装进RDMA协议,然后通过高速Infiniband网络进行超远距离的传输,将网络传输效率最大化。
附图说明
图1是根据本发明具体实施例的超远程数据发送装置的示意图;
图2是根据本发明具体实施例的超远程数据接收装置的示意图;
图3是根据本发明具体实施例的超远程数据交互系统的示意图;
图4是以太网帧头的具体数据结构;
图5是IP协议包的具体数据结构;
图6是TCP协议包的具体数据结构;
图7是根据本发明具体实施例的超远程数据交互方法的流程步骤图。
图中的附图标记所分别指代的技术特征为:
1、发送装置;11、协议解析模块;12、发送模块;2、接收装置;21、接收模块;22、协议还原模块。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
如果要彻底摆脱TCP/IP协议的束缚,利用RDMA协议,首先就要将TCP/IP协议数据包裹进RDMA协议包。但是仅仅是简单的把每个TCP/IP协议包封装成RDMA协议包发送出去,依然不能提高传输效率。这是因为在以太网中,每个IP包的大小是有限制的,即最大传输单元(MTU)为1500字节,而RDMA协议的MTU可以达到4096字节。
因此,本发明首先对IP数据包进行解析,判断该IP数据包是否是连续传输的IP包,例如,是单个TCP包,还是连续传输的TCP包,或者UDP包,根据不同的情况将连续传输的IP数据包进行合并,并把合并后的大数据包承载在RDMA协议包中进行传输,并对TCP请求包进行ACK回复,以保证对应用的透明,从而既适用了RDMA协议,又最大限度的利用了RDMA的传输容量,以提高传输效率,从而实现超远程的数据交互传输。
实施例1:
参见图1,示出了根据本发明具体实施例的超远程数据发送装置的模块示意图,该发送装置1包括协议解析模块11和发送模块12,
所述协议解析模块11,用于解析待发送的数据包,分析待发送数据包的类型,以及该数据包是一个独立的包还是分片包中的一个,并根据解析的结果,选择是否直接将数据包发送至发送模块12,还是等待其它分片后打包发送至发送模块12;
具体而言,所述协议解析模块分析待发送数据包是否是IP数据包,如果不是则直接发送至发送模块12,如果是IP数据包,则分析该数据包是一个独立的包还是被分片包中的一个,如果是独立的包,则立即发送至发送模块12,如果是一个分片的包,则先保存在内存中以等待其他分片,待接收到最后一个分片,则将所有分片组合在一起传递给发送模块。如果所有分片的数据超过RDMA协议的最大传输单元,RDMA协议本身会做类似分片的处理,不需要我们处理。
发送模块12,用于和接收模块建立RDMA连接,交换各自能力,接收所述协议解析模块11传递过来的数据,并将该数据包封装成RDMA数据包发送至接收装置。应当说明的是,如果所述协议解析模块11传递过来的所有分片的数据超过RDMA协议的最大传输单元,RDMA协议本身还会对RDMA数据包进行类似分片的处理。
即发送端传输模块与接收端传输模块建立RDMA连接,将发送端协议解析模块传递来的IP数据包封装进RDMA协议,形成RDMA协议包,然后通过Infiniband高速网络进行超远距离的传输,发送至接收端。
协议解析模块11对收到的数据包进行分析,通过图4所述的以太网帧头结构,可以分析出是否是IP数据包。如果是IP数据包,则分析该包是一个独立的包还是被分片的包中的一个,这主要是依据图5所示的IP协议包中的MF标志,即在该IP协议包有一个“标志”字段占3位,但目前只有2位有意义,标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报;MF=0表示这已是若干数据报片中的最后一个。标志字段中间的一位记为DF(Don't Fragment),意思是“不能分片”,则为独立包,只有当DF=0时才允许分片。如果不是IP数据包,则直接传递至发送模块12。
进一步的,为了TCP包进行ACK响应,当所述数据包为IP数据包时,所述协议解析模块11分析该IP数据包上层协议类型是TCP协议还是UDP协议,如果是TCP协议,则根据TCP协议包中的端口字段、序号字段、窗口字段模拟一个ACK响应并进行发送。这主要根据如图5所示的IP协议包中的“协议”字段进行判断,协议号为6代表TCP协议,协议号为17代表UDP协议,如果上层协议为UDP协议则将该分片保存在内存中,等待其他分片;如果上层协议为TCP协议,则先根据如图6所示的TCP协议包中的端口字段、序号字段、窗口字段模拟一个ACK响应发送给应用,以便应用发送后续分片,并将该分片保存在内存中等待其他分片。
参见图2,示出了根据本发明具体实施例的超远程数据接收装置的示意图,所述接收装置包括接收模块21,和协议还原模块22,
所述接收模块21,用于接收从发送装置1的发送模块12发送过来的RDMA数据包,并将所述RDMA数据包传递至协议还原模块22;
协议还原模块22,用于接收从接收模块21传递过来的RDMA数据包,对于包含IP数据包的解析并还原成单个IP数据包,并依次发送。
具体的,由于RDMA数据包中封装有完整的IP数据包,包括各个IP数据包的表头,因此协议还原模块能够分析上述IP数据包的协议表头,从而得知该数据包是独立IP数据包,还是多个IP数据包的组合,如果是独立IP数据包,则直接还原并发送该IP数据包,如果是多个IP数据包的组合,则将该组合拆分还原成多个IP数据包并按照IP协议的分片序号逐个发送,如果本次接收到的RDMA数据包中没有容纳下所有的IP分片,则先发送已有的IP分片,等接收到下一个RDMA数据包再拆分发送剩余的IP分片。
进一步的,当协议还原模块22发送出去的IP数据包为TCP数据包时,所述协议还原模块22还接收该TCP数据包发送到应用服务器后回应的ACK包。
实施例2:
参见图3,本发明进一步公开了一种超远程数据交互系统,在发送端具有上述实施例中的发送装置1,在接收端具有上述实施例中的接收装置2,所述发送装置和接收装置能够分别作为数据发送方和数据接收方进行数据交互。
因此,数据交互系统能够在应用服务器无感知的情况下,彻底脱离TCP/IP协议栈和以太网的束缚,将IP数据包封装进RDMA协议,然后通过高速Infiniband网络进行超远距离的传输,将网络传输效率最大化。
实施例3:
参见图3,本发明还公开了一种超远程数据交互装置,同时具有上述实施例1中发送装置的协议解析模块和发送模块,还包括接收装置2中的协议还原模块和接收模块,所述发送模块和所述接收模块组成该交互装置的传输模块。
因此,所述数据交互装置能够在双工的模式下工作,即能够作为发送端使用其的协议解析模块和发送模块,也能够作为接收端使用其的协议还原模块和接收模块,实现双向通信。
实施例4:
本发明还公开了一种超远程数据交互方法,包括如下步骤:
协议解析步骤S310,解析待发送的数据包,分析待发送数据包的类型,以及该数据包是一个独立的包还是分片包中的一个,并根据解析的结果,选择是否直接将数据包发送,还是等待其它分片后打包发送;
发送步骤S320,和接收方建立RDMA连接,交换各自能力,将待发送的数据包封装成RDMA数据包并发送至接收方;
接收步骤S330,接收发送方所发送的RDMA数据包;
协议还原步骤S340,解析接收步骤所接收的RDMA数据包,对于包含IP数据包的解析并还原成单个IP数据包,并依次发送。
进一步的,所述协议解析步骤分析待发送数据包是否是IP数据包,如果不是则直接将该数据包进行发送步骤,如果是IP数据包,则分析该数据包是一个独立的包还是被分片包中的一个,如果是独立的包,则立即将该数据包进行发送步骤,如果是一个分片的包,则先保存在内存中以等待其他分片,待接收到最后一个分片,则将所有分片组合在一起进行发送步骤。
所述协议还原步骤协议分析RDMA数据包,对于包含IP数据包的,根据IP数据包的协议表头,得知该数据包是独立IP数据包,还是多个IP数据包的组合,如果是独立IP数据包,则直接还原并发送该IP数据包,如果是多个IP数据包的组合,则将该组合拆分还原成多个IP数据包并按照IP协议的分片序号逐个发送,如果本次接收到的RDMA数据包中没有容纳下所有的IP分片,则先发送已有的IP分片,等接收到下一个RDMA数据包再拆分发送剩余的IP分片。
更进一步的,在协议解析步骤中,当所述数据包为IP数据包时,还继续分析该IP数据包上层协议类型是TCP协议还是UDP协议,如果是TCP协议,则根据TCP协议包中的端口字段、序号字段、窗口字段模拟一个ACK响应并进行发送。
在协议还原步骤中,当发送出去的IP数据包为TCP数据包时,还接收该TCP数据包发送后回应的ACK包。
因此,本发明在协议解析时确定了是否为连续的数据包,并且对每个被分片的TCP包均进行了回应,保证了对应用的透明,在应用服务器,或者各个网络应用终端无感知的情况下,彻底脱离TCP/IP协议栈和以太网的束缚,将IP数据包封装进RDMA协议,然后通过高速Infiniband网络进行超远距离的传输,将网络传输效率最大化。
显然,本领域技术人员应该明白,上述的本发明的各单元或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定保护范围。