小流报文重传方法、系统、电子设备及存储介质转让专利

申请号 : CN202211463460.9

文献号 : CN115550250B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马增协王海燕刘凯黄勇程运财

申请人 : 鹏城实验室

摘要 :

本申请公开了一种小流报文重传方法、系统、电子设备及存储介质,所述小流报文重传方法应用于报文发送端,包括以下步骤:获取小流报文;根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文;将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端。本申请解决了现有技术重传小流报文的时效性较差的技术问题。

权利要求 :

1.一种小流报文重传方法,其特征在于,所述小流报文重传方法应用于报文发送端,包括以下步骤:获取小流报文;

对所述小流报文的标识号进行二次哈希,确定所述小流报文的存储位置;

判断所述存储位置对应的目标流的信息与所述小流报文的信息是否匹配;

若确定所述目标流的信息与所述小流报文的信息匹配,则判断所述小流报文的第一序列号是否小于所述存储位置对应的第二序列号;

若确定所述第一序列号小于所述第二序列号,则确定所述小流报文为小流重传报文;

将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端。

2.如权利要求1所述的小流报文重传方法,其特征在于,所述获取小流报文的步骤包括:获取数据流;

若根据预设大流识别算法确定所述数据流不为大流,则将所述数据流确定为小流,并将所述小流划分至第一消息队列;

从所述第一消息队列中获取小流报文。

3.如权利要求1所述的小流报文重传方法,其特征在于,所述判断所述存储位置对应的目标流的信息与所述小流报文的信息是否匹配的步骤之后,还包括:若所述目标流的信息与所述小流报文的信息不匹配,则统计所述小流报文对应的数据流的第一数据量;

当所述第一数据量超过所述存储位置中的初始数据流的第二数据量时,从所述存储位置中删除所述初始数据流,并将所述小流报文对应的数据流存入所述存储位置中。

4.如权利要求1所述的小流报文重传方法,其特征在于,所述将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端的步骤包括:创建用户态可读写的内存队列,其中,所述用户态可读写的内存队列包括预留区域;

将所述小流重传报文发送至预设快速传输通道,并为所述小流重传报文分配目标描述符;

根据所述目标描述符在所述预留区域中存储所述小流重传报文;

通过网卡驱动将所述预留区域中的小流重传报文发送至报文接收端。

5.如权利要求1所述的小流报文重传方法,其特征在于,所述将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端的步骤包括:将所述小流重传报文发送至预设快速传输通道;

确定所述小流重传报文对应的目标报文类型,并基于所述目标报文类型对所述小流重传报文进行封装;

通过网卡驱动将封装后的所述小流重传报文发送至报文接收端。

6.一种小流报文重传系统,其特征在于,所述小流报文重传系统包括报文发送端和报文接收端,其中,所述报文发送端,用于获取小流报文;

所述报文发送端,还用于对所述小流报文的标识号进行二次哈希,确定所述小流报文的存储位置;判断所述存储位置对应的目标流的信息与所述小流报文的信息是否匹配;若确定所述目标流的信息与所述小流报文的信息匹配,则判断所述小流报文的第一序列号是否小于所述存储位置对应的第二序列号;若确定所述第一序列号小于所述第二序列号,则确定所述小流报文为小流重传报文;

所述报文发送端,还用于将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端;

所述报文接收端,用于接收报文发送端发送的初始报文;

所述报文接收端,还用于通过网卡驱动上加载的XDP程序捕获并解析所述初始报文,根据解析后的初始报文确定所述初始报文的报文类型;

所述报文接收端,还用于若根据所述初始报文的报文类型确定所述初始报文为小流重传报文,则将所述小流重传报文通过预设快速接收通道,发送给对应的用户态模块。

7.一种电子设备,其特征在于,所述电子设备包括:至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至5中任一项所述小流报文重传方法的步骤。

8.一种存储介质,其特征在于,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有实现小流报文重传方法的程序,所述实现小流报文重传方法的程序被处理器执行以实现如权利要求1至5中任一项所述小流报文重传方法的步骤。

说明书 :

小流报文重传方法、系统、电子设备及存储介质

技术领域

[0001] 本申请涉及通信领域,尤其涉及一种小流报文重传方法、系统、电子设备及存储介质。

背景技术

