51学通信技术论坛

标题: GPRS精粹之“6 分组传送模式RLC过程” [打印本页]

作者: 断肠人    时间: 2011-6-23 19:15:38     标题: GPRS精粹之“6 分组传送模式RLC过程”

6 分组传送模式RLC过程

RLC功能:

1.提供LLC层和MAC层之间逻辑链路控制层协议数据单元(LLC PDU)传送的接口原语;

2.将LLC PDU拆分成RLC数据块或将RLC数据块重组成LLC PDU;

3.后向错误纠正(BEC)进程使得RLC数据块能进行有选择的重传;

6.1对等层操作的进程和参数

   发送状态变量Send state variable V(S):
   每个RLC端点发送器都有一个相关的发送状态变量V(S),表示下一个即将发送的RLC数据块的序列号,取值为0~127。在TBF开始时,发送端的V(S)=0 ,当发送一个BSN=V(S)的RLC数据块后,V(S)加1。在RLC确认方式下,V(S)不能超过V(A)模128最大允许的RLC数据块 k。

   控制发送状态变量control send state variable V(CS):
   网络RLC端点发送器对每个由RLC/MAC控制块头中的RTI字段标识的并行控制交换有一个相关的控制发送状态变量V(CS)。 V(CS)表示下一个即将发送的用于控制交换的RLC控制块的序列号,取值为0或1。在发送每个RLC/MAC控制块之前,将V(CS)设置为0,当发送完RBSN=0的RLC/MAC控制块时,V(CS)的值设为1。
确认状态变量Acknowledge state variable V(A):
   在RLC确认模式下,每个RLC端点发送器都有一个相关的确认状态变量V(CS)。 V(CS)包含最早没被对端正确确认的RLC数据块序列号,取值为0~127。在TBF开始时,发送端的V(A)= 0。在接收到PACKET ACK/NACK消息中的RBB(received block bitmap)时,V(A)的值得到更新。另外,[V(S) - V(A)]模128 <= K。

   确认状态数组 Acknowledge state array V(B):
   在RLC确认模式下,每个RLC端点发送器都有一个相关的V(B),它是一个有128个元素的数组,指示最近K(窗口大小)个RLC数据块的确认状态。 V(B)由从对端接收的PACKET ACK/NACK消息中的RBB(received block bitmap)更新;
   发送器发送V(B)中由相关V(A)索引的值为NACKED的最早RLC数据块,发送完每个RLC数据块,V(B)中相应的元素值设置为PENDING_ACK;
   如果[V(S) < V(A) + K]模128并且没有RLC数据块对应于V(B)中值为NACKED的元素时,要发送BSN=V(S)的RLC数据块并将V(B)对应的元素设置为PENDING_ACK。如果无RLC数据块要传送,就发送V(B)中值为PENDING_ACK最早的RLC数据块,然后依次发送。如果所有的RLC数据块都发送了一次,这个过程将重新从最早的RLC数据块开始;
   如果V(S) = V(A) + K模128,将发送V(B)中对应值为PENDING_ACK的最早RLC数据块,然后依次发送。如果所有的数据都发送完一次,这过程将重复进行。
   如果一个V(B)中的元素溢出活动发送窗口,这元素将被设为INVALID。
  块序列号Block sedquence number BSN:
  每个RLC数据块都含有7bit长的BSN,一个将要传送的RLC数据块的BSN =V(S)。
  简化块序列号 reduced block sequence number RBSN:
   每个下行链路RLC/MAC控制数据块含有RBSN比特。在发送RLC/MAC控制块时,RBSN的值设置为V(CS)。
   接收状态变量 Receive state variable V(R):
   每个RLC接收器都有一个相关的V(B),表示下一个将要接收的RLC数据块的序列号BSN,取值为0~127,在TBF开始时置为0。
