一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

传输窗口的调整方法、装置、发送设备、接收设备及介质与流程

2022-06-08 19:00:37 来源:中国专利 TAG:


1.本发明涉及通信技术领域,特别是涉及一种传输窗口的调整方法、装置、发送设备、接收设备及介质。


背景技术:

2.对于对可靠性要求高且对传输时延不敏感的业务,无线链路控制层(radio link control,rlc)可以工作在确认模式(acknowledged mode,am)。发送设备接收到服务数据单元(service data unit,sdu)后,对sdu进行分段并添加rlc头,得到同一sdu对应的多个rlc协议数据单元(protocol data unit,pdu)。然后按照序列号(serial number,sn)对rlc pdu进行发送,同时发送设备需要缓存所有已发送但未收到接收设备确认的sdu。其中,每个sdu对应一个sn,同一sdu对应的所有rlc pdu的sn相同。
3.在rlc的am工作模式下,发送设备和接收设备维护分别维护一个sn的发送窗口和接收窗口。以发送设备为例,窗口的大小决定了在不需要对端响应的情况下,最大可发送的sdu的数量。发送设备还会分配一段静态内存,用于存储发送窗口内的sn对应的sdu的指针地址,通过该静态内存,可以查找到某一sn对应的sdu的指针地址,进而根据sdu的指针地址查找已缓存的sdu。该静态内存一般按照发送窗口的大小分配,发送窗口越大,该静态内存的内存空间越大。
4.发送窗口的大小与业务吞吐率密切相关,目前一般将发送窗口设置为131072,可以支持5g终端峰速的最大数据量。但在实际的通信过程中,大部分用户的数据量都远低于5g终端峰速的最大数据量,按照目前的发送窗口大小分配静态内存将导致内存资源的浪费。


技术实现要素:

