单个数据包收发耗时的统计方法、装置及可读存储介质与流程

文档序号:14443942阅读:202来源:国知局
单个数据包收发耗时的统计方法、装置及可读存储介质与流程

本发明涉及数据存储领域,特别涉及一种单个数据包收发耗时的统计方法、装置及可读存储介质。



背景技术:

一般的,上层应用通过其对应的协议发送上层消息时,上层消息会在上层应用的驱动层被拆分并存入若干固定长度的发送内存,这些发送内存会组成一个发送内存链表,从而将该发送内存链表通过发送端发送至接收端。

以rdma协议为例,上层消息通过rdma协议发送时,在rdma驱动层被拆分成若干发送内存。这些发送内存组成一个发送内存链表,调用rdma驱动层发送接口将发送内存链表发送出去,接收端监听到有上层消息发送时,调用接收端的接口将上层消息携带的数据保存到接收内存中,之后用户便可以通过访问接收内存来读取数据,此时,发送内存和接收内存的长度固定且保持一致。其中,发送内存链表中每个发送内存包含一个数据包,对于发送内存链表中的单个数据包的发送耗时时间通过统计一定时间内发送多个数据包的时间与数据包个数的比值进行计算。但是,由于rdma协议单个数据包收发耗时较短,且每个数据包中包含的数据量的大小不会完全相同,即每个数据包的收发耗时也不完全相同,因此采用该方法不能实时统计单个数据包的收发耗时,从而导致单个数据包的收发耗时产生较大误差。

因此,如何实现对单个数据包的收发耗时进行统计以避免单个数据包的收发耗时误差较大的问题是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种单个数据包收发耗时的统计方法、装置及可读存储介质,实现了对单个数据包的收发耗时进行统计从而避免了单个数据包的收发耗时误差较大的问题。

为实现上述目的,本发明实施例提供了如下技术方案:

首先,本发明实施例公开了一种单个数据包收发耗时的统计方法,包括:

接收发送端发送的携带发送时间戳的目标数据;

确定接收所述目标数据的接收时间戳;

根据所述接收时间戳与所述目标数据携带的所述发送时间戳确定所述目标数据的收发耗时;其中,所述目标数据为单个数据包。

优选的,所述接收发送端发送的目标数据包括:

接收所述发送端的目标接口发送的数据发送指令;

根据所述数据发送指令调用数据接收接口;

利用所述数据接收接口预先设定的接收内存接收所述数据发送指令携带的所述目标数据。

优选的,所述根据所述接收时间戳与所述目标数据携带的所述发送时间戳确定所述目标数据的收发耗时包括:

确定与所述目标数据对应的目标接收内存;

读取所述目标接收内存中的所述目标数据携带的所述发送时间戳;

确定所述接收时间戳与所述发送时间戳的差值并将所述差值作为所述收发耗时。

优选的,所述读取所述目标接收内存中的所述目标数据携带的所述发送时间戳包括:

确定所述目标接收内存中与所述发送时间戳对应的目标字节;

从所述目标字节中读取所述发送时间戳。

优选的,若所述标准字节为所述目标数据携带的所述发送端的前八个字节,则根据所述标准字节确定与所述发送时间戳的所述目标字节包括:

确定所述目标接收内存中与所述前八个字节对应的字节;

将所述字节作为与所述发送时间戳对应的所述目标字节。

然后,本发明实施例公开了一种单个数据包收发耗时的统计装置,包括:

目标数据接收模块,用于接收发送端发送的携带发送时间戳的目标数据;

接收时间戳确定模块,用于确定接收所述目标数据的接收时间戳;

收发耗时确定模块,用于根据所述接收时间戳与所述目标数据携带的所述发送时间戳确定所述目标数据的收发耗时;其中,所述目标数据为单个数据包。

优选的,所述目标数据接收模块包括:

数据发送指令发送单元,用于接收所述发送端的目标接口发送的数据发送指令;

数据接收接口调用单元,用于根据所述数据发送指令调用数据接收接口;

目标数据接收单元,用于利用所述数据接收接口预先设定的接收内存接收所述数据发送指令携带的目标数据。

其次,本发明实施例公开了另一种单个数据包收发耗时的统计装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述存储器中存储的计算机程序以实现如上任一项所述的单个数据包收发耗时的统计方法的步骤。

最后,本发明实施例公开了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上任一项所述的单个数据包收发耗时的统计方法的步骤。

可见,本发明实施例公开的一种单个数据包收发耗时的统计方法,首先接收发送端发送的目标数据,然后确定接收目标数据的接收时间戳,最后,根据当前接收到的目标数据的接收时间戳和目标数据自身携带的发送时间戳确定目标数据的收发耗时,其中,目标数据为单个数据包。因此,通过在单个数据包中添加时间戳,从而确定出单个数据包的发送时间和接收时间,进一步确定出单个数据包的收发耗时,避免了对内存链表中的多个数据进行计时后利用多个数据包所用的总的时间与数据包个数的比值计算单个数据包的收发耗时而引起的误差较大的问题。本发明实施例还公开了一种单个数据包收发耗时的统计装置及可读存储介质,同样能实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种单个数据包收发耗时的统计方法流程示意图;