在RLC确认方式下,如果RLC数据块无差错并且[V(R)<BSN`<V(Q)+K]模128,V(R)将被设置为[BSN`+1],BSN`为最近接收到的RLC数据块的BSN;
   在RLC非确认方式下,V(R)被设置为接收到的最大BSN。
    接收窗口状态变量 Receive window state variable V(Q):
   每个RLC端点接收器都有相关的V(Q),表示在接收窗口中没有接收到的最早RLC数据块序列号,取值为0~127,在TBF开始时置为0。
    在RLC确认模式下,当RLC接收器接收到BSN=V(Q)的数据块时,V(Q)值更新,在非确认模式下,V(Q)值为[V(R) - K]模128。
    接收状态变量 Receive state array V(N):
   每个RLC端点接收器都有相关的V(N)。 V(N)为128个元素的数组,表示先前K个RLC数据块的接收状态,由V(R)来索引,大概内接收的RLC数据块BSN为[V(Q)<=BAN<V(R)]模128,相应的V(N)设置为值RECEIVED。

开始序列号Starting sequence number (SSN)和接收块位图received block bitmap RBB:
每个PACKT ACK/NACK消息含有SSN和RBB。RBB中的BSN有效取值范围为V(A)<=BSN<V(S) mod 128。
在传送侧:在RBB中的每个bit对应的BSN在发送窗口中,如果该bit值为1,V(B)中由SSN索引对应的元素置为ACKED,如为0,则该元素置为NACKED。在RBB中的bit对应的BSN不在发送窗口中,应忽略。如果RLC发送器在MS侧,该bit值为0并且对应BSN的T3198没有超时,V(B)中的元素不被修改。
在接收侧:SSN被指配V(R)的值。RBB被支配K个元素。在RBB中的每个bit对应V(N)。如果对应的V(N)中元素值为RECEIVED,该bit置为1;如果对应的V(N)中元素置为INVALID,该bit置为0。

窗口大小K:64。

填充比特 Filler octets:00101011。

6.1.1LLC PDU拆分为RLC 数据单元

如果LLC PDU不能被分为整数个RLC数据块,下一个LLC PDU必须紧接着填充到前一个LLC PDU的最后一个RLC数据块中,不留任何间隙。如果TBF中最后一个LLC PDU不能填充整数个RLC数据块,将用填充字节填满RLC数据块的剩余部分。

BSN包含在每个RLC数据块的头中来编号RLC数据块,使在接收端进行LLC PDU重组。如果一个RLC数据块需重传,它应用跟先前同样的信道编码方式、BSN、CV。

6.1.2RLC数据单元重组为LLC PD

直到组成一个LLC PDU的所有RLC数据块已收到,则却掉RLC头,将数据组为LLC PDU,并传送给上层。

在RLC确认模式下,接收的LLC PDU应按最初发送的顺序发送给上层。

在RLC非确认模式下,接收的LLC PDU应按接收的序号发送给高层。没接收到的RLC数据块用0填充。填充比特的数目按以下方法确定(CS-1为160,CS-2为240,CS-3为288,CS-4为400)。在上行链路方向信道编码方式是指定的方式,在下行链路方向信道编码方式是最后一个正确接收的RLC数据块的编码方式。如果没有RLC数据块能正确接收,将用请求信道的编码方式。如果没有请求信道编码方式发送给网络,MS将用CS-1的填充比特。

6.1.2aRLC/MAC控制块消息拆分成RLC/MAC控制块

网络可根据长度将RLC/MAC控制块消息拆分成一个或两个RLC/MAC控制块。控制消息的内容不能填满一个整数控制块,将用填充字节来填充,只有最后一个RLC/MAC控制块才能包含填充字节,由RLC/MAC控制块的头中FS(Final Segment)bit来表示。MS不能拆分RLC/MAC控制块。

6.1.2b RLC/MAC控制块重组成RLC/MAC控制消息

如果当接收到RTI值为[x+12<RTI<=x+20]的RLC/MAC控制块时,MS接收到RTI值等于x的RLC/MAC控制块的内容不能形成一个完整的RLC/MAC控制消息,MS将忽略或抛弃RTI值等于x的RLC/MAC控制块,而不考虑此消息是否是给它的。

在分组空闲模式下,MS能并行接收8个RLC/MAC控制消息,在此期间,如果它接收到第9个控制消息,MS将抛弃最早的部分接收的消息。
在分组传送模式下,MS能并行在同一PDCH上接收2个RLC/MAC控制块消息,在此期间,如果它接收到第3个控制消息,MS将抛弃最早的部分接收的消息。

在接收到RTI值跟已经部分接收的RLC/MAC控制消息的RTI不一致的RLC/MAC控制块时,MS将设置一个定时器T3200的实例。在非DRX模式下,T3200的持续期为4个BS_CB_MAX块周期,在DRX模式下,为4个DRX周期。在接收到一个RLC/MAC控制块来完成一个控制消息时,MS将重启相应的T3200实例。如果T3200超时,MS将放弃并忽略相对应的所有已经接收到的部分控制块。

6.1.3 LLC PDUs的优先级

MS不能在一个优先级低于初始接入用的优先级或在最后一个PACKET RESOURCE REQUEST消息中指定的优先级的TBF中传送LLC PCU。MS可发PACKET RESOURCE REQUEST消息给网络改变上行链路TBF的优先级。

6.2 RLC/MAC控制消息传送的操作

RLC/MAC控制块用来传送RLC控制消息。一个RLC/MAC控制消息的分段以每个RLC/MAC控制块来传送。RLC/MAC控制块传送的优先级比RLC数据块的高。接收侧通过解释RLC/MAC控制块内容来确定RLC/MAC控制消息内容的长度。除非RLC/MAC控制块的MAC头中含有有效的RRBP或者该RLC/MAC过程明确要求确认,接受端一般是不需确认RLC/MAC控制消息的接收。

每个下行链路RLC/MAC控制块头中含有5bit长的RTI(Radio Transaction Identifier)字段并执行模32的计数。RTI字段用于组合构成一个RLC/MAC控制消息的RLC/MAC控制块,它允许接收和发送实体能在一个传送方向上区分高达32个RLC/MAC控制消息。网络不能同时在同一PDCH上对两个分离的RLC/MAC控制消息使用同一个RTI。但可在不同的PDCH上使用同一RTI。

6.3 RLC数据块传送操作

RLC ARQ功能支持两种操作模式:RLC确认模式和非确认模式。
MS通过对PACKET RESOURCE REQUEST或PACKET DOWNLINK ACK/NACK消息中的RLC_MODE比特进行设置来设置上行链路TBF的RLC模式。
网络通过对PACKET DOWNLINK ASSIGNMENT或PACKET TIMESLOT RECONFIGURE消息中的RLC_MODE比特进行设置来设置下行链路TBF的RLC模式。

6.3.1 倒数记秒进程

MS在每个上行链路RLC数据块中设置Countdown Value(CV)通知网络即将在上行链路TBF上传送的RLC数据块的绝对序列号BSN。CV计算如下:

Where:
TBC =在该TBF上准备传送的RLC数据块总数
BSN' = RLC数据块的绝对块序列号,范围为0~(TBC - 1),
NTS = 分配给上行链路TBF的时隙数,范围 1 to 8,
the function round() rounds upwards to the nearest integer,
BS_CV_MAX是一个在系统信息中广播的参数
the division operation is non-integer and results in zero only for (TBC - BSN' - 1) = 0
在TBF中传送的最后一个RLC数据块的CV值应为0值。一旦MS传送一个不是15的CV值时,MS将准确地传送(TBC - BSN`-1)/NTS个RLC数据块。如果MS在倒数记秒进程中在PACKET UPLINK ACK/NACK消息中接收到一个信道编码命令的改变,MS将执行新的信道编码命令。MS将用新的RLC数据块大小来计算未传送的RLC数据块的CV值。任何在倒数记秒进程开始后从上层接收的数据都要在下一个TBF中传送。
MS在倒数记秒期间可能进行重发以对PACKET ACK/NACK作出响应。如果MS进行重发,可以用跟先前RLC数据块传送相同的CV。
在倒数记秒期间,MS可发送一个RLC/MAC控制块来响应一个查询请求。对于固定分配,MS计数到0时,将丧失它当前的上行链路指配并不能用这个分配来传送。如果在倒数记秒进程中,MS接收到一个新分配时,MS将用这个新的分配来结束倒数记秒进程。网络对任何需要重传的将提供无需请求的上行链路资源。

