本帖最后由 爱卫生 于 2011-8-29 10:42 编辑
6.1 FLUSH-LL(逻辑链路)流程
SGSN检测到MS由于小区更新或者路由区更新使得小区变更时,将向老BVC发送一个FLUSH-LL PDU 来启动以下流程:
一个NSE(如一个BSS即为一个NSE)和一个路由区内部的小区变更时,存储在老BVCI(对应老的小区)中的由TLLI确定的LLC-PDU要么被删除,要么被传送到与该TLLI相关联的一个新BVCI(对应新的小区)。
两个NSE或两个路由区之间的小区变更时,存储在老BVCI中的由TLLI确定的LLC-PDU被删除。
在FLUSH-LL PDU中,SGSN向BSSGP提供:
-用于识别MS的TLLI;
-用于识别小区的老BVCI,该小区可找到针对某个MS的缓存LLC-PDU;
-用于识别与MS当前关联的小区的新BVCI。(仅在同一NSE和同一路由区时)
FLUSH-LL PDU中如果没有提供新BVCI,则视为删除老BVC排队的LLC-PDU。排队的BSSGP信令,比如寻呼消息,将不受这个流程影响。
作为对FLUSH-LL PDU的回应,BSS将向SGSN发送一个FLUSH-LL-ACK PDU, 该PDU包含:
-FLUSH-LL PDU 中收到的TLLI;
-是否转发(在同一NSE内)或删除LLC-PDU的指示。如果SDU指示为转发,应包含新BVCI。
当SGSN收到FLUSH-LL-ACK PDU时,如果该PDU指示了与老BVC相关联的LLC-PDU已被删除,SGSN将选择如下操作之一:
-立即在新BVC(即新小区)上向MS重传所有未确认的LLC-PDU(在LLC确认操作下);
-按照LLC重传机制来发送未确认 的LLC-PDU。
当SGSN收到FLUSH-LL-ACK PDU时,该PDU指示了与老BVC相关联的LLC-PDU在NSE内转发,SGSN不必执行以上任何操作。
在FLUSH-LL流程中,如果BSS能够转发缓存的LLC PDU给新BVCI,BSS上下文将被保持;否则BSS上下文将被删除。
异常情况:
如果BSS收到的FLUSH-LL PDU中BVCI未知或TLLI与给定的BVCI无关,BSS将丢弃此FLUSH-LL PDU,并且不返回FLUSH-LL-ACK PDU。
如果SGSN没有接收到FLUSH-LL PDU的回应FLUSH-LL-ACK PDU,就不再有进一步的操作。
6.2 流量控制流程
6.2.1 一般操作模型
从BSSGP的角度出发,流量控制机制基于以下模型:
-在一个BSS内,每个BVC有一个由BVCI标识的下行缓存;
-由BSS控制SGSN向MS传送BSSGP UNITDATA PDU;
-流量控制流程仅管理下行BSSGP UNITDATA PDU的传送,不进行上行流量控制。
6.2.2 操作模式
流量控制机制管理着SGSN发给BSS的BSSGP UNIDATA PDU在Gb接口上的传送。
BSS通过向SGSN指示每个BVC最大允许的吞吐量来将BSSGP UNITDATA PDU流量控制在自己的BVC缓存所允许的范围内。对于单个MS,BSS通过向SGSN指示某个特定TLLI的最大允许的吞吐量来将BSSGP UNITDATA PDU流量控制在对应该MS的BVC缓存所允许的范围内。
BSS应用流量控制按照某个BVC 缓存的大小来调整BSSGP UNIDATA PDU流量。BSS中缓存的BSSGP UNITDATA PDU数量应该优化以便高效使用可用无线资源。对于某个BVC或者MS,应避免大量缓存BSSGP UNITDATA PDU。如果在BSS内排队的BSSGP UNITDATA PDU在PDU生命周期超时之前没有被发送,这些BSSGP UNITDATA PDU应在该BSS内被删除,并通过发送一个LLC-DISCARDED PDU来告之SGSN。
SGSN在收到流控(FLOW-CONTROL)PDU后,应在Gb接口上发送确认消息。确认消息使用在流控PDU中收到的标签(Tag),该标签由BSS设置用于将响应与请求关联起来。在未收到流控PDU的确认时,引起流控消息触发的原因可能会触发另一个流控消息,或者若流控条件消失,也可不再触发流控消息。若重发未确认的流控消息,则最多重发BSS内适用的最大重发比率。
6.2.3 从SGSN到BSS的下行业务流量控制
(1)通过SGSN控制下行吞吐量
BSSGP 流量控制的原理是:BSS向SGSN发送流量控制参数,允许SGSN控制从SGSN到BSS方向上的数据传输流量。SGSN将在每个BVC和每个MS上执行流量控制。对于每个LLC-PDU,首先按MS流控机制执行流量控制,然后按BVC流控机制执行流量控制。
如果LLC-PDU通过了单个MS流量控制,则SGSN对此LLC-PDU还要应用BVC流量控制。如果LLC-PDU对两种流控机制都已通过,则整个LLC-PDU将被提交到NS层传送给BSS(见图)。
图1:BVC流量控制 BSS发给SGSN的流控参数包含以下信息:
-下行方向给定BVC或MS的桶大小(Bmax);
- 下行方向给定BVC或MS的桶流速(R)。
SGSN在收到来自BSS关于某个MS的FLOW-CONTROL-MS消息前,应采用SGSN确定的Bmax和R的取值来执行单个MS流量控制。在收到来自BSS关于某个MS的FLOW-CONTROL-MS消息后,SGSN应采用从BSS收到的Bmax和R的取值继续执行针对此特定MS的流量控制,该Bamx和R的取值至少在Th秒内有效。当Th定时器超时或MS变更了小区,SGSN可重启针对该MS的SGSN内部流量控制变量,并开始采用SGSN生成的Bmax和R取值。
BSSGP流量控制模型是:只要桶计数器(B)加上LLC-PDU长度不超过桶大小Bmax,该LLC-PDU就可以通过此算法的校验。当LLC-PDU通过校验时,该LLC-PDU的长度加B。任何尚未传送的PDU在其LLC-PDU加B小于Bmax之前应被延迟。 (2) 流量控制一致性判决
BSSGP流量控制算法在SGSN实现。BSSGP流量控制一致性算法如图2定义。
一致性判决用来判断哪些LLC-PDU与Gb接口上的MS或BSSGP虚连接(BVC)的流量一致。一致性判决不是必须执行的算法,只要BSSGP流量控制操作不违反满足BVC或MS的目标,SGSN厂家可采用任何算法。也就是说,SGSN不能传送比BSS内某个BVC或单个MS的缓冲器所能容纳的更多的数据。
图2:BSSGP流量控制一致性定义算法 算法使用的变量为:
-Bmax桶大小—由BSS按每个小区和每个MS来设置。Bmax的大小应至少足够容纳一个LLC-PDU。
- R—桶流速。
- B—桶计数器。
- B*—桶计数器预设值。
- L(p) —LLC-PDU p的长度。
- Tp—LLC-PDU p最后传送的时间。
- Tc—LLC-PDU p到达的时间。
上述变量在SGSN内的初始状态为:
-Bmax=0。对于BVC,直到在Flow Control-BVC中收到Bmax该值才有效。对于MS,直到在Flow-Control-BVC消息中收到Bmax_default_ MS,该值才有效。其后,应采用“初始Flow-Control-BVC之后MS的Bmax状态”一节的操作。
-R=0。对于BVC,直到收到Flow-Control-BVC消息该值才有效。对于MS,直到收到Flow-Control-BVC消息该值才有效。其后,应采用“初始Flow-Control-BVC之后MS的Bmax状态”一节的操作。
-B=0(桶为空);并且Tp=第1个LLC-PDU的当前时间。
SGSN在从BSS收到针对某个BVC的Flow-Control-BVC消息之前,不应在该BVC上传送LLC-PDU。
当一个LLC-PDU p在时间Tc到达时,如果该LLC-PDU应传送给此BSS,则变量B*设置为桶大小。当前的桶大小为之前的桶大小加上新的LLC-PDU的大小,减去自上一个符合条件的LLC-PDU之后即将流走的桶的流量,即B* = B + L(p) - R * (Tc - Tp)。如果B*小于L(p),则LLC-PDU符合条件,并且桶大小B 重置为L(p),且该LLC-PDU通过判决。当某个符合条件的LLC-PDU通过判决时,最近的LLC-PDU传送时间设为当前时间,即Tp = Tc。
如果桶没有完全流走,则必须检测桶是否要超过Bmax的限制,即是否B* > Bmax。如果超过限制,则此LLC-PDU不符合条件,应被延迟一段时间,相关变量不做更新。如果桶没有超过Bmax的限制,则此LLC-PDU符合条件,桶计数器(B)等于B*的值。当某个符合条件的LLC-PDU通过判决时,则最后的LLC-PDU传送时间设为当前时间,即Tp = Tc。
当SGSN收到一个FLUSH-LL-ACK PDU,该PDU指示与老BVC相关的LLC-PDU已经被“删除”时, SGSN应更新针对MS和老BVC的桶计数器(B)的值,即B = max ( B - N , 0 )。N由FLUSH-LL-ACK PDU提供,指示了BSS删除的字节数。
当SGSN收到一个FLUSH-LL-ACK PDU,该PDU指示NSE内的与老BVC相关的LLC-PDU已经被“传送”时, SGSN应更新针对老BVC的桶计数器(B)的值,即B = max ( B - N , 0 )。针对新BVC的B的取值也要更新,即B = min ( B + N, Bmax )。N由FLUSH-LL-ACK PDU提供,指示了BSS删除的字节数。
当SGSN收到一个LLC-DISCARDED PDU,该PDU指示与MS相关的LLC-PDU已经被BSS“删除”时, SGSN应更新针对MS和BVC的桶计数器(B)的值,即B = max ( B - N , 0 )。N由LLC-DISCARDED PDU提供,指示了BSS删除的字节数。
BSS可在任何时间通过发送包含新Bmax和R取值的新的流控PDU来更新SGSN内的Bmax和R的值。变量B、B*、Tp和Tc只在SGSN内部起应用,并不受Flow-Control-BVC或Flow Control-MS PDU的影响。
(3) SGSN内流量控制消息响应时间
收到来自BSS的流量控制请求后,SGSN应在100ms内通过修改其下行传输来指示。
(4) 发送BVC或MS流量控制PDU的频度
对于给定BVC或MS,BSS允许发送流量控制消息的速率是有限制的,并由以下规则定义:BSS可每隔C秒发送一条新的Flow Control PDU,这里C为预定义并由BSS和SGSN共用的一个常量。
如果BSS没有检测到来自SGSN的FLOW-CONTROL-ACK,并且导致发送FLOW-CONTROL PDU的条件仍具备,则可立即重发FLOW-CONTROL PDU。此时,BSS可违反由C值定义的重传速率。
(5) FLOW-CONTROL PDU的内容
基于流控的准则,BSS发给SGSN的FLOW-CONTROL PDU应包含下列IE。
对于BVC流控,应发送以下信息:
- Gb接口上针对某个BVC的最大桶大小(Bmax);
- 该桶所应用的流速参数 (R);
- 缺省的MS桶大小(Bmax_default_MS);
- 缺省的 MS 桶流速(R_default_MS);
- BVC内部PDU发送延迟的可选测量。
对于MS流控,应发送下列信息:
- 标识MS的TLLI;
- Gb接口上此MS的最大桶大小(Bmax);
- 该桶所应用的流速参数 (R)。
(6)初始Flow-Control-BVC之后MS的Bmax状态
SGSN可采用下列公式来产生针对某个MS的初始桶大小—Bmax。
Bmax (比特) = min(R_default_MS for 1 sec, 72000, max MS throughput for 1 sec, (max MS throughput for 1sec + current throughput of all other MSs in the cell for 1 sec) / number of MSs in the cell);
这里,
- R_default_MS for 1 sec :MS每秒缺省桶流速;
- max MS throughput for 1 sec :MS每秒最大吞吐量;
- current throughput of all other MSs in the cell for 1 sec :当前小区内其他MS每秒所有吞吐量;
- number of MSs in the cell:小区内MS数量,包括了这个即将添加的MS。
除非SGSN收到了来自BSS的针对某个MS的Flow-Control-MS 消息,否则SGSN不会采用大于Bmax_default_MS 的Bmax值,也不会采用大于R_default_MS 的流速(R)。
6.2.4 从BSS到SGSN的上行业务流量控制
在上行方向,BSS与SGSN之间未定义流量控制流程。 |