CN104102605A - 一种数据传输方法、装置和系统 - Google Patents
一种数据传输方法、装置和系统 Download PDFInfo
- Publication number
- CN104102605A CN104102605A CN201410293367.7A CN201410293367A CN104102605A CN 104102605 A CN104102605 A CN 104102605A CN 201410293367 A CN201410293367 A CN 201410293367A CN 104102605 A CN104102605 A CN 104102605A
- Authority
- CN
- China
- Prior art keywords
- packet
- point device
- destination point
- response message
- success response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种数据传输方法、装置和系统。本发明实施例采用由源端点设备接收服务器发送的携带待写的数据块的I/O请求,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量对该数据块的数据包进行编号,并根据该编号发送该数据块的数据包,接收目的端点设备返回的携带数据包编号的成功响应消息,在根据该成功响应消息中携带的编号确定该数据块的所有数据包均被目的端点设备成功接收时,才向CPU发送指示传送完成的指令。该方案可以实现一个数据块在PCIe网络中的端到端可靠性传输。而且可以提高系统的处理效率。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种数据传输方法、装置和系统。
背景技术
随着存储系统对外提供的功能的增加,系统中往往需要多个功能芯片来配合工作。在X86架构中,中央处理器(CPU,Central Processing Unit)可以通过多个外设部件互连标准扩展(PCIe,Peripheral Component InterconnectExpress)端口与功能芯片进行互连,而每个功能芯片在系统中都是一个PCIe的端点(endpoint)设备。随着CPU需要互联的端点设备数量的增多,CPU对外的端口数量也会出现不足的情况,此时就需要使用PCIe的交换(switch)设备来对有限的端口进行扩展,以使更多的端点设备能够与CPU相连。
在现有技术中,一般都是采用PCIe协议来对PCIe网络中的数据进行传输的,比如,如果需要在两个PCIe设备之间传输4KB的数据,而PCIe网络中的线程层并行(TLP,Thread-Level Parallelism)数据包一次只能传256B的数据,则需要连续传16个TLP数据包才能将该4KB的数据传送完,而根据PCIe协议的规定,当PCIe设备从上一跳的PCIe设备成功接收到一个TLP数据包时,将会向上一个PCIe设备返回一个表示数据成功到达的响应,从而保证数据传输的可靠性;而且,当PCIe设备如网卡(NIC,Network Interface Card)接收到数据包后,还需要将该数据包存放到存储设备中,并发送完成指令(command)给CPU,由CPU从该存储设备读取相应的数据进行比对确认之后,才能进行下一步操作。
在对现有技术的研究和实践过程中,本发明的发明人发现,虽然现有技术可以在一定程度上保证数据的可靠性,但它却只能保证两个PCIe设备之间基于数据包的可靠性,即只能保证点到点之间数据传输的可靠性,以及保证一个TLP数据包的可靠性,而对于端到端之间数据传输的可靠性、以及整一段有效数据块的可靠性并无法保证,也就是说,现有技术的数据传输的可靠性并不高,而且,还需要CPU参与确认数据传送是否有误,因此,大大影响了系统的处理效率,从而降低整个系统的性能。
发明内容
本发明实施例提供一种数据传输方法、装置和系统,可以实现一个有效数据块在PCIe网络中的端到端可靠性传输,以及提高系统处理效率,从而在整体上提高系统性能。
第一方面,本发明实施例提供一种数据传输方法,所述方法应用于PCIe系统中,该PCIe系统包括通过PCIe的交换设备进行通信的源端点设备和目的端点设备,所述方法包括:
所述源端点设备接收服务器发送的输入/输出请求,所述输入/输出请求携带待写的数据块;
所述源端点设备根据所述数据块的大小确定需要使用的数据包数量;
所述源端点设备根据所述数据包数量对所述数据块的数据包进行编号;
所述源端点设备向所述目的端点设备发送所述数据块的数据包,所述数据包携带数据包的编号;
所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号;
当所述源端点设备根据所述成功响应消息中的数据包的编号确定所述数据块的所有数据包均已被目的端点设备成功接收时,所述源端点设备向CPU发送指示传送完成的指令。
第一种可能的实施方式中,结合第一方面,所述源端点设备向所述目的端点设备发送所述数据块的数据包时,还包括:
所述源端点设备为每一个数据包的传送时间进行计时;
若在预置时间内,所述源端点设备尚未接收到相应的成功响应消息,则确定相应的数据包为超时数据包,所述源端点设备对所述超时数据包进行重传。
第二种可能的实施方式中,结合第一方面或第一方面的第一种可能的实施方式,所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号,包括:
所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息由所述目的端点设备每成功接收到一个数据包时向源端点设备返回一次,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号。
第三种可能的实施方式中,结合第一方面或第一方面的第一种可能的实施方式,所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号,包括:
所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息由目的端点设备每成功接收到N个数据包时向源端点设备返回一次,所述成功响应消息中携带有所述目的端点设备已经成功接收的所述N个数据包的编号或所述N个数据包中最后一个数据包的编号,所述N为大于1的正整数。
第四种可能的实施方式中,结合第一方面或第一方面的第一种可能的实施方式,所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号,包括:
所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息由所述目的端口节点每隔一个预置周期向源端点设备返回一次,所述成功响应消息中携带有所述目的端点设备在所述预置周期内已经成功接收的M个数据包的编号或所述M个数据包中最后一个数据包的编号,所述M为预置值且为正整数。
第二方面,本发明实施例还提供一种源端点设备,包括:
接收单元,用于接收服务器发送的输入/输出请求,所述输入/输出请求携带待写的数据块;
确定单元,用于根据所述数据块的大小确定需要使用的数据包数量;
编号单元,用于根据所述数据包数量对所述数据块的数据包进行编号;
发送单元,用于向所述目的端点设备发送所述数据块的数据包,所述数据包携带数据包的编号;
所述接收单元,还用于接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号;
处理单元,用于根据所述成功响应消息中的数据包的编号确定所述数据块的所有数据包均已被目的端点设备成功接收;
所述发送单元,还用于在所述处理单元确定所述数据块的所有数据包均已被目的端点设备成功接收时,向CPU发送指示传送完成的指令。
在第一种可能的实施方式中,结合第二方面,该源端点设备还包括计时单元和重传单元,其中:
所述计时单元,用于在所述发送单元根据所述编号依次向所述目的端点设备发送所述数据块的数据包时,为每一个数据包的传送时间进行计时;
所述重传单元,用于若在预置时间阈值,确定所述接收单元尚未接收到相应的成功响应消息,则确定相应的数据包为超时数据包,对该超时数据包进行重传。
在第二种可能的实施方式中,结合第二方面或第二方面的第一种可能的实施方式,其中:
所述接收单元,具体用于接收所述目的端点设备返回的成功响应消息,所述成功响应消息由所述目的端点设备每成功接收到一个数据包时向源端点设备返回一次,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号。
在第三种可能的实施方式中,结合第二方面或第二方面的第一种可能的实施方式,其中:
所述接收单元,具体用于接收所述目的端点设备返回的成功响应消息,所述成功响应消息由目的端点设备每成功接收到N个数据包时向源端点设备返回一次,所述成功响应消息中携带有所述目的端点设备已经成功接收的所述N个数据包的编号或所述N个数据包中最后一个数据包的编号,所述N为预置值且为大于1的正整数。
在第四种可能的实施方式中,结合第二方面或第二方面的第一种可能的实施方式,其中:
所述接收单元,具体用于接收所述目的端点设备返回的成功响应消息,所述成功响应消息由所述目的端口节点每隔一个预置周期向源端点设备返回一次,所述成功响应消息中携带有所述目的端点设备在所述预置周期内已经成功接收的M个数据包的编号或所述M个数据包中最后一个数据包的编号,所述M为预置值且为正整数。
第三方面,本发明实施例提供一种外设部件互连标准扩展系统(即PCIe系统),包括目的端点设备和本发明实施例提供的任一种源端点设备,其中:
目的端点设备,用于接收源端点设备发送的数据包,所述数据包携带数据包的编号,并在确定自身为目的端点设备时,向源端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号。
本发明实施例采用由源端点设备接收服务器发送的携带待写的数据块的I/O请求,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量依次对该数据块的数据包进行编号,并根据该编号依次发送该数据块的数据包,接收目的端点设备返回的携带数据包编号的成功响应消息,在根据该成功响应消息中携带的编号确定该数据块的所有数据包均被目的端点设备成功接收时,才向CPU发送指示传送完成的指令,从而确保该数据块的所有数据包均能够被目的端点设备成功接收,即采用该方案可以实现一个数据块在PCIe网络中的端到端可靠性传输。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的PCIe系统的网络结构图;
图1b是本发明实施例提供的数据传输方法的流程图;
图2a是本发明实施例提供的PCIe系统的结构示意图;
图2b是本发明实施例提供的数据传输方法的又一流程图;
图3a是本发明实施例提供的源端点设备的结构示意图;
图3b是本发明实施例提供的源端点设备的另一结构示意图;
图4是本发明实施例提供的源端点设备的又一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据传输方法、装置和系统。以下分别进行详细说明。
为了方便后续说明,以下将对该PCIe系统进行简略说明。
PCIe系统具体可以作为存储系统,可以包括通过PCIe的交换(switch)设备进行通信的源端点设备和目的端点设备,还可以包括CPU等,其中,源端点设备具体可以为NIC等设备,目的端点设备具体可以为高速缓冲存储器保护模块(CPM,Cache Protect Module)等用于存储数据的设备,而PCIe的交换设备则是一个可以对有限的PCIe端口进行扩展的设备,它可以使更多的端点设备能够与CPU相连,例如,参见图1a,该图即为PCIe系统的一个网络结构示意图。
参见图1a,该PCIe系统可以包括若干个源端点设备、PCIe的交换设备、CPU、以及若干个目的端点设备(图1a中以一个目的端点设备为例),其中,各个设备的功能具体可以如下:
(1)源端点设备;
源端点设备,具体用于通过网线或无线接收服务器发送的I/O请求,其中,该I/O请求携带待写的数据块,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量依次对该数据块的数据包进行编号,并根据所述编号依次向目的端点设备发送携带编号的数据包,接收目的端点设备返回的成功响应消息,根据该成功响应消息中的数据包的编号确定该数据块的所有数据包均已被目的端点设备成功接收时,向CPU发送指示传送完成的指令。
(2)PCIe的交换设备;
PCIe的交换设备,用于为源端点设备与CPU之间,以及源端点设备与目的端点设备之间的数据传输提供接口,其中,PCIe的交换设备与源端点设备、CPU和目的端点设备之间均可以通过PCIe连线进行连接。
(3)目的端点设备;
该目的端点设备,用于存储源端点设备发送的数据包,即源端点设备会将接收到的数据块划分为多个数据包,然后传送给目的端点设备以进行存储,该目的端点设备在接收到数据包后,在确定自身为目的端点设备时,向该数据包对应的源端点设备发送成功响应消息;其中,该成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号。
(4)CPU;
CPU,用于接收源端点设备发生的指示传送完成的指令,等等,此外,该CPU还用于对整个数据传输系统进行控制,在此不再赘述。
以下将对基于该PCIe系统的数据传输方法进行详细说明。
实施例一、
本实施例将会从源端点设备的角度进行描述,该源端点设备具体可以为NIC等设备。
如图1b所示,该数据传输方法的具体流程可以如下:
101、源端点设备接收服务器发送的I/O请求,其中,I/O请求携带待写的数据块。
需说明的是,本发明实施例所述的待写的数据块具体指的是数据(DATA)类的数据块,若源端点设备接收到的I/O请求中携带的是指令(command)类的数据块,则可以不进行处理,而直接进行透传,当然,也可以不对数据类型进行区分,即发明实施例所述的待写的数据块具体也可以数据(DATA)类的数据块和指令(command)类的数据块,也就是说,不管是对于数据(DATA)类的数据块,还是指令(command)类的数据块,均采用本发明实施例所提供的方法进行处理,在此不再赘述。
102、源端点设备根据该待写数据块的大小计算传送该数据块需要使用的数据包数量;例如,具体可以如下:
源端点设备确定该数据块的大小,以及确定每个数据包的大小,根据该数据块的大小和每个数据包的大小计算传送该数据块需要使用的数据包数量。
例如,可以将该数据块的大小除以每个数据包的大小,并将得到的商向上取整,即可得到该需要使用的数据包数量。比如,一个数据块大小为4KB,而一个数据包只能转发256B的数据,那么这个数据块就需要用16个数据包进行发送。
其中,数据块的大小可以从接收到的I/O请求携带的信息中获取,比如,通过解析I/O请求的包头来获取,等等,而每个数据包的大小可以从该PCIe系统的配置信息中获取,该数据包的大小具体可以根据实际应用的需求进行设置,比如,可以设置为256B,等等,在此不再赘述。
103、源端点设备根据该数据包数量对该数据块的数据包进行编号。
例如,如果步骤102中计算出需要16个数据包,则此时就可以对这16个数据包分别进行编号,比如进行0-15的编号,等等。
104、源端点设备向目的端点设备发送该数据块的数据包,其中,该数据包携带数据包的编号。
比如,如果数据包的编号为0-15,则可以从0到15依次发送数据包,即先发送编号为0的数据包,再发送编号为1的数据,然后,再发送编号为2的数据包,等等,以此类推,一直到发送编号为15的数据包,其中,每个数据包均会携带各自的编号。
105、源端点设备接收目的端点设备返回的成功响应消息,其中,该成功响应消息中携带该目的端点设备已经成功接收的数据包的编号,例如,可以如下为如下任意一种方式:
(1)第一种方式;
源端点设备接收该目的端点设备返回的成功响应消息,该成功响应消息由目的端口节点每成功接收到一个数据包时向源端点设备返回一次,其中,该成功响应消息中携带该目的端点设备已经成功接收的数据包的编号。
比如,如果目的端点设备成功接收到编号为0的数据包,则返回成功响应消息给源端点设备,其中,该成功响应消息中携带数据包的编号“0”;又比如,如果目的端点设备成功接收到编号为1的数据包,则返回成功响应消息给源端点设备,其中,该成功响应消息中携带数据包的编号“1”。
(2)第二种方式;
源端点设备接收该目的端点设备返回的成功响应消息,该成功响应消息由目的端点设备每成功接收到N个数据包时向源端点设备返回一次,其中,该成功响应消息中携带该目的端点设备已经成功接收的N个数据包的编号,或者,该响应消息中携带该目的端点设备已经成功接收的N个数据包中最后一个数据包的编号,其中,N为预置值且为大于1的正整数。
例如,以N具体为6为例,则目的端点设备每成功接收到6个数据包,便会返回一个成功响应消息给源端点设备,比如,如果目的端点设备成功接收到编号为0~5的6个数据包,则返回一次成功响应消息给源端点设备,其中,该成功响应消息中携带数据包的编号“0”、“1”、“2”、“3”、“4”和“5”,或者,也可以只携带这6个数据包中最后一个数据包的编号,即只携带数据包的编号“5”,因为,如果编号为“5”的数据包已经被目的端点设备成功接收,则意味着编号为“5”之前的数据包均已被目的端点设备成功接收。
(3)第三种方式;
除了可以设置当目的端点设备接收到预置数目数据包后,返回成功响应消息之外,也可以设置一定的时间周期,每隔一个时间周期目的端点设备返回一次成功响应消息,即可以如下:
源端点设备接收该目的端点设备返回的成功响应消息,该成功响应消息由所述目的端口节点每隔一个预置周期向源端点设备返回一次,其中,该成功响应消息中携带该目的端点设备在该预置周期内已经成功接收的M个数据包的编号,或者,该成功响应消息中携带该目的端点设备在该预置周期内已经成功接收的M个数据包中最后一个数据包的编号。
其中,M为预置值且为正整数,而该周期可以根据实际应用的需求进行设置,比如,设置为1微秒(μs),等等。
例如,以该预置周期具体为1μs为例,则目的端点设备每隔1μs,就会检测在该1μs的周期内,目的端点设备接收到哪些数据包,并返回成功响应消息给源端点设备,比如,如果在某一个1μs周期内,目的端点设备成功接收到编号为0~5的6个数据包,则返回成功响应消息给源端点设备,其中,该成功响应消息中携带数据包的编号“0”、“1”、“2”、“3”、“4”和“5”,或者,也可以只携带这6个数据包中最后一个数据包的编号,即只携带数据包的编号“5”,因为,如果编号为“5”的数据包已经被目的端点设备成功接收,则意味着编号为“5”之前的数据包均已被目的端点设备成功接收。
106、源端点设备根据该成功响应消息中的数据包的编号确定该数据块的所有数据包均被目的端点设备成功接收时,向CPU发送指示传送完成的指令。
例如,若该有效数据块的所有数据包均接收到相应的成功响应消息,比如,如果成功响应消息中携带编号为0~5的数据包的编号,或者,携带编号为5的数据包的编号,均可以表明编号为0~5的数据包均接收到相应的成功响应消息,以此类推,如果可以确定该数据块中的所有数据包均已接收到相应的成功响应消息,比如,编号为6~11的数据包也均已接收到相应的成功响应消息,编号为12~17的数据包也均已接收到相应的成功响应消息,等等,直至确定该数据块中最后一个数据包也已接收到相应的成功响应消息时,则可以表明所有数据包均被目的端点设备成功接收,所以,此时可以向CPU发送指示传送完成的指令,比如,向CPU发送command指令。
此外,需要说明的是,为了提高数据包传送的可靠性,当数据包传送发生错误时,还可以对该数据包进行重传,其中,数据包传送是否出错,可以根据数据包传送的时间是否超时来判断,如果超时,则对超时的数据包自动进行重传,即,在根据该编号依次发送该有效数据块的数据包时,该数据传输方法还可以包括:
源端点设备为每一个数据包的传送时间进行计时,若数据包的传送时间超过预置时间阈值,比如在预置时间内,源端点设备尚未接收到相应的成功响应消息,则确定相应的数据包为超时数据包,于是源端点设备对该超时数据包进行重传。
若数据包的传送时间未超过预置时间阈值,即在预置时间内接收到成功响应消息,则表明该数据包已经被目的端点设备成功接收。
其中,该时间阈值(即预置时间)可以根据实际应用的需求进行设置,比如,可以根据系统PCIe网络的级联数量进行设定,其中,该时间阈值大于等于每一段PCIe链路的超时时间的总和。
由上可知,本实施例采用由源端点设备接收服务器发送的携带待写的数据块的I/O请求,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量依次对该数据块的数据包进行编号,并根据该编号依次发送该数据块的数据包,接收目的端点设备返回的携带数据包编号的成功响应消息,在根据该成功响应消息中携带的编号确定该数据块的所有数据包均被目的端点设备成功接收时,才向CPU发送指示传送完成的指令,从而确保该数据块的所有数据包均能够被目的端点设备成功接收,即采用该方案可以实现一个数据块在PCIe网络中的端到端可靠性传输。而且,在向CPU发送指示传送完成的指令之后,也不需要CPU参与确认数据传送是否有误,因此,可以提高系统的处理效率,从而在整体上提高系统性能。
实施例二、
在本实施例中,将以该源端点设备具体为NIC,目的端点设备具体为CPM为例进行说明。
如图2a所示,该PCIe系统包括NIC和CPM,此外,还可以包括PCIe的交换(switch)设备和CPU等,其中,NIC是一个网络设备,CPM是一个存储数据的设备,CPU是系统的控制器,而PCIe的交换设备则是一个可以对有限的PCIe端口进行扩展的设备,它可以使更多的端点设备能够与CPU相连,例如,各个设备的功能具体可以如下:
(1)NIC;
该NIC,用于通过网线或无线接收服务器发送的I/O请求,其中,该I/O请求携带待写的数据块,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量依次对该数据块的数据包进行编号,并根据该编号依次向CPM发送携带编号的数据包,接收CPM返回的成功响应消息,根据该成功响应消息中的数据包的编号确定该数据块的所有数据包均已被CPM成功接收时,向CPU发送指示传送完成的指令。
(2)PCIe的交换设备;
PCIe的交换设备,用于为NIC与CPU之间,以及NIC与CPM之间的数据传输提供接口。
(3)CPM;
该CPM,用于存储NIC发送的数据包,即接收NIC发送的携带编号的数据包,在确定自身为目的端点设备时,向该数据包对应的NIC发送成功响应消息;其中,该成功响应消息中携带该CPM已经成功接收的数据包的编号。
(4)CPU;
CPU,用于接收NIC发生的指示传送完成的指令,等等,此外,该CPU还用于对整个数据传输系统进行控制,在此不再赘述。
基于上述PCIe系统的结构,以下将对该数据传输方法进行详细说明,如图2b所示,该数据传输方法的具体流程可以如下:
201、NIC接收服务器发送的I/O请求,其中,I/O请求携带待写的数据块。
202、NIC根据该待写数据块的大小计算传送该数据块需要使用的数据包数量;例如,具体可以如下:
NIC确定该数据块的大小,以及确定每个数据包的大小,根据该数据块的大小和每个数据包的大小计算传送该数据块需要使用的数据包数量。
例如,可以将该数据块的大小除以每个数据包的大小,并将得到的商向上取整,即可得到该需要使用的数据包数量。比如,一个数据块大小为4KB,而一个数据包只能转发256B的数据,那么这个数据块就需要用16个数据包进行发送。
其中,数据块的大小可以从接收到的I/O请求携带的信息中获取,比如,通过解析I/O请求的包头来获取,等等,而每个数据包的大小可以从该PCIe系统的配置信息中获取,该数据包的大小具体可以根据实际应用的需求进行设置,比如,可以设置为256B,等等,在此不再赘述。
其中,该数据包具体可以为TLP包等,在此不再赘述。
203、NIC根据该数据包数量对该数据块的数据包进行编号。
例如,如果步骤202中计算出需要16个数据包,则此时就可以对这16个数据包分别进行编号,比如进行0-15的编号,等等。
204、NIC通过PCIe的交换设备向目的端点设备发送该有效数据块的数据包给CPM,并为每一个数据包的传送时间进行计时,其中,该数据包携带数据包的编号。
比如,如果数据包的编号为0-15,则可以从0到15依次发送数据包,即先发送编号为0的数据包,同时为该编号为0的数据包的传送时间进行计时,再发送编号为1的数据,并为该编号为1的数据包的传送时间进行计时,然后,再发送编号为2的数据包,等等,以此类推,一直到发送编号为15的数据包,其中,每个数据包均会携带各自的编号。
205、CPM接收到该数据包后,解析该数据包以获取该数据包的响应标识。
其中,每个数据包的包头都会有一个标识,用于标识该数据包的发送者在整个PCIe域中的位置,在本发明实施例中,将该标识称为响应标识(RequestID),因此,可以通过解析该数据包的包头,来获取该数据包的响应标识。
206、CPM确定该数据包的响应标识存在于预置的第一响应标识列表中时,通过PCIe的交换设备向该数据包对应的NIC发送成功响应消息,比如确认(ACK,Acknowledgement)消息。
其中,该第一响应标识列表用于记录需要响应的数据块的数据包的响应标识,该第一响应标识列表可以根据实际应用的需求进行设置,比如,以该CPM作为目的端点设备的数据块的数据包均需要响应,因此,可以将以该CPM作为目的端点设备的数据块的数据包的响应标识均会被记录到该第一响应标识列表中,或者,也可以按照一定的策略,将以该CPM作为目的端点设备的数据块的部分数据包的响应标识记录到该第一响应标识列表中,其中,这部分数据包的在目的端点设备中的接收情况可以反映出其他数据包在目的端点设备中的接收情况。
比如,若以该CPM作为目的端点设备的数据块的数据包的响应标识均被记录到该第一响应标识列表中,则CPM在成功接收到每个数据包后,均会向NIC返回一次成功响应消息,其中,该成功响应消息中携带该CPM已经成功接收的数据包的编号。
又比如,可以将以该CPM作为目的端点设备的数据块的每N个数据包中的最后一个数据包的响应标识均记录到该第一响应标识列表中,那么,CPM在每成功接收到N个数据包后,将会向NIC返回一次成功响应消息,其中,该成功响应消息中携带该目的端点设备已经成功接收的N个数据包的编号,或者,该响应消息中携带该目的端点设备已经成功接收的N个数据包中最后一个数据包的编号。其中,N为预置值且为大于1的正整数。
又比如,还可以按照预置周期来从以该CPM作为目的端点设备的数据块的数据包中选择对应的数据包的响应标识,以记录在第一响应标识列表中,则,每隔一个预置周期,CPM均会检测在该周期内,CPM接收到哪些数据包,并返回成功响应消息给NIC,其中,该成功响应消息中携带在该预置周期内该CPM已经成功接收的M个数据包的编号,或者,该成功响应消息中携带在该预置周期内该CPM已经成功接收的M个数据包中最后一个数据包的编号。
其中,M为预置值且为正整数,而该周期可以根据实际应用的需求进行设置,比如,设置为1微秒(μs),等等。
207、NIC通过PCIe的交换设备接收CPM返回的成功响应消息,比如ACK消息。
需说明的是,如果在预置时间内NIC未接收到CPM返回的成功响应消息,则表明该数据包的传送可能发生错误,因此,此时可以对该超时的数据包进行重传。
其中,该时间阈值可以根据实际应用的需求进行设置,比如,可以根据系统PCIe网络的级联数量进行设定,其中,该时间阈值大于等于每一段PCIe链路的超时时间的总和。
208、NIC根据该成功响应消息中的数据包的编号确定该数据块的所有数据包均接收到相应的成功响应消息时,通过PCIe的交换设备向CPU发送指示传送完成的指令,比如,通过PCIe的交换设备向CPU发送command指令。
若该有效数据块中还有数据包未接收到相应的成功响应消息,则继续等待,直至该有效数据块的所有数据包均接收到相应的成功响应消息,才通过PCIe的交换设备向CPU发送指示传送完成的指令。
此后,CPU在接收到该指示传送完成的指令之后,无需到CPM卡中读取相应的数据进行对比确认之后,才能进行下一步的操作,而是可以直接通过PCIe的交换设备向NIC返回响应消息,比如ACK消息等,从而大大提高该数据传输系统的处理效率,在此不再赘述。
由上可知,本实施例采用由NIC接收服务器发送的携带待写的数据块的I/O请求,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量依次对该数据块的数据包进行编号,并根据该编号依次向CPM发送该数据块的数据包,接收CPM返回的携带数据包编号的成功响应消息,在根据该成功响应消息中携带的编号确定该数据块的所有数据包均被CPM成功接收时,才向CPU发送指示传送完成的指令,从而确保该有效数据块的所有数据包均能够被目的端点设备成功接收,即采用该方案可以实现一个有效数据块在PCIe网络中的端到端可靠性传输,而且,在向CPU发送指示传送完成的指令之后,也不需要CPU参与确认数据传送是否有误,因此,可以提高系统的处理效率,从而在整体上提高系统性能。
实施例三、
为了更好地实现以上方法,本发明实施例还提供一种源端点设备,如图3a所示,该源端点设备可以包括接收单元301、确定单元302、编号单元303、发送单元304和处理单元305,如下:
接收单元301,用于接收服务器发送的I/O请求,其中,I/O请求携带待写的数据块。
确定单元302,用于根据该待写数据块的大小计算传送该数据块需要使用的数据包数量
例如,确定单元302,具体可以用于确定该数据块的大小,以及确定每个数据包的大小,根据该数据块的大小和每个数据包的大小计算传送该数据块需要使用的数据包数量。
例如,可以将该数据块的大小除以每个数据包的大小,并将得到的商向上取整,即可得到该需要使用的数据包数量。比如,一个数据块大小为4KB,而一个数据包只能转发256B的数据,那么这个数据块就需要用16个数据包进行发送。
其中,数据块的大小可以从接收到的I/O请求携带的信息中获取,比如,通过解析I/O请求的包头来获取,等等,而每个数据包的大小可以从该PCIe系统的配置信息中获取,该数据包的大小具体可以根据实际应用的需求进行设置,比如,可以设置为256B,等等,在此不再赘述。
编号单元303,用于根据该数据包数量对该数据块的数据包进行编号。
例如,如果确定单元302计算出需要16个数据包,则此时编号单元303就可以对这16个数据包分别进行编号,比如进行0-15的编号,等等。
发送单元304,用于向该目的端点设备发送该数据块的数据包,其中,该数据包携带数据包的编号。
比如,如果数据包的编号为0-15,则发送单元304可以从0到15依次发送数据包,即先发送编号为0的数据包,再发送编号为1的数据,然后,再发送编号为2的数据包,等等,以此类推,一直到发送编号为15的数据包,其中,每个数据包均会携带各自的编号。
接收单元301,还用于接收该目的端点设备返回的成功响应消息,其中,该成功响应消息中携带该目的端点设备已经成功接收的数据包的编号。
处理单元305,用于根据该成功响应消息中的数据包的编号确定该数据块的所有数据包均已被目的端点设备成功接收。
发送单元304,还用于在处理单元305确定噶器数据块的所有数据包均已被目的端点设备成功接收时,向CPU发送指示传送完成的指令,比如,向CPU发送command指令。
其中,目的端点设备返回成功响应消息的方式可以多种,因此,接收单元301可以采用如下任意一种方式来接收该成功响应消息,具体如下:
(1)第一种方式;
接收单元301,具体可以用于接收该目的端点设备返回的成功响应消息,该成功响应消息由目的端口节点每成功接收到一个数据包时向源端点设备返回一次,其中,该成功响应消息中携带该目的端点设备已经成功接收的数据包的编号。
比如,如果目的端点设备成功接收到编号为0的数据包,则返回成功响应消息给源端点设备,其中,该成功响应消息中携带数据包的编号“0”;又比如,如果目的端点设备成功接收到编号为1的数据包,则返回成功响应消息给源端点设备,其中,该成功响应消息中携带数据包的编号“1”。
(2)第二种方式;
接收单元301,具体可以用于接收该目的端点设备返回的成功响应消息,该成功响应消息由目的端点设备每成功接收到N个数据包时向源端点设备返回一次,其中,该成功响应消息中携带该目的端点设备已经成功接收的N个数据包的编号,或者,该响应消息中携带该目的端点设备已经成功接收的N个数据包中最后一个数据包的编号,其中,N为预置值且为大于1的正整数。
例如,以N具体为6为例,则目的端点设备每成功接收到6个数据包,便会返回一个成功响应消息给源端点设备,比如,如果目的端点设备成功接收到编号为0~5的6个数据包,则返回成功响应消息给源端点设备,其中,该成功响应消息中携带数据包的编号“0”、“1”、“2”、“3”、“4”和“5”,或者,也可以只携带这6个数据包中最后一个数据包的编号,即只携带数据包的编号“5”,因为,如果编号为“5”的数据包已经被目的端点设备成功接收,则意味着编号为“5”之前的数据包均已被目的端点设备成功接收。
(3)第三种方式;
除了可以设置当目的端点设备接收到预置数目数据包后,返回成功响应消息之外,也可以设置一定的时间周期,每隔一个时间周期目的端点设备返回一次成功响应消息,即可以如下:
接收单元301,具体可以用于接收该目的端点设备预置周期返回的成功响应消息,该成功响应消息由所述目的端口节点每隔一个预置周期向源端点设备返回一次,其中,该成功响应消息中携带该目的端点设备在该预置周期内已经成功接收的M个数据包的编号,或者,该成功响应消息中携带该目的端点设备在该预置周期内已经成功接收的M个数据包中最后一个数据包的编号。
其中,M为预置值且为正整数,而该周期可以根据实际应用的需求进行设置,比如,设置为1微秒(μs),等等。
例如,以该预置周期具体为1μs为例,则目的端点设备每隔1μs,就会检测在该1μs的周期内,目的端点设备接收到哪些数据包,并返回成功响应消息给源端点设备,比如,如果在某一个1μs周期内,目的端点设备成功接收到编号为0~5的6个数据包,则返回成功响应消息给源端点设备,其中,该成功响应消息中携带数据包的编号“0”、“1”、“2”、“3”、“4”和“5”,或者,也可以只携带这6个数据包中最后一个数据包的编号,即只携带数据包的编号“5”,因为,如果编号为“5”的数据包已经被目的端点设备成功接收,则意味着编号为“5”之前的数据包均已被目的端点设备成功接收。
此外,需要说明的是,为了提高数据包传送的可靠性,当数据包传送发生错误时,还可以对该数据包进行重传,其中,数据包传送是否出错,可以根据数据包传送的时间是否超时来判断,如果超时,则对超时的数据包自动进行重传,即如图3b所示,该数据发送装置还可以包括计时单元306和重传单元307;
计时单元306,用于在根据该编号依次发送该数据块的数据包时,为每一个数据包的传送时间进行计时;
重传单元307,用于在计时单元306确定数据包的传送时间超过预置时间阈值时,比如确定在预置时间内,接收单元301尚未接收到相应的成功响应消息时,则确定相应的数据包为超时数据包,于是对该超时数据包进行重传。
若数据包的传送时间未超过预置时间阈值,即在预置时间内接收到成功响应消息,则表明该数据包已经被目的端点设备成功接收。
其中,该时间阈值(即预置时间)可以根据实际应用的需求进行设置,比如,可以根据系统PCIe网络的级联数量进行设定,其中,该时间阈值大于等于每一段PCIe链路的超时时间的总和。
该源端点设备具体可以为NIC等设备。
具体实施时,以上各个单元可以作为独立的实现来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
此外,需说明的是,该数据发送装置具体可以作为本发明实施例的LVM,该LVM可以集成在PCIe设备,比如NIC等设备中,也可以作为独立的实体来实现,在此不再赘述。
由上可知,本实施例采用在由源端点设备的接收单元301接收服务器发送的携带待写的数据块的I/O请求,然后由确定单元302根据该数据块的大小确定需要使用的数据包数量,并由编号单元303根据该数据包数量依次对该数据块的数据包进行编号,然后由发送单元304根据该编号发送该数据块的数据包,后续由接收单元301接收目的端点设备返回的携带数据包编号的成功响应消息,在根据该成功响应消息中携带的编号确定该数据块的所有数据包均被目的端点设备成功接收时,才由发送单元304向CPU发送指示传送完成的指令,从而确保该有效数据块的所有数据包均能够被目的端点设备成功接收,即采用该方案可以实现一个数据块在PCIe网络中的端到端可靠性传输,而且,在向CPU发送指示传送完成的指令之后,也不需要CPU参与确认数据传送是否有误,因此,可以提高系统的处理效率,从而在整体上提高系统性能。
实施例四、
相应的,本发明实施例还提供一种PCIe系统,包括目的端点设备和本发明实施例提供的任一种源端点设备,其中,该源端点设备具体可参见实施例三,例如,具体可以如下:
源端点设备,用于接收服务器发送的I/O请求,其中,该I/O请求携带待写的数据块,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量依次对该数据块的数据包进行编号,并根据该编号向目的端点设备发送携带编号的数据包,接收目的端点设备返回的成功响应消息,根据该成功响应消息中的数据包的编号确定该数据块的所有数据包均已被目的端点设备成功接收时,向CPU发送指示传送完成的指令。
目的端点设备,用于接收源端点设备发送的数据包,在确定自身为目的端点设备时,向源端点设备发送成功响应消息;其中,该成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号,具体可参见前面的实施例,在此不再赘述。
其中,目的端点设备返回成功响应消息的方式可以多种,例如,具体可以如下:
(1)第一种方式;
目的端点设备,具体可以用于在成功接收到每个数据包时,向源端点设备返回一次成功响应消息,其中,该成功响应消息中携带该目的端点设备已经成功接收的数据包的编号。
(2)第二种方式;
目的端点设备,具体可以用于在每成功接收到N个数据包时,向源端点设备返回一次成功响应消息,其中,该成功响应消息中携带该目的端点设备已经成功接收的N个数据包的编号,或者,该响应消息中携带该目的端点设备已经成功接收的N个数据包中最后一个数据包的编号,其中,N为预置值且为大于1的正整数。
(3)第三种方式;
除了可以设置当目的端点设备接收到预置数目数据包后,返回成功响应消息之外,也可以设置一定的时间周期,每隔一个时间周期目的端点设备返回一次成功响应消息,即可以如下:
目的端点设备,具体可以用于按照预置周期向源端点设备返回成功响应消息,其中,该成功响应消息中携带在该预置周期内该目的端点设备已经成功接收的M个数据包的编号,或者,该成功响应消息中携带在该预置周期内该目的端点设备已经成功接收的M个数据包中最后一个数据包的编号。
此外,需要说明的是,为了提高数据包传送的可靠性,当数据包传送发生错误时,源端点设备还可以对该数据包进行重传,其中,数据包传送是否出错,可以根据数据包传送的时间是否超时来判断,如果超时,则对超时的数据包自动进行重传,即:
源端点设备,还可以用于在根据该编号依次发送该有效数据块的数据包时,为每一个数据包的传送时间进行计时,若数据包的传送时间超过预置时间阈值,则对该超时数据包进行重传。
若数据包的传送时间未超过预置时间阈值,即在预置时间内接收到成功响应消息,则表明该数据包已经被目的端点设备成功接收。
其中,该时间阈值可以根据实际应用的需求进行设置,比如,可以根据系统PCIe网络的级联数量进行设定,其中,该时间阈值大于等于每一段PCIe链路的超时时间的总和。
以上各个步骤的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例的PCIe系统采用由源端点设备接收服务器发送的携带待写的数据块的I/O请求,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量依次对该数据块的数据包进行编号,并根据该编号依次发送该数据块的数据包,接收目的端点设备返回的携带数据包编号的成功响应消息,在根据该成功响应消息中携带的编号确定该数据块的所有数据包均被目的端点设备成功接收时,才向CPU发送指示传送完成的指令,从而确保该数据块的所有数据包均能够被目的端点设备成功接收,即采用该方案可以实现一个有效数据块在PCIe网络中的端到端可靠性传输,而且,在向CPU发送指示传送完成的指令之后,也不需要CPU参与确认数据传送是否有误,因此,可以提高系统的处理效率,从而在整体上提高系统性能。
实施例五、
此外,本发明实施例还提供一种源端点设备,如图4所示,该源端点设备可以包括用于存储数据的存储器401,用于收发数据的收发接口402和处理器403,其中:
处理器403,用于根据收发接口402接收到的数据块的大小确定需要使用的数据包数量,然后根据该数据包数量对该数据块的数据包进行编号,并控制收发接口402根据该编号依次向目的端点设备发送携带编号的数据包,在收发接口402接收目的端点设备返回的成功响应消息后,根据该成功响应消息中的数据包的编号确定该数据块的所有数据包均已被目的端点设备成功接收,并控制收发接口402向CPU发送指示传送完成的指令。
收发接口402,用于接收服务器发送的I/O请求,其中,该I/O请求携带待写的数据块,以及在处理器403的控制下向目的端点设备发送携带编号的数据包,以及在处理器403的控制下,向CPU发送指示传送完成的指令。
例如,处理器403,具体可以将该数据块的大小除以每个数据包的大小,并将得到的商向上取整,即可得到该需要使用的数据包数量。比如,一个数据块大小为4KB,而一个数据包只能转发256B的数据,那么这个数据块就需要用16个数据包进行发送。
其中,数据块的大小可以从接收到的I/O请求携带的信息中获取,比如,通过解析I/O请求的包头来获取,等等,而每个数据包的大小可以从该PCIe系统的配置信息中获取,该数据包的大小具体可以根据实际应用的需求进行设置,比如,可以设置为256B,等等,在此不再赘述。
此外,需要说明的是,为了提高数据包传送的可靠性,当数据包传送发生错误时,还可以对该数据包进行重传,其中,数据包传送是否出错,可以根据数据包传送的时间是否超时来判断,如果超时,则对超时的数据包自动进行重传,即:
处理器403,还可以用于在向目的端点设备发送该数据块的数据包时,为每一个数据包的传送时间进行计时,若数据包的传送时间超过预置时间阈值,则对该超时数据包进行重传。
若数据包的传送时间未超过预置时间阈值,即在预置时间内接收到成功响应消息,则表明该数据包已经被目的端点设备成功接收。
其中,该时间阈值可以根据实际应用的需求进行设置,比如,可以根据系统PCIe网络的级联数量进行设定,其中,该时间阈值大于等于每一段PCIe链路的超时时间的总和。
其中,上述各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例的源端点设备可以接收服务器发送的携带待写的数据块的I/O请求,根据该数据块的大小确定需要使用的数据包数量,然后根据该数据包数量依次对该数据块的数据包进行编号,并根据该编号依次发送该数据块的数据包,接收目的端点设备返回的携带数据包编号的成功响应消息,在根据该成功响应消息中携带的编号确定该数据块的所有数据包均被目的端点设备成功接收时,才向CPU发送指示传送完成的指令,从而确保该数据块的所有数据包均能够被目的端点设备成功接收,即采用该方案可以实现一个数据块在PCIe网络中的端到端可靠性传输,而且,在向CPU发送指示传送完成的指令之后,也不需要CPU参与确认数据传送是否有误,因此,可以提高系统的处理效率,从而在整体上提高系统性能。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种数据传输方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种数据传输方法,所述方法应用于外设部件互连标准扩展PCIe系统中,所述PCIe系统包括通过PCIe的交换设备进行通信的源端点设备和目的端点设备,其特征在于,所述方法包括:
所述源端点设备接收服务器发送的输入/输出请求,所述输入/输出请求携带待写的数据块;
所述源端点设备根据所述数据块的大小确定需要使用的数据包数量;
所述源端点设备根据所述数据包数量对所述数据块的数据包进行编号;
所述源端点设备向所述目的端点设备发送所述数据块的数据包,所述数据包携带数据包的编号;
所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号;
当所述源端点设备根据所述成功响应消息中的数据包的编号确定所述数据块的所有数据包均已被目的端点设备成功接收时,所述源端点设备向中央处理器发送指示传送完成的指令。
2.根据权利要求1所述的方法,其特征在于,所述源端点设备向所述目的端点设备发送所述数据块的数据包时,还包括:
所述源端点设备为每一个数据包的传送时间进行计时;
若在预置时间内,所述源端点设备尚未接收到相应的成功响应消息,则确定相应的数据包为超时数据包,所述源端点设备对所述超时数据包进行重传。
3.根据权利要求1或2所述的方法,其特征在于,所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号,包括:
所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息由所述目的端点设备每成功接收到一个数据包时向源端点设备返回一次,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号。
4.根据权利要求1或2所述的方法,其特征在于,所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号,包括:
所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息由目的端点设备每成功接收到N个数据包时向源端点设备返回一次,所述成功响应消息中携带有所述目的端点设备已经成功接收的所述N个数据包的编号或所述N个数据包中最后一个数据包的编号,所述N为大于1的正整数。
5.根据权利要求1或2所述的方法,其特征在于,所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号,包括:
所述源端点设备接收所述目的端点设备返回的成功响应消息,所述成功响应消息由所述目的端口节点每隔一个预置周期向源端点设备返回一次,所述成功响应消息中携带有所述目的端点设备在所述预置周期内已经成功接收的M个数据包的编号或所述M个数据包中最后一个数据包的编号,所述M为预置值且为正整数。
6.一种源端点设备,其特征在于,包括:
接收单元,用于接收服务器发送的输入/输出请求,所述输入/输出请求携带待写的数据块;
确定单元,用于根据所述数据块的大小确定需要使用的数据包数量;
编号单元,用于根据所述数据包数量对所述数据块的数据包进行编号;
发送单元,用于向所述目的端点设备发送所述数据块的数据包,所述数据包携带数据包的编号;
所述接收单元,还用于接收所述目的端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号;
处理单元,用于根据所述成功响应消息中的数据包的编号确定所述数据块的所有数据包均已被目的端点设备成功接收;
所述发送单元,还用于在所述处理单元确定所述数据块的所有数据包均已被目的端点设备成功接收时,向中央处理器发送指示传送完成的指令。
7.根据权利要求6所述的源端点设备,其特征在于,还包括计时单元和重传单元;
所述计时单元,用于在所述发送单元根据所述编号依次向所述目的端点设备发送所述数据块的数据包时,为每一个数据包的传送时间进行计时;
所述重传单元,用于若在预置时间阈值,确定所述接收单元尚未接收到相应的成功响应消息,则确定相应的数据包为超时数据包,对该超时数据包进行重传。
8.根据权利要求6或7所述的源端点设备,其特征在于,
所述接收单元,具体用于接收所述目的端点设备返回的成功响应消息,所述成功响应消息由所述目的端点设备每成功接收到一个数据包时向源端点设备返回一次,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号。
9.根据权利要求6或7所述的源端点设备,其特征在于,
所述接收单元,具体用于接收所述目的端点设备返回的成功响应消息,所述成功响应消息由目的端点设备每成功接收到N个数据包时向源端点设备返回一次,所述成功响应消息中携带有所述目的端点设备已经成功接收的所述N个数据包的编号或所述N个数据包中最后一个数据包的编号,所述N为预置值且为大于1的正整数。
10.根据权利要求6或7所述的源端点设备,其特征在于,
所述接收单元,具体用于接收所述目的端点设备返回的成功响应消息,所述成功响应消息由所述目的端口节点每隔一个预置周期向源端点设备返回一次,所述成功响应消息中携带有所述目的端点设备在所述预置周期内已经成功接收的M个数据包的编号或所述M个数据包中最后一个数据包的编号,所述M为预置值且为正整数。
11.一种外设部件互连标准扩展系统,其特征在于,包括目的端点设备和权利要求6至10任一项所述的源端点设备,其中:
目的端点设备,用于接收源端点设备发送的数据包,所述数据包携带数据包的编号,并在确定自身为目的端点设备时,向源端点设备返回的成功响应消息,所述成功响应消息中携带所述目的端点设备已经成功接收的数据包的编号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410293367.7A CN104102605B (zh) | 2014-06-25 | 2014-06-25 | 一种数据传输方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410293367.7A CN104102605B (zh) | 2014-06-25 | 2014-06-25 | 一种数据传输方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102605A true CN104102605A (zh) | 2014-10-15 |
CN104102605B CN104102605B (zh) | 2018-03-09 |
Family
ID=51670772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410293367.7A Active CN104102605B (zh) | 2014-06-25 | 2014-06-25 | 一种数据传输方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102605B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111246428A (zh) * | 2019-11-20 | 2020-06-05 | 广东纬德信息科技股份有限公司 | 一种网络可靠通信方法、系统、装置及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198763A1 (en) * | 2006-02-17 | 2007-08-23 | Nec Corporation | Switch and network bridge apparatus |
CN101202634A (zh) * | 2007-11-29 | 2008-06-18 | 杭州华三通信技术有限公司 | 提高带宽利用率的单板和数据传输系统以及方法 |
CN101969371A (zh) * | 2010-10-19 | 2011-02-09 | 高杰 | 一种基于用户数据包协议实现网络数据高速可靠传输的方法 |
CN102217258A (zh) * | 2011-04-12 | 2011-10-12 | 华为技术有限公司 | 探测处理方法、数据发送端、数据接收端以及通信系统 |
CN103098428A (zh) * | 2012-10-27 | 2013-05-08 | 华为技术有限公司 | 一种实现pcie交换网络的报文传输方法、设备、系统和存储介质 |
CN103546258A (zh) * | 2013-10-29 | 2014-01-29 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN103559152A (zh) * | 2013-10-31 | 2014-02-05 | 烽火通信科技股份有限公司 | 基于pcie协议的cpu访问本地总线的装置及方法 |
CN103825768A (zh) * | 2014-03-04 | 2014-05-28 | 杭州华三通信技术有限公司 | 报文传输方法和装置 |
-
2014
- 2014-06-25 CN CN201410293367.7A patent/CN104102605B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198763A1 (en) * | 2006-02-17 | 2007-08-23 | Nec Corporation | Switch and network bridge apparatus |
CN101202634A (zh) * | 2007-11-29 | 2008-06-18 | 杭州华三通信技术有限公司 | 提高带宽利用率的单板和数据传输系统以及方法 |
CN101969371A (zh) * | 2010-10-19 | 2011-02-09 | 高杰 | 一种基于用户数据包协议实现网络数据高速可靠传输的方法 |
CN102217258A (zh) * | 2011-04-12 | 2011-10-12 | 华为技术有限公司 | 探测处理方法、数据发送端、数据接收端以及通信系统 |
CN103098428A (zh) * | 2012-10-27 | 2013-05-08 | 华为技术有限公司 | 一种实现pcie交换网络的报文传输方法、设备、系统和存储介质 |
CN103546258A (zh) * | 2013-10-29 | 2014-01-29 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN103559152A (zh) * | 2013-10-31 | 2014-02-05 | 烽火通信科技股份有限公司 | 基于pcie协议的cpu访问本地总线的装置及方法 |
CN103825768A (zh) * | 2014-03-04 | 2014-05-28 | 杭州华三通信技术有限公司 | 报文传输方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111246428A (zh) * | 2019-11-20 | 2020-06-05 | 广东纬德信息科技股份有限公司 | 一种网络可靠通信方法、系统、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104102605B (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210119930A1 (en) | Reliable transport architecture | |
KR102173089B1 (ko) | 인터페이스 회로 및 그것의 패킷 전송 방법 | |
CN101876963B (zh) | PCI.Express通信系统及其通信方法 | |
WO2016187813A1 (zh) | 一种光电混合网络的数据传输方法及装置 | |
CN109936510A (zh) | 多路径rdma传输 | |
US20130114598A1 (en) | Packet ordering based on delivery route changes in communication networks | |
US20090010159A1 (en) | End-to-end flow control in a network | |
CN103401726A (zh) | 网络路径探测方法及装置、系统 | |
CN107360177B (zh) | 一种基于udp的报文传输方法及装置 | |
CN103490852A (zh) | 为分组报头提供前缀 | |
KR101283482B1 (ko) | Pci 익스프레스 프로토콜 처리 장치 | |
CN103051557A (zh) | 数据流处理方法及系统、控制器、交换设备 | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
CN103248467A (zh) | 基于片内连接管理的rdma通信方法 | |
CN105162868A (zh) | 一种教师端与学生端之间的可靠数据传输方法 | |
CN104506280B (zh) | 一种基于时分多址接入空间动态网络的可靠数据传输方法 | |
CN110460412A (zh) | 用于数据传输的方法和rdma网卡 | |
CN104038322A (zh) | 中间节点、通信网络及其数据传输控制方法 | |
CN102891803A (zh) | 拥塞处理方法及网络设备 | |
CN104156334A (zh) | 用于多机通讯的串口自适应数据透明传输协议 | |
CN109981385A (zh) | 一种实现丢包检测的方法、装置和系统 | |
CN104980257A (zh) | 物联网通讯方法及装置 | |
CN102576338A (zh) | 用于存储器设备的接口方法和装置 | |
CN104410527A (zh) | 一种拓扑检测方法、交换机及热堆叠系统 | |
CN104065465A (zh) | 一种报文重传的方法、请求端、响应端以及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |