首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际申请 / 明显错误 / 实现数据包重发的方法、装置及系统

实现数据包重发的方法、装置及系统

阅读:88发布:2020-05-12

专利汇可以提供实现数据包重发的方法、装置及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种实现数据包重发的方法,该方法包括:接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包分别返回的响应消息;接收到发送缓冲区中已发送的全部数据包的响应消息后,根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包。通过本发明,可以避免重发冗余数据,减少不必要的链路重发,提高链路的有效使用率。特别在传输数据出现间歇性错误时候,带来的有益效果更加明显。,下面是实现数据包重发的方法、装置及系统专利的具体信息内容。

1.一种实现数据包重发的方法,其特征在于,包括:
接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包分别返回的响应消息;
接收到发送缓冲区中已发送的全部数据包的响应消息后,根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包。
2.根据权利要求1所述的方法,其特征在于,还包括:
将所述发生接收错误的全部数据包重发完毕,且在接收到重发成功消息后,退出重发模式,继续发送新数据包。
3.根据权利要求1所述的方法,其特征在于,在同一重发模式下,当发生接收错误的数据包为两个或两个以上时,所述重发所述发生接收错误的数据包包括:
按照所述发生接收错误的数据包的序列号从小到大的顺序,重发所述发生接收错误的数据包。
4.一种实现数据包重发的方法,其特征在于,包括:
当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;
接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置
5.根据权利要求4所述的方法,其特征在于,还包括:
当接收到重发的发生接收错误的全部数据包并且全部校验正确后,退出等待重发模式,继续接收新数据包。
6.根据权利要求4所述的方法,其特征在于,在同一重发模式下,当发生错误的数据包为两个或两个以上时,还包括:在接收重发的发生接收错误的数据包过程中,按照所述发生接收错误的数据包序列号从小到大的顺序,更新下一个需要接收的数据包的序列号。
7.一种实现数据包重发的装置,位于发送端,其特征在于,包括:
消息接收单元,用于接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包所返回的响应消息;
数据包重发单元,用于根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包。
8.根据权利要求7所述的装置,其特征在于,还包括:
重发模式退出单元,用于将所述发生接收错误的全部数据包重发完毕,且在接收到重发成功消息后,退出重发模式,继续发送新数据包。
9.根据权利要求7所述的装置,其特征在于,在同一重发模式下,当发生错误的数据包为两个或两个以上时,所述数据包重发单元包括:
判断子单元,用于根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包;
顺序重发子单元,用于按照所述发生接收错误的数据包的序列号从小到大的顺序,重发所述发生接收错误的数据包。
10.一种实现数据包重发的装置,位于接收端,其特征在于,包括:
消息发送单元,用于当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;
重发数据包接收单元,用于接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置。
11.根据权利要求10所述的装置,其特征在于,还包括:
等待重发模式退出单元,用于接收到重发的发生接收错误的全部数据包,并且全部校验正确后,退出等待重发模式,继续接收新数据包。
12.一种实现数据包重发的系统,其特征在于,包括:发送端装置,用于接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包所返回的响应消息;根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包;
接收端装置,用于当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;
进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置。

说明书全文

实现数据包重发的方法、装置及系统

技术领域

[0001] 本发明涉及通信技术领域,特别是涉及实现数据包重发的方法、装置及系统。

背景技术

[0002] PCIE(Peripheral Component Interconnect-Express,增强型外设组件互连标准)是一种高速、高可靠性的传输协议,在存储系统中得到广泛的应用。从协议本身来看,高可靠性的本质,是通过ACK/NAK的传输机制来保证的。
[0003] PCIE传输协议分为三层:设备层、数据链路层、物理层,ACK/NAK协议是在数据链路层以DLLP(Data Link Layer Packet,数据链路层传输的数据包)的形式体现的。
[0004] 发送端的数据链路层,有一个序列号发生器,用于为每个需要发送的TLP(Transaction Layer Packet,处理层协议包)包顺序产生一个序列号。接收端有一个NEXT_RCV_SEQ计数器,用于顺序跟踪下一个应该收到TLP包的序列号,接收端每接收到一个正确的TLP包,该计数器增加1,以此来保证发送端的发送顺序的一致性。如果接收的TLP包出现错误,计数器维持不变,并丢弃该序列号之后的所有TLP包,不管后来的数据包是否正确,然后等待该序列号以后的TLP包重发。
[0005] 但是,本发明人在实现本发明的过程中发现,因接收的TLP包出现错误而丢弃该序列号之后的所有TLP包,不管后来的数据包是否正确,造成了链路带宽的浪费。并且,在高IOPS(I/O per second,每秒进行输入/输出的次数)情况下,链路上可能同时存在多个TLP包,如果首个TLP包出错后,按照现有技术的重发方法,会导致途中全部TLP都需要重发。另外,当系统受到静电干扰、传导干扰或者辐射干扰时,传输的数据会出现间隔性的出错,如此频繁地重发冗余的TLP包,会导致的浪费将更加严重,降低了链路的有效使用率。

