一种分组业务域传输分组数据的方法和系统
技术领域
本发明涉及通信系统的数据传输技术,尤其涉及一种分组业务域传输分组数据的方法和系统。
背景技术
在时分同步的码分多址(TD-SCDMA,Time Division-Synchronous CodeDivision Multiple Access)标准中,分组数据汇聚协议层仅仅应用在分组业务(PS)域,每个PS域的无线接入承载(RAB)都与一个无线承载(RB)相关联,每个RB都与一个分组数据汇聚协议(PDCP)实体相关联,而每个PDCP实体又都与一个无线链路控制层(RLC)实体相关联。每个PDCP实体可以有多个不同的头压缩协议类型。在用户设备(UE)侧,PDCP实体向非接入层(NAS)提供服务,在无线网络控制器(RNC)中,实现信号中继功能。
PDCP实体向高层提供的服务称为无线承载,PDCP层主要完成的功能有:(1)在发送和接收PDCP实体中分别完成IP数据流的头压缩和解压缩,例如对于IPv4和IPv6的TCP/IP和RTP/UDP/IP的信号头压缩和解压缩;(2)用于用户数据的发送;(3)用于对配置为支持无损服务无线网络子系统(SRNS)重定位的RB,进行PDCP实体序列号的维护。
蜂窝移动通信系统中,单个基站的覆盖范围有限,所以,当UE在通话的过程中从一个小区进入另外一个小区时,为了保证通信的连续性,系统要将该UE与原有小区建立的连接转移到新的小区上,这就是小区切换。UE不仅可以在同一个基站控制器下的不同小区之间进行切换,而且还可以在不同系统、不同基站控制器之间进行切换。当UE在切换时更换基站控制器,就需要进行UE的重定位操作。在TD-SCDMA系统中,源RNC切换到目标RNC的过程,会发生SRNS重定位。
为了支持无损重定位功能,PDCP实体增加了序列号窗口(SN window),按照3GPP TS 25.323协议的描述,SN window中存放的PDCP实体、即协议数据单元(PDU)需要发送给RLC实体,而且在3GPP TS 25.323协议中明确规定了SN window中存放着未确认的PDU记录,其最大存放个数为配置的SNwindow的窗口大小-255或者65535。在PS域的业务开始后,数据量会比较大,上层应用需要交互的数据包也比较多;另外,当PDCP实体支持无损重定位的时候,本侧的RLC实体在收到对端的RLC实体对一个PDU的确认时,会将该PDU的确认报给PDCP实体,但是由于网络传输的信号不好等原因,导致对端的RLC实体刚刚反馈确认的PDU并不一定为本侧PDCP实体中存放的第一个PDU记录的PDU,所以在PDCP实体的SN window中对已经确认的PDU的PDU记录并不能立即删除,而是要看该PDU记录的前一个PDU记录的PDU有没有被确认,直到第一个PDU记录的PDU被确认,才可以顺序删除被确认的PDU的PDU记录。
这样,如果第一个PDU记录的PDU一直没有被确认,将会导致后续的PDU记录堆积在SN window中,直至SN window堵塞。
目前的处理方法有如下两种:一种是简单丢弃法;一种是最早丢弃法;
其中,简单丢弃法如图1所示,有如下几个步骤:
步骤101:PDCP实体接收到业务数据单元(SDU)后,读取SN window中已有PDU记录的个数,记为W;
步骤102:PDCP实体判断W是否小于最初配置的SN window的窗口大小、即255或65535,如果小于,则执行步骤103;否则,执行步骤104;
步骤103:PDCP实体将SDU按照3GPP TS 25.323协议封装成PDU后发送到RLC实体,并把这个PDU的PDU记录添加到SN window中。
步骤104:将该SDU丢弃。
所述最早丢弃法如图2所示,有如下几个步骤:
步骤201:PDCP实体接收到SDU后,读取SN window中已有PDU记录的个数,记为W;
步骤202:PDCP实体判断W是否小于最初配置的SN window的窗口大小、即255或65535,如果小于,则执行步骤203;否则,执行步骤204;
步骤203:PDCP实体将SDU按照3GPP TS 25.323协议封装成PDU后发送到RLC实体,并把这个PDU的PDU记录添加到SN window中。
步骤204:PDCP实体将SN window中第一个PDU记录丢弃,并将SDU按照3GPP TS 25.323协议封装成PDU后发送到RLC实体,并把这个PDU的PDU记录添加到SN window中。
上述简单丢弃的方法在SN window满时,直接将接收到的SDU丢弃,其缺点在于未从本质上解决问题,也就是没有从SN window满的原因下手,导致只要SN window满就出现丢失SDU的情况;上述最早丢弃的方法是在SNwindow满时,丢弃SN window中最早的PDU记录,这样才能使新增的SDU可以转换成PDU发送给RLC实体,其缺点在于没有考虑到如何能最大限度的保存没有被确认的PDU记录,使发生无损SRNS重定位时不能最大限度的重发对端需要的PDU。
发明内容
有鉴于此,本发明的主要目的在于提供一种分组业务域传输分组数据的方法和系统,实现在分组业务域进行数据传输时,提高无损传输的效率。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实现的一种分组业务域传输分组数据的方法,该方法包括:
PDCP实体接收到SDU后,在SN window已满时,将所述SDU添加到缓存队列中,并在缓存已满时,删除SN window中权重值超过阈值的PDU记录,取缓存队列的第一个SDU处理为PDU,发送给RLC实体,且将发送的PDU的PDU记录添加到SN window中;其中,所述权重值用来表示每个PDU记录在SN window中的时间长度;
在SN window未满、且缓存中有SDU时,取缓存队列的第一个SDU处理为PDU,发送给RLC实体,且将发送的PDU的PDU记录添加到SN window中。
上述方案中,所述在SN window未满时该方法进一步包括:缓存中没有SDU时,则将PDCP实体接收到的SDU处理为PDU,发送给RLC实体,并将发送的PDU的PDU记录添加到SN window中。
上述方案中,在没有权重值超过阈值的PDU记录时,该方法进一步包括:丢弃SN window中第一个PDU记录,取缓存队列的第一个SDU处理为PDU,发送给RLC实体,并将发送的PDU的PDU记录添加到SN window中。
上述方案中,所述SDU处理为PDU具体为:将SDU按照3GPP TS 25.323协议封装成PDU。
上述方案中,所述PDCP实体接收到SDU后,该方法进一步包括:判断SN window中PDU记录的个数是否小于配置的SN window的窗口大小,如果小于,则为SN window未满;否则为SN window已满。
上述方案中,所述权重值具体为:在SN window中设置定时器,并为其中每个PDU记录设置权重值,初始值为0;当添加PDU记录时,判断SN window中是否有PDU记录,如果有PDU记录,则打开已关闭的定时器;如果没有PDU记录,则将已打开的定时器关闭;在添加完PDU记录时,打开已关闭的定时器;在定时时间到时,判断SN window中是否有PDU记录,如果有,则按照设定的步进值增加每个PDU记录的权重值,之后重新打开定时器;如果没有,则关闭定时器。
本发明实现的一种分组业务域传输分组数据的系统,该系统包括:
缓存模块,用于在PDCP接收到SDU后,判断缓存中是否有缓存的SDU,发送判断结果给SN window模块;在收到SN window已满的通知时,将所述SDU添加到缓存中;当缓存已满时,通知SN window模块;还用于在收到SDU提取模块的通知后,将所述SDU添加到缓存中;
SN window模块,用于在SN window未满、且收到判断结果为缓存有数据信息时,通知SDU提取模块;或者在SN window已满时,通知缓存模块SNwindow已满,同时用于收到缓存已满的通知时,删除权重值超过阈值的PDU记录,并通知SDU提取模块;还用于在收到SDU处理模块的通知后,添加处理的PDU的PDU记录到SN window中;
SDU提取模块,用于取缓存队列的第一个SDU给SDU处理模块,并通知缓存模块;
SDU处理模块,用于将SDU提取模块提取的SDU处理为PDU,发送到RLC实体,并通知SN window模块。
上述方案中,所述SN window模块进一步用于在SN window未满、且收到判断结果为缓存无数据信息时,通知SDU处理模块;还用于在没有权重值超过阈值的PDU记录时,丢弃SN window中第一个PDU记录,并通知SDU提取模块;
上述方案中,所述SDU处理模块进一步用于在收到SN window模块的通知后,对PDCP接收到的SDU处理为PDU,发送到RLC实体,并通知SN window模块。
本发明提供了一种分组业务域传输分组数据的方法和系统,PDCP实体接收到SDU后,通过判断缓存队列中是否有缓存的数据,且判断SN window是否已满,进行SDU的缓存和SN window中的PDU记录的处理,并在缓存中有数据、缓存的SDU的数量达到最大限制、且SN window中已满时,根据SNwindow中PDU记录的权重值来进行PDU记录的处理和SDU的缓存;如此,避免了对SDU的丢弃,可以实现延长PDU记录等待确认的时间,使发生无损SRNS重定位时能最大限度的重发对端丢失的PDU,提高了无损传输的效率。
附图说明
图1为现有技术中简单丢弃法的流程示意图;
图2为现有技术中最早丢弃法的流程示意图;
图3为本发明实现分组业务域传输分组数据的方法的流程示意图;
图4为本发明实现分组业务域传输分组数据的系统的结构示意图。
具体实施方式
在进行移动通信系统设计时,在支持无损SRNS重定位的前提下,PDCP实体应尽可能的在SN window中保存可能丢失的PDU的PDU记录,保证PDCP层能在发生无损SRNS重定位时尽可能的重传丢失的PDU。
本发明的基本思想是:PDCP实体接收到SDU后,通过判断缓存队列中是否有缓存的数据,且判断SN window是否已满,进行SDU的缓存和SN window中的PDU记录的处理,并在缓存中有数据、且缓存、SN window中均已满时,根据SN window中PDU记录的权重值来进行PDU记录的处理和SDU的缓存。
具体的,PDCP实体接收到SDU后,判断缓存队列中有没有缓存的数据,且判断SN window是否已满,
如果缓存中有数据、且SN window未满,则从缓存队列中取第一个SDU处理得到PDU后发送给RLC实体,并将相应PDU的PDU记录添加到SNwindow中,然后把收到的SDU添加到缓存队列中;
如果缓存中有数据、且SN window已满,则判断缓存的SDU的数量是否达到最大限制,如果达到,则判断SN window中PDU记录的权重值是否有超过阈值的,在有超过阈值的PDU记录时,首先删除超过阈值的PDU记录,在没有超过阈值的PDU记录时,首先丢弃SN window中第一个PDU记录;然后从缓存队列中取缓存队列的第一个SDU处理得到PDU后发送给RLC实体,并将相应PDU的PDU记录添加到SN window中;如果缓存没有达到最大限制,则将收到的SDU添加到缓存中;
如果缓存中无数据、且SN window未满,则将收到的SDU处理为PDU发送给RLC实体,并将相应PDU的PDU记录添加到SN window中;
如果缓存中无数据、且SN window已满,则将收到的SDU添加到缓存中。
上述的SDU处理得到PDU具体为:将SDU按照3GPP TS 25.323协议封装成PDU。
上述的最大限制可以根据设备自身的内存进行设定,比如设为100个SDU;
上述的判断SN window是否已满具体为:判断SN window中PDU记录的个数是否小于配置的SN window的窗口大小,如果小于,则为SN window未满;否则为SN window已满。
上述的PDU记录的权重值具体为:在SN window中设置定时器,并为其中每个PDU记录设置权重值,用来表示每个PDU记录在SN window中的时间长度,初始值为0;当添加PDU记录时,判断SN window中是否有PDU记录,如果有PDU记录,则判断定时器是否已启动,如果已启动,则不进行操作;如果没有启动,则在添加完PDU记录时,打开定时器;如果没有PDU记录,则判断定时器是否已启动,如果已启动,则关闭定时器,在添加完PDU记录时,打开定时器;如果没有启动,则在添加完PDU记录时,打开定时器;在定时时间到时,判断SN window中是否有PDU记录,如果有,则按照设定的步进值增加每个PDU的权重值,如果没有,则关闭定时器;所述定时时间为根据实际应用的需要预先设定的定时时间,比如设为100ms;所述步进值一般设为1。
上述的判断SN window中PDU记录的权重值是否有超过阈值的,具体为:根据实际应用的需要,预先设置PDU记录的权重值的阈值,比如设为50,则通过比较PDU记录的权重值与设定的阈值来进行判断。
下面通过附图及具体实施例对本发明再做进一步的详细说明。
本发明实现分组业务域传输分组数据的方法,如图3所示,该方法包括以下几个步骤:
步骤301:PDCP实体接收到SDU后,判断缓存队列中有没有缓存的数据,如果有,则执行步骤302;如果无则执行步骤303;
步骤302:PDCP实体判断SN window是否已满,如果未满,则执行步骤304;如果已满,则执行步骤305;
具体的,判断SN window中PDU记录的个数是否小于最初配置的SNwindow的窗口大小,如果小于,则为未满,执行步骤304;如果不小于,则为已满,执行步骤305;
步骤303:PDCP实体判断SN window是否已满,如果未满,则执行步骤310;如果已满,则执行步骤311;
具体的,判断SN window中PDU记录的个数是否小于最初配置的SNwindow的窗口大小,如果小于,则为未满,执行步骤310;如果不小于,则为已满,执行步骤311;
步骤304:PDCP实体从缓存队列中取第一个SDU处理得到PDU后发送给RLC实体,并将相应PDU的PDU记录添加到SN window中,然后把收到的SDU添加到缓存队列中,流程结束;
步骤305:PDCP实体判断缓存是否已满,如果缓存已满,则执行步骤306:否则,执行步骤311;
具体的,判断缓存的SDU的数量是否达到最大限制,如果达到,则为缓存已满,执行步骤306:否则,执行步骤311;
步骤306:PDCP实体判断SN window中PDU记录的权重值是否有超过阈值的,如果有,则执行步骤307;否则,执行步骤308;
步骤307:PDCP实体删除权重值超过阈值的PDU记录,执行步骤309;
步骤308:PDCP实体丢弃SN window中第一个PDU记录;
步骤309:PDCP实体从缓存队列中取缓存队列的第一个SDU处理为PDU后发送给RLC实体,并将PDU记录添加到SN window中,执行步骤311;
步骤310:PDCP实体将收到的SDU处理为PDU后发送给RLC实体,并将PDU记录添加到SN window中,流程结束;
步骤311:PDCP实体将收到的SDU添加到缓存中,流程结束。
基于上述方法,本发明还提供了实现分组业务域传输分组数据的系统,如图4所示,该系统包括:缓存模块41、SN window模块42、SDU提取模块43、SDU处理模块44;其中,
缓存模块41,用于在PDCP接收到SDU后,判断缓存中是否有缓存的SDU,将判断结果发送给SN window模块42;在收到SN window已满的通知时,将所述SDU添加到缓存中;当缓存已满时,通知SN window模块42;还用于在收到SDU提取模块43的通知后,添加收到的SDU到缓存中;
SN window模块42,用于在SN window未满、且收到判断结果为缓存有数据信息时,通知SDU提取模块43;或者在SN window已满、且收到判断结果为缓存有数据或缓存无数据信息时,通知缓存模块41SN window已满,同时用于收到缓存已满的通知时,删除权重值超过阈值的PDU记录,并通知SDU提取模块43;还用于在收到SDU处理模块44的通知后,添加处理的PDU的PDU记录到SN window中;
进一步的,所述SN window模块42还用于在SN window未满、且收到判断结果为缓存无数据时,通知SDU处理模块44;以及在没有权重值超过阈值的PDU记录时,丢弃SN window中第一个PDU记录,并通知SDU提取模块43;
所述权重值具体是:SN window模块42在SN window中设置定时器,并为其中每个PDU记录设置权重值,在定时器时间到时,为SN window中每个PDU记录按照设定的步进值增加权重值;
SDU提取模块43,用于从缓存队列中取缓存队列的第一个SDU给SDU处理模块44,并通知缓存模块41;
SDU处理模块44,用于将SDU提取模块43提取的SDU处理为PDU后发送给RLC实体,并通知SN window模块42;
进一步的,所述SDU处理模块44还用于收到SN window模块42的通知后,对PDCP接收的SDU处理为PDU后发送给RLC实体,并通知SN window模块42。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。