HSPA+系统中CELL_FACH流量控制方法转让专利

申请号 : CN201010288767.0

文献号 : CN102413511B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱颖王彬

申请人 : 普天信息技术研究院有限公司

摘要 :

本发明公开了一种HSPA+系统中CELL_FACH流量控制方法,预先配置周期定时器的长度TFC_period周期定时器的长度TFC_period为一个流控周期,每一流控周期的结束时刻为一周期流控点,该方法包括:每子帧判断周期定时器是否到期,如果是,则采用周期定时触发方式进行Iub口的流量控制;否则,采用特定事件触发方式进行Iub口的流量控制。本发明针对处于CELL_FACH状态下的Iub口的流量控制提出了完整的解决方案,能够对HSPA+系统中CELL_FACH状态下的Iub口的流量进行控制。

权利要求 :

1.一种HSPA+系统中CELL_FACH流量控制方法,其特征在于,预先配置周期定时器的长度TFC_period,周期定时器的长度TFC_period为一个流控周期,每一流控周期的结束时刻为一周期流控点,该方法包括:每子帧判断周期定时器是否到期,如果是,则采用周期定时触发方式进行Iub口的流量控制;否则,采用特定事件触发方式进行Iub口的流量控制;

其中,所述采用周期定时触发方式进行Iub口的流量控制的方法包括:

A1、更新公共优先级队列PQ队列的缓存下限PQ_low_Buffer_Size和公共PQ队列中每个单个用户的缓存上限User_high_Buffer_Size;

A2、统计公共PQ队列中用户的缓存量User_Buffer_Size大于等于缓存上限User_high_Buffer_Size的用户数目M是否大于等于预先设置的上限流控的用户数目门限Nhigh_allow,如果是,则执行步骤A3,否则,执行步骤A4;

A3、确定流控类型为上限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need=0,然后执行步骤A7;

A4、判断公共PQ队列的缓存量PQ_Buffer_Size是否小于等于公共PQ队列的缓存下限PQ_low_Buffer_Size,如果是,则执行步骤A6,否则,执行步骤A5;

A5、确定流控类型为正常流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need:Bnodeb_need=RatePQ_out×(TFC_period+TLow_Remain),其中,RatePQ_out为公共PQ队列的平均出口速率,TLow_Remain为可配置的数据请求增量时间长度,然后执行步骤A7;

A6、确定流控类型为下限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need:Bnodeb_need=b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size,其中,b为可配置的索要数据量的加速因子,然后执行步骤A7;

A7、计算容量分配控制帧的信用度HS-DSCHCredits;

A8、判断距离当前时刻最近一次的流控类型判断结果是否为下限流控,且

HS-DSCHCredits的值小于1,如果是,则执行步骤A9;否则,执行步骤A10;

A9、增大滤波因子TC,根据增大后的滤波因子TC,重新确定公共PQ队列中单个用户的平均出口速率Rateuser_out以及公共队列的平均出口速率RatePQ_out,根据重新确定的Rateuser_out和RatePQ_out,重新计算公共PQ队列的缓存下限PQ_low_Buffer_Size,接着重新计算单个用户的缓存上限User_high_Buffer_Size,并重新计算Bnodeb_need,重新计算HS-DSCHCredits,如果重新计算的HS-DSCHCredits还是小于1,则将单个用户的平均出口速率Rateuser_out置为预设的确定值Rateuser_initial,然后再依次重新确定RatePQ_out、PQ_low_Buffer_Size、User_high_Buffer_Size、Bnodeb_need,然后执行步骤A10;否则,如果重新计算的HS-DSCHCredits大于等于1则直接执行步骤A10;

A10、NodeB通过容量分配控制帧向RNC请求数据量为所计算的Bnodeb_need;

所述采用特定事件触发方式进行Iub口的流量控制的方法包括:

B1、统计公共PQ队列中用户的缓存量User_Buffer_Size大于等于缓存上限User_high_Buffer_Size的用户数目M是否大于等于上限流控的用户数目门限Nhigh_allow,如果是,则执行步骤B2,否则,执行步骤B4;

B2、判断从上一个周期流控点至当前时刻这一时间段内,距离当前时刻最近一次确定的流控类型是否为上限流控,如果是,则不进行流控操作;否则,执行步骤B3;

B3、确定流控类型为上限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need=0,然后执行步骤B7;

B4、判断公共PQ队列的缓存量PQ_Buffer_Size是否小于等于公共PQ队列的缓存下限PQ_low_Buffer_Size,如果是,则执行步骤B5,否则不进行流控操作;

B5、判断从上一个周期流控点至当前时刻这一时间段内,距离当前时刻最近一次确定的流控类型是否为下限流控,如果是,则不进行流控操作;否则,执行步骤B6;

B6、确定流控类型为下限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量:Bnodeb_need=b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size,其中,b为可配置的索要数据量的加速因子,然后执行步骤B7;

B7、计算容量分配控制帧的信用度HS-DSCHCredits;

B8、判断距离当前时刻最近一次的流控类型判断结果是否为下限流控,且

HS-DSCHCredits的值小于1,如果是,则执行步骤B9;否则,执行步骤B10;

B9、增大滤波因子TC,根据增大后的滤波因子TC,重新确定公共PQ队列中单个用户的平均出口速率Rateuser_out以及公共队列的平均出口速率RatePQ_out,根据重新确定的Rateuser_out和RatePQ_out,重新计算公共PQ队列的缓存下限PQ_low_Buffer_Size,接着重新计算单个用户的缓存上限User_high_Buffer_Size,并重新计算Bnodeb_need,重新计算HS-DSCHCredits,如果重新计算的HS-DSCHCredits还是小于1,则将单个用户的平均出口速率Rateuser_out置为预设的确定值Rateuser_initial,然后再依次重新确定RatePQ_out、PQ_low_Buffer_Size、User_high_Buffer_Size、Bnodeb_need,然后执行步骤B10;否则,如果重新计算的HS-DSCHCredits大于等于1则直接执行步骤B10;