图2为本发明实施例公开的一种单个数据包收发耗时的统计装置结构示意图;

图3为本发明实施例公开的另一种单个数据包收发耗时的统计装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种单个数据包收发耗时的统计方法、装置及可读存储介质,实现了对单个数据包的收发耗时进行统计从而避免了单个数据包的收发耗时误差较大的问题。

请参见图1,图1为本发明实施例公开的一种单个数据包收发耗时的统计方法流程示意图,如图1所示,包括:

s101、接收发送端发送的携带发送时间戳的目标数据。

具体的,本实施例中,当发送端需要发送应用数据至接收端时,会将应用数据拆分成多个数据包,并将各数据包存入至对应的发送区域,此时,目标数据便为存入至各发送区域的单个数据包;其中,可以在发送区域的设定字节内写入发送时间戳,并将该发送时间戳与目标数据一起发送。以rdma协议为例,当上层消息通过rdma协议发送时,上层应用数据在rdma驱动层被拆分并存入各发送区域,之后,发送端调用ibv_post_send接口将发送内存中的应用数据与发送时间戳一起发送,其中,可以为发送端和接收端分配统一长度l的发送区域和接收内存,定义每个发送区域的起始地址并保留发送区域的前8个字节保存发送时间戳,则发送区域中存储数据的有效存储空间为l-8。即发送时间戳占8个字节,目标数据占l-8个字节;当发送区域中的发送时间戳与目标数据发送后,接收端调用ibv_post_recv接口指定多个接收内存接收目标数据与发送时间戳,之后当ibv_poll_cq接口感应到接收内存有接收数据后,则返回已存入目标数据的接收内存,上层应用便可以将各接收内存接收的目标数据进行拼接,得到完整的应用数据。当然,发送时间戳写入的字节数可以根据具体的系统环境进行设定,在此并不作限定。

进一步,发送时间戳为当前目标数据由发送端发送的时刻,例如,发送端在零点时刻发送该目标数据,则对应的发送时间戳变为零点时刻。

s102、确定接收目标数据的接收时间戳。

具体的,本实施例中,接收时间戳为接收端接收到发送端发送的目标数据的时刻,发送时间戳所占的字节数与接收时间戳所占的字节数应该一致,例如,发送区域中预留8个字节用于保存发送时间戳,则对应的,接收内存中也应该预留8个字节用于保存发送时间戳,也就是说,当发送区域中前8个字节中的发送时间戳随目标数据一起发送后,接收内存中的前8个字节用于保存发送时间戳,剩余的空间则用来存储目标数据。

s103、根据接收时间戳与目标数据携带的发送时间戳确定目标数据的收发耗时,其中,目标数据为单个数据包。

具体的,本实施例中,收发耗时可以根据接收时间戳与发送时间戳的差值进行确定。

需要说明的是,本实施例中,发送端发送的目标数据不限定于一个,其可以同时发送多个,对应每一个目标数据,分配接收内存接收该目标数据以及该目标数据对应的发送时间戳,当接收端接收到各目标数据后,确定接收各目标数据的接收时间戳,并分别读取各接收内存中的目标数据携带的发送时间戳,以此求得各目标数据收发耗时。

可见,本发明实施例公开的一种单个数据包收发耗时的统计方法,首先接收发送端发送的目标数据,然后确定接收目标数据的接收时间戳,最后,根据当前接收到的目标数据的接收时间戳和目标数据自身携带的发送时间戳确定目标数据的收发耗时,其中,目标数据为单个数据包。因此,通过在单个数据包中添加时间戳,从而确定出单个数据包的发送时间和接收时间,进一步确定出单个数据包的收发耗时,避免了对内存链表中的多个数据进行计时后利用多个数据包所用的总的时间与数据包个数的比值计算单个数据包的收发耗时而引起的误差较大的问题。

基于上述实施例,在本实施例中,接收发送端发送的目标数据包括:

接收发送端的目标接口发送的数据发送指令;

根据数据发送指令调用数据接收接口;

利用数据接收接口预先设定的接收内存接收数据发送指令携带的目标数据。

具体的,本实施例中,目标接口为发送端发送目标数据时的发送接口,例如,rdma协议中的ibv_post_send接口,当然,根据实际系统环境,该目标接口也可以为其他接口,在此并不作限定。当发送端调用目标接口后,发送数据发送指令,接收端接收到该数据发送指令后,调用接收端的数据接收接口,例如,rdma协议中的ibv_post_recv接口。数据接收接口根据接收到的目标数据调用对应的接收内存存储接收到的目标数据以及发送时间戳。

基于上述实施例,在本实施例中,根据接收时间戳与目标数据携带的发送时间戳确定目标数据的收发耗时包括:

确定与目标数据对应的目标接收内存;

读取目标接收内存中的目标数据携带的发送时间戳;

确定接收时间戳与发送时间戳的差值并将差值作为收发耗时。