5.本发明实施例的目的在于提供一种传输窗口的调整方法、装置、发送设备、接收设备及介质,以避免内存资源的浪费。具体技术方案如下:
6.第一方面,本技术实施例提供一种传输窗口的调整方法,所述方法应用于发送设备,所述方法包括:
7.获取待确认序列号sn数量,所述待确认sn数量为第一发送变量与第二发送变量之间的差值,所述第一发送变量为已发送的sdu的最大sn,所述第二发送变量为已被确认的连续的sdu的最大sn;
8.根据当前发送窗口值与所述待确认sn数量之间的差值,调整发送窗口;
9.基于调整后的发送窗口重新分配用于缓存sdu地址指针的内存空间。
10.在一种可能的实现方式中,所述根据当前发送窗口值与所述待确认sn数量之间的差值,调整发送窗口,包括:
11.若所述当前发送窗口值与所述待确认sn数量之间的差值小于第一预设门限值,则扩大发送窗口;
12.若所述当前发送窗口值与所述待确认sn数量之间的差值大于第二预设门限值,则缩小发送窗口。
13.在一种可能的实现方式中,所述扩大发送窗口,包括:
14.从预设的窗口值集合中,获取与所述当前发送窗口值相邻的下一级窗口值,将所述发送窗口的窗口值更新为与所述当前发送窗口值相邻的下一级窗口值;所述预设的窗口值集合中包括按照从小到大顺序排列的多个窗口值;
15.所述缩小发送窗口,包括:
16.从所述预设的窗口值集合中,获取与所述当前发送窗口值相邻的上一级窗口值,将所述发送窗口的窗口值更新为与所述当前发送窗口值相邻的上一级窗口值。
17.在一种可能的实现方式中,所述基于调整后的发送窗口重新分配用于缓存sdu地址指针的内存空间包括:
18.基于调整后的发送窗口的窗口值分配目标内存空间,所述目标内存空间用于缓存调整后的发送窗口内各sn对应的sdu的地址指针;
19.将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,并将所述原内存空间释放。
20.在一种可能的实现方式中,所述将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,包括:
21.通过调整前发送窗口的窗口值,确定第三发送变量对应的sdu地址指针在原内存空间中的第一缓存位置,以及第四发送变量对应的sdu地址指针在原内存空间中的第二缓存位置,所述第三发送变量对应的sdu为在所述第二发送变量对应的sdu之后被发送的下一个sdu,所述第四发送变量对应的sdu为在所述第一发送变量对应的sdu之后下一个待发送的sdu;
22.通过调整后发送窗口的窗口值,确定所述第三发送变量对应的sdu地址指针在所述目标内存空间中的第三缓存位置,以及所述第四发送变量对应的sdu的地址指针在所述目标内存空间中的第四缓存位置;
23.基于所述第一缓存位置与所述第二缓存位置之间的位置关系,以及所述第三缓存位置与所述第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间。
24.在一种可能的实现方式中,若调整前发送窗口的窗口值小于调整后发送窗口的窗口值,则所述基于所述第一缓存位置与所述第二缓存位置之间的位置关系,以及所述第三缓存位置与所述第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,包括:
25.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置与所述第四缓存位置之间;
26.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中起始位置至所述第二缓存位置之间的sdu地址指针整体移动到所述目标内存空间中所述第四缓存位置之前,并将原内存空间中所述第一缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的第三缓存位置之后;
27.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中起始位置至所述第一缓存位置之间的sdu地址指针整体移动到所述目标内存空间的起始位置至所述第三缓存位置之间,并将所述原内存空间中第四缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的所述第四缓存位置至结束位置之间;
28.若调整前发送窗口的窗口值大于调整后发送窗口的窗口值,则所述基于所述第一缓存位置与所述第二缓存位置之间的位置关系,以及所述第三缓存位置与所述第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,包括:
29.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置与所述第四缓存位置之间;
30.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中所述第一缓存位置之后第一指定空间内的sdu地址指针整体移动到所述目标内存空间的所述第三缓存位置至结束位置之间,并将原内存空间中所述第二缓存位置之前的第二指定空间内的sdu地址整体移动到所述目标内存空间的起始位置至所述第四缓存位置之间;其中,所述第一指定空间的大小与所述目标内存空间中所述第三缓存位置至结束位置之间的内存空间大小相同,所述第二指定空间的大小与所述目标内存空间的起始位置与所述第四缓存位置之间的内存大小相同;
31.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中起始位置至所述第一缓存位置之间的sdu地址指针整体移动到所述目标内存空间的起始位置至所述第四缓存位置之间,将原内存空间中所述第二缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置至结束位置之间。
32.第二方面,本技术实施例提供一种传输窗口的调整方法,所述方法应用于接收设备,所述方法包括:
33.获取待确认序列号sn数量,所述待确认sn数量为第一接收变量与第二接收变量之间的差值,所述第一接收变量为已接收的sdu的最大sn,所述第二接收变量为已接收且已向对端确认的连续sdu的最大sn;
34.根据当前接收窗口值与所述待确认sn数量之间的差值,调整接收窗口;
35.基于调整后的接收窗口重新分配用于缓存sdu地址指针的内存空间。
36.在一种可能的实现方式中,所述根据当前接收窗口值与所述待确认sn数量之间的差值,调整接收窗口,包括:
37.若所述当前接收窗口值与所述待确认sn数量之间的差值小于第一预设门限值,则扩大接收窗口;
38.若所述当前接收窗口值与所述待确认sn数量之间的差值大于第二预设门限值,则缩小接收窗口。
39.在一种可能的实现方式中,所述扩大接收窗口,包括:
40.从预设的窗口值集合中,获取与所述当前接收窗口值相邻的下一级窗口值,将所述接收窗口的窗口值更新为与所述当前接收窗口值相邻的下一级窗口值;所述预设的窗口
值集合中包括按照从小到大顺序排列的多个窗口值;
41.所述缩小发送窗口,包括:
42.从所述预设的窗口值集合中,获取与所述当前接收窗口值相邻的上一级窗口值,将所述接收窗口的窗口值更新为与所述当前接收窗口值相邻的上一级窗口值。
43.在一种可能的实现方式中,所述基于调整后的接收窗口重新分配分配用于缓存sdu地址指针的内存空间,包括:
44.基于调整后的接收窗口的窗口值分配目标内存空间,所述目标内存空间用于缓存调整后的接收窗口内各sn对应的sdu的地址指针;
45.将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,并将所述原内存空间释放。
46.在一种可能的实现方式中,所述将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,包括:
47.通过调整前接收窗口的窗口值,确定第三接收变量对应的sdu地址指针在原内存空间中的第一缓存位置,以及第四接收变量对应的sdu地址指针在原内存空间中的第二缓存位置,所述第三接收变量对应的sdu为在所述第二接收变量对应的sdu之后接收的下一个sdu,所述第四接收变量对应的sdu为在所述第一接收变量对应的sdu之后下一个待接收的sdu;
48.通过调整后接收窗口的窗口值,确定所述第三接收变量对应的sdu地址指针在所述目标内存空间中的第三缓存位置,以及所述第四接收变量对应的sdu的地址指针在所述目标内存空间中的第四缓存位置;
49.基于所述第一缓存位置与所述第二缓存位置之间的位置关系,以及所述第三缓存位置与所述第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间。
50.在一种可能的实现方式中,若调整前接收窗口的窗口值小于调整后接收窗口的窗口值,则所述基于所述第一缓存位置与所述第二缓存位置之间的位置关系,以及所述第三缓存位置与所述第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,包括:
51.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置与所述第四缓存位置之间;
52.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中起始位置至所述第二缓存位置之间的sdu地址指针整体移动到所述目标内存空间中所述第四缓存位置之前,并将原内存空间中所述第一缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的第三缓存位置之后;
53.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中起始位置至所述第一缓存位置之间的sdu地址指针整体移动到所述目标内存空间的起始位置至所述第三缓存位置之间,并将所述原内存空间中第四缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的所述第四缓存位置至结束位置之间;
54.若调整前接收窗口的窗口值大于调整后接收窗口的窗口值,则所述基于所述第一缓存位置与所述第二缓存位置之间的位置关系,以及所述第三缓存位置与所述第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,包括:
55.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置与所述第四缓存位置之间;
56.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中所述第一缓存位置之后第一指定空间内的sdu地址指针整体移动到所述目标内存空间的所述第三缓存位置至结束位置之间,并将原内存空间中所述第二缓存位置之前的第二指定空间内的sdu地址整体移动到所述目标内存空间的起始位置至所述第四缓存位置之间;其中,所述第一指定空间的大小与所述目标内存空间中所述第三缓存位置至结束位置之间的内存空间大小相同,所述第二指定空间的大小与所述目标内存空间的起始位置与所述第四缓存位置之间的内存大小相同;
57.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中起始位置至所述第一缓存位置之间的sdu地址指针整体移动到所述目标内存空间的起始位置至所述第四缓存位置之间,将原内存空间中所述第二缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置至结束位置之间。
58.第三方面,本技术实施例还提供一种发送设备,包括存储器,收发机,处理器:
59.存储器,用于存储计算机程序;收发机,用于在所述处理器的控制下收发数据;处理器,用于读取所述存储器中的计算机程序并执行以下操作:
60.获取待确认序列号sn数量,所述待确认sn数量为第一发送变量与第二发送变量之间的差值,所述第一发送变量为已发送的sdu的最大sn,所述第二发送变量为已被确认的连续的sdu的最大sn;
61.根据当前发送窗口值与所述待确认sn数量之间的差值,调整发送窗口;
62.基于调整后的发送窗口重新分配用于缓存sdu地址指针的内存空间。
63.在一种可能的实现方式中,所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
64.若所述当前发送窗口值与所述待确认sn数量之间的差值小于第一预设门限值,则扩大发送窗口;
65.若所述当前发送窗口值与所述待确认sn数量之间的差值大于第二预设门限值,则缩小发送窗口。
66.在一种可能的实现方式中,所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
67.从预设的窗口值集合中,获取与所述当前发送窗口值相邻的下一级窗口值,将所述发送窗口的窗口值更新为与所述当前发送窗口值相邻的下一级窗口值;所述预设的窗口值集合中包括按照从小到大顺序排列的多个窗口值;
68.从所述预设的窗口值集合中,获取与所述当前发送窗口值相邻的上一级窗口值,将所述发送窗口的窗口值更新为与所述当前发送窗口值相邻的上一级窗口值。
69.在一种可能的实现方式中,所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
70.基于调整后的发送窗口的窗口值分配目标内存空间,所述目标内存空间用于缓存调整后的发送窗口内各sn对应的sdu的地址指针;
71.将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,并将所述原内存空间释放。
72.在一种可能的实现方式中,所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
73.通过调整前发送窗口的窗口值,确定第三发送变量对应的sdu地址指针在原内存空间中的第一缓存位置,以及第四发送变量对应的sdu地址指针在原内存空间中的第二缓存位置,所述第三发送变量对应的sdu为在所述第二发送变量对应的sdu之后被发送的下一个sdu,所述第四发送变量对应的sdu为在所述第一发送变量对应的sdu之后下一个待发送的sdu;
74.通过调整后发送窗口的窗口值,确定所述第三发送变量对应的sdu地址指针在所述目标内存空间中的第三缓存位置,以及所述第四发送变量对应的sdu的地址指针在所述目标内存空间中的第四缓存位置;
75.基于所述第一缓存位置与所述第二缓存位置之间的位置关系,以及所述第三缓存位置与所述第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间。
76.在一种可能的实现方式中,若调整前发送窗口的窗口值小于调整后发送窗口的窗口值,则所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
77.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置与所述第四缓存位置之间;
78.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中起始位置至所述第二缓存位置之间的sdu地址指针整体移动到所述目标内存空间中所述第四缓存位置之前,并将原内存空间中所述第一缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的第三缓存位置之后;
79.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中起始位置至所述第一缓存位置之间的sdu地址指针整体移动到所述目标内存空间的起始位置至所述第三缓存位置之间,并将所述原内存空间中第四缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的所述第四缓存位置至结束位置之间;
80.若调整前发送窗口的窗口值大于调整后发送窗口的窗口值,则所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
81.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置与所述第四缓存位置之间;
82.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述
第四缓存位置之后,则将原内存空间中所述第一缓存位置之后第一指定空间内的sdu地址指针整体移动到所述目标内存空间的所述第三缓存位置至结束位置之间,并将原内存空间中所述第二缓存位置之前的第二指定空间内的sdu地址整体移动到所述目标内存空间的起始位置至所述第四缓存位置之间;其中,所述第一指定空间的大小与所述目标内存空间中所述第三缓存位置至结束位置之间的内存空间大小相同,所述第二指定空间的大小与所述目标内存空间的起始位置与所述第四缓存位置之间的内存大小相同;
83.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中起始位置至所述第一缓存位置之间的sdu地址指针整体移动到所述目标内存空间的起始位置至所述第四缓存位置之间,将原内存空间中所述第二缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置至结束位置之间。
84.第四方面,本技术实施例提供一种接收设备,包括存储器,收发机,处理器:
85.存储器,用于存储计算机程序;收发机,用于在所述处理器的控制下收发数据;处理器,用于读取所述存储器中的计算机程序并执行以下操作:
86.获取待确认序列号sn数量,所述待确认sn数量为第一接收变量与第二接收变量之间的差值,所述第一接收变量为已接收的sdu的最大sn,所述第二接收变量为已接收且已向对端确认的连续sdu的最大sn;
87.根据当前接收窗口值与所述待确认sn数量之间的差值,调整接收窗口;
88.基于调整后的接收窗口重新分配用于缓存sdu地址指针的内存空间。
89.在一种可能的实现方式中,所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
90.若所述当前接收窗口值与所述待确认sn数量之间的差值小于第一预设门限值,则扩大接收窗口;
91.若所述当前接收窗口值与所述待确认sn数量之间的差值大于第二预设门限值,则缩小接收窗口。
92.在一种可能的实现方式中,所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
93.从预设的窗口值集合中,获取与所述当前接收窗口值相邻的下一级窗口值,将所述接收窗口的窗口值更新为与所述当前接收窗口值相邻的下一级窗口值;所述预设的窗口值集合中包括按照从小到大顺序排列的多个窗口值;
94.从所述预设的窗口值集合中,获取与所述当前接收窗口值相邻的上一级窗口值,将所述接收窗口的窗口值更新为与所述当前接收窗口值相邻的上一级窗口值。
95.在一种可能的实现方式中,所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
96.基于调整后的接收窗口的窗口值分配目标内存空间,所述目标内存空间用于缓存调整后的接收窗口内各sn对应的sdu的地址指针;
97.将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间,并将所述原内存空间释放。
98.在一种可能的实现方式中,所述处理器,具体用于读取所述存储器中的计算机程
序并执行以下操作:
99.通过调整前接收窗口的窗口值,确定第三接收变量对应的sdu地址指针在原内存空间中的第一缓存位置,以及第四接收变量对应的sdu地址指针在原内存空间中的第二缓存位置,所述第三接收变量对应的sdu为在所述第二接收变量对应的sdu之后接收的下一个sdu,所述第四接收变量对应的sdu为在所述第一接收变量对应的sdu之后下一个待接收的sdu;
100.通过调整后接收窗口的窗口值,确定所述第三接收变量对应的sdu地址指针在所述目标内存空间中的第三缓存位置,以及所述第四接收变量对应的sdu的地址指针在所述目标内存空间中的第四缓存位置;
101.基于所述第一缓存位置与所述第二缓存位置之间的位置关系,以及所述第三缓存位置与所述第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至所述目标内存空间。
102.在一种可能的实现方式中,若调整前接收窗口的窗口值小于调整后接收窗口的窗口值,则所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
103.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置与所述第四缓存位置之间;
104.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中起始位置至所述第二缓存位置之间的sdu地址指针整体移动到所述目标内存空间中所述第四缓存位置之前,并将原内存空间中所述第一缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的第三缓存位置之后;
105.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中起始位置至所述第一缓存位置之间的sdu地址指针整体移动到所述目标内存空间的起始位置至所述第三缓存位置之间,并将所述原内存空间中第四缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的所述第四缓存位置至结束位置之间;
106.若调整前接收窗口的窗口值大于调整后接收窗口的窗口值,则所述处理器,具体用于读取所述存储器中的计算机程序并执行以下操作:
107.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置与所述第四缓存位置之间;
108.若所述第一缓存位置位于所述第二缓存位置之前,且所述第三缓存位置位于所述第四缓存位置之后,则将原内存空间中所述第一缓存位置之后第一指定空间内的sdu地址指针整体移动到所述目标内存空间的所述第三缓存位置至结束位置之间,并将原内存空间中所述第二缓存位置之前的第二指定空间内的sdu地址整体移动到所述目标内存空间的起始位置至所述第四缓存位置之间;其中,所述第一指定空间的大小与所述目标内存空间中所述第三缓存位置至结束位置之间的内存空间大小相同,所述第二指定空间的大小与所述目标内存空间的起始位置与所述第四缓存位置之间的内存大小相同;
109.若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述
第四缓存位置之后,则将原内存空间中起始位置至所述第一缓存位置之间的sdu地址指针整体移动到所述目标内存空间的起始位置至所述第四缓存位置之间,将原内存空间中所述第二缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间中所述第三缓存位置至结束位置之间。
110.第五方面,本技术实施例还提供一种传输窗口的调整装置,所述装置应用于发送设备,所述装置包括:
111.获取单元,用于获取待确认序列号sn数量,所述待确认sn数量为第一发送变量与第二发送变量之间的差值,所述第一发送变量为已发送的sdu的最大sn,所述第二发送变量为已被确认的连续的sdu的最大sn;
112.调整单元,用于根据当前发送窗口值与所述待确认sn数量之间的差值,调整发送窗口;
113.分配单元,用于基于调整后的发送窗口重新分配用于缓存sdu地址指针的内存空间。
114.第六方面,本技术实施例还提供一种传输窗口的调整装置,所述装置应用于接收设备,所述装置包括:
115.获取单元,用于获取待确认序列号sn数量,所述待确认sn数量为第一接收变量与第二接收变量之间的差值,所述第一接收变量为已接收的sdu的最大sn,所述第二接收变量为已接收且已向对端确认的连续sdu的最大sn;
116.调整单元,用于根据当前接收窗口值与所述待确认sn数量之间的差值,调整接收窗口;
117.分配单元,用于基于调整后的接收窗口重新分配用于缓存sdu地址指针的内存空间。
118.第七方面,本技术实施例还提供了一种处理器可读存储介质,该处理器可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面和/或第二方面中所述的传输窗口的调整方法。
119.第八方面,本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面和/或第二方面中所述的传输窗口的调整方法。
120.采用该上述技术方案,相比于现有技术中通过固定的发送窗口分配固定大小的内存空间,本技术实施例可以根据当前发送窗口值与待确认sn数量之间的差值动态调整发送窗口,并基于调整后的发送窗口重新分配内存空间。由于待确认sn为发送设备已发送的sdu的最大sn与已被确认的连续的sdu的最大sn之间的差值,所以根据当前发送窗口值与待确认sn数量之间的差值调整发送窗口,可以使得调整后的发送窗口的大小与实际发送的sdu数量匹配。且内存空间用于缓存已发送且未得到对端确认的sdu的地址指针,所以基于调整后的发送窗口分配的内存空间与需在该内存空间中缓存的sdu地址指针的数量匹配,从而避免了内存资源的浪费。
121.当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
for microwave access,wimax)系统、5g新空口(new radio,nr)系统等。这多种系统中均包括终端设备和网络设备。系统中还可以包括核心网部分,例如演进的分组系统(evloved packet system,eps)、5g系统(5gs)等。
139.在5g通信系统、长期演进(long term evolution,lte)通信系统等通信系统中,用户面协议栈主要分为四层,分别为分组数据汇聚协议(packet data convergence protocol,pdcp)、无线链路控制层(radio link control,rlc)、媒体接入控制(medium access control,mac)和物理层(physical layer,ply)。
140.其中,rlc的工作模式包括透明模式(ransparent mode,tm)、非确认模式(unacknowledged mode,um)、确认模式(acknowledged mode,am)。本技术实施例中涉及的rlc工作在确认模式。
141.示例性地,本技术实施例提供了一种通信系统的结构示意图,如图1所示,该通信系统中包括网络设备110和终端设备120。
142.本技术实施例涉及的网络设备110,可以是基站,该基站可以包括多个为终端提供服务的小区。根据具体应用场合不同,基站又可以称为接入点,或者可以是接入网中在空中接口上通过一个或多个扇区与无线终端设备通信的设备,或者其它名称。网络设备110可用于将收到的空中帧与网际协议(internet protocol,ip)分组进行相互更换,作为无线终端设备与接入网的其余部分之间的路由器,其中接入网的其余部分可包括网际协议(ip)通信网络。网络设备110还可协调对空中接口的属性管理。例如,本技术实施例涉及的网络设备110可以是全球移动通信系统(global system for mobile communications,gsm)或码分多址接入(code division multiple access,cdma)中的网络设备(base transceiver station,bts),也可以是带宽码分多址接入(wide-band code division multiple access,wcdma)中的网络设备(nodeb),还可以是长期演进(long term evolution,lte)系统中的演进型网络设备(evolutional node b,enb或e-nodeb)、5g网络架构(next generation system)中的5g基站(gnb),也可以是家庭演进基站(home evolved node b,henb)、中继节点(relay node)、家庭基站(femto)、微微基站(pico)等,本技术实施例中并不限定。在一些网络结构中,网络设备可以包括集中单元(centralized unit,cu)节点和分布单元(distributed unit,du)节点,集中单元和分布单元也可以地理上分开布置。
143.本技术实施例涉及的终端设备120,可以是指向用户提供语音和/或数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备等。在不同的系统中,终端设备的名称可能也不相同,例如在5g系统中,终端设备可以称为用户设备(user equipment,ue)。无线终端设备可以经无线接入网(radio access network,ran)与一个或多个核心网(core network,cn)进行通信,无线终端设备可以是移动终端设备,如移动电话(或称为“蜂窝”电话)和具有移动终端设备的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语言和/或数据。例如,个人通信业务(personal communication service,pcs)电话、无绳电话、会话发起协议(session initiated protocol,sip)话机、无线本地环路(wireless local loop,wll)站、个人数字助理(personal digital assistant,pda)等设备。无线终端设备也可以称为系统、订户单元(subscriber unit)、订户站(subscriber station),移动站(mobile station)、移动台(mobile)、远程站(remote station)、接入点(access point)、远程终端
设备(remote terminal)、接入终端设备(access terminal)、用户终端设备(user terminal)、用户代理(user agent)、用户装置(user device),本技术实施例中并不限定。
144.在本技术实施例中,网络设备110与终端设备120之间的每个无线承载对应一个am模式的rlc实体,同一rlc实体包括发送端和接收端。网络设备110的发送端可以向终端设备120的接收端发送数据,反之,终端设备120的发送端也可以向网络设备110的接收端发送数据。
145.本技术实施例中的发送设备是指作为rlc实体的发送端的网络设备110,本技术实施例中的接收设备是指作为rlc实体的接收端的网络设备110。
146.在网络设备110作为发送设备时,网络设备110的rlc发送端接收到pdcp层的sdu后,根据mac层提供的空口资源大小对sdu进行分段,并为分段后的sdu添加rlc头得到rlc pdu,将rlc pdu交给mac层进行空口发送。同时,发送设备需缓存已发送但未得到对端确认的sdu,若后续接收到对端针对已发送的sdu的ack,则将已缓存的该sdu释放;若后续接收到针对已发送的sdu的nack,则对已缓存的该sdu进行重传。
147.发送设备可以基于状态变量tx_next_ack维护一个sn的发送窗口,该发送窗口的范围为[tx_next_ack,tx_next_ack am_window_size)。其中,tx_next_ack是指发送设备已发出的,下一个等待被确认的sdu的sn,am_window_size为发送窗口的窗口尺寸值。发送设备可以向对端发送sn位于该发送窗口内的sdu。
[0148]
发送设备还可以按照发送窗口的窗口尺寸值分配静态内存空间,该静态内存空间用于缓存发送窗口内的sn对应的sdu的地址指针。sdu的地址指针被缓存在该静态内存空间中sn mod am_window_size的位置。其中“mod”代表取模运算。
[0149]
在网络设备110作为接收设备时,网络设备110的rlc接收端接收到分段的rlc pdu,将rlc pdu重组为sdu,并缓存已接收到的sdu,并根据对sdu的缓存情况,向对端返回ack或nack。
[0150]
接收设备可以基于状态变量rx_next维护一个sn的接收窗口,该接收窗口的范围为[rx_next,rx_next am_window_size)。其中,rx_next是指接收设备接收到的下一个待确认的sdu。
[0151]
按照3gpp协议的规定,am_window_size为sn长度的一半,sn的长度支持12bit和8bit两种。若sn的长度被配置为12bit时am_window_size为2048,sn长度配置为18bit时am_window_size为131072。
[0152]
在nr系统中,为了支持5g终端峰速大数据量,可以将sn的长度配置为18bit,相应地am_window_size为131072,按照该am_window_size分配静态内存空间,将导致对系统内存的占用过大,且在实际应用时,用户的数据量都远低于峰速数据量,按照峰速数据量分配静态内存空间会导致内存空间的浪费。
[0153]
为了解决该问题,本技术实施例提供了一种传输窗口的调整方法,可以根据数据量的大小动态调整传输窗口,使得实际传输窗口的窗口尺寸值与实际的数据量匹配,进而基于实际传输窗口分配的内存空间的大小也与实际需要缓存的数据量匹配,可以避免内存资源的浪费。
[0154]
以下对本技术实施例提供的传输窗口的调整方法进行详细介绍。
[0155]
本技术实施例提供了一种传输窗口的调整方法,该方法应用于发送设备,该发送
设备可以为图1中作为发送设备的网络设备,该网络设备具体可以为基站。如图2所示,该方法包括:
[0156]
s201、获取待确认sn数量,待确认sn数量为第一发送变量与第二发送变量之间的差值,第一发送变量为已发送的sdu的最大sn,第二发送变量为已被确认的连续的sdu的最大sn。
[0157]
例如,若发送设备已向终端发送了sn为1、2、3、4、5、6、7的sdu,发送设备已接收到对sn为1、2、3的sdu的确认消息,则第一发送变量为7,第二发送变量为3,待确认sn数量为4,即当前存在sn为4、5、6、7的4个sdu待被对端确认。以上仅作为示例性说明,在实际实现中,发送设备待确认sn的数量不限于此。
[0158]
s202、根据当前发送窗口值与待确认sn数量之间的差值,调整发送窗口。
[0159]
s203、基于调整后的发送窗口重新分配用于缓存sdu地址指针的内存空间。
[0160]
该内存空间用于缓存发送设备已发送到对端,但未得到对端确认的sdu的地址指针。
[0161]
采用该方法,相比于现有技术中通过固定的发送窗口分配固定大小的内存空间,本技术实施例可以根据当前发送窗口值与待确认sn数量之间的差值动态调整发送窗口,并基于调整后的发送窗口重新分配内存空间。由于待确认sn为发送设备已发送的sdu的最大sn与已被确认的连续的sdu的最大sn之间的差值,所以根据当前发送窗口值与待确认sn数量之间的差值调整发送窗口,可以使得调整后的发送窗口的大小与实际发送的sdu数量匹配。且内存空间用于缓存已发送且未得到对端确认的sdu的地址指针,所以基于调整后的发送窗口分配的内存空间与需在该内存空间中缓存的sdu地址指针的数量匹配,从而避免了内存资源的浪费。
[0162]
在本技术实施例中,可基于无线承载的类型、业务数据类型设置每个无线承载对应的发送窗口的初始尺寸值。该初始尺寸值一般较小,能够满足大部分的业务数据传输需求。
[0163]
例如,若无线承载为用于传输信令消息的信令无线承载(signalling radio bearers,srb),因信令消息的数据量较小,所以可将发送窗口的初始尺寸值设置为相对较小的值。若无线承载用于传输视频类业务数据,因视频类数据的数据量较大,所以可将发送窗口的初始尺寸值设置为相对较大的值。
[0164]
或者,也可以为每个无线承载对应的发送窗口设置相同的初始尺寸值,比如设置为2
12