[0002] 分布协同网络仿真验证平台已经成为世界各国的研究热点和网络靶场技术的发展趋势,平台之间为了更有效地进行协同工作以及资源共享,目前已经进入大规模分布式平台建设阶段。平台之间通过专线、互联网等方式进行网络互联,其中通过互联网联接是比较通用的方式。不同平台通过网关设备在互联网上建立安全加密隧道,在加密隧道上传输联邦靶场间的用户流量。因互联网上存在网络拥塞、时延抖动等问题,会存在部分报文丢失或者应答报文延时的现象,这都会触发TCP(Transmission Control Protocol,传输控制协议)报文重传机制对丢失或者未应答的报文进行重传。
[0003] WireGuard协议是新一代的安全加密隧道实现方式,具有加密方式先进、配置简单等特点。目前WireGuard VPN(Virtual Private Network,虚拟专用网络)网关传输数据时并不会区分正常报文和小流重传报文,故而,原本优先级更高的小流重传报文需要重新进行排队才能发送出去。小流又称为老鼠流,通常对应我们的应用,数据量小,持续时间短,但对时效性的要求较高,通常需要在尽量短的时间内完成,故而,通过重新排队传输的方式重传小流报文往往难以满足小流传输对时效性的要求。

发明内容

[0004] 本申请的主要目的在于提供一种小流报文重传方法、系统、电子设备及存储介质,旨在解决现有技术重传小流报文的时效性较差的技术问题。
[0005] 为实现上述目的,本申请提供一种小流报文重传方法,所述小流报文重传方法应用于报文发送端,包括以下步骤:
[0006] 获取小流报文;
[0007] 根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文;
[0008] 将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端。
[0009] 本申请还提供一种小流报文重传方法,所述小流报文重传方法应用于报文接收端,包括以下步骤:
[0010] 接收报文发送端发送的初始报文;
[0011] 通过网卡驱动上加载的XDP程序捕获并解析所述初始报文,根据解析后的初始报文确定所述初始报文的报文类型;
[0012] 若根据所述初始报文的报文类型确定所述初始报文为小流重传报文,则将所述小流重传报文通过预设快速接收通道,发送给对应的用户态模块。
[0013] 本申请还提供一种小流报文重传系统,所述小流报文重传系统包括报文发送端和报文接收端,其中,
[0014] 所述报文发送端,用于获取小流报文;
[0015] 所述报文发送端,还用于根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文;
[0016] 所述报文发送端,还用于将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端;
[0017] 所述报文接收端,用于接收报文发送端发送的初始报文;
[0018] 所述报文接收端,还用于通过网卡驱动上加载的XDP程序捕获并解析所述初始报文,根据解析后的初始报文确定所述初始报文的报文类型;
[0019] 所述报文接收端,还用于若根据所述初始报文的报文类型确定所述初始报文为小流重传报文,则将所述小流重传报文通过预设快速接收通道,发送给对应的用户态模块。
[0020] 本申请还提供一种电子设备,所述电子设备为实体设备,所述电子设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的所述小流报文重传方法的程序,所述小流报文重传方法的程序被处理器执行时可实现如上述的小流报文重传方法的步骤。
[0021] 本申请还提供一种存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有实现小流报文重传方法的程序,所述小流报文重传方法的程序被处理器执行时实现如上述的小流报文重传方法的步骤。
[0022] 本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的小流报文重传方法的步骤。
[0023] 本申请提供了一种小流报文重传方法、系统、电子设备及存储介质,通过获取小流报文,根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文,实现了小流重传报文的识别,进而通过将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端,实现了小流重传报文的快速转发。相比于通过重新排队传输的方式重传小流报文,本申请在从小流报文中识别到小流重传报文之后,直接通过快速传输通道将小流重传报文发送至报文接收端,而无需重新排队,有效减少了小流重传报文在队列中的等待时间,提高了小流报文重传的效率,减少了小流报文的网络延迟现象,提高了用户体验,克服了现有技术重传小流报文的时效性较差的技术问题。

附图说明

