其他相关内容
RLC data transfer procedure
RLC PDU and Parameters

1 RLC架构

1.1 RLC架构

RLC的所有功能由RLC entity来实现。RLC entity可以理解为将RLC下层的东西都放在黑盒里,收发两端等于是两个RLC entity在相互通信,来为了上层PDCP服务。通常包括三种传输模式:TM,UM和AM,可以理解为收发两端的RLC entity之间传递数据的三种传输模式,由业务类型来决定采用哪种传输模式。两个RLC entity之间相互传递的包(或者说的更确切一点:RLC给MAC层的包)叫RLC PDU(Protocol Data Unit),RLC和上层PDCP之间传递的包叫RLC SDU(Service Data Unit)。

RLC和lower layer之间通过逻辑信道(logical channel)传输PDU,而和PDCP之间通过RLC信道(RLC channel)传输SDU。我简单的画了一个图如下,主要是想体现协议中的这句话:An RLC entity receives/delivers RLC SDUs from/to upper layer and sends/receives RLC PDUs to/from its peer RLC entity via lower layers. 理解什么是RLC entity。
5G NR RLC:RLC架构和RLC entity-编程之家

RLC entity无需等待MAC层的传输指示来把从PDCP来的RLC SDU转化为RLC PDU,对于UM和AM传输模式,RLC SDU可能会被UM或AM RLC entity分段如果这个包太大的话。虽然RLC PDU的构建无需MAC层的指示,但是构建好了的RLC PDU的传输需要等待MAC层指示transmission opportunity。
NR中,RLC层移除了RLC SDU的串联(concatenation)功能,而是由MAC层负责对RLC PDU进行串联,所以我理解是一个MAC PDU里是可以包含若干个MAC SDU的(MAC SDU即RLC PDU)。需要注意的一点是,当UE要生成不止一个MAC PDU的时候,应该避免在一个MAC PDU中出现过多的不连续的RLC PDU。

下图是RLC的一个架构模型。该模型完整体现了上述内容,包括了RLC和上下层之间的是什么channel,三种不同的传输模式及其对应的收发两端的RLC entity在协议当中的名字。
5G NR RLC:RLC架构和RLC entity-编程之家

1.2 三种传输模式

上面也说到RLC有三种不同的传输模式Transparent Mode (), Unacknowledged Mode (UM) or Acknowledged Mode (AM),由具体的业务类型决定。

  • TM mode:发送实体在高层数据上不添加任何额外控制外协议开销,直接给到下层,接收实体在收到后也直接给到上层。实时语音业务通常采用这种模式。
  • UM mode:发送实体(transmitting entity)在高层PDU上添加必要的控制协议开销,然后(必要情况下分段)传送但并不保证传递到对等实体(peer entity),因为没有使用重传协议ARQ。此外能够检测高层PDU的完整性。UM模式的业务一般有小区广播和IP电话。
  • AM mode:发送侧在高层数据上添加必要的控制协议开销后进行传送,并保证传递到对等实体。因为具有ARQ能力,如果RLC接收到错误的RLC PDU,就通知发送方的RLC重传这个PDU。此外支持数据向高层的乱序递交。AM模式是分组数据传输的标准模式,比如www和电子邮件下载。

总结来说,TM/UM主要是为实时业务(如会话业务,流业务)而设计,对于实时业务来说,主要目标是低时延,而允许一定的数据错误,对时延敏感,对错误不敏感,无反馈,无重传;AM主要是为非实时业务(如交互业务,后台业务)而设计,对时延不敏感,对错误敏感,有反馈,有重传(ARQ)。总之,对TM/UM/AM模式的选择主要是根据业务特性决定的。

根据这三种传输模式,相应的RLC entity也分为了三种,即TM/UM/AM RLC entity。因为TM和UM模式下,传输都是单向的,所以在某个时刻下,RLC entity也是单向的,所以TM和UM RLC entity根据收发端的区别,又被协议分为了transmitting RLC entity和receiving RLC entity。而对于AM模式,由于传输是双向的,所以AM RLC entity也是双向的,一个实体被划分为接收侧和发送侧来完成数据的发送接收的功能,并且它们彼此是能够互相沟通的,所以对于AM RLC entity,协议当中的说法是AM entity的transmitting side和receiving side,而不是transmitting AM RLC entity和receiving AM RLC entity。

2 RLC entity

2.1 TM RLC entity

对于TM传输模式来说,一对TM RLC entity(即transmitting TM RLC entity和receiving TM RLC entity)之间的逻辑信道包括BCCH, UL/DL CCCH, PCCH, 和SBCCH,即TM RLC entity通过这些逻辑信道收发RLC PDU。