发明内容

[0006] 本发明提供实现数据包重发的方法、装置及系统,能够减少不必要的链路重发,提高链路的有效使用率。
[0007] 为实现上述目的,本发明提供了如下方案:
[0008] 一种实现数据包重发的方法,包括:
[0009] 接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包分别返回的响应消息;
[0010] 接收到发送缓冲区中已发送的全部数据包的响应消息后,根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包。
[0011] 一种实现数据包重发的方法,包括:
[0012] 当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;
[0013] 接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置
[0014] 一种实现数据包重发的装置,位于发送端,包括:
[0015] 消息接收单元,用于接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包所返回的响应消息;
[0016] 数据包重发单元,用于根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包。
[0017] 一种实现数据包重发的装置,位于接收端,包括:
[0018] 消息发送单元,用于当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;
[0019] 重发数据包接收单元,用于接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置。
[0020] 一种实现数据包重发的系统,包括:发送端装置,用于接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包所返回的响应消息;根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包;
[0021] 接收端装置,用于当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置。
[0022] 根据本发明提供的具体实施例,本发明公开了以下技术效果:
[0023] 本发明实施例能够实现选择性重发的机制,当发送端发现发生接收错误的数据包时,可以仅将该发生错误的数据包重发,而不用再重发该发生错误的数据包之后已发送的全部数据包。因此,可以避免重发冗余数据,减少不必要的链路重发,提高链路的有效使用率。特别在传输数据出现间歇性错误时候,带来的有益效果更加明显。附图说明
[0024] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0025] 图1是本发明实施例提供的方法的流程图
[0026] 图2是本发明实施例提供的另一方法的流程图;
[0027] 图3是本发明实施例提供的进行TLP包重发过程的示意图;
[0028] 图4是本发明实施例提供的发送端装置的示意图;
[0029] 图5是本发明实施例提供的另一发送端装置的示意图;
[0030] 图6是本发明实施例提供的接收端装置的示意图;
[0031] 图7是本发明实施例提供的另一接收端装置的示意图;
[0032] 图8是本发明实施例提供的系统的示意图。

具体实施方式

