数据包发送方法、转发节点、发送端及存储介质与流程

文档序号:36261885发布日期:2023-12-05 22:15阅读:25来源:国知局
数据包发送方法与流程

本技术实施例涉及通信,特别涉及一种数据包发送方法、转发节点、发送端及存储介质。


背景技术:

1、上层应用处理数据的基本单元为对象块,一个对象块包括一段完整的数据,比如媒体类应用中一张视频帧对应的数据即为一个对象块。而网络传输数据的基本单元为数据包(packet),因此,发送端向接收端发送数据时,需将上层应用提供的对象块划分为多个数据包,然后将各个数据包发送至网络的转发节点,由转发节点将各个数据包发送至接收端。

2、相关技术中,转发节点上配置有尽力服务(best effort)队列。转发节点每接收到一个数据包,将该数据包添加至尽力服务队列。转发节点发送数据时,通过比较器从尽力服务队列中选择入队时间最早的数据包,通过匹配器从尽力服务队列中确定与入队时间最早的数据包属于同一对象块的数据包,然后依次发送这些数据包。通过这种方式可以尽量将属于同一对象块的数据包一起发送,以此降低不同对象块的数据包之间交织发送的频率。

3、但是上述发送数据包的流程复杂,导致转发节点的算法开销大,从而影响转发节点的转发效率。


技术实现思路

1、本技术实施例提供了一种数据包发送方法、转发节点、发送端及存储介质,可以提高转发节点的转发效率。技术方案如下:

2、第一方面,提供了一种数据包转发方法。在该方法中,转发节点基于多个调度队列中每个调度队列的优先级,从多个调度队列中确定第一调度队列;其中,多个调度队列中的每个调度队列用于缓存至少一个对象块的数据包、且同一对象块的数据包缓存在同一调度队列中,每个调度队列的优先级是基于相应调度队列缓存的数据包所属对象块的目标属性确定的,目标属性为在相应对象块的数据包发送过程中保持不变的属性;转发节点发送第一调度队列中的数据包。

3、因为同一对象块的数据包是缓存在同一调度队列中的,且调度队列的优先级和该调度队列缓存的对象块的固定的目标属性相关,而不是和具体的数据包相关,如此各个调度队列的优先级之间的大小关系在较短一段时间内基本不会发生变化。在各个调度队列的优先级不变的情况下,转发节点在该较短时间内每次都会选择同一调度队列中的数据包发送。又由于同一对象块的数据包缓存在同一调度队列中,因此在该较短时间内转发节点发送的数据包属于同一对象块的概率很大,以此来实现同一对象块中的数据块尽量一起发送,从而降低了不同对象块的数据包之间交织发送的频率。

4、相对于基于比较器和匹配器来降低不同对象块的数据包之间交织发送的频率,本技术实施例通过调度队列以及对应的优先级便可实现,硬件开销小,且转发效率高。

5、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,在该方法中,转发节点接收第一数据包,第一数据包携带目标对象块的标识,目标对象块为第一数据包所属的对象块;如果第一数据包没有携带首包标签,转发节点基于目标对象块的标识,将第一数据包添加至第二调度队列,第二调度队列为多个调度队列中已缓存有目标对象块的数据包的调度队列,首包标签用于指示第一数据包是否为目标对象块的首个数据包。

6、如果第一数据包没有携带首包标签,则表明第一数据包不是目标对象块的首包。这种场景下,只需将第一数据包添加到当前时间之前缓存目标对象块的数据包的调度队列即可。通过该方式,便可实现将同一对象块的数据包缓存在同一调度队列中。

7、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,在该方法中,转发节点接收第一数据包之后,如果第一数据包还携带首包标签,转发节点从多个调度队列中选择一个调度队列作为第三调度队列,将第一数据包添加至第三调度队列。

8、如果第一数据包携带首包标签,则表明第一数据包是目标对象块的首包。这种场景下,对于转发节点而言,目标对象块相当于新的对象块,此时需要为目标对象块分配一个调度队列,以便后续目标对象块的数据包均缓存到分配的调度队列中。

9、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,转发节点从多个调度队列中选择一个调度队列作为第三调度队列的实现过程为:转发节点从多个调度队列中选择未缓存数据包的调度队列作为第三调度队列。