B10、NodeB通过容量分配控制帧向RNC请求数据量为所计算的Bnodeb_need。

2.根据权利要求1所述的方法,其特征在于,步骤A1中所述更新公共PQ队列的缓存下限PQ_low_Buffer_Size的方法为:计算PQ_low_Buffer_Size=α×RatePQ_out×Tfeedback,其中,RatePQ_out为公共PQ队列的平均出口速率,Tfeedback为容量分配控制帧从发出到实际生效起作用的时间间隔;a为下限防抖动因子,取大于1的正整数。

3.根据权利要求2所述的方法,其特征在于,步骤A1中所述更新公共PQ队列中每个单个用户的缓存上限User_high_Buffer_Size的方法为:计算User_high_Buffer_Size=Rateuser_out×(Tmax-Thigh_Remain),其中,Rateuser_out为公共PQ队列中当前单个用户的平均出口速率,Tmax为用户缓存到达紧急PQ队列的时间门限,Thigh_remain为缓存上限调节参数。

4.根据权利要求3所述的方法,其特征在于,所述单个用户的平均出口速率Rateuser_out的计算方法为:*

计算 其中,Rateuser_out为当前单个用户在

当前时刻的前一时刻的PQ队列平均出口速率,Ruser_out为当前单个用户在当前时刻的PQ队列瞬时出口速率;TC为滤波因子;

所述公共PQ队列的平均出口速率RatePQ_out为公共PQ队列中每个用户的平均出口速率Rateuser_out之和。

5.根据权利要求4所述的方法,其特征在于,步骤A2和B1中所述上限流控的用户数目门限Nhigh_allow的计算方法为:计算Nhigh_allow=N*Ratehigh_allow,其中,N为公共PQ队列中用户总数,Ratehigh_allow为公共PQ队列允许缓存达到上限的用户数占公共PQ队列内所有用户数的比例,若所计算的Nhigh_allow为小数,则将向下取整结果作为Nhigh_allow。

6.根据权利要求4所述的方法,其特征在于,步骤A7和B7中所述计算容量分配控制帧的信用度HS-DSCHCredits的方法为:计算

其中,HS-DSCHCredits等于一个HS-DSCH Interval内NodeB需要向RNC请求的数据量,HS-DSCH Interval为在Iub口的数据传输时间间隔。

7.根据权利要求5所述的方法,其特征在于,

步骤A9和B9中按照 重新确定公共PQ队列

中单个用户的平均出口速率Rateuser_out以及公共队列的平均出口速率RatePQ_out,按照PQ_low_Buffer_Size=α×RatePQ_out×Tfeedback重新计算公共PQ队列的缓存下限PQ_low_Buffer_Size,按照User_high_Buffer_Size=Rateuser_out×(Tmax-Thigh_Remain)重新计算单个用户的缓存上限User_high_Buffer_Size,按照:

Bnodeb_need = b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size重新计算Bnodeb_need,按照 重新计算HS-DSCHCredits。

说明书 :

HSPA+系统中CELL_FACH流量控制方法

技术领域

[0001] 本发明涉及移动通讯领域,特别涉及一种HSPA+系统中CELL_FACH流量控制方法。

背景技术

