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小时内删除。
发表评论