10、为了实现将不同对象块缓存在不同的调度队列中,对于新接收到的目标对象块,转发节点可以从剩下的空的调度队列中选择一个调度队列作为第三调度队列。后续将这种入队方式称为第一种入队方式。

11、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,多个调度队列中的每个调度队列至多缓存一个对象块的数据包。通过第一种入队方式,可以实现每个调度队列仅仅用于缓存一个对象块。

12、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,目标属性为相应对象块的网络允许时延,第一数据包还携带目标对象块的网络允许时延。

13、这种场景下,转发节点从多个调度队列中选择未缓存数据包的调度队列作为第三调度队列之后,转发节点更新第三调度队列的优先级,以使更新后的第三调度队列的优先级高于第四调度队列的优先级、且低于第五调度队列的优先级,第四调度队列是指多个调度队列中缓存的对象块的网络允许时延大于目标对象块的网络允许时延的调度队列,第五调度队列是指多个调度队列中缓存的对象块的网络允许时延小于目标对象块的网络允许时延的调度队列。

14、在第一种入队方式中,通过上述实现方式,可以实现对网络允许时延要求高的对象块所在的调度队列的优先级更高,从而保证对网络允许时延要求高的对象块优先发送出去。

15、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,转发节点从多个调度队列中选择一个调度队列作为第三调度队列的实现过程为:转发节点确定第六调度队列的剩余容量,第六调度队列为当前时间之前最近一次接收的首包所在的调度队列;如果第六调度队列的剩余容量不足以缓存目标对象块,则转发节点从多个调度队列中选择未缓存数据包的调度队列作为第三调度队列。相应地,转发节点确定第六调度队列的剩余容量之后,如果第六调度队列的剩余容量足以缓存目标对象块,则转发节点将第六调度队列作为第三调度队列。

16、通过上述实现方式,可以实现每个调度队列用于缓存若干个对象块,在一个调度队列满载的情况下,新来的对象块才会进入下一个空的调度队列。后续将这种入队方式称为第二种入队方式。

17、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,转发节点确定第六调度队列的剩余容量的实现过程为:转发节点确定已缓存对象块数量,已缓存对象块数量为第六调度队列已缓存的数据包所属的对象块的数量;转发节点将第一阈值和已缓存对象块数量之间的差值,确定为第六调度队列的剩余容量,第一阈值为第六调度队列能够缓存的对象块的数量;第六调度队列的剩余容量不足以缓存目标对象块的数据包是指:第六调度队列的剩余容量为0。

18、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,转发节点确定第六调度队列的剩余容量的实现过程为:转发节点确定已缓存数据总大小,已缓存数据总大小为第六调度队列已缓存的数据包的总大小;转发节点将第二阈值和已缓存数据总大小之间的差值,确定为第六调度队列的剩余容量,第二阈值为第六调度队列能够缓存的数据包的总大小;第一数据包还携带目标对象块的数据大小,第六调度队列的剩余容量不足以缓存目标对象块的数据包是指:第六调度队列的剩余容量小于目标对象块的数据大小。

19、在第二种入队方式中,基于上述两种实现方式,可以根据调度队列能够承载的对象块的最大数量或能够承载的最大数据大小来确定一个队列是否满载,提高了首包入队的灵活性。

20、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,目标属性为相应对象块的首个数据包的到达时间。

21、这种场景下,转发节点从多个调度队列中选择未缓存数据包的调度队列作为第三调度队列之后,转发节点更新第三调度队列的优先级,以使更新后的第三调度队列的优先级低于其他已缓存有数据包的调度队列的优先级。

22、在第一种入队方式或第二种入队方式中,基于上述方式,可以实现首包早到达的对象块所在的调度队列的优先级更高。

23、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,在该方法中,如果多个调度队列中任一调度队列缓存的所有对象块的数据包全部发送完毕,则更新该任一调度队列的优先级,以使该任一调度队列更新后的优先级,低于其他已缓存有数据包的调度队列的优先级。

24、在第一种入队方式中,由于一个调度队列仅仅用于缓存一个对象块,因此当某个调度队列缓存的对象块(也即全部对象块)的数据包全部发送完毕时,需要触发调度队列的优先级的更新。