[0024] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
[0025] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0026] 图1为本申请小流报文重传方法一实施例的流程示意图;
[0027] 图2为本申请小流报文重传方法另一实施例的流程示意图;
[0028] 图3为本申请小流报文重传方法应用于报文发送端的一实施例的流程示意图;
[0029] 图4为本申请小流报文重传方法一实施例的流程示意图;
[0030] 图5为本申请小流报文重传方法应用于报文发送端的另一实施例的流程示意图;
[0031] 图6为本申请小流报文重传方法涉及的系统结构示意图;
[0032] 图7为本申请小流报文重传方法应用于报文接收端的一实施例的流程示意图;
[0033] 图8为本申请实施例中小流报文重传系统的结构示意图;
[0034] 图9为本申请实施例中小流报文重传方法涉及的硬件运行环境的设备结构示意图。
[0035] 本申请目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0036] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。
[0037] 分布协同网络仿真验证平台已经成为世界各国的研究热点和网络靶场技术的发展趋势,平台之间为了更有效地进行协同工作以及资源共享,目前已经进入大规模分布式平台建设阶段。平台之间通过专线、互联网等方式进行网络互联,其中通过互联网联接是比较通用的方式。不同平台通过网关设备在互联网上建立安全加密隧道,在加密隧道上传输联邦靶场间的用户流量。因互联网上存在网络拥塞、时延抖动等问题,会存在部分报文丢失或者应答报文延时的现象,这都会触发TCP(Transmission Control Protocol,传输控制协议)报文重传机制对丢失或者未应答的报文进行重传。
[0038] WireGuard协议是新一代的安全加密隧道实现方式,具有加密方式先进、配置简单等特点。目前WireGuard VPN(Virtual Private Network,虚拟专用网络)网关传输数据时并不会区分正常报文和小流重传报文,而且目前流量调度算法主要是针对流的优先级进行调度,网关设备存在大量的数据流,除少数特殊流外,并不会对每条流设置优先级。所以,针对同一优先级数据流的正常报文和小流重传报文,网关设备上是无法区分的,那么小流重传报文会重新排队才能发送出去,例如,如图1所示,VPN网关转发三条用户的数据流pkt_1、pkt_2和pkt_3,其中pkt_1、pkt_2为TCP报文,pkt_3为UDP报文,假如pkt_1流中的序列号为seq=5和seq=6的报文发生丢失,需要重传,那么序列号为seq=5和seq=6的小流重传报文需要等待队列中的pkt_2和pkt_3发送完毕后才能重新发送,但实际上序列号为seq=5和seq=6的报文的优先级应该是高于pkt_2和pkt_3的。故而,会导致原本优先级更高的小流重传报文需要重新进行排队才能发送出去。
[0039] 数据流根据其占据链路带宽的比重或占据带宽的大小可以分为大流和小流,其中,大流又称为大象流,占据链路的带宽较大,为一些长时间活跃的TCP报文,对网络延迟的要求较低,对带宽要求较高,而小流又称为老鼠流,通常对应我们的应用,数据量小,持续时间短,但对时效性的要求较高,通常需要在尽量短的时间内完成。故而,通过重新排队传输的方式重传小流报文往往难以满足小流传输对时效性的要求。
[0040] 对此,本申请提出了一种小流报文重传方法、系统、电子设备及存储介质,通过获取小流报文,根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文,实现了小流重传报文的识别,进而通过将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端,实现了小流重传报文的快速转发。示例性地,参考图2,数据流pkt_1、pkt_2和pkt_3中未丢失的报文仍可以通过正常路径转发,而序列号为seq=5和seq=6的报文丢失后,触发重传机制,生成小流重传报文,序列号为seq=5和seq=6的小流重传报文,无需在正常转发路径中重新排队,可以直接通过快速传输通道进行传输,有效减少了小流重传报文在队列中的等待时间,提高了小流报文重传的效率,减少了小流报文的网络延迟现象,提高了用户体验。
[0041] 本申请实施例提供一种小流报文重传方法,在本申请小流报文重传方法的一实施例中,参照图3,所述小流报文重传方法应用于报文发送端,包括以下步骤:
[0042] 步骤S10,获取小流报文;
[0043] 在本实施例中,需要说明的是,本实施例应用于WireGuard VPN网关的报文发送端,WireGuard是Linux操作系统支持的一种安全的网络隧道,基于Linux的内核虚拟网络接口实现,其目标是在大多数情况下取代IPSEC(Internet Protocol Security,互联网安全协议),以及流行的用户空间和/或基于TLS(Transport Layer Security,传输层安全协议)的解决方案,例如OpenVPN(一种VPN软件),同时更安全、性能更高且更易于使用。
[0044] 数据流根据其占据链路带宽的比重或占据带宽的大小可以分为大流和小流,其中,大流又称为大象流,占据链路的带宽较大,为一些长时间活跃的TCP报文,对网络延迟的要求较低,对带宽要求较高,而小流又称为老鼠流,通常对应我们的应用,数据量小,持续时间短,具有一定的间歇性,但对时效性的要求较高,通常需要在尽量短的时间内完成。在区分大流和小流时,可以自行根据经验值和实际需要设定阈值对大流和小流进行划分,例如,可以根据不同流的数据量等进行划分,超过预设数据量限值的为大流,否则判定为小流等。
[0045] 具体地,可以根据预设的小流识别算法和预设限值,从接收到的数据流中识别小流并获取对应的小流报文,也可以根据预设的大流识别算法和预设限值,从接收到的数据流中识别大流,并将未识别为大流的数据流确定为小流,并获取对应的小流报文,其中,所述预设的小流识别算法和预设的大流识别算法与现有技术相似,例如,基于LRU(Least Recently Used,最近最少使用)的流检测算法、基于FEFS(Flow Extracting with Frequence and Size,频率和大小的流提取)的流检测算法,基于Count‑Min Sketch(计数‑最小略图)的流识别算法等,具体地算法内容在此不过多赘述。
[0046] 可选地,所述获取小流报文的步骤包括:
[0047] 步骤S11,获取数据流;
[0048] 步骤S12,若根据预设大流识别算法确定所述数据流不为大流,则将所述数据流确定为小流,并将所述小流划分至第一消息队列;
[0049] 步骤S13,从所述第一消息队列中获取小流报文。
[0050] 在本实施例中,需要说明的是,小流报文多为持续性、间歇性的小报文,或者一次性的流量都可以称为小流,故而统计和识别比较困难。但是现有的大流的检测、识别和统计的算法比较多而且准确性高,具体可以基于硬件也可以基于软件。
[0051] 具体地,获取待进行数据传输的数据流,根据预设的大流识别算法判断所述数据流是否为大流,若根据预设大流识别算法确定所述数据流不为大流,则将所述数据流确定为小流,并将所述小流划分至第一消息队列,若根据预设大流识别算法确定所述数据流为大流,则将所述大流划分至第二消息队列,故而从所述第一消息队列中获取到的即为小流报文,其中,所述第一消息队列与所述第二消息队列是对等的,相互独立且优先级相同。
[0052] 在一种可实施的方式中,所述大流识别算法可以为基于Count‑Min Sketch的大流检测算法,其中,Count‑Min Sketch是最经典的数据概要算法之一,可以看作由k个长度为w的一维数组组成的次线性空间的数据结构,即k*w大小的二维数组,同时每行由相互独立的全域哈希函数负责更新,当新的数据流到达时,流标识符分别通过k个哈希函数进行计算,结果表示在数组中的位置,然后分别在对应的项中进行更新,查询时,返回标识符对应的k个数组中计数最小的值作为查询值,具体的Count‑Min Sketch大流检测算法与现有技术相似,在此不过多赘述。
[0053] 在本实施例中,通过对大流和小流进行分类处理,使得小流的统计和存储更加准确,且由于大流对网络延迟的要求较低,小流对时效性的要求较高,故而可以适应性地且针对性地对提高小流报文的重传效率,还可以避免受到大流小流重传报文的影响,进而可以进一步提高小流报文的重传效率。
[0054] 步骤S20,根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文;
[0055] 在本实施例中,具体地,将每次获取到的小流报文进行存储,每次获取到新的小流报文时,根据预设小流重传报文识别算法,将当前获取到的小流报文与已存储的小流报文进行信息比对,判断当前获取到的小流报文是否与已存储的小流报文的信息匹配,若当前获取到的小流报文与已存储的小流报文的信息匹配,则可以判定当前获取的小流报文为小流重传报文,若当前获取到的小流报文与已存储的小流报文的信息不匹配,则可以判定当前获取的小流报文不为小流重传报文,其中,用于比对的信息可以为报文的源IP地址、源端口、目的IP地址和、目的端口和传输层协议等。
[0056] 在一种可实施的方式中,可以通过哈希表存储和查询小流的关键信息,以提高报文查询和存储的效率,进而可以提高小流重传报文的识别效率。
[0057] 步骤S30,将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端。
[0058] 在本实施例中,具体地,在常规传输通道的基础上,增加与常规传输通道相互独立且优先级相同的快速传输通道,若确定所述小流报文为小流重传报文,则将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端,若确定所述小流报文不为小流重传报文,则将所述小流报文发送至常规传输通道,通过网卡驱动中加载的XDP程序将所述小流报文发送至报文接收端,以此实现小流报文与小流重传报文的分流。
[0059] 可选地,所述将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端的步骤包括:
[0060] 步骤A10,创建用户态可读写的内存队列,其中,所述用户态可读写的内存队列包括预留区域;
[0061] 在本实施例中,所述小流重传报文的重传通过XDP(eXpress Data Path,快速数据路径)技术来实现。目前,XDP技术的收发包环形队列不支持数据的插队,故而,可以在创建用户态可读写的内存队列时,在所述用户态可读写的内存队列中分配一块预留区域,并设计一个快速传输通道指向所述预留区域,其中,所述预留区域的优先级可以高于或等于所述用户态可读写的内存队列中的其他区域,当所述预留区域和所述用户态可读写的内存队列中的其他区域中均存在待发送的报文时,可以优先处理预留区域中的小流重传报文。
[0062] 步骤A20,将所述小流重传报文发送至预设快速传输通道,并为所述小流重传报文分配目标描述符;
[0063] 在本实施例中,具体地,预先建立传输小流重传报文的快速传输通道,若确定所述小流报文为小流重传报文,则将所述小流重传报文发送至所述快速传输通道,并为所述快速传输通道中的小流重传报文分配对应的目标描述符,所述描述符用于指定所述小流重传报文在用户态可读写的内存队列中的存储地址,为所述小流重传报文分配的目标描述符指定的目标存储地址在所述预留区域中。
[0064] 步骤A30,根据所述目标描述符在所述预留区域中存储所述小流重传报文;
[0065] 在本实施例中,具体地,根据所述目标描述符确定所述小流重传报文在所述预留区域中的目标存储地址,将所述小流重传报文存储至所述目标存储地址。
[0066] 步骤A40,通过网卡驱动将所述预留区域中的小流重传报文发送至报文接收端。
[0067] 在本实施例中,具体地,通过网卡驱动中加载的XDP程序,消耗所述目标描述符,即可将所述目标描述符对应的目标存储地址中的小流重传报文发送至报文接收端。
[0068] 可选地,所述将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端的步骤包括:
[0069] 步骤B10,将所述小流重传报文发送至预设快速传输通道;
[0070] 在本实施例中,具体地,预先建立传输小流重传报文的快速传输通道,若确定所述小流报文为小流重传报文,则将所述小流重传报文发送至所述快速传输通道。
[0071] 步骤B20,确定所述小流重传报文对应的目标报文类型,并基于所述目标报文类型对所述小流重传报文进行封装;
[0072] 步骤B30,通过网卡驱动中加载的XDP程序将封装后的所述小流重传报文发送至报文接收端。
[0073] 在本实施例中,需要说明的是,wireguard的现有报文类型包括Invalid、Handshake initiation、Handshake response、Handshake cookie和Data,在此基础上,预先新增一个用于表示小流重传报文的目标报文类型,在一种可实施的方式中,所述目标报文类型可以为eXpress data(快速传输数据)。
[0074] 具体地,确定所述快速传输通道中的小流重传报文的报文类型为目标报文类型,基于所述目标报文类型对所述小流重传报文进行封装,通过网卡驱动中加载的XDP程序将封装后的所述小流重传报文发送至报文接收端,以供报文接收端通过封装后的小流重传报文的头部中报文类型的关键字段即可判断接收到的报文是否为小流重传报文。
[0075] 在一种可实施的方式中,参照图4,令wireguard的现有报文类型Invalid=0、Handshake initiation=1、Handshake response=2、Handshake cookie=3和Data=4,新增的目标报文类型eXpress data=5,封装后的小流重传报文头部中报文类型的关键字段即为type=5,而正常报文头部中报文类型的关键字段即为type=4。
[0076] 在本实施例中,通过获取小流报文,根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文,实现了小流重传报文的识别,进而通过将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端,实现了小流重传报文的快速转发。相比于通过重新排队传输的方式重传小流报文,本申请在从小流报文中识别到小流重传报文之后,直接通过快速传输通道将小流重传报文发送至报文接收端,而无需重新排队,有效减少了小流重传报文在队列中的等待时间,提高了小流报文重传的效率,减少了小流报文的网络延迟现象,提高了用户体验,克服了现有技术重传小流报文的时效性较差的技术问题。
[0077] 进一步地,参照图5,基于本申请上述实施例,在本申请另一实施例中,与上述实施例相同或相似的内容,可以参考上文介绍,后续不再赘述。在此基础上,所述根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文的步骤包括:
[0078] 步骤S21,对所述小流报文的标识号进行二次哈希,确定所述小流报文的存储位置;
[0079] 在本实施例中,需要说明的是,本申请中存储小流的数据结构如图6所示,由具有r行和w列的存储桶的二维阵列组成,其中i∈[1,w],j∈[1,r],存储桶中每个坐标用于存储一个流,具体包括有流的基础信息D(i,j),流的数据量C(i,j)和流的序列号S(i,j),属于同一个流的一个或多个报文存储于同一个坐标的位置中。
[0080] 具体地,当接收到所述小流报文时,利用预设第一哈希函数和预设第二哈希函数分别对所述小流报文的标识号进行哈希,分别确定所述目标流在存储桶中的行坐标和列坐标,即可确定所述小流报文在哈希桶中的存储位置,其中,所述标识号为用于标识流的唯一的编号,例如五元组,具体包括源IP地址、源端口、目的IP地址、目的端口和传输层协议。
[0081] 步骤S22,判断所述存储位置对应的目标流的信息与所述小流报文的信息是否匹配;
[0082] 在本实施例中,具体地,判断所述存储位置对应的目标流的信息与所述小流报文的信息是否匹配,即,判断所述小流报文对应的小流是否存储于当前计算确定的存储位置,其中,用于匹配的信息可以为流的特征信息,例如五元组等。
[0083] 可选地,所述判断所述存储位置对应的目标流的信息与所述小流报文的信息是否匹配的步骤之后,还包括:
[0084] 步骤C10,若所述目标流的信息与所述小流报文的信息不匹配,则统计所述小流报文对应的数据流的第一数据量;
[0085] 在本实施例中,具体地,若所述目标流的信息与所述小流报文的信息不匹配,则说明出现了哈希冲突,此时,所述存储地址中已经存储有初始数据流,所述小流报文为新请求存入所述存储地址的新流的报文,本实施例通过比较新流和初始数据流的数据量的大小来确定新流和初始数据流的取舍,故而,从此时开始,每次接收到新流的小流报文之后,统计所述小流报文对应的数据流,也即所述新流的第一数据量,所述第一数据量是所述新流中接收到的全部报文的总数据量,初始数据流的第二数据量可以直接从所述存储地址获取。
[0086] 步骤C20,当所述第一数据量超过所述存储位置中的初始数据流的第二数据量时,从所述存储位置中删除所述初始数据流,并将所述小流报文对应的数据流存入所述存储位置中。
[0087] 在本实施例中,具体地,比较所述新流当前的第一数据量和所述存储位置中原本存储的初始数据流的第二数据量,若所述第一数据量小于所述存储位置中的初始数据流的第二数据量,则说明所述新流目前的数据量较小,有可能为干扰项,此时舍弃所述小流报文的数据,不更新桶内存储的数据,但存储所述新流的第一数据量,当后续再接收到所述新流的新的小流报文时,加上新的小流报文的数据量之后,得到新的第一数据量,再将新的第一数据量与所述第二数据量进行比较,需要说明的是,每次接收到所述初始数据流的小流报文时,也可以对所述第二数据量进行更新;当所述第一数据量超过所述存储位置中的初始数据流的第二数据量时,将所述存储位置中的所述初始数据流舍弃,并将所述小流报文对应的数据流,也即所述新流的数据存入所述存储位置中。
[0088] 正常情况下二次哈希出现哈希冲突的概率非常小,如果还是出现了哈希冲突,通过匹配哈希前的原始信息的方式可以及时发现并进行处理,在出现哈希冲突时,例如,假设桶内某个位置原本存储有小流A,然后在相同位置接收到小流B,可能存在以下三种情况:(1)当网关在一段时间未检测到用户数据小流A,那这暂停的时间里,很难判断这条流是停止了,还是暂停发送,正好这段时间,如果有新流B映射到这个桶内,那么正常情况下应该更新桶内存储的信息,但为了保持桶内存储数据的稳定性,不会立马更新,而是小流B的数据量达到一定的阈值时,比如已超过小流A的数据量,则更新为存储小流B;(2)如果小流A一直都存在,此时桶内新出现小流B,反而小流B持续时间不长,小流B的数据量无法超过小流A的数据量,那么则认为小流B为干扰项,并不会更新桶内存储的数据;(3)小流A和小流B同时存在,随着时间的推移小流B的数据量超过小流A的数据量,那么则认为对小流B进行重传的收益要大于小流A,故而更新为存储小流B。故而,本实施例在出现哈希冲突时,引入竞争机制,舍弃数据量较小的流,保留数据量较大的流。
[0089] 步骤S23,若确定所述目标流的信息与所述小流报文的信息匹配,则判断所述小流报文的第一序列号是否小于所述存储位置对应的第二序列号;
[0090] 在本实施例中,具体地,若确定所述目标流的信息与所述小流报文的信息匹配,则说明所述小流报文对应的小流是存储于当前计算确定的存储位置,可以进一步进行小流重传报文的识别,比较所述小流报文的第一序列号与所述存储位置对应的第二序列号的大小,判断所述第一序列号是否小于所述第二序列号,在一种可实施的方式中,可以在每次在存储位置中存储了新的小流报文之后,将所述存储位置中最新存储的小流报文的序列号作为所述存储位置对应的所述第二序列号。
[0091] 步骤S24,若确定所述第一序列号小于所述第二序列号,则确定所述小流报文为小流重传报文。
[0092] 在本实施例中,在报文传输的过程中,因为其需要不断的交互应用数据,因此,报文的序列号会不断的增大,不会出现下降的情况,故而,若出现序列号下降的情况,则可以判断是重传报文导致的,故而,若确定所述第一序列号小于所述第二序列号,则确定所述小流报文为小流重传报文。
[0093] 若确定所述第一序列号大于或等于所述第二序列号,则确定所述小流报文不为小流重传报文,为正常报文,则将所述小流报文存储于所述存储位置,并更新所述存储位置对应的信息,将所述存储位置对应的C(i,j)加上所述小流报文的数据量,将所述存储位置对应的S(i,j)更新为所述小流报文的第一序列号。
[0094] 在本实施例中,通过两个哈希函数对小流报文的标识号进行二次哈希确定信息小流报文在哈希桶中的存储位置,可以大大减小哈希冲突的概率,并在出现哈希冲突时,通过竞争机制保留数据量较大的流,舍弃数据量较小的流,以避免干扰项,提高存储流的有效性。
[0095] 进一步地,在本申请小流报文重传方法的另一实施例中,参照图7,所述小流报文重传方法应用于报文接收端,还包括:
[0096] 步骤S100,接收报文发送端发送的初始报文;
[0097] 步骤S200,通过网卡驱动上加载的XDP程序捕获并解析所述初始报文,根据解析后的初始报文确定所述初始报文的报文类型;
[0098] 在本实施例中,需要说明的是,本实施例应用于WireGuard VPN网关的报文接收端。
[0099] 具体地,接收报文发送端发送的初始报文,通过网卡驱动上加载的XDP程序捕获并解析所述初始报文,提取所述初始报文头部报文类型的关键字段,根据所述关键字段确定所述初始报文的报文类型,所述初始报文可能为大流正常报文、大流重传报文、小流正常报文或小流重传报文等。
[0100] 步骤S300,若根据所述初始报文的报文类型确定所述初始报文为小流重传报文,则将所述小流重传报文通过预设快速接收通道,发送给对应的用户态模块。
[0101] 在本实施例中,具体地,预先建立接收小流重传报文的快速接收通道,若根据所述初始报文的报文类型确定所述初始报文为小流重传报文,则通过XDP技术绕开Linux内核协议栈,将所述小流重传报文通过预设快速接收通道,直接发送给对应的用户态模块;若根据所述初始报文的报文类型确定所述初始报文不为小流重传报文,则可以通过正常接收通道依次发送给对应的用户态模块。
[0102] 在本实施例中,在VPN的报文接收端为重传报文建立快速接收通道,可以有效提高小流报文的重传效率,减少了小流报文的网络延迟现象,提高了用户体验,克服了现有技术重传小流报文的时效性较差的技术问题。
[0103] 进一步地,本申请实施例还提供一种小流报文重传系统,参照图8,所述小流报文重传系统包括报文发送端10和报文接收端20,其中,
[0104] 所述报文发送端10,用于获取小流报文;
[0105] 所述报文发送端10,还用于根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文;
[0106] 所述报文发送端10,还用于将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端;
[0107] 所述报文接收端20,用于接收报文发送端发送的初始报文;
[0108] 所述报文接收端20,还用于通过网卡驱动上加载的XDP程序捕获并解析所述初始报文,根据解析后的初始报文确定所述初始报文的报文类型;
[0109] 所述报文接收端20,还用于若根据所述初始报文的报文类型确定所述初始报文为小流重传报文,则将所述小流重传报文通过预设快速接收通道,发送给对应的用户态模块。
[0110] 可选地,所述报文发送端10还用于:
[0111] 获取小流报文;
[0112] 根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文;
[0113] 将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端。
[0114] 可选地,所述报文发送端10还用于:
[0115] 获取数据流;
[0116] 若根据预设大流识别算法确定所述数据流不为大流,则将所述数据流确定为小流,并将所述小流划分至第一消息队列;
[0117] 从所述第一消息队列中获取小流报文。
[0118] 可选地,所述报文发送端10还用于:
[0119] 对所述小流报文的标识号进行二次哈希,确定所述小流报文的存储位置;
[0120] 判断所述存储位置对应的目标流的信息与所述小流报文的信息是否匹配;
[0121] 若确定所述目标流的信息与所述小流报文的信息匹配,则判断所述小流报文的第一序列号是否小于所述存储位置对应的第二序列号;
[0122] 若确定所述第一序列号小于所述第二序列号,则确定所述小流报文为小流重传报文。
[0123] 可选地,所述报文发送端10还用于:
[0124] 若所述目标流的信息与所述小流报文的信息不匹配,则统计所述小流报文对应的数据流的第一数据量;
[0125] 当所述第一数据量超过所述存储位置中的初始数据流的第二数据量时,从所述存储位置中删除所述初始数据流,并将所述小流报文对应的数据流存入所述存储位置中。
[0126] 可选地,所述报文发送端10还用于:
[0127] 创建用户态可读写的内存队列,其中,所述用户态可读写的内存队列包括预留区域;
[0128] 将所述小流重传报文发送至预设快速传输通道,并为所述小流重传报文分配目标描述符;
[0129] 根据所述目标描述符在所述预留区域中存储所述小流重传报文;
[0130] 通过网卡驱动将所述预留区域中的小流重传报文发送至报文接收端。
[0131] 可选地,所述报文发送端10还用于:
[0132] 将所述小流重传报文发送至预设快速传输通道;
[0133] 确定所述小流重传报文对应的目标报文类型,并基于所述目标报文类型对所述小流重传报文进行封装;
[0134] 通过网卡驱动将封装后的所述小流重传报文发送至报文接收端。
[0135] 可选地,所述报文接收端20还用于:
[0136] 接收报文发送端发送的初始报文;
[0137] 通过网卡驱动上加载的XDP程序捕获并解析所述初始报文,根据解析后的初始报文确定所述初始报文的报文类型;
[0138] 若根据所述初始报文的报文类型确定所述初始报文为小流重传报文,则将所述小流重传报文通过预设快速接收通道,发送给对应的用户态模块。
[0139] 本发明提供的小流报文重传系统,采用上述实施例中的小流报文重传方法,解决了现有技术重传小流报文的时效性较差的技术问题。与现有技术相比,本发明实施例提供的小流报文重传系统的有益效果与上述实施例提供的小流报文重传方法的有益效果相同,且该小流报文重传系统中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。
[0140] 进一步地,本发明实施例提供一种电子设备,电子设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例中的小流报文重传方法。
[0141] 下面参考图9,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0142] 如图9所示,电子设备可以包括处理系统(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)中的程序或者从存储系统加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有电子设备操作所需的各种程序和数据。处理系统、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
[0143] 通常,以下系统可以连接至I/O接口:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入系统;包括例如液晶显示器(LCD)、扬声器、振动器等的输出系统;包括例如磁带、硬盘等的存储系统;以及通信系统。通信系统可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种系统的电子设备,但是应理解的是,并不要求实施或具备所有示出的系统。可以替代地实施或具备更多或更少的系统。
[0144] 特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信系统从网络上被下载和安装,或者从存储系统被安装,或者从ROM被安装。在该计算机程序被处理系统执行时,执行本公开实施例的方法中限定的上述功能。
[0145] 本发明提供的电子设备,采用上述实施例中的小流报文重传方法,解决了现有技术重传小流报文的时效性较差的技术问题。与现有技术相比,本发明实施例提供的电子设备的有益效果与上述实施例提供的小流报文重传方法的有益效果相同,且该电子设备中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。
[0146] 应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0147] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
[0148] 进一步地,本实施例提供一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,计算机可读程序指令用于执行上述实施例中的小流报文重传方法。
[0149] 本发明实施例提供的计算机可读存储介质例如可以是U盘,但不限于电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
[0150] 上述计算机可读存储介质可以是电子设备中所包含的;也可以是单独存在,而未装配入电子设备中。
[0151] 上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被电子设备执行时,使得电子设备:获取小流报文;根据预设小流重传报文识别算法从所述小流报文中识别小流重传报文;将所述小流重传报文发送至预设快速传输通道,通过网卡驱动将所述小流重传报文发送至报文接收端。
[0152] 当上述一个或者多个程序被电子设备执行时,还可以使得电子设备:接收报文发送端发送的初始报文;通过网卡驱动上加载的XDP程序捕获并解析所述初始报文,根据解析后的初始报文确定所述初始报文的报文类型;若根据所述初始报文的报文类型确定所述初始报文为小流重传报文,则将所述小流重传报文通过预设快速接收通道,发送给对应的用户态模块。
[0153] 可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在机床操作人员计算机上执行、部分地在机床操作人员计算机上执行、作为一个独立的软件包执行、部分在机床操作人员计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到机床操作人员计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0154] 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0155] 描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该单元本身的限定。
[0156] 本发明提供的计算机可读存储介质,存储有用于执行上述小流报文重传方法的计算机可读程序指令,解决了现有技术重传小流报文的时效性较差的技术问题。与现有技术相比,本发明实施例提供的计算机可读存储介质的有益效果与上述实施例提供的小流报文重传方法的有益效果相同,在此不做赘述。
[0157] 进一步地,本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的小流报文重传方法的步骤。
[0158] 本申请提供的计算机程序产品解决了现有技术重传小流报文的时效性较差的技术问题。与现有技术相比,本发明实施例提供的计算机程序产品的有益效果与上述实施例提供的小流报文重传方法的有益效果相同,在此不做赘述。
[0159] 以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利处理范围内。