具体的,本实施例中,目标接收内存为接收该目标数据的接收端的内存区域,目标接收内存中对应存储有目标数据携带的发送时间戳,然后确定接收端接收发送端发送的目标数据的接收时间戳,再从目标接收内存中读取目标数据携带的发送时间戳,再求的接收时间戳与发送时间戳的差值,以将该差值作为发送该目标数据至接收端所用的收发耗时。

基于上述实施例,在本实施例中,读取目标接收内存中的目标数据携带的发送时间戳包括:

确定目标接收内存中与发送时间戳对应的目标字节;

从目标字节中读取发送时间戳。

具体的,本实施例中,目标字节为存储发送时间戳对应的存储区域,目标字节的大小与发送端中存储发送时间戳的字节大小应保持一致。例如,当发送端中存储发送时间戳的字节为前8个字节,则对应的目标字节也为目标接收内存中的前8个字节。确定目标字节后,从目标字节中读取发送时间戳。

基于上述实施例,在本实施例中,确定目标接收内存中的与发送时间戳对应的目标字节包括:

确定与发送时间戳对应的标准字节;

根据标准字节确定与发送时间戳对应的目标字节。

具体的,本实施例中,标准字节为发送端保存该发送时间戳的字节,当确定发送端保存该发送时间戳的标准字节后,根据标准字节的大小以及位置确定接收端中与发送端的标准字节的大小以及位置对应的目标字节。

基于上述实施例,在本实施例中,若标准字节为目标数据携带的发送端的前八个字节,则根据标准字节确定与发送时间戳的目标字节包括:

确定目标接收内存中与前八个字节对应的字节;

将字节作为与发送时间戳对应的目标字节。

具体的,本实施例中,标准字节为发送端为将要发送的目标字节分配的存储发送时间戳的字节,其中,发送端将应用数据拆分后,将每一份数据对应存储于发送端分配的发送区域,每一个发送区域的前八个字节用于存储发送时间戳,每一个发送区域中的发送时间戳与每个发送区域中的目标数据相对应。

请参见图2,图2为本发明实施例公开的一种单个数据包收发耗时的统计装置结构示意图,如图2所示,包括:

目标数据接收模块201,用于接收发送端发送的携带发送时间戳的目标数据;

接收时间戳确定模块202,用于确定接收所述目标数据的接收时间戳;

收发耗时确定模块203,用于根据所述接收时间戳与所述目标数据携带的所述发送时间戳确定所述目标数据的收发耗时;其中,所述目标数据为单个数据包。

可见,本发明实施例公开的一种单个数据包收发耗时的统计装置,首先目标数据接收模块接收发送端发送的目标数据,然后接收时间戳确定模块确定接收目标数据的接收时间戳,最后,收发耗时确定模块根据当前接收到的目标数据的接收时间戳和目标数据自身携带的发送时间戳确定目标数据的收发耗时,其中,目标数据为单个数据包。因此,通过在单个数据包中添加时间戳,从而确定出单个数据包的发送时间和接收时间,进一步确定出单个数据包的收发耗时,避免了对内存链表中的多个数据进行计时后利用多个数据包所用的总的时间与数据包个数的比值计算单个数据包的收发耗时而引起的误差较大的问题。

基于上述实施例,在本实施例中,目标数据接收模块包括:

数据发送指令发送单元,用于接收发送端的目标接口发送的数据发送指令;

数据接收接口调用单元,用于根据数据发送指令调用数据接收接口;

目标数据接收单元,用于利用数据接收接口预先设定的接收内存接收数据发送指令携带的目标数据。

基于上述实施例,在本实施例中,收发耗时确定模块包括:

目标接收内存确定单元,用于确定与所述目标数据对应的目标接收内存;

发送时间戳读取单元,用于读取目标接收内存中的目标数据携带的发送时间戳;

收发耗时确定单元,用于确定接收时间戳与发送时间戳的差值并将差值作为收发耗时。

基于上述实施例,在本实施例中,发送时间戳读取单元包括:

第一目标字节确定子单元,用于确定目标接收内存中与发送时间戳对应的目标字节;

发送时间戳读取子单元,用于从目标字节中读取发送时间戳。

基于上述实施例,在本实施例中,第一目标字节确定子单元包括:

标准字节确定子单元,用于确定与发送时间戳对应的标准字节;

第二目标字节确定子单元,用于根据标准字节确定与发送时间戳对应的目标字节。

基于上述实施例,在本实施例中,第二目标字节确定子单元包括:

字节确定子单元,用于确定目标接收内存中与前八个字节对应的字节;

第三目标字节确定子单元,用于将字节作为与发送时间戳对应的目标字节。

请参见图3,图3为本发明实施例提供的另一种基于网络行为的扫描检测装置示意图,包括:

存储器301,用于存储计算机程序;

处理器302,用于执行存储器中存储的计算机程序以实现以上任一项提到的单个数据包收发耗时的统计方法的步骤。

为了更好地理解本方案,本发明实施例提供的一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上任一实施例提到的单个数据包收发耗时的统计方法的步骤。

以上对本申请所提供的一种单个数据包收发耗时的统计方法、装置及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本说明书中,诸如接收和发送等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1