25、在第二种入队方式中,由于调度队列的优先级是基于调度队列缓存的首个对象块的目标属性确定的,而一个调度队列缓存有多个对象块且这多个对象块的首包是连续到达的,因此,在某个调度队列中缓存的全部对象块的数据包全部发送完毕的情况下,需要对调度队列的优先级进行更新。

26、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,多个调度队列按照顺序依次排列。这种场景下,转发节点从多个调度队列中选择一个调度队列作为第三调度队列的实现过程为:转发节点从多个调度队列中确定第六调度队列,第六调度队列为当前时间之前最近一次接收到的首包所在的调度队列;将排序在第六调度队列之后的一个调度队列确定为第三调度队列。

27、通过上述实现方式,可以实现每个调度队列用于缓存若干个对象块,新来的对象块轮流进入各个调度队列。后续将这种入队方式称为第三种入队方式。

28、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,目标属性为相应对象块的首个数据包的到达时间。这种场景下,转发节点从多个调度队列中选择一个调度队列作为第三调度队列之后,如果第三调度队列除第一数据包外没有缓存其他对象块的数据包,则转发节点更新第三调度队列的优先级,以使更新后的第三调度队列的优先级低于其他已缓存有数据包的调度队列的优先级。

29、在第三种入队方式,基于上述方式,可以实现首包早到达的对象块所在的调度队列的优先级更高。

30、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,在该方法中,如果多个调度队列中任一调度队列缓存的其中一个对象块的数据包全部发送完毕,则更新多个调度队列的优先级,以使任一调度队列更新后的优先级,低于其他已缓存有数据包的调度队列更新后的优先级。

31、在第三种入队方式中,调度队列的优先级是基于调度队列缓存的对象块的目标属性确定的,而一个调度队列缓存有多个对象块且这多个对象块的首包不是连续到达的,也即,相邻到达转发节点的首包是分别缓存在不同的调度队列中的。这种场景下,为了避免先到的对象块的传输时间较长,在某个调度队列中缓存的其中一个对象块的数据包全部发送完毕的情况下,需要对调度队列的优先级进行更新。

32、基于第一方面提供的数据包转发方法,在一种可能的实现方式中,在该方法中,更新任一调度队列的优先级的实现方式可以为:如果任一调度队列的优先级为最高优先级,则更新任一调度队列的优先级。

33、通过上述方式,可以仅仅在优先级最高的调度队列存在某个对象块的数据包全部发送完毕时触发优先级更新,降低节点的数据处理压力。

34、第二方面,提供了一种数据包发送方法,在该方法中,发送端确定待发送对象块的多个数据包,多个数据包中每个数据包均携带对象块的标识,且多个数据包中的首包携带首包标签,首包标签用于指示相应数据包为待发送对象块的首个数据包;发送端发送多个数据包。

35、基于第二方面提供的数据包转发方法,在一种可能的实现方式中,首包还携带待发送对象块的网络允许时延。

36、基于第二方面提供的数据包转发方法,在一种可能的实现方式中,首包还携带待发送对象块的数据大小。

37、基于第二方面提供的数据包转发方法,在一种可能的实现方式中,多个数据包中的尾包携带尾包标签,尾包标签用于指示相应数据包为待发送对象块的最后一个数据包。

38、第二方面提供的数据包发送方法的相关技术效果可以参考第一方面,在此不再赘述。

39、第三方面,提供了一种转发节点,所述转发节点具有实现上述第一方面中数据包发送方法行为的功能。所述转发节点包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的数据包发送方法。

40、第四方面,提供了一种发送端,所述发送端具有实现上述第二方面中数据包发送方法行为的功能。所述发送端包括至少一个模块,该至少一个模块用于实现上述第二方面所提供的数据包发送方法。

41、第五方面,提供了一种转发节点,所述转发节点的结构中包括处理器和存储器,所述存储器用于存储支持转发节点执行上述第一方面所提供的数据包发送方法的程序,以及存储用于实现上述第一方面所提供的转发节点方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。

42、第六方面,提供了一种发送端,所述发送端的结构中包括处理器和存储器,所述存储器用于存储支持发送端执行上述第二方面所提供的数据包发送方法的程序,以及存储用于实现上述第二方面所提供的发送端方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。

43、第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的数据包发送方法。

44、第八方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的数据包发送方法。

45、上述第二方面至第八方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。

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