6.3.2确认模式操作
发送侧用BSN对RLC数据块进行编号,BSN用来重传和重组。接收侧发送PACKET ACK/NACK消息来请求重传。

6.3.2.1 TBF的建立

如果在传送的LLC PDU还没有结束时或还有没确认的LLC PDU时,新的TBF就结束,那么MS将开始在新的TBF上来传送最早的未确认的LLC PDU。


6.3.2.2 上行链路TBF操作

当V(S)=V(A)+K时MS指示传送窗口为stall condition,检测到传送窗口的这种stall condition时,MS在后续发送的RLC数据块中设置SI (stall indicator) bit,直到stall condition终止。MS同时也启动T3182,当收到PACKET UPLINK ACK/NACK消息使得V(S) < V(A)+K时,T3182停止。如果T3182超时,MS将计数器N3102值减去PAN_DEC,执行随机接入异常释放。

当MS接收的PACKET UPLINK ACK/NACK消息允许V(S)或V(A)值增加时,MS将N3102加PAN_INC,但N3102不能超过PAN_MAX。在进行小区选择时,N3102应设为PAN_MAX。当N3102 <= 0 时,MS执行小区重选异常释放。如果PAN_DEC、PAN_INC或PAN_MAX置为0,N3102不运行。

处于固定分配模式的MS在接收到PACKET UPLINK ACK/NACK消息时启动或重启T3184,如果T3184超时,MS执行小区重选异常释放。