[0002] 在高速分组接入增强(HSPA+)系统中,CELL_FACH状态下的数据传输得到了增强,主要体现在以下几个方面:
[0003] 第一,在空口上,CELL_FACH状态下的下行传输不再使用FACH信道,而是和CELL_DCH状态一样使用高速下行共享信道(HS-DSCH),所以HSPA+系统中CELL_FACH状态下的下行传输数据的速率得到了提高,而且下行传输业务类型也更加多样和灵活。
[0004] 第二,在Iub口上,CELL_FACH状态下新定义了公共媒体访问控制(MAC)流。不同于CELL_DCH状态下每个用户的MAC-d流,CELL_FACH下的公共MAC流为小区内所有用户共用的,同一条公共MAC流中可以传输多个用户的数据。另外,还新定义了HS-DSCH DATA FRAME TYPE 2数据帧和HS-DSCH CAPACITY ALLOCATION TYPE 2容量分配控制帧,可用于HSPA+系统中CELL_FACH状态下的Iub口数据传输和容量分配控制帧的传输。最后,在Iub口上数据帧中携带的MAC-d协议数据单元(MAC-d PDU)和容量分配控制帧中所指示的MAC-d PDU大小不再是固定大小,而是可变长度,并且同一数据帧中可以携带来自不同逻辑信道数据。数据帧和容量分配控制帧中所携带的CmCH-PI域也指的是CELL_FACH下公共优先级队列(PQ队列)的调度优先级。
[0005] 第三,在网络实体上,MAC-ehs也作用于CELL_FACH状态,配置了公共PQ队列,但与CELL_DCH状态不同的是,其公共PQ队列不是各个用户独立分配,而是为小区内所有用户共用。无线网络控制器(RNC)配置的同一个ID编号的PQ队列中可以存放多个用户的MAC-d PDU。
[0006] 需要说明的是,上述MAC-d实体是处理专用传输信道的MAC实体,MAC-d实体位于RNC中,MAC-ehs实体是处理高速下行共享信道的MAC实体,MAC-ehs实体位于基站(NodeB)中。其中,空口是指NodeB与用户设备(UE)之间的接口,也称Uu口,而Iub口是指RNC与NodeB之间的接口。
[0007] 由于在HSPA+系统中接入网侧的网元还是分为RNC和NodeB两个单独的网元,所以从来自核心网的下行数据流还是首先到达RNC,然后通过Iub口传输到NodeB,最后在空口发送给UE。但是,由于下述几个原因:第一,NodeB侧对用户传输的数据流量大小并不是固定的,而是根据用户空口传输质量进行自适应的调整,第二,NodeB侧的数据缓存大小是有限的;第三,NodeB侧即使能容纳一定的缓存量,但是存在缓存排队时延的参数限制,到达NodeB的数据如果超过一定时间门限还未进行空口发送则会主动丢弃;第四,Iub口的传输时延比较大,其远大于NodeB在空口上的调度时延5ms,所以基于上述几点原因,在RNC和NodeB之间的Iub口需要进行流量控制,其目的在于使得RNC能够及时给予NodeB所需要的数据量,避免NodeB没有数据可传,同时又避免NodeB侧数据量积累过多而导致NodeB主动丢包甚至缓存溢出。
[0008] 目前现存的Iub口的流量控制方案主要是针对CELL_DCH状态。例如,申请号为200610084695.1的发明专利指出,当PQ队列中的数据量大于或等于缓存上限值,则NodeB向RNC发送一个禁止下发数据的容量分配控制帧,申请号为200610084695.1的发明专利指出当PQ队列中的数据量小于或等于缓存下限值,则NodeB向RNC发送一个允许下发数据的容量分配控制帧。
[0009] 然而由于CELL_FACH状态下和CELL_DCH状态下容量分配控制帧针对的对象不同:CELL_FACH状态下针对公共PQ队列,CELL_DCH状态下针对各个用户的PQ队列,因此,CELL_DCH状态下的流控方案并不能直接应用于CELL_FACH状态下。
[0010] 而且,CELL_DCH和CELL_FACH状态下的业务特点不同,CELL_DCH状态下的业务更多的是大数据量且较连续的数据流,而CELL_FACH状态下的业务更多是支持用户长期在线的小业务量数据流,业务可能很不连续,这就更加导致CELL_DCH下的流控方案直接应用于CELL_FACH下会存在很多问题,比如,CELL_DCH下跟踪信道环境和用户吞吐量变化的速率统计方式,以及缓存下限的计算方式等都不符合小业务流量的流控特点,有可能造成缓存下限总是大于用户实际缓存、缓存上限小于缓存下限,或者流控方案“饿死”等现象。
[0011] 例如,申请号为200610084695.1的发明专利提出计算缓存下限的公式如下:
[0012]
[0013] 其中:Low_threshold的值为缓存下限值,Ti的值为HS-DSCH Interval,HS-DSCH Interval为在Iub口的数据传输时间间隔,Ts1的取值表示从NodeB向RNC发送一个允许下发数据的容量分配控制帧到RNC组装成第一个数据帧的时延,TTI为传输时间间隔,而TBmax是空口允许传输的最大传输块。可见,计算下限值参考的是空口允许传输的最大传输块,也即缓存下限仅参考信道质量,而没有参考空口平均速率,很容易导致缓存下限总是大于用户实际缓存,也很有可能导致缓存的上限小于下限。
[0014] 另外,申请号为200610089213.1的发明专利中,容量分配控制帧中的信用度为:空口平均传输速率*T/(MAC-d PDU长度最大值),其中T为根据缓存占用信息设定的重复周期。根据这种计算公式,在空口平均传输速率较小时,很容易出现索要的信用度为0的情况,进而导致空口平均传输速率进一步下降,如此循环,最终导致空口平均传输速率为0,同时NodeB侧的队列缓存也为0,业务传输中止,称这种现象为流控方案的“饿死”现象。
[0015] 而在调度方案中,并不区分无线资源控制协议(RRC)连接状态,即CELL_FACH和CELL_DCH状态下的用户使用相同的调度方案,也就是说,CELL_FACH状态下的调度方案不是以公共PQ队列为对象的,而是以用户的PQ队列为对象进行调度,而CELL_DCH状态下的流控方案的对象为公共PQ队列,由于流控方案和调度方案的对象不一致带来了负面影响:公共PQ队列中部分用户缓存很少低于各自下限,而另外一部分用户则缓存高于各自上限,信道环境好的用户往往缓存不足,抑制了吞吐量,信道环境差的用户往往缓存较多,会导致额外的紧急调度,因此成为限制系统吞吐量的瓶颈。
[0016] 综上,现有技术中的针对CELL_DCH状态下的Iub口流量控制方法不可直接应用于CELL_FACH状态下,而目前对处于CELL_FACH状态下的Iub口的流量控制还没有完整的解决方案。

发明内容