[0033] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0034] 参见图1,本发明实施例提供的实现数据包重发的方法包括以下步骤:
[0035] S101:接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包所返回的响应消息;
[0036] S102:接收到发送缓冲区中已发送的全部数据包的响应消息后,根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包。
[0037] 上述步骤S201及S202的执行主体为发送端,当发送端接收到接收端发送的第一个带有数据包标识的接收错误响应消息(no-Acknowlegment,NAK)时,则自动进入重发模式,此时,不再向接收端发送新的数据包;但是,由于已经发送到接收端的其他数据包可能还有被校验完,接收端还没有返回对这些数据包的响应消息,因此,发送端需要继续接收发送缓冲区中其他各已发送数据包的响应消息;等到接收到已发送的全部数据包的响应消息后,就可以根据响应消息的类型及响应消息中携带的数据包标识确定在接收端发生接收错误的数据包,并重发所述在接收端发生错误的数据包。
[0038] 其中,所述响应消息的类型是指:接收正确响应消息ACK(Acknowlegment)或接收错误响应消息NAK。当发送端进入重发模式之后,接收端也进入等待重发模式,此时,接收端会针对接收缓冲区中的各个数据包分别返回响应消息,其中,如果数据包接收正确,则返回ACK消息,否则,就返回NAK消息,每条响应消息中,还携带了数据包的标识,这样,发送端在接收到响应消息后,如果发现时NAK消息,则会从该消息中获取数据包标识,并将该数据包确定为发生了接收错误的数据包。同时,当发送端发现发送缓冲区内所有已发送的数据包都得到了响应之后,便可以知晓接收端已经将接收到的所有数据包都校验完毕,发送端便可以进行数据包的重发操作了。
[0039] 在同一重发模式下,当在接收端发生接收错误的数据包为多个时,可以按照所述发生接收错误的数据包的序列号从小到大的顺序,重发所述在接收端发生接收错误的数据包。可见,发送端在进行数据包重发时,只需要选择性地发送在接收端发生接收错误的数据包。
[0040] 重发的数据包也可能错误的,所以发送端重发完后,需要等到接收端确认重发的数据包都正确了之后再退出。否则,如果重发的数据包也出错,则可以再次重发,直到接收端校验正确。当然,也可以重发数据包的最大次数,当重发次数达到该预置的最大值之后,发送端可以不再重发该数据包。发送端退出重发模式后,继续接收上层下发的新数据包。
[0041] 相应的,参见图2,接收端实现数据包重发的方法包括以下步骤:
[0042] S201:当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;
[0043] S202:接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置。
[0044] 上述步骤S201及S202的执行主体为接收端,当接收端发现发生错误的数据包时,向发送端发送带有数据包标识的NAK消息,同时自动进入等待重发模式;由于已经接收到的数据包可能还有完全被校验完成,因此,需要继续完成对其他已接收数据包的校验,针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息;接收到发送端重发的发生错误的数据包后,进行校验,如果校验通过,将所述重发的数据包按照序列号顺序插入到缓冲区对应的位置,以保证各个数据包之间顺序的正确性。
[0045] 需要说明的是,发送端存在发送缓冲区,已发送但尚未得到接收正确响应消息的数据包会缓存在该发送缓存区中;同时,接收端存在接收缓存区,已接收但尚未向发送端返回接收正确响应,以及正在进行校验过程中的数据包,会缓存在该接收数据包中。因此,接收缓冲区中的数据包,在发送缓冲区中仍然存在。
[0046] 在非重发模式下,如果接收端当前校验完成的数据包正确的情况,可能不会对上对校验完的数据包返回响应消息,而是在正确数据包达到预置数目时,或者在达到预置时间时,向发送端返回一个代表前N个数据包接收正确的ACK(Acknowlegment)消息。
[0047] 而在本发明实施例中,进入重发模式后,会对当前接收缓冲区中的数据包进行批处理,因此,发送端需要以接收缓冲区的数据包全部校验完毕为触发条件,进行数据包的选择性重发。这样,接收端就需要将接收缓冲区中各个数据包的校验结果通知给发送端,以便发送端知晓接收缓冲区中的数据包是否已经全部校验完成,同时,还可以确定需要对哪些数据包进行选择性重发。为此,接收端在进入等待重发模式之后,需要为接收缓冲区中的各个数据包分别返回一个响应消息。
[0048] 其中,如果数据包接收正确,则返回带有该数据包标识的ACK响应消息;如果数据包接收错误,则返回带有数据包标识的NAK响应消息。这样,发送端在接收到响应消息之后,就可以根据消息的类型(ACK或NAK)以及消息中的数据包标识,判断出哪些数据包需要重发。同时,如果发送缓冲区内所有已发送的数据包都收到了响应消息,则发送端就可以获知接收端已经将接收缓冲区内的全部数据包校验完毕,此时,发送端就可以进行数据包的选择性重发了。
[0049] 同样,在同一等待重发模式下,当在接收端发生错误的数据包为多个时,可以按照所述发生错误的数据包的序列号从小到大的顺序,接收发生错误的数据包。此时,在接收到发送端重发的发生错误的数据包之前,还可以将各发生错误的数据包中最小的序列号作为下一个需要接收的数据包的序列号;并且,在发送端重发发生错误的数据包过程中,按照所述发生错误的数据包序列号从小到大的顺序,更新下一个需要接收的数据包的序列号。接收端接收重发的数据,并校验正确后,将数据包按照顺序放在缓冲区正确的位置上,退出重发模式。
[0050] 为了便于理解,下面以利用PCIE协议传输TLP包为例,对本发明实施例提供的方法进行详细地介绍。
[0051] 首先需要说明的是,在进行TLP包的发送与接收的同时,接收端对每个TLP进行校验,两个过程是独立的,因此,接收端在接收到一个TLP包之后会继续接收下一个TLP包,而不用等到上一个TLP包校验完成。因此,当接收端校验发现某个TLP包发生错误时,接收端可能已经接收到了在该TLP包之后发送的多个TLP包。
[0052] 在本发明实施例中,当校验发现某个TLP包发生错误时,则向发送端返回NAK消息,同时设置NAK_SCHESULED标志,进入等待重发模式,NEXT_REC_SEQ标记为第一个需要重发TLP的序列号。该NEXT_REC_SEQ标记是一个跟踪下一个序列号的计数器。正常接收的情况下,假设接收到8号TLP包,接收端的NEXT_REC_SEQ值也是8,则代表现在接收到的TLP包正好是接收端需要接收的TLP包,之后,该8号TLP就会按照接收流程进入其他处理。然后NEXT_REC_SEQ的值就会变成9,以此来标识下一个需要接收到的TLP包的序列号是9,如果下次接收到的不是9号TLP包,接收端就不接收了。
[0053] 参见图3,假设接收端校验发现9号TLP包发生错误,则在本发明实施例中,需要向发送端发送带有该TLP标识的NAK消息,为方便描述,假设该NAK消息为NAK 9;同时,接收端设置NAK_SCHESULED标志位,例如设为1,进入等待重发模式;并且还需要将NEXT_REC_SEQ标记为9,以此来标识出下一个需要接收到的TLP包的序列号是9。
[0054] 发送端在接收到NAK 9消息后,同样也进入重发模式,此时,发送端将不再接收上层下发的新TLP包,因此也不再向接收端发送新的TLP包;但也不需要马上重发9号TLP包,而是等到发送缓冲区里面已经发送的TLP包全部回复完成之后,再对错误的TLP针对性的重发。
[0055] 之所以要等到缓冲区里面已经发送的TLP包全部回复完成之后,再对错误的TLP针对性的重发,是因为,接收端在进入等待重发模式之后,虽然不再接收新的TLP包,但是已经接收的TLP包可能还没有校验完成,因此,在等待重发模式下,发生错误的TLP包可能为多个,而且每次校验完成一个TLP包发现错误时,都需要再针对每个TLP包发送一个带有TLP标识的NAK,在等待重发模式下,也会针对接收正确的数据包返回带有TLP标识的ACK。发送端需要等到所有已经发送的TLP包都校验完成并返回响应消息之后,再对NAK消息对应的TLP包进行选择性地重发。
[0056] 其中,所述还没有完成校验的TLP包可能包括在9号TLP包之前接收到的TLP包,这是因为,对校验TLP包所需的时间与TLP包的长度成正比,因此,对不同的TLP包校验所需的时间会有所不同,这就使得先接收到的TLP包不一定先完成校验,返回的NAK对应的TLP包的词序也不一定与发送顺序相同。同时,由于NEXT_REC_SEQ所标记的第一个需要重发的TLP的序列号,通常为同一重发模式下所有发生错误的TLP包中序列号最小的一个,因此,在等待重发模式下,每发现一个错误的TLP包,在向发送端返回NAK的同时,还需要将该TLP包的序列号与当前NEXT_REC_SEQ中记录的序列号进行比较,如果前者较小,则将NEXT_REC_SEQ中记录的序列号更新为该TLP包的序列号。
[0057] 例如,在上述例子中,由于最先发现9号TLP包发生错误,因此,NEXT_REC_SEQ中记录的序列号为9;但是,如果在等待重发模式下,对7号TLP包完成校验并发现该TLP包发生错误,则在向发送端返回NAK 7的同时,发现该TLP包的序列号7小于当前NEXT_REC_SEQ中记录的序列号为9,因此,还需要将NEXT_REC_SEQ中记录的序列号更新为7,以此来标识出下一个需要重发的TLP的序列号为7。
[0058] 发送端在等到发送出去的全部TLP包都返回响应之后,就可以进行TLP包的重发了。由于接收端的NEXT_REC_SEQ中记录的序列号,为同一重发模式下所有发生错误的TLP包中序列号最小的一个,因此,发送端也首先重发该重发模式下所有发生错误的TLP包中序列号最小的一个。例如,上述例子中,在该重发模式下,最终发现发生错误的TLP包的序列号分别为7、9、11,则发送端会首先重发7号TLP包,然后再依次重发9号及11号。
[0059] 接收端在接收到7号TLP包之后,将该TLP包的序列号与NEXT_REC_SEQ中记录的序列号进行比对,确认一致后,按照序列号将该TLP包插入到缓冲区相应的位置,以保证接收顺序的正确性;同时,从缓冲区得到下个需要重发的TLP序列号9,并将NEXT_REC_SEQ中记录的序列号更新为9,等待发送端重发9号TLP包。以此类推,当全部发生错误的TLP包全部重发成功之后,清除NAK_SCHESULED标志位,例如设为0,退出等待重发模式,返回到正常发送接收模式,继续进行TLP包的传输。
[0060] 其中,在按照序列号将该TLP包插入到缓冲区相应的位置时,由于缓冲区存放TLP包的顺序,是在正常发送流程的时候按照接收的先后顺序存放的,不可能是乱序的;如果在这个次序中有错误的TLP包,比如前述例子中的7、9、11号TLP包,则重发正确之后,把正确的数据包放在原来的位置即可。例如,7号TLP包要在8号前面,不能在后面,9号包要在8、10中间,不能在别的地方,以此来保持原来的顺序。
[0061] 发送端在重发完全部的TLP包,并等到接收端回复重发成功之后,也将退出重发模式,返回到正常发送接收模式,继续进行TLP包的传输即可。
[0062] 总之,利用本发明实施例所述的方法,当接收端发现某个TLP包发生错误时,不必再将该TLP包之后接收到的所有TLP包都进行重发,仅传输发生错误的TLP包即可。
[0063] 可见,通过本发明实施例所述的方法,实现了PCIE链路错误处理过程中的选择性重发机制,可以避免重发冗余数据,减少不必要的链路重发,提高链路的有效使用率。特别在传输数据出现间歇性错误的情况下,带来的效果更加明显。
[0064] 与本发明实施例提供的方法相对应,本发明实施例还提供了一种实现数据包重发的装置,该装置位于发送端,参见图4,该装置包括:
[0065] 消息接收单元U401,用于接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包所返回的响应消息;
[0066] 数据包重发单元U402,用于根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,并重发所述发生接收错误的数据包。
[0067] 发送端进入重发模式后,参见图5,该装置还包括:
[0068] 重发模式退出单元U403,用于将所述发生接收错误的全部数据包重发完毕,且在接收到重发成功消息后,退出重发模式,继续发送新数据包。
[0069] 在同一重发模式下,当发生接收错误的数据包为两个或两个以上时,数据包重发单元U402包括:
[0070] 判断子单元U4021,用于根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包;
[0071] 顺序重发子单元U4022,用于按照所述发生接收错误的数据包的序列号从小到大的顺序,重发所述发生接收错误的数据包。
[0072] 同时,本发明实施例还提供了另一种实现数据包重发的装置,该装置位于接收端,参见图6,该装置包括:
[0073] 消息发送单元U601,用于当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;
[0074] 重发数据包接收单元U602,用于接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置。
[0075] 重发结束后,接收端可以退出等待重发模式,参见图7,该装置还包括:
[0076] 等待重发模式退出单元U603,用于接收到重发的发生接收错误的全部数据包,并且全部校验正确后,退出等待重发模式,继续接收新数据包。
[0077] 通过本发明实施例所述的装置,实现了PCIE链路错误处理过程中的选择性重发机制,可以避免重发冗余数据,减少不必要的链路重发,提高链路的有效使用率。特别在传输数据出现间歇性错误的情况下,带来的效果更加明显。
[0078] 与本发明实施例提供的实现数据包重发的方法及装置相对应,本发明实施例还提供了一种实现数据包重发的系统,参见图8,该系统包括:
[0079] 发送端装置U801,用于接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中已发送数据包所返回的响应消息;根据所述响应消息的类型及携带的数据包标识确定发生接收错误的数据包,重发所述发生接收错误的数据包;
[0080] 接收端装置U802,用于当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置。
[0081] 通过本发明实施例所述的系统,实现了PCIE链路错误处理过程中的选择性重发机制,可以避免重发冗余数据,减少不必要的链路重发,提高链路的有效使用率。特别在传输数据出现间歇性错误的情况下,带来的效果更加明显。
[0082] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,在发送端包括如下步骤:接收到第一个带有数据包标识的接收错误响应消息时,进入重发模式,继续接收针对发送缓冲区中其他各已发送数据包分别返回的响应消息;接收到发送缓冲区中已发送的全部数据包的响应消息后,根据响应消息的类型及携带的数据包标识确定发生接收错误的数据包,并重发所述发生接收错误的数据包。在接收端包括如下步骤:当发现数据包错误时,返回带有该数据包标识的接收错误响应消息;进入等待重发模式,继续完成对其他已接收数据包的校验;针对接收缓冲区内其他各数据包,分别返回带有数据包标识的响应消息,其中,如果数据包接收正确,则返回带有数据包标识的接收正确响应消息,如果数据包接收错误,则返回带有数据包标识的接收错误响应消息;接收重发的发生接收错误的数据包,校验正确后,将所述重发的数据包按照序列号顺序插入到接收缓冲区对应的位置。所述的存储介质,如:ROM/RAM、磁碟、光盘等。
[0083] 以上对本发明所提供的实现数据包重发的方法、装置及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