6.3.2.3 上行链路TBF释放

MS通过启动倒数记秒进程来开始上行链路TBF的释放。当MS发送完CV值为0的RLC数据块并且V(B)中没有值为NACKED的元素时,MS将启动T3182并停止T3180。MS将继续在每个指配的上行链路数据块上发送RLC数据块。

如果当网络检测到TBF结束时,网络收到所有的RLC数据块,那么它将发送Final Ack Indicator 比特置为1的PACKET UPLINK ACK/NACK消息,其中还包含一个有效的RRBP字段和清空计数器N3103。
如果MS接收到此消息,它将发送PACKET CONTROL ACKNOWLEDGEMENT消息并释放TBF。如果MS工作在半双工模式下并接收到一个下行链路指配,它将执行在下行链路指配上。如果无下行链路指配,MS将进入分组空闲模式,并应用DRX模式进程。

如果当网络检测到TBF结束时,网络没有收到所有的RLC数据块,那么它将给MS发送一个PACKET UPLINK ACK/NACK消息并且如果需要就分配足够的上行链路资源给MS来重传RLC数据块。当MS接收到PACKET UPLINK ACK/NACK消息,就停止T3182。

如果PACKET UPLINK ACK/NACK消息要求重传RLC数据块,MS将等待上行链路资源指配并重传所需的数据块,这时,MS启动T3182并等待一个如上的PACKET UPLINK ACK/NACK消息。

如果MS工作在半双工模式下并在倒数记秒进程中接收到一个下行链路指配,并且这时M3182超时,MS将立即执行下行链路指配并通过PACKET DOWNLINK ACK/NACK请求一个上行链路TBF。否则,如果T3182超时,MS将执行随机接入异常释放。

当网络接收到由RRBP指示的无线块上的PACKET CONTROL ACKNOWLEDGE消息,它可重用TFI和USF资源。


如果网络没收到RRBP指示的无线块的PACKET CONTROL ACKNOWLEDGEMENT消息时,网络将增加N3103并重发PACKET UPLINK ACK/NACK消息。如果N3103超出最大值,网络 启动T3169;当T3169超时,网络重用TFI和USF资源。

6.3.2.4 下行链路TBF操作

MS在指配的下行链路PDCH上接收RLC/MAC块,MS在RLC头中识别TFI并对RLC/MAC进行解码。

6.3.2.5 下行链路TBF的释放

