System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及乱序纠正,特别是涉及一种数据包处理方法、装置、电子设备及存储介质。
技术介绍
1、多处理器网络设备为了充分发挥多处理器的优势,对标准的网络包的特定字段(如源ip地址、目标ip地址、端口号等)进行哈希分流,具有相同特征的网络数据包在同一处理器处理,确保有相同特征的网络数据包的顺序,在利用多处理器性能的同时保证相同特征的数据包的顺序一致性。
2、而在视联网中,视联网数据包具有专有的结构,网络设备无法从视联网网络数据包中提取标识特定数据流的特定字段(如源ip地址、目标ip地址、端口号等)。为了充分利用多处理器性能,同一数据流的多个视联网数据包分流给不同的处理器进行处理,不同处理器的处理时延引起处理后的同一特征数据流的视联网数据包的顺序与原视联网数据包的顺序不一致,从而导致数据包乱序的情况发生,无法满足用户对网络数据包的顺序一致性需求。
技术实现思路
1、鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据包处理方法、装置、电子设备及存储介质。
2、第一方面,本申请实施例提供了一种数据包处理方法,所述方法包括:
3、针对多处理器输出的数据包,获取所述数据包对应的隧道特征信息,确定所述数据包对应的隧道;
4、将所述数据包缓存于所述隧道对应的排序队列;
5、提取所述排序队列内的所述数据包的数据包头内的数据包序号;
6、按照所述数据包序号从小到大的顺序将所述排序队列内的数据包
7、可选地,所述获取所述数据包对应的隧道特征信息,包括:
8、从所述数据包的数据包头提取所述隧道特征信息。
9、可选地,所述按照所述数据包序号从小到大的顺序将所述排序队列内的数据包依次发送至数据包输出队列,以输出所述数据包,包括:
10、确定所述排序队列中是否存在数据包序号小于参考包序号的第一数据包;
11、在所述排序队列中存在所述第一数据包的情况下,将所述第一数据包发送至所述数据包输出队列,并将所述参考报序号加1得到新的参考包序号;
12、迭代执行上述步骤,直至所述排序队列中不存在缓存的数据包;
13、其中,所述参考包序号的初始值为1。
14、可选地,在所述确定所述排序队列中是否存在数据包序号小于参考包序号的第一数据包之后,还包括:
15、在确定所述排序队列中不存在数据包序号小于参考包序号的数据包的情况下,获取所述排序队列中的数据包序号最小的第二数据包;
16、获取所述第二数据包的缓存时长,所述缓存时长是指所述第二数据包缓存于所述排序队列的时长;
17、确定所述缓存时长是否超过预先设置的时长阈值;
18、在确定所述缓存时长超过所述时长阈值的情况下,将所述第二数据包发送至所述数据包输出队列。
19、可选地,所述按照所述数据包序号从小到大的顺序将所述排序队列内的数据包依次发送至数据包输出队列,以输出所述数据包,包括:
20、根据所述数据包对应的隧道,确定所述数据包对应的数据包输出队列;
21、按照所述数据包序号从小到大的顺序将所述数据包依次发送至所述排序队列内的数据包对应的数据包输出队列,以输出所述数据包。
22、第二方面,本申请实施例提供了一种数据包处理装置,所述装置包括:
23、隧道确定模块,用于针对多处理器输出的数据包,获取所述数据包对应的隧道特征信息,确定所述数据包对应的隧道;
24、数据包缓存模块,用于将所述数据包缓存于所述隧道对应的排序队列;
25、数据包序号提取模块,用于提取所述排序队列内的所述数据包的数据包头内的数据包序号;
26、数据包发送模块,用于按照所述数据包序号从小到大的顺序将所述排序队列内的数据包依次发送至数据包输出队列,以输出所述数据包。
27、可选地,所述隧道确定模块包括:
28、隧道特征提取单元,用于从所述数据包的数据包头提取所述隧道特征信息。
29、可选地,所述数据包发送模块包括:
30、第一数据包确定单元,用于确定所述排序队列中是否存在数据包序号小于参考包序号的第一数据包;
31、第一数据包发送单元,用于在所述排序队列中存在所述第一数据包的情况下,将所述第一数据包发送至所述数据包输出队列,并将所述参考报序号加1得到新的参考包序号;
32、迭代执行单元,用于迭代执行所述第一数据包确定单元和所述第一数据包发送单元,直至所述排序队列中不存在缓存的数据包;
33、其中,所述参考包序号的初始值为1。
34、可选地,所述装置还包括:
35、第二数据包获取模块,用于在确定所述排序队列中不存在数据包序号小于参考包序号的数据包的情况下,获取所述排序队列中的数据包序号最小的第二数据包;
36、缓存时长获取模块,用于获取所述第二数据包的缓存时长,所述缓存时长是指所述第二数据包缓存于所述排序队列的时长;
37、缓存时长确定模块,用于确定所述缓存时长是否超过预先设置的时长阈值;
38、第二数据包发送模块,用于在确定所述缓存时长超过所述时长阈值的情况下,将所述第二数据包发送至所述数据包输出队列。
39、可选地,所述数据包发送模块包括:
40、输出队列确定单元,用于根据所述数据包对应的隧道,确定所述数据包对应的数据包输出队列;
41、数据包发送单元,用于按照所述数据包序号从小到大的顺序将所述数据包依次发送至所述排序队列内的数据包对应的数据包输出队列,以输出所述数据包。
42、第三方面,本申请实施例提供了一种电子设备,包括:
43、一个或多个处理器;和
44、其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行上述任一项所述的数据包处理方法。
45、第四方面,本申请实施例提供了一种计算机可读存储介质,其存储的计算机程序使得处理器执行上述任一项所述的数据包处理方法。
46、本申请实施例包括以下优点:
47、本申请实施例提供的方案,通过针对多处理器输出的数据包,获取数据包对应的隧道特征信息,确定数据包对应的隧道。将数据包缓存于隧道对应的排序队列。提取数据包的数据包头内的数据包序号。按照数据包序号从小到大的顺序将数据包依次发送至数据包输出队列,以输出数据包。本申请实施例在转发的数据包发生乱序的情况下,利用视联网中封装的专有结构中的特有字段(即数据包序号)作为恢复原数据流顺序的依据,将数据包的顺序恢复到视联网封装时的顺序,实现数据包乱序纠正的目的,保障了数据包顺序的一致性,满足了用户对网络数据包顺序一致性的需求。
本文档来自技高网...【技术保护点】
1.一种数据包处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取所述数据包对应的隧道特征信息,包括:
3.根据权利要求1或2所述的方法,其特征在于,所述按照所述数据包序号从小到大的顺序将所述排序队列内的数据包依次发送至数据包输出队列,以输出所述数据包,包括:
4.根据权利要求3所述的方法,其特征在于,在所述确定所述排序队列中是否存在数据包序号小于参考包序号的第一数据包之后,还包括:
5.根据权利要求2所述的方法,其特征在于,所述按照所述数据包序号从小到大的顺序将所述排序队列内的数据包依次发送至数据包输出队列,以输出所述数据包,包括:
6.一种数据包处理装置,其特征在于,所述装置包括:
7.根据权利要求6所述的装置,其特征在于,所述隧道确定模块包括:
8.根据权利要求6或7所述的装置,其特征在于,所述数据包发送模块包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,其存储的计算机程序使得处理器执行如权利
...【技术特征摘要】
1.一种数据包处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取所述数据包对应的隧道特征信息,包括:
3.根据权利要求1或2所述的方法,其特征在于,所述按照所述数据包序号从小到大的顺序将所述排序队列内的数据包依次发送至数据包输出队列,以输出所述数据包,包括:
4.根据权利要求3所述的方法,其特征在于,在所述确定所述排序队列中是否存在数据包序号小于参考包序号的第一数据包之后,还包括:
5.根据权利要求2所述的方法,其特征在于,所述...
【专利技术属性】
技术研发人员:张高,汪惊奇,贾可勇,高孟林,
申请(专利权)人:视联动力信息技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。