发明内容
针对现有的流量控制方法中存在没有对申请的用户数据流量进行优化分配的缺点,本发明的目的是提供一种前向接入传输信道(FACH)的自适应流量控制方法,该方法可应用于WCDMA通信系统的MAC-c/sh中,该方法根据MAC-d实时申请的数据流量以及其对应的逻辑信道的优先级,在一个调度周期内对所申请的数据源(MAC-d)自适应分配数据流量。
为了达到上述目的,本发明使用了如下技术方案,
本发明的自适应流量控制方法的实现方法如下:
a.确定MAC-c/sh的一条辅助公共控制物理信道的拥塞门限和可分配门限c11,并作为步骤c的输入参数;
b.监测MAC-c/sh的一条辅助公共控制物理信道的缓存区(包括逻辑信道缓存区和接收缓存区)容量c12,统计逻辑信道缓冲区中N倍调度时间内的平均缓存区占有率(BUFFER OCCUPANCY:BO)和BO的变化情况,根据BO的变化情况来大致预测将来的某一小段时间内(统计周期)的缓冲区占用情况,得到当前以及一段时间之后逻辑信道缓冲区的BOlogic_aver,new,然后在规划时刻累加接收缓冲区中的数据量,得到这个调度周期缓存区的占用情况;并把此结果作为步骤c的输入;
c.计算可分配给MAC-d的总容量c13:步骤b的监测结果与可分配门限之间的差值就是可分配给所有申请的MAC-d的Buffer容量-Allowed AssignBuffer size;此结果分别输出到步骤d和步骤e;
d.根据当前MAC-c/sh可分配给MAC-d的总容量确定优先级所对应的权重:使用权值来体现优先级,优先级别高的对应的权值(PriorityWeighti)大。并设置一个变量R用以记录未被分配数据量的请求次数,然后为该请求次数配置权值Rweight(是≥1的值),未被分配的次数越多,其对应的权值越大,MAC-c/sh需做的工作:在每个调度周期内MAC-C将分配到的数据量为零的请求记录的请求次数R的权重R+1,对已分配的数据量,要重新把此值设置为1。步骤d所确定的权值输出到步骤e;
e.在规划时刻,根据每个MAC-d所申请的数据量和优先级,利用步骤c和步骤d的输出结果:可分配的总容量和权值计算可分配给每个MAC-d的数据量,公式为:
其中:
AllocationSizeMacdi:分配给每个MAC_d数据量(byte)
PriorityWeightj:j=0....15每个优先级对应的权值大小
UserBufferSizeMacdi:i=1...N(N是申请的MAC_d个数)每个MAC_d申请的USER BUFFER SIZE;
Allowed_Allocation_Size:是允许分配给所有MAC_D的总数据流量
N:是一次调度时间内所有申请分配容量的MAC-d个数
Rweight:未被分配数据流量的次数所对应的权值
是往下取整(去掉小数部分)
计算完毕后则MAC-c/sh向所申请的MAC-d返回应答控制帧。
由于本发明采用了以上技术方案,综合考虑了申请的MAC-d逻辑信道的优先级、申请的数据流量、当前MAC-c/sh的缓存区的大小以及未被分配流量的请求次数四种因素的影响,就能够有效的对数据流量进行监控,保证传输数据的完整性,提高系统的通信质量。
具体实施方式
下面结合附图进一步详细说明本发明的实施步骤:
本发明所述的FACH自适应流量控制方法是基于3GPP(2001.3)协议所提供的MAC-c/sh与MAC-d之间的信令交互和MAC-c/sh对缓存区的流量监测来实现的。基本概念如下,
公共逻辑信道缓存区:此缓存区存放公共逻辑信道的数据SDU(ServiceData Unit:服务数据单元);
接收缓存区:此缓存区存放从MAC_d发送过来的数据;
公共逻辑信道缓存区和接收缓存区的位置可参考附图1,把公共逻辑信道缓存区和接收缓存区在统计流量时分开来考虑的原因是因为在下一个调度周期(数据在Uu口协议层(除了物理层)处理时间)公共逻辑信道中的数据量是不可控的,而且是未知的,需要根据当前的调度周期和以前的调度周期对其做一个预测;而接收缓冲区的数据量是可控的,而且是针对当前这个调度周期的,是不用预测的,有多少就加多少。公共逻辑信道缓存区和接收缓存区实际上是一个大的缓存区,现在只是为了区分两者的数据来源和统计方法在逻辑上把它分开了,两者数据占用的缓存区大小是动态均衡的,也就是说如果公共逻辑信道的数据量比较少,那么接收缓存区可接收的MAC-d的数据量就多。
图2是本发明的前向接入传输信道自适应流量控制方法的原理图,如图2所示:
a.确定MAC-c/sh的一条辅助公共控制物理信道的拥塞门限和可分配门限c11,所述拥塞门限(BOcongestion_threshold)是指MAC-c/sh缓存区可存放数据容量的门限值;所述可分配门限(BOalloction_threshold)是指MAC-c/sh当前缓存区容量不能分配给MAC-d使用的门限值;这两个门限制作为步骤c的输入参数
b.监测MAC-c/sh的一条辅助公共控制物理信道的缓存区(包括逻辑信道缓存区和接收缓存区)容量c12:统计逻辑信道缓冲区占用数据量的大小是在一个调度周期内逻辑信道的数据发送给FP之前进行的,累加接收缓冲区中的数据是在数据发给FP之后进行的,指示这个调度周期内接收缓冲区中没有发出去的数据量;考虑到在下一个调度周期内RLC放到MAC-c/sh逻辑信道缓冲区的数据量是未知的,因此需要统计逻辑信道缓冲区中N倍调度时间内的平均缓存区占有率(BUFFER OCCUPANCY:BO)和BO的变化情况,这样就可以根据BO的变化情况来大致预测将来的某一小段时间内(统计周期)的缓冲区占用情况,从而得到当前以及一段时间之后逻辑信道缓冲区的BOlogic_aver,new(=BOaver+BO在统计周期时间内的变化情况);然后在规划时刻对接收缓冲区中的数据量进行累加,得到这个调度周期缓存区的占用情况;并把此结果作为步骤c的输入;
c.计算可分配给MAC-d的总容量c13:根据步骤b的监测结果与可分配门限比较,这两个值之间的差值就是可分配给所有申请的MAC-d的Buffer容量-Allowed Assign Buffer size;此结果分别输出到步骤d和步骤e;
d.根据当前MAC-c/sh可分配给MAC-d的总容量确定优先级所对应的权重:由于在分配时既要考虑逻辑信道的优先级,又要考虑MAC-d所申请的数据流量的大小,因此此这里考虑用权值来体现优先级,优先级别高的对应的权值(PriorityWeighti)大。同时还要另外考虑对于某些优先级比较低且数据量特别小的那些数据的请求(在这种情况下有可能这样的数据总是存在专用逻辑信道缓存区中),因此在这里设置一个变量R用以记录未被分配数据量的请求次数(若一个调度周期内同一个请求出现多次都被认为是一次请求),然后为该请求次数配置权值Rweight(是≥1的值),未被分配的次数越多,其对应的权值越大,一开始设置的初值都为1,并且只要某个申请已分配了流量,则把此值置1。对于未被分配数据量的请求次数的考虑因素,MAC-c/sh需做的工作:在每个调度周期内MAC-C将分配到的数据量为零的请求记录的请求次数R的权重R+1,对已分配的数据量,要重新把此值设置为1。
请求次数对应权值R
weight的确定:R
weight是与未被分配的次数相关的,次数越多,R
weight越大,取值示例:
R |
0 |
1 |
2 |
… |
4 |
Rweight |
1 |
5 |
10 |
… |
40 |
对于此值的确定可以做成是R的函数,如Rweight=A*B[C(R-1)+D]+E(除了R=0,Rweight=1),A、B、C、D、E是常数,可调整,用以调整曲线的弯曲程度。
对于优先级对应权值的确定可分下面五种情况:
1)Allowed_Allocation Size≤1/4* MacdBufferSize(MacdBufferSize是所有MAC-d申请的要发送的数据流量之和,Allowed_Allocation_Size是MAC-c/sh允许分配给MAC-d的总缓存容量
在这种情况,由于可分配的容量比较小,此时就主要考虑优先级,尽量把优先级高的数据发送出去,因此此时低优先级与高优先级的权值就相差的大些;经过仿真(比较几组参数的结果)确定此种情况的权值为:
Priority={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
PriorityWeigth={0.10,0.20,0.30,0.40,0.50,0.60,0.70,0.80,0.9,1.00,1.10,1.20,1.30,1.40,1.50,1.60};
两个数组是直接对应的,0级代表最低优先级,15代表最高优先级。
2)1/4*MacdBufferSize<Allowed_Allocation_Size<1/2*MacdBufferSize
在这种情况,如果把低优先级与高优先级的权值设置的相差比较大,就可能导致高优先级信道分配的容量很多(超过了申请的BUFFER很多),而低优先级信道分配很少,引起容量的浪费;因此为了避免这种情况出现,在这里另设一组权值,使得低优先级与高优先级的权值相差的小一点;确定的权值为:
Priority={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
PriorityWeight={0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1.0};
3)1/2*MacdBufferSize≤Allowed_Allocation_Size<3/4*MacdBufferSize
因为这种情况相对于第二种情况来说可分配的容量比较大,如果把低优先级与高优先级的权值设置相差量如第二种,就可能导致高优先级分配的容量很多(超过了申请的BUFFER很多),而低优先级的分配很少,引起容量的浪费;因此为了避免这种情况出现,在这里另设一组权值,使得低优先级与高优先级的权值相差的更小一点;
Priority={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
PriorityWeigth={0.50,0.53,0.56,0.59,0.62,0.65,0.68,0.71,0.74,0.77,0.80,0.83,0.86,0.89,0.92,0.95};
4)3/4*MacdBufferSize≤Allowed_Allocation_Size<MacdBufferSize
在这种情况,可分配给MAC-d的容量比较多,那么这时候就可以把高优先级与低优先级之间的权值差值设置的小一点,使得各个MAC-d所申请的数据流量作为分配的主要依据,但此时仍然要考虑优先级的区别,只是考虑的权重要低一点:
Priority={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
PriorityWeigth={0.60,0.62,0.64,0.66,0.68,0.70,0.72,0.74,0.76,0.78,0.80,0.82,0.84,0.86,0.88,0.90};
5)MacdBufferSize≤Allowed_Allocation_Size
在这种情况,由于允许分配的容量比申请分配的容量大,那么这时候就不用考虑优先级,只需根据每个申请的用户的容量来分配就可以;此时设的权值都为1;
Priority={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
PriorityWeigth={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
这里权值是根据MAC_C的BUFFER占用情况和MAC_D申请的信息划分的,当MAC-c/sh的缓存区负荷比较高时,则分配给MAC-d的容量的大小考虑优先级高低的因素就多一些。步骤d所确定的权值输出到步骤e;
e.在规划时刻,根据每个MAC-d所申请的数据量和优先级,然后利用第三步和第四步的输出结果:可分配的总容量和权值计算可分配给每个MAC-d的数据量:
计算每个MAC_d应该分配的数据量的公式为:
AllocationSizeMacdi:分配给每个MAC_d数据量(byte)
PriorityWeightj:j=0....15每个优先级对应的权值大小
UserBufferSizeMacdi:i=1...N(N是申请的MAC_d个数)每个MAC_d申请的USER BUFFER SIZE;
Allowed_Allocation_Size:是允许分配给所有MAC_D的总数据流量
N:是一次调度时间内所有申请分配容量的MAC-d个数
Rweight:未被分配数据流量的次数所对应的权值
是往下取整(去掉小数部分)
计算完毕后则MAC-c/sh向所申请的MAC-d返回应答控制帧。
此方法综合考虑了申请的MAC-d逻辑信道的优先级、申请的数据流量、当前MAC-c/sh的缓存区的大小以及未被分配流量的请求次数四种因素的影响,能够有效的对数据流量进行监控,保证传输数据的完整性,提高系统的通信质量。
图3是分配申请MAC-d的缓存容量的规划时刻图,由于MAC-d的申请是随机的,为了在一段时间里对所申请的MAC-d进行流量控制,设计了一种规划时序图,如图3所示,也就是说不是MAC-d向MAC-c/sh一发出请求时,MAC-c/sh就立即给MAC-d分配容量,而是要在一个时间段(调度周期-当第一个MAC-d发出请求时已过的调度时间-容量分配所占用的时间)之后开始对在这时间段内收到的所有MAC-d请求做数据量分配,然后向MAC-d返回应答控制帧;如果在进行容量分配处理过程时又收到MAC-d发出的请求,此时则把此次请求的容量分配过程放到下一个调度时间进行。也就是说每次容量分配都是针对一次调度时间内所申请的MAC-d来处理的,只是起始时间和终止时间与实际的调度开始时间和终止有一个差值。
根据3GPP TS 25.425协议中关于WCDMA系统中MAC-d和MAC-c/sh之间的申请和分配的信令交互的内容,为了使得对WCDMA系统MAC-c/sh中的流控过程在时间上和方法上有更进一步的了解,下面结合附图4对本技术方案在WCDMA系统中的具体实现作进一步的详细描述:
1)首先在MAC-c/sh要根据高层所配置的传输格式集确定逻辑信道缓存区的拥塞门限和可分配门限;
2)MAC_c/sh周期监测逻辑信道缓存区中的数据量BOlogic_new_aver(未发到FP去的数据量),然后在规划时刻BOlogic_new_aver的基础上加上接收缓存区的数据量,得到BOtotal_new_aver,这个工作是每个调度周期都要做的;
3)根据第二步计算得到的BOlogic_new_aver判断当前缓存区中的数据量是否超过了缓存区的拥塞门限(BOcongestion_threshold),若超过则执行步骤10);否则执行步骤4);
4)根据第二步计算得到的BOtotal_new_aver判断当前缓存区中的数据量是否超过缓存区的可分配门限(BOallocation_threshold),若超过则执行步骤5);否则执行步骤11);
5)计算可分配给MAC-d的总Buffer容量,继续步骤6);
6)在一个调度周期内可能接收到多个MAC-d的申请,那么MAC-c/sh在接收到MAC-d的申请时都需对申请中所带的信息进行保存,以便于给优化分配时使用,对于在进行优化分配容量之后和本调度周期结束前接收到的请求都放到下一个调度周期进行分配;继续步骤7);
7)判断是否已到优化分配的时刻,若到则执行步骤8),否则回到步骤6)继续监测MAC-d的申请;
8)调用优化分配容量的方法:根据保存的所有申请分配容量的MAC-d的申请信息确定每种优先级所对应的权值以及当前记录的请求未分配流量的次数,然后根据申请的Buffer Size和优先级进行优化分配;继续步骤9);
9)给当前调度周期内申请的所有MAC-d分别发送容量分配控制帧,到步骤12);
10)此时要通知控制面以便于控制面在做新的无线承载重配置时参考,到步骤11);
11)此时不作优化分配容量的工作,对所有申请的MAC-d返回不可分配控制帧,继续步骤12);
12)等待统计周期到时又回到步骤2)。
因为在WCDMA系统的MAC层没有任何机制对因为缓存区拥塞而丢失的数据进行记录,尤其是如果对MAC-d发送过来的数据不作任何限制,就极有可能导致缓存区中的数据溢出,从而导致数据丢失,而且数据丢失后并不向高层报告哪些数据丢失,这样也就没有办法在高层对丢失的数据做一些弥补,最终导致接收质量的下降;因此MAC-c/sh中的流量控制对于限制高层的数据发送,保证数据在MAC层不被丢失是非常重要的;而本发明所提出的关于WCDMA系统FACH的自适应流控方法是根据当前MAC-c/sh中的数据流量以及其对应的逻辑信道的优先级,在一个调度周期内对所申请的数据源(MAC-d)自适应分配数据流量;此方法综合考虑了申请的MAC-d逻辑信道的优先级、申请的数据流量、当前MAC-c/sh缓存区的大小以及未被分配流量的请求次数四种因素的影响,可以使得此分配方法对所有申请的MAC-d都比较公平,不会出现仅仅根据优先级来分配而导致的可能给小数据量高优先级的业务分配了比所要传输的数据多很多,而给大数据量的低优先级的业务分配了很少的数据量,从而造成缓冲区容量分配的浪费的情况。利用本方法可以有效的对数据流量进行监控,也能有效保证传输数据的完整性,提高系统的通信质量。