网络通过发送一个FBI (Final Block Indicator)比特值为1和有效RRBP字段的RLC数据块来启动一个下行链路TBF的释放。发送的RLC数据块必须有最高的BSN`。网络启动T3191,在T3191运行期间,网络可重发FBI值为1的RLC数据块。

如果MS接收到此消息,MS将在指定的上行链路块上发送一个PACKET DOWNLINK ACK/NACK消息,继续监听所有的指配PDCHs。

如果MS已经接收到先前所有的RLC数据块,MS将发送一个Final Ack Indicator比特值为1的PACKET DOWNLINK ACK/NACK消息并启动T3192。如果MS这时接收到一个有效RRBP和FBI为1的后续RLC数据块,MS就重发PACKET DOWNLINK ACK/NACK 并重启T3192。

如果网络在T3191超时前接收到一个PACKET DOWNLINK ACK/NACK消息,并且如果要求重传,这时网络将停止T3191并在重启下行链路TBF释放之前根据ARQ规程重发所需的RLC数据块。如果无重发请求,网络将停止T3191并启动T3193,当T3193超时,网络将释放TBF。
如果这时T3191超时,网络也释放TBF。

如果网络接收到一个Final Ack Indicator 比特为1的PACKET DOWNLINK ACK/NACK消息并有新的数据要传送给MS,网络可在PACCH上通过发送Control Ack比特为1的PACKET DOWNLINK ASSIGNMENT或PACKET TIMESLOT RECONFIGURE消息来建立一个新的下行链路TBF。
如果在这种情况下,MS接收到上述消息时T3192在运行,MS将停止T3192,并认为先前的下行链路TBF已经释放并执行新的指配。

当T3192超时,MS将停止监听指配的PDCH。如果MS在半双工模式下操作并在TBF释放进程中收到一个上行链路指配,那么MS将立即执行在指配上。否则,如果无运行的上行链路TBF,MS将用DRX模式进入分组空闲模式。

6.3.3 非确认模式操作

非确认模式下不重传任何数据。BSN用于RLC数据块的重组编号。接受端发送PACKET ACK/NACK消息用来传送必要的控制信令,如下行链路传送时的信道质量监督及上行链路时间提前量的校正。

6.3.3.1 TBF建立

如果在未传送完LLC PDU时,最新的上行链路TBF就结束。MS将开始在新的TBF上继续传送最近未完成的传送的LLC PDU。

6.3.3.2 上行链路TBF的操作

MS应将所有RLC数据块的SI (Stall Indicator)比特设为0。必要时网络应发PACKET UPLINK ACK/NACK消息。

如果MS发送K个RLC数据块,而没有收到PACKET ACK/NACK消息,MS启动T3182。当接收到PACKET UPLINK ACK/NACK消息时,T3182停止。如果T3182超时,MS将N3102减PAN_DEC,执行随机接入异常释放。

当MS接收到一个PACKET UPLINK ACK/NACK消息,MS将N3102增加PAN_INC,但是N3102不能超过PAN_MAX。当小区重选时,MS置N3102为PAN_MAX。当N3102<=0时,MS将执行小区重选异常释放。如果PAN_DEC,PAN_INC和PAN_MAX置为0值时,计数器N3102就无效。

处于固定分配下的MS在接收到PACKET UPLINK ACK/NACK消息时,将启动或重启T3184。如果T3184超时,MS将执行小区重选异常释放。

6.3.3.3 上行链路TBF的释放

MS用倒数记秒进程来启动上行链路TBF的释放,它通过置CV值为0和启动T3182来指示TBF结束。

如果MS执行在半双工模式下并在倒数记秒进程中接收到一个下行链路指配,它将继续执行倒数记秒直到完成,这时就立即执行下行链路指配。

当网络检测到TBF结束,就发送一个Final Ack Indicator 比特置为1的PACKET UPLINK ACK/NACK消息,并在RLC/MAC控制块头中的RRBP字段和清零计数器N3103。

接收到PACKET UPLINK ACK/NACK消息,MS停止T3182。如果其Final Ack Indicator 比特值为1,MS将传送PACKET CONTROL ACKNOWLEDGEMENT消息并释放TBF。如果没有运行的下行链路TBF,MS将应用DRX模式进程进入分组空闲模式。

如果T3182超时,MS释放TBF,如同接收到PACKET UPLINK ACK/NACK消息一样。

当网络接收到RRBP指示的无线块上的PACKET CONTROL ACKNOWLEDGEMENT消息,它可以重新使用TFI和USF资源。

如果网络没有接收到RRBP指示的无线块上的PACKET CONTROL ACKNOWLEDGEMENT消息,它将增加N3103并重传PAKCET UPLINK ACK/NACK消息。如果N3103超出它的极限,网络将启动T3169;当T3169超时,网络可重用TFI和USF资源。

6.3.3.4下行链路TBF操作

在每个指配的PDCH上,MS将在RLC头中识别TFI并对RLC数据块解码。

6.3.3.5释放下行链路TBF

网络通过发送一个FBI (Final Block Indicator)比特值为1和有效RRBP字段的RLC数据块来启动一个下行链路TBF的释放。网络将启动T3191。在同一信道的最后三个中任一RLC数据块上,网络可随意地设置FBI比特为1,并提供一个有效的RRBP字段。

对每个FBI为1和有效的RRBP字段的RLC数据块,MS将在RRBP指定的上行链路块上传送PACKET CONTROL ACKNOWLEDGEMENT消息。MS将继续读取指配的下行链路PDCH直到RRBP所指的块周期。如果MS接收到多个指向同一个块周期的RLC数据块时,MS只发送一次PACKET CONTROL ACKNOWLEDGEMENT消息。MS将启动T3192并继续监听所有指配的PDCHs。如果MS接收到后续的一个有效RRBP和FBI为1 的RLC数据块,MS将重传PACKET CONTROL ACKNOWLEDGEMENT消息并重启T3192。
如果网络在T3191超时前接收到一个PACKET CONTROL ACKNOWLEDGEMENT 消息,网络将停止T3191并启动T3193;当T3193超时,网络将释放TBF。如果T3191超时,网络将释放TBF。

如果网络在T3191超时前接收到一个PACKET CONTROL ACKNOWLEDGEMENT消息并且有新的数据要传送,网络通过在PACCH上发送Control Ack比特为1的PACKET DOWNLINK ASSIGNMENT 或 PACKET TIMESLOT RECONFIGURE消息来建立一个新的下行链路TBF。
如果在这种情况下,MS接收到上述消息时,T3192在运行,MS将停止T3192,并认为先前的下行链路TBF已经释放并执行新的指配。

当T3192超时,MS将停止监听指配的PDCH。如果MS在半双工模式下操作并在TBF释放进程中收到一个上行链路指配,那么MS将立即执行在指配上。否则,如果无运行的上行链路TBF,MS将用DRX模式进入分组空闲模式。

6.4异常释放情况

6.4.1随机接入异常释放

MS将放弃所有在进行的TBF并返回到CCCH或PCCCH上并开始建立一个上行链路TBF。

6.4.2小区选择异常释放

MS将放弃所有在进行的TBF。如果接入另一个小区允许,例如,RANDOM_ACCESS_RETRY比特已经设置,MS将执行异常小区选择并在新小区开始上行链路TBF的建立。如果另一个合适的小区可见,在T_RESEL秒内MS不能重选回原来的小区。参数RANDOM_ACCESS_RETRY和T_RESEL在PSI 3 上广播。

如果接入另一个小区不允许,例如RANDOM_ACCESS_RETRY比特没有设置或没有别的小区可见,MS将返回到CCCH或PCCCH并给上层上报一个RLC/MAC失败。


作者: cmcc_demon    时间: 2011-6-23 22:58:43

谢谢分享哈!可以学到好多,只是分布在不同的帖子看着有点累,放在一个帖子连载或者以附件的形式(显示目录)也许会更好点,你觉得呢?
作者: watch1cn    时间: 2011-7-14 18:25:55

非常好的资料,感谢楼主了
作者: lsjier    时间: 2011-7-14 19:44:02

支持1楼~~~~·
作者: maj_wendy    时间: 2011-8-5 17:44:01

坚持下去啊





欢迎光临 51学通信技术论坛 (http://51xuetongxin.com/bbs/) Powered by Discuz! X2