[0165]
相应地,发送设备可基于发送窗口的初始尺寸值分配用于缓存sdu地址指针的内存空间。
[0166]
后续在发送设备向对端发送数据的过程中,发送设备可基于图2所示的方法流程对发送窗口进行动态调整。
[0167]
在本技术的一个实施例中,如图3所示,上述s202、根据第一变量与第二变量之间的差值,调整发送窗口,具体可以实现为:
[0168]
s2021、若当前发送窗口值与待确认sn数量之间的差值小于第一预设门限值,则扩大发送窗口。
[0169]
例如,若当前发送窗口值为2
12
,且待确认sn数量已经接近2
12
,说明当前实际的数
据量较大,所以可以扩大发送窗口,以支持更高的传输速率。
[0170]
s2022、若当前发送窗口值与待确认sn数量之间的差值大于第二预设门限值,则缩小发送窗口。
[0171]
例如,若当前发送窗口值为2
12
,且待确认sn数量小于2
11
,说明当前实际的数据量远小于发送窗口值,所以可以缩小发送窗口,以避免内存资源的浪费。
[0172]
在一种实施方式中,发送设备中存储有预设的窗口值集合,该预设的窗口值集合中包括按照从小到大顺序排列的多个窗口值。
[0173]
作为示例,该预设的窗口值集合中可以包括:2
12
、2
13
、2
14
、2
15
、2
16
、2
17
。本技术实施例中发送窗口的窗口值均为2的幂次方,且发送窗口的窗口值的最大取值为2
17
,即131072。
[0174]
上述扩大发送窗口,具体可以实现为:
[0175]
从预设的窗口值集合中,获取与当前发送窗口值相邻的下一级窗口值,将发送窗口的窗口值更新为与当前发送窗口值相邻的下一级窗口值。
[0176]
例如,基于上述预设的窗口值集合,若当前发送窗口值为2
12
,则可以将发送窗口的窗口值更新为2
13