TM模式下传输的data PDU叫TMD PDU。transmitting TM RLC entity会直接把PDCP来的一整个RLC SDU作为一个TMD PDU并且传到MAC,receiving TM RLC entity也直接把收到的TMD PDU作为RLC SDU传给PDCP,这过程中不做任何改动。一个RLC SDU说白了就是一个TMD PDU,不加头、不分段。

下图为TM模式,即所谓的透传,下的收发TM RLC entity的模型,左侧为transmitting TM RLC entity,通过TM-RLC channel拿到PDCP来的PDCP PDU,即RLC SDU,然后通过上述logical channel传到接收端—receiving TM RLC entity,然后接收端将其直接送到PDCP without any delay。
5G NR RLC:RLC架构和RLC entity-编程之家

1.2 UM RLC entity

对于UM传输模式,收发两端的两个UM RLC entity(即transmitting UM RLC entity和receiving UM RLC entity)之间的逻辑信道包括DTCH, SCCH, 和STCH,传输的data PDU叫UMD PDU,其传输需要等待MAC的指示。transmitting UM RLC entity要将每个RLC SDU进行分段(如果需要的话)、加头,得到一个或多个大小符合MAC层大小要求的UMD PDU。receiving UM RLC entity在收到UMD PDU之后,需要检查RLC SDU的segment是否收全了,并重组RLC SDU。组好的RLC SDU会被立马传输到PDCP。如果某些个UMD PDU(由于下层丢包)无法被重组,那么receiving UM RLC entity会将其丢掉。所以UM RLC entity包含分段、重组,检查segment是否收全的功能。

下图为UM模式下的传输示意图,左侧transmitting UM RLC entity通过UM-RLC channel收到PDCP来的RLC SDU,然后生成RLC header,(如果需要的话)进行分段并加头,构建好的UMD PDU通过上述逻辑信道来到接收端,receiving UM RLC entity去头、重组,并立马送到PDCP。
5G NR RLC:RLC架构和RLC entity-编程之家

1.3 AM RLC entity

对于AM传输模式,两个AM RLC entity之间的逻辑信道包括DL/UL DCCH, DL/UL DTCH, SCCH和STCH。两个AM RLC entity之间传输的data PDU叫AMD PDU,传输的control PDU叫STATUS PDU,和UM模式相同,如果RLC SDU超出MAC层限制的大小,则AM RLC entity会将其分段。其传输同样需要等待MAC的指示。

与TM模式的不同之处在于,AM RLC entity支持RLC SDU或RLC SDU segment的重传(ARQ)。重传过程中,如果RLC SDU或SDU segment大小不符合当前的MAC层指示的transmission opportunity,则AM RLC entity可以对RLC SDU或SDU segment进行分段或者重分段,且重分段次数不限。

在AM RLC entity构建AMD PDU的时候,其中会包含相应的RLC header。在接收AMD PDU的时候,AM RLC entity需要检查是否有重复或丢掉的AMD PDU,重复的包会被丢掉,如果有丢掉的AMD PDU,AM RLC entity会要求对方重传,然后重组RLC SDU并立马传输到上层。
下图为AM mode的示意图。
5G NR RLC:RLC架构和RLC entity-编程之家

3 Services

RLC为PDCP提供的服务包括下面这三项:

  • TM data transfer;
  • UM data transfer;
  • AM data transfer, including indication of successful delivery of upper layers PDUs.

RLC希望从MAC层得到的服务包括下面两项:

  • data transfer;
  • notification of a transmission opportunity, together with the total size of the RLC PDU(s) to be transmitted in the transmission opportunity.

4 Functions

根据上面的描述,RLC层的功能其实可以总结如下:

  • transfer of upper layer PDUs;
    为传输PDCP数据服务,即传输PDCP PDU(RLC SDU)
  • error correction through ARQ (only for AM data transfer);
    AM模式下的ARQ
  • segmentation and reassembly of RLC SDUs (only for UM and AM data transfer);
    UM和AM模式下的分段、重组功能
  • re-segmentation of RLC SDU segments (only for AM data transfer);
    AM模式下的重分段功能
  • duplicate detection (only for AM data transfer);
    AM模式下重复包检测功能
  • RLC SDU discard (only for UM and AM data transfer);
    UM和AM模式下重复包检测功能
  • RLC re-establishment;
    RLC重建立。在切换流程中,RRC层会要求RLC层进行重建,此时RLC层会停止并重置所有定时器,将所有的状态变量重置为初始值,并丢弃所有的RLC SDU、RLC SDU segment和RLC PDU。我们知道在NR中,RLC层没有重排序的功能,通过上面的描述也可以发现,RLC层在得到了一个完整的RLC SDU之后,会立马将其送到PDCP,由PDCP进行重排序,所以RLC层可以缓存segment,但一定不会缓存完整的RLC SDU。所以在RLC重建时,接收端不会往PDCP递送RLC SDU。
  • Protocol error detection (only for AM data transfer).