一种SDU分段处理方法和数据接收端
技术领域
本发明涉及通信技术领域,尤其涉及一种业务数据单元(Service Data Unit,SDU)分段处理方法和数据接收端。
背景技术
在未来通信系统(例如:5G系统)中无线链路层控制(Radio Link Control,RLC)对数据的处理取消了级联(concatenation)功能,即RLC SDU一对一的组成RLC协议数据单元(Protocol Data Unit,PDU)。且RLC层还取消了按序递交的功能,即RLC层可以非按序的将RLC SDU发送往高层,因此对于非确认模式(Unacknowledged Mode,UM)来说,完整传输的RLC SDU可以不需要携带任何的序列号(Serial Number,SN)信息。由于完整传输的SDU不携带SN信息,这样如何对SDU的SDU分段进行处理是目前急需要解决的技术问题。
发明内容
本发明的目的在于提供一种SDU分段处理方法和数据接收端,以解决如何对SDU的SDU分段进行处理的问题。
为了达到上述目的,本发明实施例提供一种SDU分段处理方法,包括:
获取SDU的SDU分段的分段信息,所述分段信息包括序列号SN;
若根据所述分段信息确定存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间;
若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器;
若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。
可选的,同一SDU内的SDU分段的分段信息包括的SN相同;或者
同一SDU内的SDU分段的分段信息包括的SN不同。
可选的,所述方法还包括:
记录并维护如下一个或者多个变量:
第一变量、第二变量和第三变量;
其中,所述第一变量用于记录接收到的最高SDU分段的下一个SDU分段的变量信息,或者用于记录接收到的最高SDU分段的变量信息;
所述第二变量用于记录所述重组定时器对应的SDU分段区间的上边界的变量信息;
所述第三变量用于记录需要重组操作的SDU分段区间的下边界的变量信息;
其中,所述变量信息包括SN和/或SO信息。
可选的,若接收序列不存在接收缺口或者所有接收缺口均已经正确接收,则所述需要重组操作的SDU分段区间的下边界等于接收到的最高SDU分段的下一个SDU分段,或者接收到的最高SDU分段;
若接收序列中存在接收缺口,则所述需要重组操作的SDU分段区间的下边界为所述接收序列的第一个接收缺口处的SDU分段;
若所述第一个缺口处的SDU分段正确接收,则所述需要重组操作的SDU分段区间的下边界更新为下一个接收缺口处的SDU分段。
可选的,若启动所述重组定时器,则所述上边界为接收到的最高SDU分段的下一个SDU分段或者接收到的最高SDU分段,在所述重组定时器有效期限所述上边界不变;
且所述重组定时器对应的SDU分段区间为由所述下边界和所述上边界决定的区间。
可选的,所述若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器,包括:
若所述下边界等于所述上边界,或者所述下边界更新为所述上边界之后的SDU分段,则确定所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器。
可选的,所述若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段,包括:
若所述重组定时器超时,且所述下边界为所述上边界之前的SDU分段,则确定所述SDU分段区间还存在未正确接收的SDU分段,并删除所述SDU分段区间的所有未成功重组的SDU分段,并将所述下边界更新为所述上边界对应的SDU分段。
可选的,所述方法还包括:
若所述下边界与所述第一变量记录的SDU分段不相同时,则确定接收序列存在接收缺口,并重启所述重组定时器,以及记录所述下边界为所述第一变量记录的SDU分段。
可选的,所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间,包括:
所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与所述重组定时器对应的SDU分段区间。
可选的,所述方法还包括:
在所述重组定时器停止或者超时后,若还存在接收缺口,则重启所述重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与重启的所述重组定时器对应的SDU分段区间。
本发明实施例还提供一种数据接收端,包括:
获取模块,用于获取SDU的SDU分段的分段信息,所述分段信息包括序列号SN;
启动模块,用于若根据所述分段信息确定存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间;
停止模块,用于若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器;
删除模块,用于若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。
可选的,同一SDU内的SDU分段的分段信息包括的SN相同;或者
同一SDU内的SDU分段的分段信息包括的SN不同。
可选的,所述数据接收端还包括:
记录维护模块,用于记录并维护如下一个或者多个变量:
第一变量、第二变量和第三变量;
其中,所述第一变量用于记录接收到的最高SDU分段的下一个SDU分段的变量信息,或者用于记录接收到的最高SDU分段的变量信息;
所述第二变量用于记录所述重组定时器对应的SDU分段区间的上边界的变量信息;
所述第三变量用于记录需要重组操作的SDU分段区间的下边界的变量信息;
其中,所述变量信息包括SN和/或SO信息。
可选的,若接收序列中不存在接收缺口或者所有接收缺口均已经正确接收,则所述需要重组操作的SDU分段区间的下边界等于接收到的最高SDU分段的下一个SDU分段,或者接收到的最高SDU分段;
若接收序列中存在接收缺口,则所述需要重组操作的SDU分段区间的下边界为所述接收序列的第一个接收缺口处的SDU分段;
若所述第一个缺口处的SDU分段正确接收,则所述需要重组操作的SDU分段区间的下边界更新为下一个接收缺口处的SDU分段。
可选的,若启动所述重组定时器,则所述上边界为接收到的最高SDU分段的下一个SDU分段或者接收到的最高SDU分段,在所述重组定时器有效期限所述上边界不变;
且所述重组定时器对应的SDU分段区间为由所述下边界和所述上边界决定的区间。
可选的,所述停止模块用于若所述下边界等于所述上边界,或者所述下边界更新为所述上边界之后的SDU分段,则确定所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器。
可选的,所述删除模块用于若所述重组定时器超时,且所述下边界为所述上边界之前的SDU分段,则确定所述SDU分段区间还存在未正确接收的SDU分段,并删除所述SDU分段区间的所有未成功重组的SDU分段,并将所述下边界更新为所述上边界对应的SDU分段。
可选的,所述数据接收端还包括:
第一重启模块,用于若所述下边界与所述第一变量记录的SDU分段不相同时,则确定接收序列存在接收缺口,并重启所述重组定时器,以及记录所述下边界为所述第一变量记录的SDU分段。
可选的,所述启动模块,包括:
启动单元,用于所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择单元,用于选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与所述重组定时器对应的SDU分段区间。
可选的,所述数据接收端还包括:
第二重启模块,用于在所述重组定时器停止或者超时后,若还存在接收缺口,则重启所述重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择模块,用于选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与重启的所述重组定时器对应的SDU分段区间。
本发明实施例还提供一种数据接收端,包括处理器、收发机、存储器、用户接口和总线接口,其中,所述处理器,用于读取所述存储器中的程序,执行下列过程:
获取SDU的SDU分段的分段信息,所述分段信息包括序列号SN;
若根据所述分段信息确定存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间;
若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器;
若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
获取SDU的SDU分段的分段信息,所述分段信息包括序列号SN;
若根据所述分段信息确定存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间;
若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器;
若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。
本发明的上述技术方案至少具有如下有益效果:
本发明实施例中,获取SDU的SDU分段的分段信息,所述分段信息包括SN;若根据所述分段信息确定存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间;若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器;若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。这样本发明实施例可以实现根据SDU分段的分段信息进行对SDU分段进行处理,且还可以提高数据接收端的数据处理性能。
附图说明
图1是本发明实施例可应用的网络结构示意图;
图2是本发明实施例提供的一种SDU分段处理方法的流程图;
图3是本发明实施例提供的一种数据接收端的结构图;
图4是本发明实施例提供的一种数据接收端的结构图;
图5是本发明实施例提供的一种数据接收端的结构图;
图6是本发明实施例提供的一种数据接收端的结构图;
图7是本发明实施例提供的一种数据接收端的结构图;
图8是本发明实施例提供的一种数据接收端的结构图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
参见图1,图1是本发明实施例可应用的网络结构示意图,如图1所示,包括数据接收端11和数据发送端12,其中,数据接收端11可以是用户终端(User Equipment,UE)或者网络侧设备,而数据发送端12可以是网络侧设备或者UE,其中,附图中以数据接收端11为UE,数据发送端12为网络侧设备进行举例。另外,本发明实施例中,UE可以是手机、平板电脑(Tablet Personal Computer)、膝上型电脑(Laptop Computer)、个人数字助理(personaldigital assistant,简称PDA)、移动上网装置(Mobile Internet Device,MID)或可穿戴式设备(Wearable Device)等终端侧设备,需要说明的是,在本发明实施例中并不限定UE的具体类型。网络侧设备可以是基站,例如:宏站、LTE eNB、5G NR NB等;网络侧设备也可以是小站,如低功率节点(LPN:low power node)pico、femto等小站,或者网络侧设备可以接入点(AP,access point);基站也可以是中央单元(CU,central unit)与其管理是和控制的多个传输接收点(TRP,Transmission Reception Point)共同组成的网络节点。需要说明的是,在本发明实施例中并不限定网络侧设备的具体类型。
请参见图2,图2是本发明实施例提供的一种SDU分段处理方法的流程图,如图2所示,包括:
201、获取SDU的SDU分段的分段信息,所述分段信息包括序列号SN。
202、若根据所述分段信息确定存在接收缺口(Gap),则启动重组定时器,并确定所述重组定时器对应的SDU分段区间。
203、若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器。
204、若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。
其中,步骤201中的SDU分段可以是数据接收端正确接收的SDU分段。另外,本发明实施例中,完整发送的SDU可以不携带SN。
而上述分段信息除了包括SN之外,还可以包括其他信息,例如:SO信息、LI信息或者FI信息等,对此本发明实施例不作限定。且上述SN可以表示SDU分段所属的SDU的序列,或者可以表示SUD分段的序号。
上述根据所述分段信息确定存在接收缺口可以是,根据上述分段信息确定数据接收端存在未正确接收的SDU分段,或者可以是确定接收序列中存在接收缺口。例如:接收在SDU分段包括分段1、分段3和分段4,则可以确定分段2未正确接收,即存在接收缺口。而上述启动重组定时器的时长可以是预先配置的。另外,上述SDU分段区间可以是包括上述接收缺口的区间,例如:接收在SDU分段包括分段1、分段3和分段4,则该分段区间可以是分段1至分段3之间的区间,或者分段2至分段3之间的区间等等。且上述SDU分段区间可以包括多个接收缺口,即可以实现针对一个或者多个SDU分段的接收缺口启动重组定时器。
通过步骤203可以实现若重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,即重组定时器对应区间的所有接收缺口(Gap)都填满,则停止所述重组定时器,从而可以减少不必要的计时,以节约功耗。
通过步骤204若重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段,因为重组定时器超时,则表示在重组定时器超时时,上述SDU分段区间还存在未正确接收的SDU分段,从而可以删除所述SDU分段区间的所有未成功重组的SDU分段,有效的降低处理复杂度,提升了系统效率。
需要说明的是,本发明实施例中,SDU可以是RLC层的SDU,且本发明实施例可以应用于数据接收端的UM模式。且数据接收端还可以使用SDU的SDU分段的分段信息进行重组。其中,上述重组可以是按照SDU分段的分段顺序进行重组,且重组后得到的SDU可以乱序递交给高层。
可选的,同一SDU内的SDU分段的分段信息包括的SN相同;或者
同一SDU内的SDU分段的分段信息包括的SN不同。
该实施方式中,可以实现同的SDU内各SDU分段的携带的SN是相同的,例如:针对第一个SDU,SN=0,如果该SDU被分段为三个段,则该SDU的三个分段均使用SN=0。另外,该实施方式中,还可以实现同一SDU内的不同SDU分段携带的SN不同,例如:针对第一个SDU,如果该SDU被分段为三个段,则该SDU的三个分段均使用SN=0、SN=1和SN=2。
另外,所述分段信息还包括如下一项或者多项:
SO信息、LI和FI。
其中,上述SO信息用于指示SDU分段的分割偏移,LI用于指示SDU分段的长度,FI用于指示SDU分段的类型。例如:对于同一SDU内各SDU分段的SN相同的情况,针对第一个SDU,SN=0,如果该SDU被分段为三个段,则该SDU的三个分段均使用SN=0,以不同的SO和长度信息LI,来指示不同的分段,以及FI信息来指示分段类型,例如SN均为0,三个分段的SO和长度信息LI分别为:第一个分段不需要携带SO,因为SO默认为0,LI为200字节,FI指示这是第一个分段,第二个分段,SO=200字节,LI=300字节,FI指示这是中间分段,最后一个分段,SO=500字节,LI=500字节,FI指示最后一个分段。按照这样的分段情况,接收端可以正确的对分段进行排序和重组。
又例如:对于同一SDU内不同SDU分段的SN不同,按照上述相同的例子,由于对于不同的SDU分段携带不同的SN,并以FI指示分段类型,也就是说第一个分段,不需要携带SO,因为SO默认为0,LI为200字节,FI指示这是第一个分段,SN=0;第二个分段,SO=200字节,LI=300字节,FI指示这是中间分段,SN=1;第三个分段,最后一个分段,SO=500字节,LI=500字节,FI指示最后一个分段,SN=2。按照这样的分段情况,接收端也可以正确的对分段进行排序和重组。
该实施方式中,通过上述SO信息、LI和FI可以准确指示各SDU分段的位置,从而准确进行重组,以及识别接收缺口。且该实施方式中,结合上述SN相同或者不同的两种实施方式均可以正确工作,且同一SDU内各SDU分段的SN相同的实施方式中,可以消耗的SN空间更小。
可选的,所述重组定时器的时长为HARQ的最大传输时延。
其中,上述重组定时器的长度由高层无线资源控制(Radio Resource Control,RRC)配置,或者其他高层信令配置,且由于重组定时器的时长为HARQ的最大传输时延,这样当等待过该重组定时器长度之后,如果接收缺口处的分段还没有成功接收,则该缺口的分段已经因为HARQ达到最大重传次数仍未成功而被放弃传输,因此该缺口处分段可以放弃等待,视为彻底传输失败,以有效的降低处理复杂度,提升了系统效率。当然,本发明实施例中,上述重组定时器的时长并不限定为HARQ的最大传输时延,例如:还可以是数据接收端预先配置的固定时长。
可选的,所述方法还包括:
记录并维护如下一个或者多个变量:
第一变量、第二变量和第三变量;
其中,所述第一变量用于记录接收到的最高SDU分段的下一个SDU分段的变量信息,或者用于记录接收到的最高SDU分段的变量信息;
所述第二变量用于记录所述重组定时器对应的SDU分段区间的上边界的变量信息;
所述第三变量用于记录需要重组操作的SDU分段区间的下边界的变量信息;
其中,所述变量信息包括SN和/或SO信息。
其中,上述第一变量可以定义为VR_receive_H变量,第二变量可以定义为上边界(VR_reassemble_H),第三变量可以定义为下边界(VR_reassemble_L)。
另外,该实施方式中,如果同一SDU内各SDU分段的SN相同时,则上述变量信息包括SO信息,以及还可以包括SN,以通过SO信息区分SDU分段;如果同一SDU内各SDU分段的SN不同时,则上述变量信息可以只包括SN,可以不用包括SO信息,以通过SN区分SDU分段。
以下面以一个顺序接收的例子,来说明数据接收端的操作:
当数据接收端接收到第一个分段时,SN=0,LI指示第一分段,第一分段SO为0,LI=200字节,此时由于是按序接收,因此VR_receive_H和VR_reassemble_L都相应更新,可以更新为SN=0,SO=200字节。
当接收到第二个分段时,SN=0,LI指示为中间分段,第二分段SO为200字节,LI=300字节,此时仍旧是按序接收,因此VR_receive_H和VR_reassemble_L都相应更新,可以更新为SN=0,SO=500字节。
当接收到第三个分段时,SN=0,LI指示为该SDU的最后一个分段,SO为500字节,LI=500字节,此时仍旧是按序接收,而且接收端知道SDU 0已经接收成功,则可以将前三个分段进行重组并递交高层,此时仍旧是按序接收,因此VR_receive_H和VR_reassemble_L都相应更新,可以更新为SN=1,SO=0字节。
后续继续接收SN=1的SDU的各个分段,以及SN=2,3,4…的分段,按照上述的方式进行顺序更新和维护,并将重组成功的数据包递交高层。
在接收的过程中,在分段中间也会接收到很多完整SDU,对于这些完整的SDU,由于不需要任何排序,可以将接收到的完整SDU直接递交高层,并不影响任何的变量更新和窗口,定时器操作。
该实施方式中,通过上述三个变量可以快捷地获取SDU分段的接收情况,以提高数据处理效率。
可选的,若接收序列中不存在接收缺口或者所有接收缺口均已经正确接收,则所述需要重组操作的SDU分段区间的下边界等于接收到的最高SDU分段的下一个SDU分段,或者接收到的最高SDU分段;
若接收序列中存在接收缺口,则所述需要重组操作的SDU分段区间的下边界为所述接收序列的第一个接收缺口处的SDU分段;
若所述第一个缺口处的SDU分段正确接收,则所述需要重组操作的SDU分段区间的下边界更新为下一个接收缺口处的SDU分段。
该实施方式中,可以及时更新下边界,即VR_reassemble_L,以准确地需要接收的SDU分段,以提高数据接收端数据处理性能。
可选的,若启动所述重组定时器,则所述上边界为接收到的最高SDU分段的下一个SDU分段或者接收到的最高SDU分段,在所述重组定时器有效期限所述上边界不变;
且所述重组定时器对应的SDU分段区间为由所述下边界和所述上边界决定的区间。
该实施方式中,可以实现在启动重组定时器时,上边界,即VR_reassemble_H保持当前接收到的最高SDU分段的下一个SDU分段或者当前接收到最高SDU分段。且对应的SDU分段由所述下边界和所述上边界决定的区间,从而提高重组定时器的性能。
例如:当接收端对SN=0的SDU接收和重组成功之后,VR_receive_H和VR_reassemble_L都相应更新为SN=1,SO=0字节,意味着下一个期望接收的是SN=1的第一个分段,但是当第一个分段丢失,先接收到第二分段时,例如接收到SN=1,LI指示是中间分段,SO=200字节,LI=300字节时,接收端可以感知到SN=1的SDU第一分段丢失,VR_reassemble_L仍旧保留原来的值,SN=1,SO=0,而VR_receive_H更新为SN=1,SO=500字节。此时启动一个重组定时器,记录VR_reassemble_H为当前的VR_receive_H,即SN=1,SO=500字节,该定时器对应的分段区间为【VR_reassemble_L,VR_reassemble_H】。
如果在重组定时器运行期间,继续接收到了其他的新SDU分段,则VR_receive_H每次都根据新SDU分段进行更新,即每次都设置为最新SDU分段的下一个分段。VR_reassemble_H在重组定时器运行期间不会更新,跟当前的定时器绑定。VR_reassemble_L在重组定时器运行期间可以更新,VR_reassemble_L总是更新为当前接收端的第一个缺口,例如本例中,如果最低的缺口SN=1,SO=0,LI=200字节的分段被成功接收,而后面没有再有缺口了,则VR_reassemble_L更新为VR_receive_H一样的值,此时VR_reassemble_L高于VR_reassemble_H,即意味着当前重组定时器对应的区间中所有分段接收缺口都填满了,此时重组定时器可以停止。
可选的,所述若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器,包括:
若所述下边界等于所述上边界,或者所述下边界更新为所述上边界之后的SDU分段,则确定所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器。
该实施方式中,可以实现若所述下边界为所述上边界,或者所述下边界为所述上边界之后的SDU分段,则确定所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器,从而正确地停止重组定时器,以提高数据处理性能。例如:VR_reassemble_L大于或者等于VR_reassemble_H时,则认为缺口全部正确接收,因为VR_reassemble_L是根据每次新接收的数据更新,当VR_reassemble_L指示的第一个缺口被正确接收时,VR_reassemble_L自动更新为下一个缺口。当重组定时器超时之后,如果该缺口仍旧未接收成功,则意味着该缺口处的数据HARQ传输失败,对UM数据来说,放弃该分段,即分段彻底失败,此时无需再等待该分段,可以更新状态变量和清除缓存,此时需要把VR_reassemble_L更新为VR_reassemble_H之后第一个接收缺口处信息,如果后续没有缺口,则直接更新为VR_receive_H。
可选的,所述若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段,包括:
若所述重组定时器超时,且所述下边界为所述上边界之前的SDU分段,则确定所述SDU分段区间还存在未正确接收的SDU分段,并删除所述SDU分段区间的所有未成功重组的SDU分段,并将所述下边界更新为所述上边界对应的SDU分段。
其中,上述下边界为所述上边界之前的SDU分段表示,在上边界之前还存在未正确接收的SDU分段,进而可以删除所述SDU分段区间的所有未成功重组的SDU分段,并将所述下边界更新为所述上边界对应的SDU分段,例如:在对应的记录区间[VR_reassemble_L,VR_reassemble_H]之内,仍有接收缺口;此时重组定时器记录区间之内,如果还有未重组成功的分段碎片,判断方式为VR_reassemble_L小于VR_reassemble_H,则此时可以删除这些碎片,并更新VR_reassemble_L为VR_reassemble_H。
可选的,所述方法还包括:
若所述下边界与所述第一变量记录的SDU分段不相同时,则确定接收序列存在接收缺口,并重启所述重组定时器,以及记录所述上边界为所述第一变量记录的SDU分段。
由于第一变量记录的当前接收到最高SDU分段或者最高SDU分段的下一个分段,而下边界为最新接收缺口,从而重启所述重组定时器,将所述第一变量记录的SDU分段为对应区间的上边界。该实施方式中,由于通过所述下边界与所述第一变量记录的SDU分段不相同,就可以识别出还存在接收缺口,从而提高数据处理的效率。
例如:当前一个重组定时器超时后,或者重组定时器由于所对应的区间内的所有缺口都成功接收而停止定时器,此时需要判断接收端是否还有其他新的接收缺口,如果有接收缺口,则针对这些接收缺口,重启一个新的重组定时器。判断接收缺口的方式可以是,就是比较VR_reassemble_L是否等于VR_receive_H,当二者相等时,则意味着不存在接收缺口,不需要重启重组定时器。而当二者不相等时,意味着中间仍旧有接收缺口,此时重组定时器被重启,并记录该定时器的区间上界VR_reassemble_H等于当前的VR_receive_H。此时,如果VR_reassemble_L和VR_receive_H之间有多个gap,也是针对多个gap启动一个重组定时器。
可选的,所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间,包括:
所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与所述重组定时器对应的SDU分段区间。
其中,上述计算缓存中所有SN中两两之间的最小距离可以是,针对缓存中所有SDU分段中SN计算两两之间的最小距离,例如:缓存有SN3,SN5和SN8的分段,则计算SN3和SN5的最小距离,以及SN3和SN8的最小距离,以及SN5和SN8的最小距离。另外,由于任意两个SN均存在两种距离,一种是小SN至大SN的第一距离,另一种大SN至小SN的第二距离,例如:以SN3和SN8举例,而第一距离为8-3=5,即SN3至SN8的区间的距离,而第二距离为3+64(以预设最大SN为64举例)-8=59,即SN8至SN3的区间的距离。因此,上述最小距离也可以理解为最小距离区间,而上述第一距离可以理解为第一区间,即两个SN中小SN作为下边界,大SN作为上边界的区间,而上述第二距离可以理解为第二区间,即两个SN中大SN作为下边界,小SN作为上边界的区间,而最小距离间距为两个SN的第一区间和第二区间中的距离最小的区间。
而上述选择所有最小距离中最大距离可以是,在所有最小距离中选择一个最大值,所述最大距离对应的区间可以是,该最大距离对应的两个SN决定为区间距离为该最大距离的区间。需要说明的是,该最大距离并不两SN的最大距离,而所有最小距离中的最大距离。例如:缓存有SN3,SN5和SN8的分段,则所有最小距离中最大距离为8-3=5,则将SN3的第一个接收分段和SN8的最后接收分段,分别记录为重组定时器的下边界和上边界。
该实施方式中,可以实现仅维护两个变量,以降低数据处理的复杂度。
当然,上述所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间可以是,若根据所述分段信息确定所述接收序列存在接收缺口,则启动重组定时器,并将缓存中最大SN和最小SN确定两个SDU分段区间中的最小区间作为该重组定时器对应的SDU分段区间。
该方式考虑了从翻转(Wrap around)角度,两个SN之间有两个区间,取较小的那一个即可。例如SN最大值为64,当缓存中出现的是(1,2,4)这几个SN的分段,记录区间[1,4]为该重组定时器对应的SDU分段区间,而不是区间[4,1]。又例如:当缓存中出现的是(63,0,2,5),那么记录区间[63,5]为该重组定时器对应的SDU分段区间,而不是区间[5,63]。
可选的,所述方法还包括:
在所述重组定时器停止或者超时后,若还存在接收缺口,则重启所述重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与重启的所述重组定时器对应的SDU分段区间。
该实施方式中,可以实现当前一个重组定时器超时后,或者重组定时器由于所对应的区间内的所有缺口都成功接收而停止定时器,此时需要判断接收端是否还有其他新的接收缺口,如果有接收缺口,则针对这些接收缺口,重启一个新的重组定时器。
其中,判断接收缺口的一种方式,就是看当前缓存中的分段是否是按序接收,如果不是按序接收,则重启重组定时器,并记录重组定时器对应的区间,该区间由缓存中的最低SN和最高SN决定。一种最典型的按序接收分段的情况,就是缓存中仅有一个SN的分段,且这些分段的字节数是连续的,例如[0,200],[200,500]等等,此时认定为顺序接收,其它的情况均可认为非按序。
例如:SN大小6bit,SN=64则翻转为SN=0,SN63,SN0,SN2的分段在缓存中,SN63和SN2之间的距离有两种方式:一种是大数和小数之间的距离为63-2=61,第二种是小数和大数之间的距离为2+64-63=3,即任何一个小数都可以看成是发生SN跨越了最大值的翻转。在上述两个距离中,取较小的3作为SN63和SN2之间的最小距离,其它任意两个SN之间也这样求出最小距离,然后在所有最小距离里找到一个最大值,即SN63和SN2,分别作为重组定时器的上边界和下边界。
当然,上述在所述重组定时器停止或者超时后,若还存在接收缺口,则重启所述重组定时器,也可以将缓存中最大SN和最小SN确定两个SDU分段区间中的最小区间作为该重组定时器对应的SDU分段区间。即从Wrap around角度,两个SN之间有两个区间,取较小的那一个即可。例如SN最大值为64,当缓存中出现的是(1,2,4)这几个SN的分段,记录区间[1,4],当缓存中出现的是(63,0,2,5),那么记录区间[63,5],考虑SN的Wrap around操作。
需要说明的是,本发明实施例中,所有的等式关系,大于,小于等均可以考虑到SN的翻转(Wrap around)。举例说明:当SN为6bit长度时,SN的取值区间为0-63,则没有发生SNwrap around时,三个变量可能为:VR_reassemble_L对应的SN=0,VR_reassemble_H对应的SN=6,VR_receive_H对应的SN=8,这三个变量的正常大小关系为依次增大。而当发生了SNwrap around时,三个变量可能为:VR_reassemble_L对应的SN=60,VR_reassemble_H对应的SN=0,VR_receive_H对应的SN=4,这三个变量的大小关系依旧为依次增大,因为中间跨越了最大SN(MAX_SN)。
一般来说,在比较变量大小时,先进行SN的比较,如果SN不同,则大小关系清晰,如果SN相同,则还需要进一步比较SO的大小,例如VR_reassemble_L对应的SN=0,而SO=200,而SDU 0对应的第三个分段,SO=500,LI=300是接收成功的,VR_receive_H被更新为下一个期望接收的分段,则VR_receive_H对应的SN=0,而SO=800,此时VR_reassemble_L小于VR_receive_H。进一步说明关于SDU 0各个分段的状态,分段1[0,200]正确接收,分段2[200,500]丢失,由VR_reassemble_L指示为第一个接收缺口,分段3[500,800]接收成功,下一个分段[800,higher]是下一个期望接收的分段,由VR_receive_H指示。
需要说明的是,本发明实施例提供了多种可选的实施方式,且这多种可选的实施方式彼此可以相互结合实现,也可以单独实现,对此本发明实施例不作限定。
本发明实施例中,获取SDU的SDU分段的分段信息,所述分段信息包括SN;若根据所述分段信息确定存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间;若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器;若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。这样本发明实施例中可以实现根据SDU分段的分段信息进行对SDU分段进行处理,且还可以提高数据接收端的数据处理性能。
请参见图3,图3是本发明实施例提供的一种数据接收端的结构图,如图3所示,数据接收端300包括:
获取模块301,用于获取SDU的SDU分段的分段信息,所述分段信息包括序列号SN;
启动模块302,用于若根据所述分段信息确定存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间;
停止模块303,用于若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器;
删除模块304,用于若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。
可选的,同一SDU内的SDU分段的分段信息包括的SN相同;或者
同一SDU内的SDU分段的分段信息包括的SN不同。
可选的,如图4所示,所述数据接收端300还包括:
记录维护模块305,用于记录并维护如下一个或者多个变量:
第一变量、第二变量和第三变量;
其中,所述第一变量用于记录接收到的最高SDU分段的下一个SDU分段的变量信息,或者用于记录接收到的最高SDU分段的变量信息;
所述第二变量用于记录所述重组定时器对应的SDU分段区间的上边界的变量信息;
所述第三变量用于记录需要重组操作的SDU分段区间的下边界的变量信息;
其中,所述变量信息包括SN和/或SO信息。
可选的,若接收序列中不存在接收缺口或者所有接收缺口均已经正确接收,则所述需要重组操作的SDU分段区间的下边界等于接收到的最高SDU分段的下一个SDU分段,或者接收到的最高SDU分段;
若接收序列中存在接收缺口,则所述需要重组操作的SDU分段区间的下边界为所述接收序列的第一个接收缺口处的SDU分段;
若所述第一个缺口处的SDU分段正确接收,则所述需要重组操作的SDU分段区间的下边界更新为下一个接收缺口处的SDU分段。
可选的,若启动所述重组定时器,则所述上边界为接收到的最高SDU分段的下一个SDU分段或者接收到的最高SDU分段,在所述重组定时器有效期限所述上边界不变;
且所述重组定时器对应的SDU分段区间为由所述下边界和所述上边界决定的区间。
可选的,停止模块303用于若所述下边界等于所述上边界,或者所述下边界更新为所述上边界之后的SDU分段,则确定所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器。
可选的,删除模块304用于若所述重组定时器超时,且所述下边界为所述上边界之前的SDU分段,则确定所述SDU分段区间还存在未正确接收的SDU分段,并删除所述SDU分段区间的所有未成功重组的SDU分段,并将所述下边界更新为所述上边界对应的SDU分段。
可选的,如图5所示,所述数据接收端300还包括:
第一重启模块306,用于若所述下边界与所述第一变量记录的SDU分段不相同时,则确定接收序列存在接收缺口,并重启所述重组定时器,以及记录所述下边界为所述第一变量记录的SDU分段。
可选的,如图6所示,所述启动模块302,包括:
启动单元3021,用于所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择单元3022,用于选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与所述重组定时器对应的SDU分段区间。
可选的,如图7所示,所述数据接收端300还包括:
第二重启模块307,用于在所述重组定时器停止或者超时后,若还存在接收缺口,则重启所述重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择模块308,用于选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与重启的所述重组定时器对应的SDU分段区间。
需要说明的是,本实施例中上述数据接收端300可以是本发明实施例中方法实施例中任意实施方式的数据接收端,本发明实施例中方法实施例中数据接收端的任意实施方式都可以被本实施例中的上述数据接收端300所实现,以及达到相同的有益效果,此处不再赘述。
请参考图8,图8是本发明实施例提供的另一种数据接收端的结构图,如图8所示,该数据接收端包括:处理器800、收发机810、存储器820、用户接口830和总线接口,其中:
处理器800,用于读取存储器820中的程序,执行下列过程:
获取SDU的SDU分段的分段信息,所述分段信息包括序列号SN;
若根据所述分段信息确定存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间;
若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器;
若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段。
其中,收发机810,用于在处理器800的控制下接收和发送数据。
在图8中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器800代表的一个或多个处理器和存储器820代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机810可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。针对不同的用户设备,用户接口830还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。
处理器800负责管理总线架构和通常的处理,存储器820可以存储处理器800在执行操作时所使用的数据。
可选的,同一SDU内的SDU分段的分段信息包括的SN相同;或者
同一SDU内的SDU分段的分段信息包括的SN不同。
可选的,处理器800还用于:
记录并维护如下一个或者多个变量:
第一变量、第二变量和第三变量;
其中,所述第一变量用于记录接收到的最高SDU分段的下一个SDU分段的变量信息,或者用于记录接收到的最高SDU分段的变量信息;
所述第二变量用于记录所述重组定时器对应的SDU分段区间的上边界的变量信息;
所述第三变量用于记录需要重组操作的SDU分段区间的下边界的变量信息;
其中,所述变量信息包括SN和/或SO信息。
可选的,若所述接收序列不存在接收缺口或者所有接收缺口均已经正确接收,则所述需要重组操作的SDU分段区间的下边界等于接收到的最高SDU分段的下一个SDU分段,或者接收到的最高SDU分段;
若接收序列中存在接收缺口,则所述需要重组操作的SDU分段区间的下边界为所述接收序列的第一个接收缺口处的SDU分段;
若所述第一个缺口处的SDU分段正确接收,则所述需要重组操作的SDU分段区间的下边界更新为下一个接收缺口处的SDU分段。
可选的,若启动所述重组定时器,则所述上边界为接收到的最高SDU分段的下一个SDU分段或者接收到的最高SDU分段,在所述重组定时器有效期限所述上边界不变;
且所述重组定时器对应的SDU分段区间为由所述下边界和所述上边界决定的区间。
可选的,所述若在所述重组定时器超时之前,所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器,包括:
若所述下边界等于所述上边界,或者所述下边界更新为所述上边界之后的SDU分段,则确定所述SDU分段区间内的SDU分段均正确接收,则停止所述重组定时器。
可选的,所述若所述重组定时器超时,则删除所述SDU分段区间的所有未成功重组的SDU分段,包括:
若所述重组定时器超时,且所述下边界为所述上边界之前的SDU分段,则确定所述SDU分段区间还存在未正确接收的SDU分段,并删除所述SDU分段区间的所有未成功重组的SDU分段,并将所述下边界更新为所述上边界对应的SDU分段。
可选的,处理器800还用于:
若所述下边界与所述第一变量记录的SDU分段不相同时,则确定接收序列存在接收缺口,并重启所述重组定时器,以及记录所述下边界为所述第一变量记录的SDU分段。
可选的,所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并确定所述重组定时器对应的SDU分段区间,包括:
所述若根据所述分段信息确定接收序列存在接收缺口,则启动重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与所述重组定时器对应的SDU分段区间。
可选的,处理器800还用于:
在所述重组定时器停止或者超时后,若还存在接收缺口,则重启所述重组定时器,并计算缓存中所有SN中两两之间的最小距离,其中,两两之间的最小距离距为两个SN的第一距离和第二距离中的最小距离,所述第一距离为两个SN中大SN减小SN得到的距离,所述第二距离为两个SN中小SN与预设最大SN之和减大SN得到的距离;
选择所有最小距离中最大距离,并将所述最大距离对应的区间作为与重启的所述重组定时器对应的SDU分段区间。
需要说明的是,本实施例中上述数据接收端可以是本发明实施例中方法实施例中任意实施方式的数据接收端,本发明实施例中方法实施例中数据接收端的任意实施方式都可以被本实施例中的上述数据接收端所实现,以及达到相同的有益效果,此处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。