[0177]
相应地,上述缩小发送窗口,具体可以实现为:
[0178]
从预设的窗口值集合中,获取与当前发送窗口值相邻的上一级窗口值,将发送窗口的窗口值更新为与当前发送窗口值相邻的上一级窗口值。
[0179]
例如,基于上述预设的窗口值集合,若当前发送窗口值为2
15
,则可以将发送窗口的窗口值更新为2
14

[0180]
在另一种实施方式中,发送设备可以按照固定步长对发送窗口进行调整。
[0181]
上述扩大发送窗口,具体可以实现为:将当前发送窗口加上述固定步长得到的窗口值作为发送窗口更新后的窗口值。
[0182]
上述缩小发送窗口,具体可以实现为:将当前发送窗口减去固定步长得到的窗口值作为发送窗口更新后的窗口值。
[0183]
采用本技术实施例,发送设备可以根据当前发送窗口值与待确认sn数量之间的差值动态调整发送窗口的窗口值,使得发送窗口的窗口值与待确认sn数量相匹配,避免了内存资源的浪费。且本技术实施例中,可以基于预设的窗口值集合扩大发送窗口或者缩小发送窗口,能够避免频繁地进行扩窗或缩窗操作。
[0184]
在本技术另一实施例中,如图4所示,上述s203、基于调整后的发送窗口重新分配用于缓存sdu地址指针的内存空间,包括:
[0185]
s2031、基于调整后的发送窗口的窗口值分配目标内存空间,目标内存空间用于缓存调整后的发送窗口内各sn对应的sdu的地址指针。
[0186]
s2032、将原内存空间中缓存的sdu地址指针缓存至目标内存空间,并将原内存空间释放。
[0187]
以下对发送设备将原内存空间中缓存的sdu地址指针缓存至目标内存空间的过程进行介绍。
[0188]
发送设备可以通过调整前发送窗口的窗口值,确定第三发送变量对应的sdu地址指针在原内存空间中的第一缓存位置,以及第四发送变量对应的sdu地址指针在原内存空间中的第二缓存位置。
[0189]
其中,第三发送变量对应的sdu为在第二发送变量对应的sdu之后被发送的下一个sdu,第三发送变量可以被表示为tx_next_ack;第四发送变量对应的sdu为在第二发送变量对应的sdu之后下一个待发送的sdu,第四发送变量可以被表示为tx_next。
[0190]
在本技术实施例中,若发送设备已向终端发送了sn为1、2、3、4、5、6、7的sdu,发送设备已接收到对sn为1、2、3的sdu的确认消息,则第一发送变量为7,第二发送变量为3。相应地,第三发送变量为4,第四发送变量为8。
[0191]
即当前存在sn为4、5、6、7的4个sdu待被对端确认。相应地,sn为4、5、6、7的4个sdu目前被缓存在原内存空间中,具体被缓存在上述第一缓存位置与第二缓存位置之间,也就是说第一缓存位置为sn为4的sdu的地址指针在原内存空间中被缓存的起始位置,第二缓存位置为sn为8的sdu即将在原内存空间中被缓存的起始位置。
[0192]
通过调整后发送窗口的窗口值,确定第三发送变量对应的sdu地址指针在目标内存空间中的第三缓存位置,以及第四发送变量对应的sdu的地址指针在目标内存空间中的第四缓存位置。
[0193]
然后,基于第三缓存位置与第二缓存位置之间的位置关系,以及第三缓存位置与第四缓存位置之间的内存关系,将原内存空间中缓存的sdu地址指针缓存至目标内存空间。
[0194]
在调整发送窗口之后,可以遍历发送窗口内的sn对应的sdu地址指针在原内存空间的缓存位置,并分别将每个sn对应的sdu地址指针移动到目标内存空间中的相应位置。在本技术实施例中,为了提高缓存效率,可以采用内存拷贝函数(memcpy)基于第一缓存位置与第二缓存位置之间的位置关系,以及第三缓存位置与第四缓存位置之间的内存关系,将原内存空间中缓存的sdu地址指针缓存至目标内存空间。
[0195]
其中,sn对应的sdu地址指针的缓存位置可通过sn%窗口值计算得到,其中“%”表示取模运算。在本技术实施例中,将较大的窗口值表示为win1,将较小的窗口值表示为win0。
[0196]
对于扩大发送窗口的情况,即在调整前的发送窗口的窗口值小于调整后的发送窗口的窗口值的情况下,将调整前的发送窗口的窗口值表示为win0,将调整后的发送窗口的窗口值表示为win1,则第一缓存位置可以表示为tx_next_ack%win0,第二缓存位置可以表示为tx_next%win0,第三缓存位置可以表示为tx_next_ack%win1,第四缓存位置可以表示为tx_next%win1。
[0197]
如图5所示,若调整前的发送窗口的窗口值小于调整后的发送窗口的窗口值,则将原内存空间中缓存的sdu地址指针缓存至目标内存空间的过程具体包括以下三种情形。
[0198]
情形一、若第一缓存位置位于所述第二缓存位置之前,且第三缓存位置位于第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到目标内存空间中第三缓存位置与所述第四缓存位置之间。
[0199]
情形一可以表示为:tx_next_ack%win0《tx_next%win0且tx_next_ack%win1《tx_next%win1。
[0200]
参考图5,原内存空间中按照sn从小到大的顺序,在tx_next_ack%win0至tx_next%win0之间缓存了tx_next_ack至tx_next对应的sdu地址指针。通过tx_next_ack%win1《tx_next%win1可知,在目标内存空间中,sdu地址指针也按照从小到大的顺序存储,所以直接将原内存空间中缓存的sdu地址指针整体移动到目标内存空间的tx_next_ack%
win1至tx_next%win1之间。即,将图5情形一中原内存空间阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分。
[0201]
情形二、若所述第一缓存位置位于所述第二缓存位置之后,且所述第三缓存位置位于所述第四缓存位置之前,则将原内存空间中起始位置至所述第二缓存位置之间的sdu地址指针整体移动到所述目标内存空间中所述第四缓存位置之前,并将原内存空间中所述第一缓存位置至结束位置之间的sdu地址指针整体移动到所述目标内存空间的第三缓存位置之后。
[0202]
情形二可以表示为:tx_next_ack%win0》tx_next%win0且tx_next_ack%win1《tx_next%win1。
[0203]
参考图5,由于取模运算导致sdu地址指针在原内存空间中的缓存位置未完全按sn从小到大的顺序排列,而是发生了翻转。但是在目标内存空间中,sdu地址指针按照sn从小到大的顺序排列。所以将原内存空间中起始位置至tx_next_ack%win0之间的sdu地址指针,整体移动到目标内存空间中tx_next_ack%win1之后;将原内存空间中tx_next%win0至结束位置的sdu地址指针,整体移动至目标内存空间中tx_next%win1之前。
[0204]
即,将图5情形二中原内存空间阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分;并将原内存空间黑色部分缓存的sdu地是指针,整体移动到目标内存空间的黑色部分。
[0205]
情形三、若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之后,则将原内存空间中起始位置至第一缓存位置之间的sdu地址指针整体移动到目标内存空间的起始位置至第三缓存位置之间,并将原内存空间中第四缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间的第四缓存位置至结束位置之间。
[0206]
情形三可以表示为:tx_next_ack%win0》tx_next%win0且tx_next_ack%win1》tx_next%win1。
[0207]
参考图5,由于取模运算导致sdu地址指针在原内存空间中的缓存位置和在目标内存空间中的缓存位置均未完全按照sn从小到大的顺序排列,缓存位置发生了翻转。
[0208]
所以将原内存空间中起始位置至tx_next%win0之间的sdu地址指针,整体移动至目标内存空间的起始位置至tx_next_ack%win1之间。并将原内存空间中tx_next_ack%win0至结束位置之间的sdu地址指针,整体移动至目标内存空间的tx_next_ack%win1至结束位置之间。
[0209]
即,将图5情形三中原内存空间黑色部分缓存的sdu地址指针,整体移动到目标内存空间的黑色部分;并将原内存空间阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分。
[0210]
如图6所示,若调整前的发送窗口的窗口值大于调整后发送窗口的窗口值,则基于第一缓存位置与第二缓存位置之间的位置关系,以及第三缓存位置与第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至目标内存空间的过程,具体包括以下三种情形:
[0211]
情形一、若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到目标内存空间中第三缓存位置与第四缓存位置之间。
[0212]
情形一可以表示为:tx_next_ack%win1《tx_next%win1且tx_next_ack%win0《tx_next%win0。
[0213]
参考图6,原内存空间中按照sn从小到大的顺序,在tx_next_ack%win1至tx_next%win1之间缓存了tx_next_ack至tx_next对应的sdu地址指针,可以将这部分sdu内存指针整体移动至目标内存空间的tx_next_ack%win0至tx_next%win0之间。即将图6中阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分。
[0214]
情形二、若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之后,则将原内存空间中第一缓存位置之后第一指定空间内的sdu地址指针整体移动到目标内存空间的第三缓存位置至结束位置之间,并将原内存空间中第二缓存位置之前的第二指定空间内的sdu地址整体移动到目标内存空间的起始位置至第四缓存位置之间。
[0215]
其中,第一指定空间的大小与目标内存空间中第三缓存位置至结束位置之间的内存空间大小相同,第二指定空间的大小与目标内存空间的起始位置与第四缓存位置之间的内存大小相同。
[0216]
情形二可以表示为:tx_next_ack%win1《tx_next%win1且tx_next_ack%win0》tx_next%win0。
[0217]
参考图6,在原内存空间中sdu地址指针按照sn从小到大的顺序排列,但是在目标内存空间中,sdu地址指针未完全按照sn从小到大的顺序排列,缓存位置出现了翻转。
[0218]
所以,将图6中情形二的原内存空间中阴影部分缓存的sdu地址指针整体移动到目标内存空间的阴影部分;并将原内存空间中黑色部分缓存的sdu地址指针整体移动到目标内存空间的黑色部分。图6中情形二的阴影部分代表上述第一指定空间,黑色部分代表上述第二指定空间。
[0219]
情形三、若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之后,则将原内存空间中起始位置至第一缓存位置之间的sdu地址指针整体移动到目标内存空间的起始位置至第四缓存位置之间,将原内存空间中第二缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间中第三缓存位置至结束位置之间。
[0220]
情形三可以表示为:tx_next_ack%win1》tx_next%win1且tx_next_ack%win0》tx_next%win0。
[0221]
参考图6,由于取模运算导致sdu地址指针在原内存空间中的缓存位置和在目标内存空间中的缓存位置均未完全按照sn从小到大的顺序排列,缓存位置发生了翻转。
[0222]
所以将图6中情形三的原内存空间黑色部分缓存的sdu地址指针,整体移动到目标内存空间的黑色部分;并将原内存空间阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分。
[0223]
采用上述技术方案,在基于调整后的发送窗口的窗口值分配目标内存空间后,可以将原内存空间中缓存的所有sdu地址指针整体移动到目标内存空间,或者将原内存空间中整段缓存的sdu地址指针整体移动到目标内存空间,相比于分别计算每个sdu地址指针在目标内存空间中的缓存位置,采用本技术实施例提供的方法可以提高缓存效率。
[0224]
与上述实施例对应,本技术实施例提供了另一种传输窗口的调整方法,该方法应用于接收设备,该接收设备可以为图1中作为接收设备的网络设备,该网络设备具体可以为基站。如图7所示,该方法包括:
[0225]
s701、获取待确认sn数量,待确认sn数量为第一接收变量与第二接收变量之间的差值,第一接收变量为已接收的sdu的最大sn,第二接收变量为已接收且已向对端确认的连续sdu的最大sn。
[0226]
例如,若接收设备已接收到sn为1、2、3、4、5、6、7的sdu,当前接收设备已向对端发送sn为1、2、3的sdu的确认消息,则第一接收变量为7,第二接收变量为3,待确认sn数量为4,即接收设备暂未向对端回复针对sn为4、5、6、7的sdu的确认消息。以上仅作为示例性说明,在实际实现中,接收设备待确认sn的数量不限于此。
[0227]
s702、根据当前接收窗口值与待确认sn数量之间的差值,调整接收窗口。
[0228]
s703、基于调整后的接收窗口重新分配用于缓存sdu地址指针的内存空间。
[0229]
该内存空间用于缓存接收设备已接收,但未向对端反馈确认消息的sdu的地址指针。
[0230]
采用该方法,相比于现有技术中通过定的接收窗口分配固定大小的内存空间,本技术实施例可以根据当前接收窗口值与待确认sn数量之间的差值动态调整接收窗口,并基于调整后的接收窗口重新分配内存空间。由于待确认sn为接收设备已接收的sdu的最大sn与已接收且已向对端确认的连续sdu的最大sn,所以根据当前接收窗口值与待确认sn数量之间的差值调整接收窗口,可以使得调整后的接收窗口的大小与实际接收的sdu数量匹配。且内存空间用于缓存已接收且未向对端确认的sdu的地址指针,所以基于调整后的接收窗口分配的内存空间与需在该内存空间中缓存的sdu地址指针的数量匹配,从而避免了内存资源的浪费。
[0231]
在本技术实施例中,可基于无线承载的类型、业务数据类型设置每个无线承载对应的接收窗口的初始尺寸值。或者,也可以为每个无线承载对应的接收窗口设置相同的初始尺寸值,比如设置为2
12

