RLC层简介及流程分析
RLC(Radio Link Control)层位于PDCP层(或RRC层)和MAC层之间。它通过RLC通道(RLC channel)与PDCP层(或RRC层)进行通信,并通过逻辑信道与MAC层进行通信。RLC配置是逻辑信道级的配置,一个RLC实体(RLC entity)只对应一个UE的一个逻辑信道。RLC实体从PDCP层接收到的数据,或发往PDCP层的数据被称作RLC SDU(或PDCP PDU)。RLC实体从MAC层接收到的数据,或发往MAC层的数据被称作RLC PDU(或MAC SDU)。
RLC层主要负责(见38.322):
1.分段/重组RLC SDU(segmentation / reassembly,只适用于UM和AM模式):在一次传输机会中,一个逻辑信道可发送的所有RLC PDU的总大小是由MAC层指定的,其大小通常并不能保证每一个需要发送的RLC SDU都能完整地发送出去,所以在发送端需要对某个RLC SDU进行分段以便匹配MAC层指定的总大小。相应地,在接收端需要对被分段的RLC SDU进行重组,以恢复出原来的RLC SDU并递送给上层。
2.通过ARQ进行纠错(只适用于AM模式):MAC层的HARQ机制的目标在于实现非常快速的重传,其反馈出错率大概在0.1~1%左右。对于某些业务,如TCP传输(要求丢包率小于10-5),HARQ反馈的出错率就显得过高了。对于这类业务,RLC层的重传处理能够进一步降低反馈出错率。
3.重复包检测(duplicate detection,只适用于AM模式,UM模式不支持重复包检测):出现重复包的最大可能性为发送端反馈了HARQ ACK,但接收端错误地将其解释为NACK,从而导致了不必要的MAC PDU重传。当然,RLC层的重传(AM模式下)也可能带来重复包。
4.对RLC SDU分段进行重分段(re-segmentation,只适用于AM模式):当一个RLC SDU分段需要重传,但MAC层指定的大小无法保证该RLC SDU分段完全发送出去时,就需要对该RLC SDU分段(注意:不是对AMD PDU进行重分段)进行重分段处理。
5.RLC SDU丢弃处理(只适用于UM和AM模式):当PDCP层指示RLC层丢弃一个特定的RLC SDU时,RLC层会触发RLC SDU丢弃处理。如果此时没有将该RLC SDU,或该RLC SDU的部分分段递交给MAC层,则AM RLC实体发送端或UM发送端实体会丢弃指示的RLC
SDU。也就是说,如果一个RLC SDU或其任意分段已经用于生成了RLC PDU,则RLC发送端不会丢弃它,而是会完成该RLC SDU的传输(这意味着AM RLC实体发送端会持续重传该RLC SDU,直到它被对端成功接收)。当丢弃一个RLC SDU时,AM RLC实体发送端并不会引入RLC SN间隙。
6.RLC重建:在切换流程中,RRC层会要求RLC层进行重建。此时RLC层会停止并重置所有定时器,将所有的状态变量重置为初始值,并丢弃所有的RLC SDU、RLC SDU分段和RLC PDU。在NR中,RLC重建时,接收端是不会往上层递送RLC SDU的。这是因为NR中的RLC层不支持重排序,只要收到一个完整的RLC SDU,就立即往上层送,所以接收端不会缓存完整的RLC SDU。(而在LTE中,RLC重建时,接收端可能往上层递送缓存中可以重组出的完整RLC SDU,并且这可能会导致PDCP层收到乱序的RLC SDU)
7.在LTE中,只有当MAC层通知RLC实体有一个传输机会,并同时告诉RLC实体在这次传输机会中可传输的RLC PDU的总大小时,RLC层才会分段/串联RLC SDU以生成一个匹配MAC层指定大小的RLC PDU。也就是说,针对一个逻辑信道,一次传输机会只会发送一个RLC PDU,该PDU可能由一个或多个RLC SDU或RLC SDU分段组成。
8.但在NR中,RLC层无需等待MAC层指示的传输机会,直接将每一个RLC SDU构造成一个RLC PDU,即每个RLC SDU对应一个RLC PDU(而在LTE中,通常由多个RLC SDU串联成一个RLC PDU),但RLC PDU要真正发往MAC层还是需要等待MAC层指示的传输机会。对于UM和AM模式而言,当MAC层指示的可发送的所有RLC PDU的总大小无法保证每一个需要发送的RLC SDU都能完整地发送出去时,某个RLC SDU可能被分段,并使用2个或更多个RLC PDU来传输(在不同的传输机会上)。也就是说,针对同一个逻辑信道,一次传输可能会发送多个RLC PDU,且每一个RLC PDU由一个RLC SDU或RLC SDU分段组成。
9.简单地说,在NR中,对于UM和AM模式而言,RLC层从PDCP层接收到一个RLC SDU后,可立即生成一个RLC PDU(包含了头部信息),并保存在传输buffer中(即在收到MAC层指定的传输机会之前,预先生成RLC PDU,其目的是为了降低时延)。等到MAC层指示对应逻辑信道有一个传输机会,并同时指定了这次传输机会中对应逻辑信道可传输的数据量时,MAC层会将该逻辑信道对应的传输buffer中的RLC PDU串联起来。但MAC层指定的大小未必能够保证参与串联的每一个RLC PDU都完整地发出去。如果参与串联的最后一个RLC PDU大于剩余的数据量时,该RLC PDU对应的RLC SDU就需要被分段,并重
新生成RLC头部以及新的RLC PDU(包含了此RLC SDU的部分数据)。
10.也就是说,在NR中,RLC层移除了RLC SDU的串联(concatenation)功能(在LTE中,允许将多个RLC SDU或RLC SDU分段串联在一起生成一个RLC PDU,而这在NR中是不支持的),而是由MAC层负责对RLC PDU进行串联,其目的是为了使RLC和MAC层能够提前进行预处理(pre-processing),以减少处理时延。这与LTE的上行传输中,为了构造TB,RLC PDU和MAC PDU需要等接收到UL grant之后才能够生成是不同的。
11.在LTE中,MAC层的HARQ操作可能导致到达RLC层的报文是乱序的,所以需要RLC层对数据进行重排序(reordering),并按序将重组后的RLC SDU发送给PDCP层,也就是说,RLC SDU n必须在RLC SDU n+1之前发送给PDCP层。但是RLC层的按序递送可能会给PDCP层的解密操作带来较大的时延。假如RLC层在SDU n之前成功接收到了SDU n+1,那么PDCP层需要等到RLC层收到RLC SDU n并递送给PDCP之后才能收到RLC SDU n+1。
12.在NR中,移除了RLC层的重排序功能,即RLC层不支持按序递送RLC SDU给PDCP层。RLC层在收到一个完整的RLC SDU后,就立即递送给PDCP层处理(PDCP层可以提
前做解密操作),而无需关心之前的RLC SDU是否已经成功接收到,从而降低了RLC层的处理时延。也就是说,RLC层送往PDCP层的数据可能是乱序的,数据的按序递送(包括重排序)由PDCP层来负责。
 Procedures