[0017] 有鉴于此,本发明提供一种HSPA+系统中CELL_FACH流量控制方法,能够对HSPA+系统中CELL_FACH状态下的Iub口的流量进行控制。
[0018] 为解决上述技术问题,本发明的技术方案是这样实现的:
[0019] 一种HSPA+系统中CELL_FACH流量控制方法,预先配置周期定时器的长度TFC_period,周期定时器的长度TFC_period为一个流控周期,每一流控周期的结束时刻为一周期流控点,该方法包括:
[0020] 每子帧判断周期定时器是否到期,如果是,则采用周期定时触发方式进行Iub口的流量控制;否则,采用特定事件触发方式进行Iub口的流量控制。
[0021] 所述采用周期定时触发方式进行Iub口的流量控制的方法包括:
[0022] A1、更新公共优先级队列PQ队列的缓存下限PQ_low_Buffer_Size和公共PQ队列中每个单个用户的缓存上限User_high_Buffer_Size;
[0023] A2、统计公共PQ队列中用户的缓存量User_Buffer_Size大于等于缓存上限User_high_Buffer_Size的用户数目M是否大于等于预先设置的上限流控的用户数目门限Nhigh_allow,如果是,则执行步骤A3,否则,执行步骤A4;
[0024] A3、确定流控类型为上限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need=0,然后执行步骤A7;
[0025] A4、判断公共PQ队列的缓存量PQ_Buffer_Size是否小于等于公共PQ队列的缓存下限PQ_low_Buffer_Size,如果是,则执行步骤A6,否则,执行步骤A5;
[0026] A5、确定流控类型为正常流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need:
[0027] Bnodeb_need=RatePQ_out×(TFC_period+TLow_Remain),其中,RatePQ_out为公共PQ队列的平均出口速率,TLow_Remain为可配置的数据请求增量时间长度,然后执行步骤A7;
[0028] A6、确定流控类型为下限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need:
[0029] Bnodeb_need = b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size,其中,b为可配置的索要数据量的加速因子,然后执行步骤A7;
[0030] A7、计算容量分配控制帧的信用度HS-DSCHCredits;
[0031] A8、判断距离当前时刻最近一次的流控类型判断结果是否为下限流控,且HS-DSCHCredits的值小于1,如果是,则执行步骤A9;否则,执行步骤A10;
[0032] A9、增大滤波因子TC,根据增大后的滤波因子TC,重新确定公共PQ队列中单个用户的平均出口速率Rateuser_out以及公共队列的平均出口速率RatePQ_out,根据重新确定的Rateuser_out和RatePQ_out,重新计算公共PQ队列的缓存下限PQ_low_Buffer_Size,接着重新计算单个用户的缓存上限User_high_Buffer_Size,并重新计算Bnodeb_need,重新计算HS-DSCHCredits,
[0033] 如果重新计算的HS-DSCHCredits还是小于1,则将单个用户的平均出口速率RatePQ_out置为预设的确定值Rateuser_initial,然后再依次重新确定RatePQ_out、PQ_low_Buffer_Size、User_high_Buffer_Size、Bnodeb_need,然后执行步骤A10;否则,如果重新计算的HS-DSCHCredits大于等于1则直接执行步骤A10;
[0034] A10、NodeB通过容量分配控制帧向RNC请求数据量为所计算的Bnodeb_need。
[0035] 所述采用特定事件触发方式进行Iub口的流量控制的方法包括:
[0036] B1、统计公共PQ队列中用户的缓存量User_Buffer_Size大于等于缓存上限User_high_Buffer_Size的用户数目M是否大于等于上限流控的用户数目门限Nhigh_allow,如果是,则执行步骤B2,否则,执行步骤B4;
[0037] B2、判断从上一个周期流控点至当前时刻这一时间段内,距离当前时刻最近一次确定的流控类型是否为上限流控,如果是,则不进行流控操作;否则,执行步骤B3;
[0038] B3、确定流控类型为上限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need=0,然后执行步骤B7;
[0039] B4、判断公共PQ队列的缓存量PQ_Buffer_Size是否小于等于公共PQ队列的缓存下限PQ_low_Buffer_Size,如果是,则执行步骤B5,否则不进行流控操作;
[0040] B5、判断从上一个周期流控点至当前时刻这一时间段内,距离当前时刻最近一次确定的流控类型是否为下限流控,如果是,则不进行流控操作;否则,执行步骤B6;
[0041] B6、确定流控类型为下限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量:
[0042] Bnodeb_need = b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size,其中,b为可配置的索要数据量的加速因子,然后执行步骤B7;
[0043] B7、计算容量分配控制帧的信用度HS-DSCHCredits;
[0044] B8、判断距离当前时刻最近一次的流控类型判断结果是否为下限流控,且HS-DSCHCredits的值小于1,如果是,则执行步骤B9;否则,执行步骤B10;
[0045] B9、增大滤波因子TC,根据增大后的滤波因子TC,重新确定公共PQ队列中单个用户的平均出口速率Rateuser_out以及公共队列的平均出口速率RatePQ_out,根据重新确定的Rateuser_out和RatePQ_out,重新计算公共PQ队列的缓存下限PQ_low_Buffer_Size,接着重新计算单个用户的缓存上限User_high_Buffer_Size,并重新计算Bnodeb_need,重新计算HS-DSCHCredits,
[0046] 如果重新计算的HS-DSCHCredits还是小于1,则将单个用户的平均出口速率RatePQ_out置为预设的确定值Rateuser_initial,然后再依次重新确定RatePQ_out、PQ_low_Buffer_Size、User_high_Buffer_Size、Bnodeb_need,然后执行步骤B10;否则,如果重新计算的HS-DSCHCredits大于等于1则直接执行步骤B10;
[0047] B10、NodeB通过容量分配控制帧向RNC请求数据量为所计算的Bnodeb_need。
[0048] 步骤A1中所述更新公共PQ队列的缓存下限PQ_low_Buffer_Size的方法为:
[0049] 计算PQ_low_Buffer_Size=α×RatePQ_out×Tfeedback’
[0050] 其中,RatePQ_out为公共PQ队列的平均出口速率,Tfeedback为容量分配控制帧从发出到实际生效起作用的时间间隔;a为下限防抖动因子,取大于1的正整数。
[0051] 步骤A1中所述更新公共PQ队列中每个单个用户的缓存上限User_high_Buffer_Size的方法为:
[0052] 计算User_high_Buffer_Size=Rateuser_out×(Tmax-Thigh_Remain),
[0053] 其中,Rateuser_out为公共PQ队列中当前单个用户的平均出口速率,Tmax为用户缓存到达紧急PQ队列的时间门限,Thigh_remain为缓存上限调节参数。
[0054] 所述单个用户的PQ队列平均出口速率Rateuser_out的计算方法为:
[0055] 计算 其中,Rate*user_out为当前单个用户在当前时刻的前一时刻的PQ队列平均出口速率,Ruser_out为当前单个用户在当前时刻的PQ队列瞬时出口速率;TC为滤波因子;
[0056] 所述公共PQ队列的平均出口速率RatePQ_out为公共PQ队列中每个用户的平均出口速率Rateuser_out之和。
[0057] 步骤A2和B1中所述上限流控的用户数目门限Nhigh_allow的计算方法为:
[0058] 计算Nhigh_allow=N*Ratehigh_allow,其中,N为公共PQ队列中用户总数,Ratehigh_allow为公共PQ队列允许缓存达到上限的用户数占公共PQ队列内所有用户数的比例,
[0059] 若所计算的Nhigh_allow为小数,则将向下取整结果作为Nhigh_allow。
[0060] 步骤A7和B7中所述计算容量分配控制帧的信用度HS-DSCHCredits的方法为:
[0061] 计算
[0062] 其中,HS-DSCHCredits等于一个HS-DSCH Interval内NodeB需要向RNC请求的数据量,HS-DSCH Interval为在Iub口的数据传输时间间隔。
[0063] 步骤A9和B9中按照 重新确定公共PQ队列中单个用户的平均出口速率Rateuser_out以及公共队列的平均出口速率RatePQ_out,[0064] 按照PQ_low_Buffer_Size=α×RatePQ_out×Tfeedback重新计算公共PQ队列的缓存下限PQ_low_Buffer_Size,
[0065] 按照User_high_Buffer_Size=Rateuser_out×(Tmax-Thigh_Remain)重新计算单个用户的缓存上限User_high_Buffer_Size,
[0066] 按照:
[0067] Bnodeb_need = b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size重新计算Bnodeb_need,
[0068] 按照 重新计算HS-DSCHCredits。
[0069] 可见,本发明针对处于CELL_FACH状态下的Iub口的流量控制提出了完整的解决方案,能够对HSPA+系统中CELL_FACH状态下的Iub口的流量进行控制。
[0070] 进一步,本发明提出的流量控制方案支持CELL_FACH状态下的用户在Iub口的数据流量控制,重新定义了缓存上限流控和下限流控的触发机制,更加符合CELL_FACH下流控的特点。
[0071] 进一步,本发明通过制定超过上限的用户的比例来作为判断上限流控的依据,有助于考虑公共队列整体的负载情况,避免单个用户的行为过多影响系统的吞吐量,也有助于降低流控操作带来的Iub口流量。
[0072] 进一步,通过引入TLow_Remain和速率重置机制来增强方案的健壮性,在保证流控方案跟踪信道环境和用户吞吐量变化及时性的同时,避免流控方案进入“饿死”状态。

