一种数据包处理方法、装置及设备与流程
未命名
07-28
阅读:98
评论:0
1.本技术涉及通信技术领域,具体涉及一种数据包处理方法、装置及设备。
背景技术:
2.网络节点可以对数据包进行转发,当网络节点发生拥塞时可能发生丢包,丢包是通知网络节点发生拥塞的主要机制。
3.目前,当网络节点没有足够资源发送数据包时,会将数据包添加到缓存队列。基于传统的缓存队列管理机制,丢包多发生在缓存队列满时。当缓存队列处于满的状态,新来的数据包会被丢弃。因此,当网络发生拥塞时,大量的数据包被丢弃。
4.对于一些重要的数据包,丢包会造成比较严重的后果。例如,工控设备对丢包非常敏感,工控协议数据包的丢失,有可能造成工控设备的失灵或故障。因此,如何降低数据包的丢失带来的影响是亟待解决的技术问题。
技术实现要素:
5.有鉴于此,本技术实施例提供一种数据包处理方法、装置及设备,以降低数据包的丢失带来的影响。
6.为解决上述问题,本技术实施例提供的技术方案如下:
7.一种数据包处理方法,所述方法包括:
8.当接收到的数据包被添加到特定协议类型缓存队列,根据所述特定协议类型缓存队列中最大容纳数据包的数量以及所述特定协议类型缓存队列中已添加数据包的数量,确定所述特定协议类型缓存队列的第一负荷度;
9.当所述第一负荷度大于第一阈值,根据所述第一负荷度确定第一冗余度,所述第一冗余度与所述第一负荷度呈正相关关系;
10.利用所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,所述目标数量根据所述第一冗余度确定;
11.发送所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及所述冗余数据包。
12.在一种可能的实现方式中,所述方法还包括:
13.当接收到的数据包被添加到普通协议类型缓存队列,根据所述普通协议类型缓存队列中最大容纳数据包的数量以及所述普通协议类型缓存队列中已添加数据包的数量,确定所述普通协议类型缓存队列的第二负荷度;
14.当所述第二负荷度大于第二阈值,对继续被添加到普通协议类型缓存队列中的数据包进行丢弃。
15.在一种可能的实现方式中,所述根据所述特定协议类型缓存队列中最大容纳数据包的数量以及所述特定协议类型缓存队列中已添加数据包的数量,确定所述特定协议类型缓存队列的第一负荷度,包括:
16.将所述特定协议类型缓存队列中已添加数据包的数量除以所述特定协议类型缓存队列中最大容纳数据包的数量,得到所述特定协议类型缓存队列的第一负荷度;
17.所述根据所述普通协议类型缓存队列中最大容纳数据包的数量以及所述普通协议类型缓存队列中已添加数据包的数量,确定所述普通协议类型缓存队列的第二负荷度,包括:
18.将所述普通协议类型缓存队列的已添加数据包数量除以所述普通协议类型缓存队列的最大容纳数据包数量,再乘以冗余系数,得到所述普通协议类型缓存队列的第二负荷度,所述冗余系数小于1。
19.在一种可能的实现方式中,所述冗余系数与所述特定协议类型缓存队列的数量呈负相关关系。
20.在一种可能的实现方式中,所述利用所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,包括:
21.将所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包进行异或操作,生成冗余数据包。
22.在一种可能的实现方式中,生成所述冗余数据包的数量根据当前网络的丢包率确定。
23.在一种可能的实现方式中,所述方法还包括:
24.接收到数据包后,当不具备发送资源时,通过所述数据包的目标字段确定所述数据包的协议类型;
25.当所述数据包的协议类型为特定协议类型,将所述数据包添加到特定协议类型缓存队列;
26.当所述数据包的协议类型为普通协议类型,将所述数据包添加到普通协议类型缓存队列。
27.一种数据包处理装置,所述装置包括:
28.第一确定单元,用于当接收到的数据包被添加到特定协议类型缓存队列,根据所述特定协议类型缓存队列中最大容纳数据包的数量以及所述特定协议类型缓存队列中已添加数据包的数量,确定所述特定协议类型缓存队列的第一负荷度;
29.第二确定单元,用于当所述第一负荷度大于第一阈值,根据所述第一负荷度确定第一冗余度,所述第一冗余度与所述第一负荷度呈正相关关系;
30.生成单元,用于利用所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,所述目标数量根据所述第一冗余度确定;
31.发送单元,用于发送所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及所述冗余数据包。
32.一种数据包处理设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上述任一项所述的数据包处理方法。
33.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行如上述任一项所述的数据包处理方法。
34.由此可见,本技术实施例具有如下有益效果:
35.本技术实施例利用特定协议类型缓存队列缓存暂时未被发送的较为重要的特定协议类型数据包。当接收到的数据包被添加到特定协议类型缓存队列时,首先确定特定协议类型缓存队列的第一负荷度。当第一负荷度大于第一阈值,代表特定协议类型缓存队列达到一定的拥塞程度。则需要根据第一负荷度生成相应第一冗余度的冗余数据包。对特定协议类型缓存队列中排列在前的已添加数据包以及冗余数据包进行发送。这样,可以保证优先发送特定协议类型缓存队列中的数据包,同时当特定协议类型数据包发生丢失时,可以利用冗余数据包对丢失的特定协议类型数据包进行恢复,提高了特定协议类型数据包的传输质量,从而有效降低了特定协议类型数据包的丢失带来的影响。
附图说明
36.图1为本技术实施例提供的一种示例性应用场景的示意图;
37.图2为本技术实施例提供的一种数据包处理方法的流程图;
38.图3为本技术实施例提供的另一种数据包处理方法的流程图;
39.图4为本技术实施例提供的一种数据包处理装置的示意图。
具体实施方式
40.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术实施例作进一步详细的说明。
41.为了便于理解和解释本技术实施例提供的技术方案,下面将先对本技术的背景技术进行说明。
42.网络节点例如防火墙、路由器等可以对数据包进行转发。当网络节点没有足够资源发送数据包时,会将数据包添加到缓存队列。当缓存队列处于满的状态时,再接收到的数据包会被丢弃,造成丢包。
43.对于一些重要的数据包,丢包会造成比较严重的后果。例如,工控防火墙可以转发工控协议数据包至工控设备,而工控设备对丢包非常敏感,工控协议数据包的丢失,有可能造成工控设备的失灵或故障。
44.基于此,本技术实施例提供一种数据包处理方法、装置及设备,本技术实施例利用特定协议类型缓存队列缓存暂时未被发送的较为重要的特定协议类型数据包。当接收到的数据包被添加到特定协议类型缓存队列时,首先确定特定协议类型缓存队列的第一负荷度。当第一负荷度大于第一阈值,代表特定协议类型缓存队列达到一定的拥塞程度。则需要根据第一负荷度生成相应第一冗余度的冗余数据包。对特定协议类型缓存队列中排列在前的已添加数据包以及冗余数据包进行发送。这样,可以保证优先发送特定协议类型缓存队列中的数据包,同时当特定协议类型数据包发生丢失时,可以利用冗余数据包对丢失的特定协议类型数据包进行恢复,提高了特定协议类型数据包的传输质量,从而有效降低了特定协议类型数据包的丢失带来的影响。
45.为了便于理解本技术实施例提供的数据包处理方法,下面结合图1所示的场景示例进行说明。参见图1所示,该图为本技术实施例提供的示例性应用场景的示意图。
46.本技术实施例可以应用于网络节点,网络节点中具有发送资源对数据包进行发送,例如,设置有发送队列。同时设置有至少一个特定协议类型缓存队列以及至少一个普通
协议类型缓存队列。在网络节点接收到数据包后,如果当前没有足够的发送资源发送该数据包时,再按照该数据包的类型将该数据包添加到特定协议类型缓存队列或者普通协议类型缓存队列。特定协议类型缓存队列用于缓存较为重要的特定协议类型数据包,普通协议类型缓存队列用于缓存普通的普通协议类型数据包。特定协议类型缓存队列的优先级高于普通协议类型缓存队列的优先级,即在有发送资源时优先对特定协议类型缓存队列中的数据包进行发送,如果特定协议类型缓存队列中没有数据包再对普通协议类型缓存队列中的数据包进行发送。
47.针对特定协议类型缓存队列,计算特定协议类型缓存队列的第一负荷度。当第一负荷度大于第一阈值,代表特定协议类型缓存队列达到一定的拥塞程度。需要根据第一负荷度生成相应第一冗余度的冗余数据包。第一冗余度与第一负荷度呈正相关关系,第一冗余度决定了利用特定协议类型缓存队列中排列在前的目标数量的数据包生成冗余数据包。在能够对特定协议类型缓存队列中的数据包进行发送时,发送特定协议类型缓存队列中排列在前的目标数量的数据包以及冗余数据包。
48.针对普通协议类型缓存队列,计算普通协议类型缓存队列的第二负荷度。当第二负荷度大于第二阈值,代表普通协议类型缓存队列达到一定的拥塞程度。此时对继续被添加到普通协议类型缓存队列中的数据包进行丢弃。
49.从而保证优先发送特定协议类型缓存队列中的数据包,同时当特定协议类型数据包发生丢失时,可以利用冗余数据包对丢失的特定协议类型数据包进行恢复,提高了特定协议类型数据包的传输质量,从而有效降低了特定协议类型数据包的丢失带来的影响。
50.本领域技术人员可以理解,图1所示的框架示意图仅是本技术的实施方式可以在其中得以实现的一个示例。本技术实施方式的适用范围不受到该框架任何方面的限制。
51.为了便于理解本技术,下面结合附图对本技术实施例提供的一种数据包处理方法进行说明。
52.参见图2所示,该图为本技术实施例提供的一种数据包处理方法的流程图,如图2所示,该方法可以包括s201-s204:
53.s201:当接收到的数据包被添加到特定协议类型缓存队列,根据特定协议类型缓存队列中最大容纳数据包的数量以及特定协议类型缓存队列中已添加数据包的数量,确定特定协议类型缓存队列的第一负荷度。
54.网络节点中设置有至少一个特定协议类型缓存队列以及至少一个普通协议类型缓存队列,在网络节点接收到数据包后,如果当前没有足够的发送资源发送该数据包时,且该数据包为较为重要的特定协议类型数据包,则将该数据包添加到特定协议类型缓存队列中。
55.在一种可能的实现方式中,在执行s201之前本技术实施例还可以包括:
56.a1:接收到数据包后,当不具备发送资源时,通过数据包的目标字段确定数据包的协议类型。
57.在实际应用中,网络节点中具有发送资源对数据包进行发送,例如,设置有发送队列,将接收的数据包添加到发送队列中,按照发送队列中数据包的顺序对数据包进行发送。而当不具备足够的发送资源时,则无法对数据包进行发送。例如当前发送队列已满,则无法立即对接收到的数据包进行发送。
58.网络节点在接收到数据包后,可以首先通过是否具备剩余的发送资源来判断是否能够对当前接收到的数据包进行发送。如果有剩余的发送资源则可以对当前接收到的数据包直接进行发送。
59.当不具备发送资源时,无法对数据包进行发送,需要根据数据包的协议类型将数据包添加到特定协议类型缓存队列或者普通协议类型缓存队列中。一般数据包会包括写有协议类型的目标字段,通过读取目标字段的内容可以确定数据包的协议类型。数据包的协议类型可以包括特定协议类型或者普通协议类型,特定协议类型为重要类型,普通协议类型为普通类型。如果数据包的协议类型为特定协议类型,该数据包可称为特定协议类型数据包,如果数据包的协议类型为普通协议类型,该数据包可称为普通协议类型数据包。例如,工控领域的数据包可以分为工控协议数据包和工控普通协议数据包,工控协议数据包为特定协议类型数据包,工控普通协议数据包为普通协议类型数据包。
60.a2:当数据包的协议类型为特定协议类型,将数据包添加到特定协议类型缓存队列。
61.a3:当数据包的协议类型为普通协议类型,将数据包添加到普通协议类型缓存队列。
62.当数据包的协议类型为特定协议类型,该数据包较为重要,可以添加到优先级较高的特定协议类型缓存队列。而当数据包的协议类型为普通协议类型,该数据包即使丢包也不会产生太大影响,则可以添加到优先级较低的普通协议类型缓存队列。在实际应用中,可以将同一个流的数据包添加到同一个缓存队列中,具有相同源ip地址、目的ip地址、源端口号、目的端口号、协议号的数据包属于同一个流的数据包。
63.本技术实施例将数据包划分为特定协议类型数据包和普通协议类型数据包分别处理,可以优先保证较为重要的数据包的发送。
64.在将接收到的数据包添加到特定协议类型缓存队列之后,需要确定特定协议类型缓存队列的第一负荷度。一般特定协议类型缓存队列的最大容纳数据包数量是预先确定的,当前数据包被添加到特定协议类型缓存队列后,可以统计得到该特定协议类型缓存队列中已添加数据包的数量,根据当前特定协议类型缓存队列中最大容纳数据包的数量以及该特定协议类型缓存队列中已添加数据包的数量,可以确定该特定协议类型缓存队列的第一负荷度。
65.在一种可能的实现方式中,根据特定协议类型缓存队列中最大容纳数据包的数量以及特定协议类型缓存队列中已添加数据包的数量,确定特定协议类型缓存队列的第一负荷度,包括:
66.将特定协议类型缓存队列中已添加数据包的数量除以特定协议类型缓存队列中最大容纳数据包的数量,得到特定协议类型缓存队列的第一负荷度。
67.设特定协议类型缓存队列中最大容纳数据包的数量为total_queue_len,当前特定协议类型缓存队列中已添加数据包的数量为queue_len,则该特定协议类型缓存队列的第一负荷度为
68.s202:当第一负荷度大于第一阈值,根据第一负荷度确定第一冗余度,第一冗余度与第一负荷度呈正相关关系。
69.当第一负荷度大于第一阈值,此时认为发生网络拥塞,特定协议类型缓存队列中的数据包有概率会丢失,则需要确定第一冗余度,第一冗余度用来确定使用多少个数据包来生成冗余数据包。第一冗余度与第一负荷度呈正相关关系。即当第一负荷度较高,则第一冗余度较高,代表需要使用更多的数据包来生成冗余数据包,以保证在这些数据包中任意数据包丢失后,都可以利用冗余数据包进行恢复。另外,第一阈值可以根据实际情况进行设定,例如第一阈值为50%,本技术实施例不对第一阈值的取值进行限定。
70.在实际应用中,第一冗余度还可以和第一阈值相关。设第一负荷度为queue_weight
ot
,则第一冗余度redundance
ot
为:
[0071][0072]
其中,n为第一阈值,n小于1,[]为向上取整函数,则第一冗余度的最小值为1,最大值为10。
[0073]
例如,第一阈值为50%时,则
[0074]
当第一负荷度小于或等于第一阈值,认为网络状态良好,不需要生成冗余数据包,则不需要确定第一冗余度。
[0075]
s203:利用特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,目标数量根据第一冗余度确定。
[0076]
在确定出第一冗余度后,将第一冗余度确定为目标数量,从当前特定协议类型缓存队列中取出排列在前的目标数量的数据包生成冗余数据包。设x为目标数量,y为生成冗余数据包的数量,则对于x个数据包以及y个冗余数据包,任意丢失y个数据都可以通过x个数据包以及y个冗余数据包把丢失的数据恢复出来。在一些可能的实现方式中,生成冗余数据包的数量y的取值可以根据当前网络的丢包率确定。一般y取1即可,当丢包率高于丢包率阈值时,可以提高y的取值,即丢包率与y的取值呈正相关关系,丢包率越高,y的取值越大,从而在丢包率较高时能生成更多的冗余数据包,用于恢复丢失的数据。
[0077]
例如,接收到数据包g添加到特定协议类型缓存队列中,此时特定协议类型缓存队列中按顺序添加有a、b、c、e、f、g等数据包,如果目标数量x为3,y为1,则利用排列在最前的数据包a、b、c去生成冗余数据包。如果数据包a、b、c以及冗余数据包任意丢失1个,则均可以利用其它数据包对丢失的数据包进行恢复。
[0078]
在一种可能的实现方式中,s203利用特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包的具体实现可以包括:
[0079]
将特定协议类型缓存队列中排列在前的目标数量的已添加数据包进行异或操作,生成冗余数据包。
[0080]
在异或运算中,如果某个字符(或数值)w与一个数值m进行异或运算得到z,则再用z与m进行异或运算就可以还原为w。利用该原理,可以将数据包视为字符串,将目标数量的已添加数据包进行异或操作,从而生成冗余数据包。
[0081]
基于上述示例,数据包a、b、c去生成冗余数据包d,则冗余数据包d根据异或操作获得,即d=a∧b∧c。丢失a、b、c、d这四个数据包中的任何一个,基于异或操作的数学属性,都可以通过对另外三个数据包进行异或操作来恢复。
[0082]
例如丢失的是数据包a,则可以通过数据包b、c、d异或重新得到数据包a,即a=a∧(b∧b)∧(c∧c)=(a∧b∧c)∧b∧c=d∧b∧c。
[0083]
s204:发送特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及冗余数据包。
[0084]
在存在发送资源时,可以对特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及冗余数据包进行发送。例如,利用数据包a、b、c生成冗余数据包d,在发送队列空闲时,可以将数据包a、b、c以及冗余数据包d添加到发送队列中进行发送。可以理解的是,数据包a、b、c、d中均会标记有与其它3个数据包具有对应关系,从而数据包接收端在接收到数据包a、b、c、d中的任意3个数据包后,可以恢复出数据包a、b、c、d。
[0085]
基于s201至s204的描述,本技术实施例利用特定协议类型缓存队列缓存暂时未被发送的较为重要的特定协议类型数据包。当接收到的数据包被添加到特定协议类型缓存队列时,首先确定特定协议类型缓存队列的第一负荷度。当第一负荷度大于第一阈值,代表特定协议类型缓存队列达到一定的拥塞程度。则需要根据第一负荷度生成相应第一冗余度的冗余数据包。对特定协议类型缓存队列中排列在前的已添加数据包以及冗余数据包进行发送。这样,可以保证优先发送特定协议类型缓存队列中的数据包,同时当特定协议类型数据包发生丢失时,可以利用冗余数据包对丢失的特定协议类型数据包进行恢复,提高了特定协议类型数据包的传输质量,从而有效降低了特定协议类型数据包的丢失带来的影响。
[0086]
在一种可能的实现方式中,基于上述实施例,本技术实施例还可以包括:
[0087]
b1:当接收到的数据包被添加到普通协议类型缓存队列,根据普通协议类型缓存队列中最大容纳数据包的数量以及普通协议类型缓存队列中已添加数据包的数量,确定普通协议类型缓存队列的第二负荷度。
[0088]
在网络节点接收到数据包后,如果当前没有足够的发送资源发送该数据包时,且该数据包为普通的普通协议类型数据包,则将该数据包添加到普通协议类型缓存队列中。在将接收到的数据包添加到普通协议类型缓存队列之后,需要确定普通协议类型缓存队列的第二负荷度。一般普通协议类型缓存队列中最大容纳数据包的数量是预先确定的,当前数据包被添加到普通协议类型缓存队列后,可以统计得到该普通协议类型缓存队列中已添加数据包的数量,根据当前普通协议类型缓存队列中最大容纳数据包的数量以及该普通协议类型缓存队列中已添加数据包的数量,可以确定该普通协议类型缓存队列的第二负荷度。
[0089]
在一种可能的实现方式中,b1根据普通协议类型缓存队列中最大容纳数据包的数量以及普通协议类型缓存队列中已添加数据包的数量,确定普通协议类型缓存队列的第二负荷度的具体实现可以包括:
[0090]
将普通协议类型缓存队列中已添加数据包的数量除以普通协议类型缓存队列中最大容纳数据包的数量,再乘以冗余系数,得到普通协议类型缓存队列的第二负荷度,冗余系数小于1。
[0091]
对于普通协议类型数据包,由于网络节点会优先发送特定协议类型缓存队列中的数据包,普通协议类型缓存队列中的数据包会等待特定协议类型缓存队列中的数据包全部发送完毕才会发送。所以普通协议类型缓存队列的第二负荷度除了计算普通协议类型缓存队列的已添加数据包数量与普通协议类型缓存队列的最大容纳数据包数量的比例外,还要
乘以一个冗余系数,来调整由于延迟发送带来的普通协议类型缓存队列增长的问题。
[0092]
在一种可能的实现方式中,冗余系数与特定协议类型缓存队列的数量呈负相关关系。即特定协议类型缓存队列的数量越多,冗余系数越小,则普通协议类型缓存队列的第二负荷度越小。在特定协议类型缓存队列的数量越多的情况下,为了减小普通协议类型缓存队列中的丢包数量,可以在计算时可以适当减小普通协议类型缓存队列的第二负荷度,以使普通协议类型缓存队列中能够在添加较多的数据包后才开始对数据包进行丢弃处理。
[0093]
具体的,冗余度可以为普通协议类型缓存队列的数量除以特定协议类型缓存队列的数量与普通协议类型缓存队列的数量之和。
[0094]
设普通协议类型缓存队列中最大容纳数据包的数量为total_queue_len,当前普通协议类型缓存队列中已添加数据包的数量为queue_len,特定协议类型缓存队列的数量为queue_num
ot
,普通协议类型缓存队列的数量为queue_num
na
,则该特定协议类型缓存队列的第二负荷度为:
[0095][0096]
b2:当第二负荷度大于第二阈值,对继续被添加到普通协议类型缓存队列中的数据包进行丢弃。
[0097]
当第二负荷度大于第二阈值,此时认为发生网络拥塞,对于继续被添加到普通协议类型缓存队列中的数据包进行丢弃处理。当第二负荷度小于或等于第二阈值,认为网络状态良好,普通协议类型缓存队列中的数据包继续等待被发送。另外,第二阈值可以根据实际情况进行设定,例如第二阈值为50%,本技术实施例不对第二阈值的取值进行限定。
[0098]
基于上述说明,如果特定协议类型缓存队列与普通协议类型缓存队列中最大容纳数据包的数量相同,且第一阈值与第二阈值相同,由于计算第二负荷度时利用了冗余系数,则在达到第二阈值时普通协议类型缓存队列中已添加数据包的数量会多于在达到第一阈值时特定协议类型缓存队列中已添加数据包的数量。例如,特定协议类型缓存队列与普通协议类型缓存队列中最大容纳数据包的数量为100,普通协议类型缓存队列中已添加数据包的数量为60时达到第二阈值,而特定协议类型缓存队列中已添加数据包的数量为50时则达到第一阈值。这样,在特定协议类型缓存队列的数量越多的情况下,通过冗余系数,可以使普通协议类型缓存队列中在添加较多的数据包后才开始对数据包进行丢弃处理。
[0099]
在本技术实施例中,发生网络拥塞时丢弃普通的普通协议类型数据包,优先保证较为重要的特定协议类型数据包不被丢弃,提高了特定协议类型数据包的传输质量,保证了特定协议类型数据包的完整性。
[0100]
以下结合实际应用,对本技术实施例提供的数据包处理方法进行说明,参见图3所示,数据包处理方法可以包括:
[0101]
s301:确定不具备发送资源。
[0102]
当网络节点没有足够的发送资源时,无法对数据包进行发送,需要将接收到的数据包添加到相应的缓存队列中。
[0103]
s302:确定数据包的协议类型。
[0104]
s303:当数据包的协议类型为特定协议类型,将数据包添加到特定协议类型缓存队列。
[0105]
s304:确定特定协议类型缓存队列的第一负荷度。
[0106]
具体的,根据特定协议类型缓存队列中最大容纳数据包的数量以及特定协议类型缓存队列中已添加数据包的数量,确定特定协议类型缓存队列的第一负荷度。
[0107]
s305:判断第一负荷度是否大于第一阈值,如果是,执行s306,如果否,执行s310。
[0108]
s306:根据第一负荷度确定第一冗余度。
[0109]
当第一负荷度大于第一阈值,此时认为发生网络拥塞,根据第一负荷度确定第一冗余度,第一冗余度与第一负荷度呈正相关关系。
[0110]
s307:判断是否能够发送特定协议类型缓存队列中的数据包,如果是,执行s308,如果否,返回s304。
[0111]
s308:根据第一冗余度生成冗余数据包。
[0112]
s309:发送特定协议类型缓存队列中的数据包以及冗余数据包。
[0113]
在具有发送资源能够发送特定协议类型缓存队列中的数据包时,利用特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,发送特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及冗余数据包,其中,目标数量根据第一冗余度确定。
[0114]
s310:判断是否能够发送特定协议类型缓存队列中的数据包,如果是,执行s311,如果否,返回s304。
[0115]
s311:发送特定协议类型缓存队列中的数据包。
[0116]
当第一负荷度小于或等于第一阈值,认为网络状态良好,在有发送资源时可以按照特定协议类型缓存队列中的数据包顺序,对特定协议类型缓存队列中的数据包进行发送。
[0117]
s312:当数据包的协议类型为普通协议类型,将数据包添加到普通协议类型缓存队列。
[0118]
s313:确定普通协议类型缓存队列的第二负荷度。
[0119]
具体的,根据普通协议类型缓存队列中最大容纳数据包的数量以及普通协议类型缓存队列中已添加数据包的数量,确定普通协议类型缓存队列的第二负荷度。
[0120]
s314:判断第二负荷度是否大于第二阈值,如果是,执行s315,如果否,执行s316。
[0121]
s315:丢弃要进入普通协议类型缓存队列的数据包。
[0122]
当第二负荷度大于第二阈值,此时认为发生网络拥塞,对于继续被添加到普通协议类型缓存队列中的数据包进行丢弃处理。
[0123]
s316:判断是否能够发送普通协议类型缓存队列中的数据包,如果是,执行s317,如果否,返回s313。
[0124]
s317:发送普通协议类型缓存队列中的数据包。
[0125]
当第二负荷度小于或等于第二阈值,认为网络状态良好,在有发送资源时可以按照普通协议类型缓存队列中的数据包顺序,对普通协议类型缓存队列中的数据包进行发送。
[0126]
本技术实施例可以保证优先发送特定协议类型缓存队列中的数据包,同时当特定协议类型数据包发生丢失时,可以利用冗余数据包对丢失的特定协议类型数据包进行恢复,提高了特定协议类型数据包的传输质量,从而有效降低了特定协议类型数据包的丢失
带来的影响。
[0127]
基于上述方法实施例提供的一种数据包处理方法,本技术实施例还提供了一种数据包处理装置,下面将结合附图对该装置进行说明。
[0128]
参见图4所示,该图为本技术实施例提供的一种数据包处理装置的结构示意图。如图4所示,该数据包处理装置包括:
[0129]
第一确定单元401,用于当接收到的数据包被添加到特定协议类型缓存队列,根据所述特定协议类型缓存队列中最大容纳数据包的数量以及所述特定协议类型缓存队列中已添加数据包的数量,确定所述特定协议类型缓存队列的第一负荷度;
[0130]
第二确定单元402,用于当所述第一负荷度大于第一阈值,根据所述第一负荷度确定第一冗余度,所述第一冗余度与所述第一负荷度呈正相关关系;
[0131]
生成单元403,用于利用所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,所述目标数量根据所述第一冗余度确定;
[0132]
发送单元404,用于发送所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及所述冗余数据包。
[0133]
在一种可能的实现方式中,所述装置还包括:
[0134]
第三确定单元,用于当接收到的数据包被添加到普通协议类型缓存队列,根据所述普通协议类型缓存队列中最大容纳数据包的数量以及所述普通协议类型缓存队列中已添加数据包的数量,确定所述普通协议类型缓存队列的第二负荷度;
[0135]
丢弃单元,用于当所述第二负荷度大于第二阈值,对继续被添加到普通协议类型缓存队列中的数据包进行丢弃。
[0136]
在一种可能的实现方式中,所述第一确定单元具体用于:
[0137]
将所述特定协议类型缓存队列中已添加数据包的数量除以所述特定协议类型缓存队列中最大容纳数据包的数量,得到所述特定协议类型缓存队列的第一负荷度;
[0138]
所述第三确定单元具体用于:
[0139]
将所述普通协议类型缓存队列中已添加数据包的数量除以所述普通协议类型缓存队列中最大容纳数据包的数量,再乘以冗余系数,得到所述普通协议类型缓存队列的第二负荷度,所述冗余系数小于1。
[0140]
在一种可能的实现方式中,所述冗余系数与所述特定协议类型缓存队列的数量呈负相关关系。
[0141]
在一种可能的实现方式中,所述生成单元具体用于:
[0142]
将所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包进行异或操作,生成冗余数据包。
[0143]
在一种可能的实现方式中,生成所述冗余数据包的数量根据当前网络的丢包率确定。
[0144]
在一种可能的实现方式中,所述装置还包括:
[0145]
判断单元,用于当接收到的数据包后,判断当前是否能够对所述数据包进行发送;
[0146]
第四确定单元,用于当无法对所述数据包进行发送时,通过所述数据包的目标字段确定所述数据包的协议类型;
[0147]
第一添加单元,用于当所述数据包的协议类型为特定协议类型,将所述数据包添
加到特定协议类型缓存队列;
[0148]
第二添加单元,用于当所述数据包的协议类型为普通协议类型,将所述数据包添加到普通协议类型缓存队列。
[0149]
另外,本技术实施例还提供了一种数据包处理设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上述任一项所述的数据包处理方法。
[0150]
另外,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行如上述任一项所述的数据包处理方法。
[0151]
这样,本技术实施例利用特定协议类型缓存队列缓存暂时未被发送的较为重要的特定协议类型数据包。当接收到的数据包被添加到特定协议类型缓存队列时,首先确定特定协议类型缓存队列的第一负荷度。当第一负荷度大于第一阈值,代表特定协议类型缓存队列达到一定的拥塞程度。则需要根据第一负荷度生成相应第一冗余度的冗余数据包。对特定协议类型缓存队列中排列在前的已添加数据包以及冗余数据包进行发送。这样,可以保证优先发送特定协议类型缓存队列中的数据包,同时当特定协议类型数据包发生丢失时,可以利用冗余数据包对丢失的特定协议类型数据包进行恢复,提高了特定协议类型数据包的传输质量,从而有效降低了特定协议类型数据包的丢失带来的影响。
[0152]
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0153]
应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0154]
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0155]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0156]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种数据包处理方法,其特征在于,所述方法包括:当接收到的数据包被添加到特定协议类型缓存队列,根据所述特定协议类型缓存队列中最大容纳数据包的数量以及所述特定协议类型缓存队列中已添加数据包的数量,确定所述特定协议类型缓存队列的第一负荷度;当所述第一负荷度大于第一阈值,根据所述第一负荷度确定第一冗余度,所述第一冗余度与所述第一负荷度呈正相关关系;利用所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,所述目标数量根据所述第一冗余度确定;发送所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及所述冗余数据包。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当接收到的数据包被添加到普通协议类型缓存队列,根据所述普通协议类型缓存队列中最大容纳数据包的数量以及所述普通协议类型缓存队列中已添加数据包的数量,确定所述普通协议类型缓存队列的第二负荷度;当所述第二负荷度大于第二阈值,对继续被添加到普通协议类型缓存队列中的数据包进行丢弃。3.根据权利要求2所述的方法,其特征在于,所述根据所述特定协议类型缓存队列中最大容纳数据包的数量以及所述特定协议类型缓存队列中已添加数据包的数量,确定所述特定协议类型缓存队列的第一负荷度,包括:将所述特定协议类型缓存队列中已添加数据包的数量除以所述特定协议类型缓存队列中最大容纳数据包的数量,得到所述特定协议类型缓存队列的第一负荷度;所述根据所述普通协议类型缓存队列中最大容纳数据包的数量以及所述普通协议类型缓存队列中已添加数据包的数量,确定所述普通协议类型缓存队列的第二负荷度,包括:将所述普通协议类型缓存队列的已添加数据包数量除以所述普通协议类型缓存队列的最大容纳数据包数量,再乘以冗余系数,得到所述普通协议类型缓存队列的第二负荷度,所述冗余系数小于1。4.根据权利要求3所述的方法,其特征在于,所述冗余系数与所述特定协议类型缓存队列的数量呈负相关关系。5.根据权利要求1所述的方法,其特征在于,所述利用所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,包括:将所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包进行异或操作,生成冗余数据包。6.根据权利要求1或5所述的方法,其特征在于,生成所述冗余数据包的数量根据当前网络的丢包率确定。7.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收到数据包后,当不具备发送资源时,通过所述数据包的目标字段确定所述数据包的协议类型;当所述数据包的协议类型为特定协议类型,将所述数据包添加到特定协议类型缓存队列;
当所述数据包的协议类型为普通协议类型,将所述数据包添加到普通协议类型缓存队列。8.一种数据包处理装置,其特征在于,所述装置包括:第一确定单元,用于当接收到的数据包被添加到特定协议类型缓存队列,根据所述特定协议类型缓存队列中最大容纳数据包的数量以及所述特定协议类型缓存队列中已添加数据包的数量,确定所述特定协议类型缓存队列的第一负荷度;第二确定单元,用于当所述第一负荷度大于第一阈值,根据所述第一负荷度确定第一冗余度,所述第一冗余度与所述第一负荷度呈正相关关系;生成单元,用于利用所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,所述目标数量根据所述第一冗余度确定;发送单元,用于发送所述特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及所述冗余数据包。9.一种数据包处理设备,其特征在于,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-7任一项所述的数据包处理方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行如权利要求1-7任一项所述的数据包处理方法。
技术总结
本申请公开了一种数据包处理方法、装置及设备,用于提高发送重要数据包的可靠性,该方法包括:当接收到的数据包被添加到特定协议类型缓存队列,根据特定协议类型缓存队列的最大容纳数据包数量以及特定协议类型缓存队列的已添加数据包数量,确定特定协议类型缓存队列的第一负荷度;当第一负荷度大于第一阈值,根据第一负荷度确定第一冗余度,第一冗余度与第一负荷度呈正相关关系;利用特定协议类型缓存队列中排列在前的目标数量的已添加数据包生成冗余数据包,目标数量根据第一冗余度确定;发送特定协议类型缓存队列中排列在前的目标数量的已添加数据包以及冗余数据包。数量的已添加数据包以及冗余数据包。数量的已添加数据包以及冗余数据包。
技术研发人员:刘芳宁
受保护的技术使用者:东软集团股份有限公司
技术研发日:2023.05.11
技术公布日:2023/7/26
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种桑黄多糖的提取方法 下一篇:具有一致服务体验的方法、装置、设备及介质与流程