5.1 RLC entity handling
5.1.1 RLC entity establishment
当上层(RRC层)请求建立一个RLC实体时,终端将:htmlradio传输数据
  建立一个RLC实体
  将RLC实体的所有状态变量设置为初始值
  依据后文协议定义的流程进行动作(5.2)
5.1.2 RLC entity re-establishment
当上层(RRC层)请求重建一个RLC实体时,终端将:
丢弃该RLC实体上所有存在的 RLC SDUs, RLC SDU segments, and RLC PDUs,
停止和复位RLC实体的所有定时器
  将RLC实体的所有状态变量设置为初始值
 
5.1.3 RLC entity release
当上层(RRC层)请求释放一个RLC实体时,终端将:
 丢弃该RLC实体上所有存在 RLC SDUs, RLC SDU segments, and RLC PDUs,
 释放该RLC实体
5.2 Data transfer procedures
5.2.1 TM data transfer
5.2.1.1 Transmit operations
5.2.1.1.1 General
 transmitting TM RLC实体需要递交一个UMD PDU给底层时,该 transmitting TM RLC 实体将:
   - 对该RLC SDU 不做任何修改递交给底层
5.2.1.2 Receive operations
5.2.1.2.1 General
  receiving   TM RLC 实体从底层接收到一个新的TMD PDU,该  receiving TM RLC 实体将:
   - 对该TMD PDU 不做任何修改递交给上层
5.2.2 UM data transfer
5.2.2.1 Transmit operations
5.2.2.1.1 General
当transmitting UM RLC实体递交一个UMD PDU给底层后,该transmitting UM RLC实体将:
  如果UMD PDU包含一个RLC SDU的一个分段,设置UMD PDU的SN值为TX_Next;
  如果UMD PDU包含某个RLC SDU分段,该RLC SDU分段包含有RLC SDU的最后一个字节;那么将 TX_Next 加 1.
【注解:可见NR RLC 的SN号本质上已经是RLC SDU层面的序号】
5.2.2.2 Receive operations
5.2.2.2.1 General
 receiving UM RLC entity 实体将通过RX_Next_Highest 状态变量维护一个重组窗口:
   > 如果满足 (RX_Next_Highest – UM_Window_Size) <= SN  则认为该SN在重组窗口内
   > 否则的话,认为该SN不在重组窗口内。
当从底层接收到一个UMD PDU ,  receiving UM RLC实体将
> 或者移去RLC头部,将对应的RLC SDU递交给上层;或者丢弃该UMD PDU;或者将该UMD PDU放入接收缓冲区中。
  > 如果UMD PDU被放入接收缓冲区中,更新状态变量,递交SDU给上层,定时器相关操作见后续章节。
 当定时器 t-Reassembly 超时,  receiving UM RLC entity:
> 更新状态变量,丢弃 RLC SDU segments,根据需要可能再次启动该定时器

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。