[0232]
相应地,接收设备可以基于接收窗口的初始尺寸值分配用于缓存sdu地址指针的内存空间。后续接收设备接收数据的过程中,可基于图7所示的方法流程对接收窗口进行动态调整。
[0233]
在本技术的一个实施例中,上述s702、根据当前接收窗口值与待确认sn数量之间的差值,调整接收窗口,具体可以实现为:
[0234]
若当前接收窗口值与待确认sn数量之间的差值小于第一预设门限值,则扩大接收窗口。
[0235]
例如,若当前接收窗口值为2
12
,且待确认sn数量已经接近2
12
,说明当前实际的数据量较大,所以可以扩大发送窗口,以支持更高的传输速率。
[0236]
若当前接收窗口值与待确认sn数量之间的差值大于第二预设门限值,则缩小接收窗口。
[0237]
例如,若当前接收窗口值为2
12
,且待确认sn数量小于2
11
,说明当前实际的数据量远小于发送窗口值,所以可以缩小发送窗口,以避免内存资源的浪费。
[0238]
在一种实施方式中,接收设备中存储有预设的窗口值集合,该预设的窗口值集合中包括按照从小到大顺序排列的多个窗口值。
[0239]
作为示例,该预设的窗口值集合中可以包括:2
12
、2
13
、2
14
、2
15
、2
16
、2
17
。本技术实施例中接收窗口的窗口值均为2的幂次方,且接收窗口的窗口值的最大取值为2
17
,即131072。
[0240]
上述扩大接收窗口,具体可以实现为:从预设的窗口值集合中,获取与当前接收窗口值相邻的下一级窗口值,将接收窗口的窗口值更新为与当前接收窗口值相邻的下一级窗口值。
[0241]
上述缩小发送窗口,具体可以实现为:从预设的窗口值集合中,获取与当前接收窗口值相邻的上一级窗口值,将接收窗口的窗口值更新为与当前接收窗口值相邻的上一级窗口值。
[0242]
在另一种实施方式中,接收设备可以按照固定步长对接收窗口进行调整。
[0243]
上述扩大接收窗口,具体可以实现为:将当前接收窗口加上述固定步长得到的窗口值作为接收窗口更新后的窗口值。
[0244]
上述缩小接收窗口,具体可以实现为:将当前接收窗口减去固定步长得到的窗口值作为接收窗口更新后的窗口值。
[0245]
采用本技术实施例,接收设备可以根据当前发送窗口值与待确认sn数量之间的差值动态调整接收窗口的窗口值,使得接收窗口的窗口值与待确认sn数量匹配,避免了内存资源的浪费。且接收设备基于预设的窗口值集合扩大接收窗口或者缩小接收窗口,能够避免频繁地进行扩窗或缩窗操作。
[0246]
在本技术另一实施例中,上述s703、基于调整后的接收窗口重新分配分配用于缓存sdu地址指针的内存空间,具体可以实现为:
[0247]
基于调整后的接收窗口的窗口值分配目标内存空间,目标内存空间用于缓存调整后的接收窗口内各sn对应的sdu的地址指针。然后将原内存空间中缓存的sdu地址指针缓存至目标内存空间,并将原内存空间释放。
[0248]
以下对接收设备将原内存空间中缓存的sdu地址指针缓存至目标内存空间的过程进行介绍。
[0249]
接收设备可以通过调整前接收窗口的窗口值,确定第三接收变量对应的sdu地址指针在原内存空间中的第一缓存位置,以及第四接收变量对应的sdu地址指针在原内存空间中的第二缓存位置。
[0250]
其中,第三接收变量对应的sdu为在第二接收变量对应的sdu之后接收的下一个sdu,第三接收变量可以表示为rx_next。第四接收变量对应的sdu为在第三接收变量对应的sdu之后下一个待接收的sdu,第四接收变量可以表示为rx_next_highest。
[0251]
在本技术实施例中,若接收设备已接收到sn为1、2、3、4、5、6、7的sdu,当前接收设备已向对端发送sn为1、2、3的sdu的确认消息,则第一接收变量为7,第二接收变量为3。相应地,第三接收变量为4,第四接收变量为8。
[0252]
即当前待向对端反馈sn为4、5、6、7的4个sdu的确认消息,sn为4、5、6、7的4个sdu目前被缓存在原内存空间中,具体被缓存在接收设备的第一缓存位置与第二缓存位置之间,也就是说第一缓存位置为sn为4的sdu的地址指针在原内存空间中被缓存的起始位置,第二缓存位置为sn为8的sdu即将在原内存空间中被缓存的起始位置。
[0253]
通过调整后接收窗口的窗口值,确定第三接收变量对应的sdu地址指针在目标内存空间中的第三缓存位置,以及第四接收变量对应的sdu的地址指针在目标内存空间中的第四缓存位置。
[0254]
然后,基于第一缓存位置与第二缓存位置之间的位置关系,以及第三缓存位置与
第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至目标内存空间。
[0255]
在本技术实施例中,为了提高缓存效率,可以采用内存拷贝函数将原内存空间中缓存的sdu地址指针缓存至目标内存空间。
[0256]
其中,sn对应的sdu地址指针的缓存位置可通过sn%窗口值计算得到,其中“%”表示取模运算。在本技术实施例中,将较大的窗口值表示为win1,将较小的窗口值表示为win0。
[0257]
对于扩大接收窗口的情况,即调整前的接收窗口的窗口值小于调整后的接收窗口的窗口值。可以将调整前的接收窗口的窗口值表示为win0,将调整后的接收窗口的窗口值表示为win1。则第一缓存位置可以表示为rx_next%win0,第二缓存位置可以表示为rx_next_highest%win0,第三缓存位置可以表示为rx_next%win1,第四缓存位置可以表示为rx_next_highest%win1。
[0258]
如图8所示,若调整前接收窗口的窗口值小于调整后接收窗口的窗口值,则基于第一缓存位置与第二缓存位置之间的位置关系,以及第三缓存位置与第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至目标内存空间的过程,具体包括以下三种情形。
[0259]
情形一、若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到目标内存空间中第三缓存位置与第四缓存位置之间。
[0260]
情形一可以表示为:rx_next%win0《rx_next_highest%win0,且rx_next%win1《rx_next_highest%win1。
[0261]
参考图8,可以将图8情形一中原内存空间阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分。
[0262]
情形二、若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之前,则将原内存空间中起始位置至第二缓存位置之间的sdu地址指针整体移动到目标内存空间中第四缓存位置之前,并将原内存空间中第一缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间的第三缓存位置之后。
[0263]
情形二可以表示为:rx_next%win0》rx_next_highest%win0,且rx_next%win1《rx_next_highest%win1。
[0264]
参考图8,可以将图8情形二中原内存空间阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分;并将原内存空间黑色部分缓存的sdu地是指针,整体移动到目标内存空间的黑色部分。
[0265]
情形三、若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之后,则将原内存空间中起始位置至第一缓存位置之间的sdu地址指针整体移动到目标内存空间的起始位置至第三缓存位置之间,并将原内存空间中第四缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间的第四缓存位置至结束位置之间。
[0266]
情形三可以表示为:rx_next%win0》rx_next_highest%win0,且rx_next%win1》rx_next_highest%win1。
[0267]
参考图8,可以将图8情形三中原内存空间黑色部分缓存的sdu地址指针,整体移动到目标内存空间的黑色部分;并将原内存空间阴影部分缓存的sdu地址指针,整体移动到目
标内存空间的阴影部分。
[0268]
如图9所示,若调整前接收窗口的窗口值大于调整后接收窗口的窗口值,则基于第一缓存位置与第二缓存位置之间的位置关系,以及第三缓存位置与第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至目标内存空间的过程,具体包括以下三种情形:
[0269]
情形一、若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到目标内存空间中第三缓存位置与第四缓存位置之间。
[0270]
情形一可以表示为:rx_next%win1《rx_next_highest%win1,且rx_next%win0《rx_next_highest%win0。
[0271]
参考图9,可以将图9情形一中原内存空间阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分。
[0272]
情形二、若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之后,则将原内存空间中第一缓存位置之后第一指定空间内的sdu地址指针整体移动到目标内存空间的第三缓存位置至结束位置之间,并将原内存空间中第二缓存位置之前的第二指定空间内的sdu地址整体移动到目标内存空间的起始位置至第四缓存位置之间。
[0273]
其中,第一指定空间的大小与目标内存空间中第三缓存位置至结束位置之间的内存空间大小相同,第二指定空间的大小与目标内存空间的起始位置与第四缓存位置之间的内存大小相同。
[0274]
情形二可以表示为:rx_next%win1《rx_next_highest%win1,且rx_next%win0》rx_next_highest%win0。
[0275]
参考图9,将图9中情形二的原内存空间中阴影部分缓存的sdu地址指针整体移动到目标内存空间的阴影部分;并将原内存空间中黑色部分缓存的sdu地址指针整体移动到目标内存空间的黑色部分。图9中情形二的阴影部分代表上述第一指定空间,黑色部分代表上述第二指定空间。
[0276]
情形三、若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之后,则将原内存空间中起始位置至第一缓存位置之间的sdu地址指针整体移动到目标内存空间的起始位置至第四缓存位置之间,将原内存空间中第二缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间中第三缓存位置至结束位置之间。
[0277]
情形三可以表示为:rx_next%win1》rx_next_highest%win1,且rx_next%win0》rx_next_highest%win0。
[0278]
参考图9,可以将图9中情形三的原内存空间黑色部分缓存的sdu地址指针,整体移动到目标内存空间的黑色部分;并将原内存空间阴影部分缓存的sdu地址指针,整体移动到目标内存空间的阴影部分。
[0279]
采用上述技术方案,在基于调整后的接收窗口的窗口值分配目标内存空间后,可以将原内存空间中缓存的所有sdu地址指针整体移动到目标内存空间,或者将原内存空间中整段缓存的sdu地址指针整体移动到目标内存空间,相比于分别计算每个sdu地址指针在目标内存空间中的缓存位置,采用本技术实施例提供的方法可以提高缓存效率。
[0280]
基于相同的发明构思,本技术实施例还提供一种发送设备,如图10所示,该发送设
备包括存储器120,收发机110,处理器100:
[0281]
存储器120,用于存储计算机程序;收发机110,用于在处理器100的控制下收发数据;处理器100,用于读取存储器120中的计算机程序并执行以下操作:
[0282]
获取待确认序列号sn数量,待确认sn数量为第一发送变量与第二发送变量之间的差值,第一发送变量为已发送的sdu的最大sn,第二发送变量为已被确认的连续的sdu的最大sn;
[0283]
根据当前发送窗口值与待确认sn数量之间的差值,调整发送窗口;
[0284]
基于调整后的发送窗口重新分配用于缓存sdu地址指针的内存空间。
[0285]
在一种实施方式中,处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0286]
若当前发送窗口值与待确认sn数量之间的差值小于第一预设门限值,则扩大发送窗口;
[0287]
若当前发送窗口值与待确认sn数量之间的差值大于第二预设门限值,则缩小发送窗口。
[0288]
在一种实施方式中,处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0289]
从预设的窗口值集合中,获取与当前发送窗口值相邻的下一级窗口值,将发送窗口的窗口值更新为与当前发送窗口值相邻的下一级窗口值;预设的窗口值集合中包括按照从小到大顺序排列的多个窗口值;
[0290]
从预设的窗口值集合中,获取与当前发送窗口值相邻的上一级窗口值,将发送窗口的窗口值更新为与当前发送窗口值相邻的上一级窗口值。
[0291]
在一种实施方式中,处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0292]
基于调整后的发送窗口的窗口值分配目标内存空间,目标内存空间用于缓存调整后的发送窗口内各sn对应的sdu的地址指针;
[0293]
将原内存空间中缓存的sdu地址指针缓存至目标内存空间,并将原内存空间释放。
[0294]
在一种实施方式中,处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0295]
通过调整前发送窗口的窗口值,确定第三发送变量对应的sdu地址指针在原内存空间中的第一缓存位置,以及第四发送变量对应的sdu地址指针在原内存空间中的第二缓存位置,第三发送变量对应的sdu为在第二发送变量对应的sdu之后被发送的下一个sdu,第四发送变量对应的sdu为在第一发送变量对应的sdu之后下一个待发送的sdu;
[0296]
通过调整后发送窗口的窗口值,确定第三发送变量对应的sdu地址指针在目标内存空间中的第三缓存位置,以及第四发送变量对应的sdu的地址指针在目标内存空间中的第四缓存位置;
[0297]
基于第一缓存位置与第二缓存位置之间的位置关系,以及第三缓存位置与第四缓存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至目标内存空间。
[0298]
在一种实施方式中,若调整前发送窗口的窗口值小于调整后发送窗口的窗口值,述处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0299]
若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到目标内存空间中第三缓存位置与第四缓存位置之间;
[0300]
若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之前,则将原内存空间中起始位置至第二缓存位置之间的sdu地址指针整体移动到目标内存空间中第四缓存位置之前,并将原内存空间中第一缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间的第三缓存位置之后;
[0301]
若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之后,则将原内存空间中起始位置至第一缓存位置之间的sdu地址指针整体移动到目标内存空间的起始位置至第三缓存位置之间,并将原内存空间中第四缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间的第四缓存位置至结束位置之间;
[0302]
若调整前发送窗口的窗口值大于调整后发送窗口的窗口值,则处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0303]
若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到目标内存空间中第三缓存位置与第四缓存位置之间;
[0304]
若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之后,则将原内存空间中第一缓存位置之后第一指定空间内的sdu地址指针整体移动到目标内存空间的第三缓存位置至结束位置之间,并将原内存空间中第二缓存位置之前的第二指定空间内的sdu地址整体移动到目标内存空间的起始位置至第四缓存位置之间;其中,第一指定空间的大小与目标内存空间中第三缓存位置至结束位置之间的内存空间大小相同,第二指定空间的大小与目标内存空间的起始位置与第四缓存位置之间的内存大小相同;
[0305]
若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之后,则将原内存空间中起始位置至第一缓存位置之间的sdu地址指针整体移动到目标内存空间的起始位置至第四缓存位置之间,将原内存空间中第二缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间中第三缓存位置至结束位置之间。
[0306]
收发机110,用于在处理器100的控制下接收和发送数据。
[0307]
其中,在图10中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器100代表的一个或多个处理器和存储器120代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机110可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元,这些传输介质包括无线信道、有线信道、光缆等传输介质。处理器100负责管理总线架构和通常的处理,存储器120可以存储处理器100在执行操作时所使用的数据。
[0308]
处理器100可以是中央处埋器(cpu)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或复杂可编程逻辑器件(complex programmable logic device,cpld),处理器也可以采用多核架构。
[0309]
在此需要说明的是,本发明实施例提供的上述发送设备,能够实现上述方法实施
例中发送设备所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0310]
本技术实施例提供一种接收设备,该接收设备与图10所示的发送设备的结构相同,该接收设备包括存储器120,收发机110,处理器100:
[0311]
存储器120,用于存储计算机程序;收发机110,用于在处理器100的控制下收发数据;处理器100,用于读取存储器120中的计算机程序并执行以下操作:
[0312]
获取待确认序列号sn数量,待确认sn数量为第一接收变量与第二接收变量之间的差值,第一接收变量为已接收的sdu的最大sn,第二接收变量为已接收且已向对端确认的连续sdu的最大sn;
[0313]
根据当前接收窗口值与待确认sn数量之间的差值,调整接收窗口;
[0314]
基于调整后的接收窗口重新分配用于缓存sdu地址指针的内存空间。
[0315]
在一种实施方式中,处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0316]
若当前接收窗口值与待确认sn数量之间的差值小于第一预设门限值,则扩大接收窗口;
[0317]
若当前接收窗口值与待确认sn数量之间的差值大于第二预设门限值,则缩小接收窗口。
[0318]
在一种实施方式中,处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0319]
从预设的窗口值集合中,获取与当前接收窗口值相邻的下一级窗口值,将接收窗口的窗口值更新为与当前接收窗口值相邻的下一级窗口值;预设的窗口值集合中包括按照从小到大顺序排列的多个窗口值;
[0320]
从预设的窗口值集合中,获取与当前接收窗口值相邻的上一级窗口值,将接收窗口的窗口值更新为与当前接收窗口值相邻的上一级窗口值。
[0321]
在一种实施方式中,处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0322]
基于调整后的接收窗口的窗口值分配目标内存空间,目标内存空间用于缓存调整后的接收窗口内各sn对应的sdu的地址指针;
[0323]
将原内存空间中缓存的sdu地址指针缓存至目标内存空间,并将原内存空间释放。
[0324]
在一种实施方式中,处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0325]
通过调整前接收窗口的窗口值,确定第三接收变量对应的sdu地址指针在原内存空间中的第一缓存位置,以及第四接收变量对应的sdu地址指针在原内存空间中的第二缓存位置,第三接收变量对应的sdu为在第二接收变量对应的sdu之后接收的下一个sdu,第四接收变量对应的sdu为在第一接收变量对应的sdu之后下一个待接收的sdu;
[0326]
通过调整后接收窗口的窗口值,确定第三接收变量对应的sdu地址指针在目标内存空间中的第三缓存位置,以及第四接收变量对应的sdu的地址指针在目标内存空间中的第四缓存位置;
[0327]
基于第一缓存位置与第二缓存位置之间的位置关系,以及第三缓存位置与第四缓
存位置之间的位置关系,将原内存空间中缓存的sdu地址指针缓存至目标内存空间。
[0328]
在一种实施方式中,若调整前接收窗口的窗口值小于调整后接收窗口的窗口值,则处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0329]
若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到目标内存空间中第三缓存位置与第四缓存位置之间;
[0330]
若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之前,则将原内存空间中起始位置至第二缓存位置之间的sdu地址指针整体移动到目标内存空间中第四缓存位置之前,并将原内存空间中第一缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间的第三缓存位置之后;
[0331]
若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之后,则将原内存空间中起始位置至第一缓存位置之间的sdu地址指针整体移动到目标内存空间的起始位置至第三缓存位置之间,并将原内存空间中第四缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间的第四缓存位置至结束位置之间;
[0332]
若调整前接收窗口的窗口值大于调整后接收窗口的窗口值,则处理器100,具体用于读取存储器120中的计算机程序并执行以下操作:
[0333]
若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之前,则将原内存空间中缓存的sdu地址指针整体移动到目标内存空间中第三缓存位置与第四缓存位置之间;
[0334]
若第一缓存位置位于第二缓存位置之前,且第三缓存位置位于第四缓存位置之后,则将原内存空间中第一缓存位置之后第一指定空间内的sdu地址指针整体移动到目标内存空间的第三缓存位置至结束位置之间,并将原内存空间中第二缓存位置之前的第二指定空间内的sdu地址整体移动到目标内存空间的起始位置至第四缓存位置之间;其中,第一指定空间的大小与目标内存空间中第三缓存位置至结束位置之间的内存空间大小相同,第二指定空间的大小与目标内存空间的起始位置与第四缓存位置之间的内存大小相同;
[0335]
若第一缓存位置位于第二缓存位置之后,且第三缓存位置位于第四缓存位置之后,则将原内存空间中起始位置至第一缓存位置之间的sdu地址指针整体移动到目标内存空间的起始位置至第四缓存位置之间,将原内存空间中第二缓存位置至结束位置之间的sdu地址指针整体移动到目标内存空间中第三缓存位置至结束位置之间。
[0336]
在此需要说明的是,本发明实施例提供的上述接收设备,能够实现上述方法实施例中接收设备所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0337]
本技术实施例还提供一种传输窗口的调整装置,该装置应用于发送设备,如图11所示,该装置包括:
[0338]
获取单元1101,用于获取待确认序列号sn数量,所述待确认sn数量为第一发送变量与第二发送变量之间的差值,所述第一发送变量为已发送的sdu的最大sn,所述第二发送变量为已被确认的连续的sdu的最大sn;
[0339]
调整单元1102,用于根据当前发送窗口值与所述待确认sn数量之间的差值,调整发送窗口;
[0340]
分配单元1103,用于基于调整后的发送窗口重新分配用于缓存sdu地址指针的内存空间。
[0341]
在此需要说明的是,本发明实施例提供的上述装置,能够实现上述方法实施例中发送设备所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0342]
本技术实施例还提供另一种传输窗口的调整装置,该装置应用于接收设备,如图12所示,该装置包括:
[0343]
获取单元1201,用于获取待确认序列号sn数量,所述待确认sn数量为第一接收变量与第二接收变量之间的差值,所述第一接收变量为已接收的sdu的最大sn,所述第二接收变量为已接收且已向对端确认的连续sdu的最大sn;
[0344]
调整单元1202,用于根据当前接收窗口值与所述待确认sn数量之间的差值,调整接收窗口;
[0345]
分配单元1203,用于基于调整后的接收窗口重新分配用于缓存sdu地址指针的内存空间。
[0346]
在此需要说明的是,本发明实施例提供的上述装置,能够实现上述方法实施例中接收设备所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0347]
需要说明的是,本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0348]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0349]
在本技术提供的又一实施例中,还提供了一种处理器可读存储介质,该处理器可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一传输窗口的调整方法的步骤。
[0350]
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nand flash)、固态硬盘(ssd))等。
[0351]
在本技术提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一传输窗口的调整方法。
[0352]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0353]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0354]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、发送设备、接收设备及介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0355]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献