附图说明

[0073] 图1为本发明所提供的一种HSPA+系统中CELL_FACH流量控制方法的流程图。
[0074] 图2为本发明所提供的一种HSPA+系统中CELL_FACH流量控制方法的实施例的流程图。

具体实施方式

[0075] 为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
[0076] 图1为本发明所提供的一种HSPA+系统中CELL_FACH流量控制方法的流程图。如图1所示,该方法包括以下步骤:
[0077] 步骤101,预先配置周期定时器的长度TFC_period,周期定时器的长度TFC_period为一个流控周期,每一流控周期的结束时刻为一周期流控点。
[0078] 步骤102,每子帧判断周期定时器是否到期,如果是,则采用周期定时触发方式进行Iub口的流量控制;否则,采用特定事件触发方式进行Iub口的流量控制。
[0079] 下面通过一个实施例对本发明所提供的一种HSPA+系统中CELL_FACH流量控制方法进行详细介绍。
[0080] 图2为本发明所提供的一种HSPA+系统中CELL_FACH流量控制方法的实施例的流程图。如图2所示,该方法包括以下步骤:
[0081] 需要说明的是,本发明中所述流控均指进行Iub口的流量控制。另外,图2中的“Y”表示判断结果为“是”,图2中的“N”表示判断结果为“否”。
[0082] 步骤200,预先配置周期定时器的长度TFC_period,周期定时器的长度TFC_period为一个流控周期,每一流控周期的结束时刻(即周期定时器到期的时刻)为一周期流控点。
[0083] 步骤201,每子帧判断周期定时器是否到期,如果是,则执行步骤202;否则,执行步骤213。
[0084] 本发明中的流控触发机制采用周期定时触发和特定事件触发相结合的方式。
[0085] 其中,周期定时触发在每次周期定时器到期时触发,周期定时器的长度TFC_period可预先配置,周期定时器的长度为经验值,而且视具体情况而定。周期定时器的长度TFC_period定义了一个流控周期,每一流控周期的结束时刻(即周期定时触发的时刻,也即周期定时器到期时刻)为一周期流控点,下述步骤202至212以及步骤224至227为采用周期定时触发方式流控的具体步骤。
[0086] 特定事件触发在每个TTI内进行一次流控类型的判断,根据判断的情况决定是否触发流控和触发何种流控,下述步骤213至227为采用特定事件触发方式流控的具体步骤。
[0087] 步骤202,更新公共PQ队列的缓存下限PQ_low_Buffer_Size和公共PQ队列中每个单个用户的缓存上限User_high_Buffer_Size。
[0088] 公共PQ队列的缓存下限的特点是针对整个公共PQ队列而设置,在每个周期流控点重新计算更新一次,公共PQ队列的缓存下限PQ_low_Buffer_Size的计算方法如下:
[0089] PQ_low_Buffer_Size=α×RatePQ_out×Tfeedback
[0090] 其中,RatePQ_out为公共PQ队列的平均出口速率,单位为kbps;Tfeedback指的是首先容量分配控制帧从NodeB到RNC,然后RNC做出响应将容量分配帧所请求的数据从RNC发到NodeB,上述这两趟传输的时间和,单位为ms,也即容量分配控制帧从发出到实际生效起作用的时间间隔,所述实际生效就是NodeB通过容量分配控制帧实际得到了相应的数据;a为下限防抖动因子,取大于1的正整数,具体数值可根据预先的仿真结果而定,当a越大时,更易触发下限流控。
[0091] 和公共PQ队列的缓存下限不同,单个用户的缓存上限是针对该公共PQ队列中的每个用户单独进行设置,在每个周期流控点对每个用户重新计算更新一次,当前单个用户的缓存上限User_high_Buffer_Size的计算方法如下,可按照下式依次计算公共PQ队列中每个用户的缓存上限:
[0092] User_high_Buffer_Size=Rateuser_out×(Tmax-Thigh_Remain)
[0093] 其中,Rateuser_out为公共PQ队列中当前单个用户的平均出口速率,单位为kbps;Tmax为用户缓存到达紧急PQ队列的时间门限,单位为ms,具体可设置为系统通过信令配置给NodeB的discardtime参数(见协议3GPP 25.433,版本850);Thigh_remain为调节缓存上限的一个可配置的时间长度,可称之为缓存上限调节参数,单位为ms,由于实际空口传输速率会由于调度方案导致存在一定的速率抖动,通过调节Thigh_Remain参数来弥补用户入口速率对用户缓存上限的影响,并弥补一个流控周期内速率抖动对用户缓存上限的影响,Thigh_Remain的具体数值根据仿真结果或实际情况而确定,当Thigh_Remain的数值越大,则单个用户的缓存上限的值越小,也越有可能触发上限流控。
[0094] 下面提供一种单个用户的PQ队列平均出口速率Rateuser_out的计算方法。计算的原理采用平滑滤波公式 进行计算,其中,Tc为滤波因子,取值可根据预先的仿真结果或实际情况配置,Ri(t)为PQ队列i在时刻t的瞬时出队速率,为PQ队列i在时刻t的前一时刻的平均出队速率, 为PQ队列i在时刻t的平均
出队速率。
[0095] 基于上述内容,当前单个用户的PQ队列平均出口速率Rateuser_out的计算方法为:*
其中,Rateuser_out为当前单个用户在当前时刻
的前一时刻的PQ队列平均出口速率,Ruser_out为当前单个用户在当前时刻的PQ队列瞬时出口速率。
[0096] 而公共PQ队列的平均出口速率RatePQ_out为公共PQ队列中每个用户的平均出口速率Rateuser_out之和。
[0097] 步骤203,准备判断公共PQ队列中每个用户的缓存情况。
[0098] 步骤204,依次将公共PQ队列中的每个用户作为当前用户,判断当前用户的缓存量User_Buffer_Size是否大于等于缓存上限User_high_Buffer_Size,如果是,则执行步骤205;否则,返回执行步骤203。
[0099] 步骤205,达到缓存上限的用户数目M加1,其中,达到缓存上限的用户数目M的初始值为0。
[0100] 步骤206,判断公共PQ队列中的每个用户是否都已执行了步骤204,如果否,则返回执行步骤203;如果是,执行步骤207。
[0101] 步骤207,判断达到缓存上限的用户数目M是否大于等于上限流控的用户数目门限Nhigh_allow,如果是,则执行步骤208,否则,执行步骤209。
[0102] 其中:Nhigh_allow=N*Ratehigh_allow,N为公共PQ队列中用户总数,Ratehigh_allow为公共PQ队列允许缓存达到上限的用户数占公共PQ队列内所有用户数的比例,若Nhigh_allow为小数,则将向下取整结果作为Nhigh_allow的具体数值根据仿真结果或实际情况而确定,当Nhigh_allow越大时,触发上限流控的概率越小。
[0103] 可见,在上述步骤203至207可以概括为:统计公共PQ队列中用户的缓存量User_Buffer_Size大于等于缓存上限User_high_Buffer_Size的用户数目M是否大于等于预先设置的上限流控的用户数目门限Nhigh_allow,如果是,则执行步骤208,否则,执行步骤209。
[0104] 在上述步骤203至207中,如果达到缓存上限的用户数目M超过Nhigh_allow则后续触发上限流控,这与现有技术是有区别的:由于小区内各用户信道环境有差别,如果单个用户缓存上限超过则立刻触发上限流控则会对其它用户的缓存量造成影响,所以,某时刻缓存超过上限的用户数多少更大程度反映的是系统负载情况和可能排队丢包的概率。另外,空口的调度特性使得用户被调度有一定的时间间隔和峰值速率,而且用户移动情况下信道环境变化较快,使得用户在某一时刻缓存超过上限并不意味着用户缓存一定会丢包。
[0105] 步骤208,确定流控类型为上限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need=0,然后执行步骤224。
[0106] 在本步骤中,触发了上限流控,上限流控的目的是停止向RNC要数据,避免进一步加大NodeB的缓存量,故确定NodeB需要向RNC请求的数据量为0。
[0107] 步骤209,准备判断公共PQ队列的缓存情况。
[0108] 在本发明中,步骤203、209、213、220等上述准备步骤可以省略。
[0109] 步骤210,判断公共PQ队列的缓存量PQ_Buffer_Size是否小于等于公共PQ队列的缓存下限PQ_low_Buffer_Size,如果是,则执行步骤212,否则,执行步骤211。
[0110] 步骤211,确定流控类型为正常流控,并确定一个流控周期内NodeB需要向RNC请求的数据量:
[0111] Bnodeb_need=RatePQ_out×(TFC_period+TLow_Remain),然后执行步骤224。
[0112] 在本步骤中,触发了正常流控,正常流控的目的是使Iub口入口速率和空口上的传输出口速率相匹配。
[0113] 假定一个流控周期内的平均出口速率可以参考周期流控点上的公共PQ队列的出口平均速率RatePQ_out,如实际一个流控周期内的空口速率有波动则用数据请求增量时间参数TLow_Remain进行弥补。其中,上述公式中其他参数的物理意义可参考前述描述,TLow_Remain为可配置的数据请求增量时间长度,单位为ms,其数据数值根据实际情况或仿真结果而定,TLow_Remain的作用为:1)防止周期流控点上计算的公共PQ队列出口速率在其后的时间段内变化导致周期流控点上向RNC要的数据入口速率不满足实际的出口速率。2)为避免信道环境差的用户拉低整个PQ队列的吞吐量后,进而影响下次请求的数据量,需要给予按出口速率请求的数据量一定的增量进行弥补。
[0114] 步骤212,确定流控类型为下限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量:
[0115] Bnodeb_need = b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size,然后执行步骤224。
[0116] 在本步骤中,触发了下限流控,下限流控的目的不仅要满足接下来一个流控周期内空口传输的数据量需求,还要将NodeB的缓存量救到至少缓存下限以上。
[0117] 其中,上述公式中其他参数的物理意义可参考前述描述,b为可配置的索要数据量的加速因子,其具体数值根据仿真或实际情况而确定,当b的数值越大,则下限流控时所确定的NodeB需要向RNC请求的数据量则越大。
[0118] 另外,需要说明的是,CELL_FACH状态下的流控命令无法针对某个用户进行操作,NodeB无法向RNC指示哪个用户缓存较少,RNC也无法向某个用户精确地传输需要的数据量,所以采取的是以整个公共PQ队列为粒度的缓存下限操作,触发了缓存下限则表示该公共PQ队列中的用户缓存很大概率上数据量不足。
[0119] 步骤213,准备判断公共PQ队列中每个用户的缓存情况。
[0120] 步骤214,依次将公共PQ队列中的每个用户作为当前用户,判断当前用户的缓存量User_Buffer_Size是否大于等于缓存上限User_high_Buffer_Size,如果是,则执行步骤215;否则,返回执行步骤213。
[0121] 需要说明的是,当特定事件触发时,不进行公共PQ队列的缓存下限PQ_low_Buffer_Size和公共PQ队列中单个用户的缓存上限User_high_Buffer_Size更新和计算,步骤214以及后续步骤221所涉及的公共PQ队列的缓存下限和公共PQ队列中单个用户的缓存上限均为距离当前时刻最近的上一次周期流控点(即距离当前时刻最近的周期定时触发的时刻)所更新的公共PQ队列的缓存下限PQ_low_Buffer_Size和公共PQ队列中单个用户的缓存上限User_high_Buffer_Size。例如,若当前时刻位于第二周期流控点和第三周期流控点之间,则步骤214以及后续步骤221所涉及的公共PQ队列的缓存下限和公共PQ队列中单个用户的缓存上限为第二周期流控点时更新和计算的公共PQ队列的缓存下限PQ_low_Buffer_Size和公共PQ队列中单个用户的缓存上限User_high_Buffer_Size。
[0122] 步骤215,达到缓存上限的用户数目M加1,其中,达到缓存上限的用户数目的初始值为0。
[0123] 步骤216,判断公共PQ队列中的每个用户是否都已执行了步骤214,如果否,则返回执行步骤213;如果是,执行步骤217。
[0124] 步骤217,判断达到缓存上限的用户数目是否大于等于上限流控的用户数目门限Nhigh_allow,如果是,则执行步骤218,否则,执行步骤220。
[0125] 可见,在上述步骤213至217可以概括为:统计公共PQ队列中用户的缓存量User_Buffer_Size大于等于缓存上限User_high_Buffer_Size的用户数目M是否大于等于上限流控的用户数目门限Nhigh_allow,如果是,则执行步骤218,否则,执行步骤220。
[0126] 另外,上述步骤213至217与步骤203至207相同,可参考步骤203至207的相关描述。
[0127] 步骤218,判断从上一个周期流控点至当前时刻这一时间段内,距离当前时刻最近一次确定的流控类型是否为上限流控,如果是,则不进行流控操作;否则,执行步骤219。
[0128] 举例说明,若当前时刻位于第二周期流控点和第三周期流控点之间,则判断从第二周期流控点至当前时刻这一时间段内,距离当前时刻最近的一次流控类型是否为上限流控,如果是上限流控,则当前子帧不进行流控操作,也就是说,当前子帧不对流量进行控制,保持原有流量的状态;否则,执行步骤219。
[0129] 步骤219,确定流控类型为上限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量Bnodeb_need=0,然后执行步骤224。
[0130] 步骤219与步骤208相同,此处不再详述。
[0131] 步骤220,准备判断公共PQ队列的缓存情况。
[0132] 步骤220与步骤209的内容相同。
[0133] 步骤221,判断公共PQ队列的缓存量PQ_Buffer_Size是否小于等于公共PQ队列的缓存下限PQ_low_Buffer_Size,如果是,则执行步骤222,否则不进行流控操作。
[0134] 步骤222,判断从上一个周期流控点至当前时刻这一时间段内,距离当前时刻最近一次确定的流控类型是否为下限流控,如果是,则不进行流控操作;否则,执行步骤223。
[0135] 步骤223,确定流控类型为下限流控,并确定一个流控周期内NodeB需要向RNC请求的数据量:
[0136] Bnodeb_need = b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size,然后执行步骤224。
[0137] 其中,步骤223与步骤212相同,此处不再详述。
[0138] 步骤224,计算容量分配控制帧的信用度HS-DSCHCredits,
[0139]
[0140] HS-DSCHCredits等于一个HS-DSCH Interval内NodeB需要向RNC请求的数据量,单位为字节,其中,上述公式中其他参数的物理意义可参考前述介绍,HS-DSCH Interval为在Iub口的数据传输时间间隔。
[0141] 步骤225,判断距离当前时刻最近一次的流控类型判断结果是否为下限流控,且HS-DSCHCredits的值小于1,如果是,则执行步骤226;否则,执行步骤227。
[0142] 在步骤225中,如果同时满足两个条件:第一:距离当前时刻最近一次的流控类型判断结果为下限流控,第二,HS-DSCHCredits的值小于1,则执行步骤226,如果仅满足两个条件中的二者之一或两个条件都不满足,则执行步骤227。
[0143] 步骤226,增 大滤 波因 子TC,根 据增 大后 的滤 波 因子TC,并 按 照:重新确定公共PQ队列中单个用户的平均出口速
率Rateuser_out以及公共队列的平均出口速率RatePQ_out,
[0144] 根据重新确定的Rateuser_out和RatePQ_out,按照:
[0145] PQ_low_Buffer_Size=α×RatePQ_out×Tfeedback重新计算公共PQ队列的缓存下限PQ_low_Buffer_Size,
[0146] 接着按照:
[0147] User_high_Buffer_Size=Rateuser_out×(Tmax-Thigh_Remain)重新计算单个用户的缓存上限User_high_Buffer_Size,
[0148] 并按照:
[0149] Bnodeb_need = b×RatePQ_out×(TFC_period+TLow_Remain)+PQ_low_Buffer_Size-PQ_Buffer_Size重新计算Bnodeb_need,
[0150] 按照:
[0151] 重新计算HS-DSCHCredits,
[0152] 如果重新计算的HS-DSCHCredits还是小于1,则将单个用户的平均出口速率RatePQ_out置为一个预设的确定值Rateuser_initial,然后再依次重新确定RatePQ_out、PQ_low_Buffer_Size、User_high_Buffer_Size、Bnodeb_need,然后执行步骤227;否则,如果重新计算的HS-DSCHCredits大于等于1则直接执行步骤227。
[0153] 其中,Rateuser_initial的具体数值根据经验或仿真而设定,其可保证计算出的HS-DSCHCredits大于等于1。
[0154] 步骤226的原理为:当之前确定的流控类型为下限流控,而计算出的HS-DSCHCredits为小于1的小数或者0,并且此时公共PQ队列中的用户对应的RNC端缓存量不为0,而因为容量分配控制帧对HS-DSCHCredits值只能以整数发送的原因,所以当出现上述小于1的小数或者0的计算值时实际上请求的数据量都为0,所以为了防止“饿死”现象,则采取以下措施:首先对用户的出口速率和公共PQ队列的出口速率进行重置,重置的速率仍然按照通常的滤波速率计算公式,只不过采用更大的滤波因子TC,这样可以避免一小段时间用户速率为0时由于滤波器因子TC过小而计算的速率值也过小甚至为0;然后根据重置后的用户出口速率和公共PQ队列出口速率,重新计算公共PQ队列的下限值和用户的上限值;根据重置后的公共PQ队列速率,重新计算的HS-DSCHCredits值进行下限流控的数据量请求。另外,如果重新计算的HS-DSCHCredits小于1,则将单个用户的平均出口速率RatePQ_out置为一个预设的确定值Rateuser_initial,然后再依次重新确定RatePQ_out、PQ_low_Buffer_Size、User_high_Buffer_Size、Bnodeb_need,然后按照新计算的HS-DSCHCredits值进行下限流控的数据量请求。
[0155] 步骤227,NodeB通过容量分配控制帧向RNC请求数据量为所计算的Bnodeb_need。
[0156] 需要说明的是,若在步骤226中重新计算了Bnodeb_need,则NodeB通过容量分配控制帧向RNC请求数据量为重新计算的Bnodeb_need。
[0157] 至此,本流程结束。
[0158] 另外,由上述实施例的介绍可知,当确定流控类型为下限流控时,必须执行步骤224至步骤227,当确定流控类型为上限流控或正常流控时,可省略执行步骤224至步骤
226,而直接执行步骤227。换句话说,在步骤208、211、219之后可直接执行步骤227。
[0159] 综上,本发明针对处于CELL_FACH状态下的Iub口的流量控制提出了完整的解决方案,能够对HSPA+系统中CELL_FACH状态下的Iub口的流量进行控制。
[0160] 进一步,本发明提出的流量控制方案支持CELL_FACH状态下的用户在Iub口的数据流量控制,重新定义了缓存上限流控和下限流控的触发机制,更加符合CELL_FACH下流控的特点。
[0161] 进一步,本发明通过制定超过上限的用户的比例来作为判断上限流控的依据,有助于考虑公共队列整体的负载情况,避免单个用户的行为过多影响系统的吞吐量,也有助于降低流控操作带来的Iub口流量。
[0162] 进一步,通过引入TLow_Remain和速率重置机制来增强方案的健壮性,在保证流控方案跟踪信道环境和用户吞吐量变化及时性的同时,避免流控方案进入“饿死”状态。
[0163] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。