RLC是LTETM NB-IoT协议栈中的重要子层。它负责将控制和数据平面PDU可靠且有保证地传输到接收器侧。 RLC子层提供以下功能[25]:
与另一个对等体可靠地传输RLC PDU。
通过ARQ进行流量控制和错误处理。
RLC SDU的分段或级联。
对接收的RLC PDU进行重组,重新排序或重复检测。
5.1 RLC架构
类似于PDCP子层架构,每个信令或数据无线电承载具有单个RLC实体并与之相关联。发送器和接收器在它们中的每一个处都具有对等RLC实体,其正在交换RLC PDU。 RLC PDU的有效载荷通常是分别从PDCP或RRC子层传递或传递到PDCP或RRC子层的PDCP或RRC PDU。每个RLC实体都有自己的状态变量,与其他实体无关。
图5.1:UE的RLC架构。
RLC实体可以是三种模式之一:Transparent Mode(TM),UnacknowledgmentMode(UM)或Acknowledgment Mode(AM)。 TM的RLC实体是单向实体,这意味着该实体仅用于一个方向,即发送(即,UL)或接收(即,DL)。 RLC模式,未确认模式(UM),仅用于接收多播流量。 RLC UM用于SC-MCCH和SC-MTCH流量。 AM模式的RLC实体是双向的,这意味着RLC实体用于发送和接收。 RRC子层将每个RLC实体配置为发送TM,接收TM,接收UM或AM。 RRC还将每个RLC实体与其信令或无线电承载相关联。
图5.1说明了TM,UM和AM的RLC架构。 TM用于SRB0和SRB1bis,而AM用于SRB1和DRB。 UM仅用于DRB。
5.2 RRC配置参数
RRC将配置参数发送到RLC以配置用于SRB或DRB的RLC实体,如表5.1所示。如第3.7.7节所述,在RRC连接建立过程期间,RRC从eNodeB接收RLC配置参数。
5.3 RLC实体
5.3.1透明模式
图5.2说明了使用TM的RLC实体的体系结构。从RRC子层接收的RRC PDU被排队以在传输缓冲器中传输,直到MAC子层指示用于传输的上行链路机会。传输机会的大小必须能够容纳缓冲区中排队的RLC SDU。
表5.1 RLC子层的RRC配置参数
参数 |
值 |
含义 |
logical-ChannelIdentity |
[3 10] |
表示用于DRB的UL和DL的逻辑信道标识 |
t-PollRetransmit |
ms250,ms500,ms1000,ms2000,ms3000,ms4000,ms6000,ms10000,ms15000,ms25000,ms40000,ms60000,ms90000,ms120000,ms180000 |
指示周期性时间间隔(以毫秒为单位),其中RLC发送器轮询接收器以发送RLC状态PDU |
maxRetxThreshold |
t1, t2, t3, t4, t6, t8, t16, t32 |
表示RLC SDU重传的最大数量 |
enableStatus- ReportSN-Gap |
True |
如果启用,则表示RLC在检测到接收RLC PDU失败时要发送RLC STATUS PDU |
t-Reordering |
ms0,ms5,ms10,ms15,ms20,ms25,ms30,ms35,ms40,ms45,ms50,ms55,ms60,ms65,ms70,ms75,ms80,ms85,ms90,ms95,ms100,ms110,ms120,ms130,ms140,ms150,ms160,ms170,ms180,ms190,ms200,ms1600 |
指示触发缓冲RLC PDU重新排序并将其传送到PDCP的时间(以毫秒为单位) |
图5.2:TM的RLC实体。
TM不向SDU附加RLC报头,并且RLC PDU被发送到MAC子层,与从RRC子层接收的相同。 RLC SDU可以是可变大小的,并且从不分段或连接。当发送RLC PDU时,将其从发送缓冲器中移除。
在接收侧,如果从MAC子层接收到RLC PDU,则将其原样转发到RRC子层而不进行任何RLC处理。接收对等体不会确认此模式下的RLC SDU。
SRB0和SRB1bis映射到RLC TM实体。 RLC TM实体在DL或UL CCCH(SRB0),DL或UL DCCH(SRB1bis),DL PCCH或DL BCCH上交换下行链路和上行链路业务。
5.3.2未确认模式
图5.3:UM的RLC实体。
图5.3说明了UM的RLC实体的体系结构。 RLC UM仅由UE用于在SC-MCCH和SC-MTCH上接收多播流量。多播流量总是从eNodeB流向UE,因此,UE总是充当接收器而不充当RLC UM发送器。
UE在该模式下接收的RLC PDU可以包含三个SDU中的一个:单个RLC SDU,级联RLC SDU或RLC SDU的一个段。
当接收到RLC PDU时,接收器检测它是否是重复的,重新排序它们,重新组装所接收的RLC PDU并将它们传送到PDCP子层。 RLC接收器不发送ACK / NACK,也不需要从发送器重新发送丢失的RLC PDU(在多播流量中,传输的数据包不会被重新传输,也不会被确认
由接收者。)。 RLC UM实体在SC-MCCH和SC-MTCH上接收下行链路业务。
5.3.3确认模式
图5.4说明了AM的RLC实体的体系结构。该模式中的RLC PDU可以是四个SDU之一:单个RLC SDU,级联RLC SDU,RLC SDU的一段或RLC SDU段的一段。
如果从PDCP子层接收到RLC SDU,则它在传输缓冲器中排队,直到从MAC子层接收到传输机会。传输机会可以是任何大小。也就是说,如果传输机会小于排队的RLC SDU,则RLC SDU被分段并且RLC PDU段被发送到MAC子层。如果传输机会大到足以容纳一个或多个RLC SDU,则单个RLC SDU或连接在一起的多个RLC SDU在单个RLC PDU中传输。
除了RLC SDU或RLC SDU段之外,传输机会必须具有足够大的尺寸以容纳RLC报头。无论RLC SDU还是RLC SDU段被发送到MAC子层,RLC头部都被添加到RLC SDU。
发射器确实支持ARQ。发送到MAC子层的RLC PDU不被移除,而是从传输队列移动到重传队列。如果要重传该RLC PDU,则将其从重传队列中拉出,并按原样重传或根据MAC子层指示的传输机会大小进行分段。可以进一步分割RLC SDU或RLC SDU分段,或者可以根据上行链路传输机会的大小进一步级联多个RLC SDU。
RLC AM实体在DL或UL DCCH(SRB1),DL或UL DTCH(DRB)上交换下行链路和上行链路业务。
图5.4:AM的RLC实体。
在接收器侧,当接收到RLC PDU时,接收器检测它是否是重复的,重新排序它们,重新组装所接收的RLC PDU并将它们传送到PDCP子层。如果接收器检测到丢失的RLC PDU,则它可以发送称为RLC STATUS PDU的特殊控制RLC PDU,其对那些丢失的RLC PDU进行NACK,并轮询发送器以重新发送它们。
5.4 RLC PDU格式
RLC PDU是可变大小的PDU,由多个八位字节组成。传输队列或重传队列包含RLC SDU,并且如果上行链路传输机会可用于传输RLC SDU,则将RLC报头添加到SDU以形成RLC PDU。用于TM,UM和AM的RLC PDU的详细描述将在下面的部分中进行。
5.5 RLC传输和接收
5.5.1 RLC TM
图5.5:RLC TM发送器侧。
来自RRC子层的PDCP PDU以RLC SDU的形式排队到TM的RLC实体中的传输(Tx)队列中。 RLC SDU通常是信令RRC PDU。当RLC实体接收到可以完全容纳排队的RLC SDU的上行链路传输机会的MAC指示时,RLC实体可以在单个RLC PDU中发送单个RLC SDU。没有添加RLC PDU报头,并且RLC PDU被传递到MAC子层以进行传输。图5.5总结了TM发送侧处理。图5.6显示了用于TM的RLC PDU,其中RLC PDU不具有RLC报头且仅具有有效载荷。
图5.6:TM的RLC PDU格式。
5.5.2 RLC UM
UE处的RLC UM实体仅充当接收器而不充当发送器,因为其仅接收多播流量。 RLC UM PDU由5比特SN组成,其提供从0到31的SN空间,表示为[0 31]。当发射器耗尽SN空间(即,它到达SN#31)时,它再次将SN绕回到0。
对于RLC接收器,为了处理可以无序到达或者与先前接收的RLC PDU重复的RLC PDU,RLC采用滑动窗口协议。该滑动窗口被实现为RLC UM中的重新排序窗口方案。图5.7说明了重新排序窗口的概念。重新排序窗口具有表示SN范围的上边缘和下边缘。当接收到具有落在重新排序窗口之外的SN的新RLC PDU时,重新排序窗口滑动到新窗口。重新排序窗口充当窗口,其中存储落入窗口内的所有接收的RLC PDU,并且稍后被重新排序并按顺序递送到PDCP子层。
当RLC接收到具有SN #x的新RLC PDU时,检查其SN是否落入重排序窗口内或落在重排序窗口之外。如果它落在重新排序窗口之外,则RLC PDU被存储在接收(Rx)缓冲器中,并且重新排序窗口滑动到新位置,其中上边缘指向接收到的RLC PDU的SN之后的SN(即,上边缘)。是x + 1)。如果接收到的RLC PDU SN落在重排序窗口内并且之前已经接收过,则丢弃它;否则,它存储在接收(Rx)缓冲区中。
图5.7:重新排序窗口作为滑动窗口。
在将接收到的RLC PDU存储在接收(Rx)缓冲器中之后,RLC开始按照其SN的升序对存储在缓冲器中的RLC PDU重新排序,移除它们的RLC PDU报头,并将RLC SDU传送到PDCP子层。此外,RLC还可以启动定时器t-Reordering定时器,该定时器在到期时触发RLC PDU的重新排序并将它们传送到PDCP子层。
由于RLC UM用于接收多播流量,并且为了使其在NB-IoT设备中的实现简单,3GPPTM已选择将重排序窗口和t重新排序定时器的值都设置为零[15]。 RLC PDU的SN字段是5比特。由于重新排序窗口的值为零,这意味着上边缘和下边缘都具有相同的SN值,因此任何接收到的RLC PDU被认为落在重排序窗口之外并且将被存储在接收(Rx)缓冲器中。另外,由于t重新排序定时器具有零间隔,这意味着在接收(Rx)缓冲器中存储RLC PDU时,RLC可以按照其SN的升序开始重新排序缓冲的RLC PDU,剥离它们的RLC PDU。标头,并将它们传递给PDCP子层。 {RLC UM行为符合变种流量特性,其中数据包仅传输一次而未被确认。 }
RLC UM拥有多个状态变量。表5.2显示了RLC UM实体在接收器处使用的状态变量。 VR(UH)表示重新排序窗口的上边缘和下边缘,因为重新排序窗口的大小等于零。接收到RLC PDU后更新状态变量的流程图如图5.8所示。
图5.8:RLC UM接收器端。
图5.8说明了RLC UM接收器的行为。由于重新排序Window为零,因此任何接收到的具有SN = x的RLC PDU被存储到接收(Rx)缓冲器中。然后可以按以下顺序进行以下操作:
所有缓冲的RLC PDU被重新排序,从RLC报头条带化,并以RLC PDU SN的升序递送到PDCP子层。
如果x等于VR(UR),则VR(UR)被设置为尚未接收的RLC PDU的SN。具有SN 表5.2 RLC UM状态变量 状态变量 用法 初始值 含义 UM Window_ Size 窗口大小 0 SC-MCCH,SC-MTCH为零 VR(UH) 最大接受 0 指示具有最高SN的RLC PDU的SN之后的SN的值 VR(UR) 接收 0 收到RLC PDU,它作为重新排序窗口的较高边缘 VR(UX) t- Reordering 指示仍被考虑重新排序的最早RLC PDU的SN的值 图5.9:单个RLC SDU或RLC SDU段的RLC PDU(5位SN)。 图5.10:连接多个RLC SDU(5位SN)时用于UM的RLC PDU。 如果VR(UH)大于VR(UR),则VR(UX)设置为等于VR(UH),VR(UR)设置为SN> = VR(UX),以及所有缓冲的RLC PDU,具有SN 图5.9和5.10显示了UM的RLC PDU格式。 RLC PDU字段如表5.5所示。 5.5.3 RLC UM发送器和接收器的示例 要通过示例阐明UM发送器和接收器操作,请考虑图5.11中的示例。在该示例中,RLC SN字段的长度为5位,并且重新排序窗口大小为零。 发送器已经发送了许多RLC PDU,其中SN递增。在接收器处,它最初的状态变量VR(UH),VR(UR)和VR(UX)都被设置为零。接收器仅接收具有SN#0,#1,#2,#5的RLC PDU,而具有SN#3和#4的那些RLC PDU通过空中丢失并且未在接收器处接收。 由于SN等于0,1,2,5的RLC PDU都落在重新排序窗口之外,因此它们都被接受并存储在接收(Rx)缓冲器中。每个接收到的RLC PDU都遵循图5.8中的算法。示出了在接收每个RLC PDU之后的状态变量的值。 在接收到具有SN#5的RLC PDU之后,状态变量被更新为VR(UH)= VR(UR)= 6,VR(UX)= 0.在接收到RLC PDU之后,将其重新排序并重新组装,从其RLC中剥离标题,并传递给PDCP子层。 5.5.4 RLC AM发送端 RLC AM实体为发送和接收操作维护许多状态变量,如表5.3所示。 RLC AM实体使用滑动窗口协议来管理流量控制,分段和重组以及有序传送。发射器和接收器都保持一个大小为AM窗口大小的窗口。 图5.11:RLC UM实体示例。 表5.3发送器的RLC AM状态变量 状态变量 用法 初始值 含义 AM Window_ Size 窗口大小 512, 32768 确定发送窗口大小[VT(A)VT(MS)[其中VT(MS)= VT(A)+ AM窗口大小 VT(A) 应答 0 要为其顺序接收肯定ACK的下一个RLC PDU的SN的值。 它用作传输窗口的下边缘 VT(MS) 最大发送 设置为VT(A)+ AM窗口大小,它用作传输窗口的较高边缘 VT(S) 发送 0 为下一个新生成的RLC PDU分配的SN的值 POLL SN 投票发送状态 0 在轮询比特设置为1的最新RLC数据PDU传输时保持VT(S)-1的值 发送器保持窗口大小AM窗口大小,其具有下边缘和上边缘分别等于VT(A)和VT(MS)(即,[VT(A)VT(MS)[)。当RLC从MAC子层接收到关于发送上行链路RLC PDU的上行机会的指示时,RLC按照以下严格的顺序调度RLC SDU以进行传输: RLC控制PDU。 从ReTransmission(ReTx)队列重传RLC SDU。 从传输(Tx)队列传输RLC SDU。 图5.12:RLC AM发送器侧。 图5-12中的流程图说明了从Tx队列传输新的RLC SDU。来自PDCP子层的PDCP PDU被排队到RLC实体中的Tx队列中。当RLC实体接收针对上行链路传输机会的MAC指示并且取决于该上行链路传输机会的大小时,RLC实体可以传输单个RLC SDU,多个RLC SDU的级联或RLC SDU的片段。在所有情况下,RLC向包含RLC SDU的RLC PDU分配SN,其等于VT(S)并递增VT(S)。 VT(S)必须在[VT(A)VT(MS)[;否则,该RLC PDU未被调度用于传输。如果VT(S)变得等于VT(MS),则发送窗口变为停顿并且不能进一步发送RLC PDU。当要发送RLC PDU时,添加报头并将RLC PDU传递到MAC子层以进行传输。 发射器可以从接收器接收ARQ反馈。也就是说,发送器以称为RLC STATUS PDU的控制RLC PDU的形式接收用于其传输的ACK或NACK。接收RLC STATUS PDU时接收器行为的流程图如图5.13所示。如果接收器对其SN等于VT(A)的RLC PDU进行肯定确认,则发送器窗口[VT(A)VT(MS)[滑动到新值,其中VT(A)被设置为最小值尚未被确认的RLC PDU的SN。 图5.14说明了发射机滑动窗口的操作,[VT(A)VT(MS)[和状态变量VT(S)。在发送RLC PDU时,RLC PDU的SN被设置为等于VT(S)并且VT(S)被递增1。当接收到对于SN等于滑动窗口VT(A)的下边缘的RLC PDU的ACK时,滑动窗口仅滑动。 5.5.5 RLC AM重传侧 图5.13:收到RLC STATUS PDU时的RLC AM接收器行为。 图5.14:10位SN的RLC AM发送器滑动窗口。 当发送RLC PDU时,如果接收器请求重新发送该RLC PDU,则将其所有SDU移动到重发(ReTx)队列。如果SDU落在窗口[VT(A)VT(S)[中],则可以重传SDU。另外,每个SDU可以被重传有限次数,并且如果重传次数超过该限制,则SDU从ReTransmission(ReTx)队列中丢弃并且不再被发送。由上层(TCP或IP)来检测这种PDU丢失并再次请求重传TCP / IP分组。 RLC SDU重传的最大数量由状态变量maxRetxThreshold控制,该状态变量由RRC子层配置,如表5.1所示。图5.15说明了重传的流程图。 取决于上行链路传输机会大小,发射机可以按原样发送RLC PDU,或者它可以将其分段为多个RLC PDU段以适合上行链路传输机会的大小。 5.5.6 RLC AM发送侧用于轮询RLC STATUS PDU 发送侧可以轮询接收器,使得后者可以向发送器发送RLC STATUS PDU,关于哪个RLC PDU正被确认或NACK。如果满足以下任一条件,发送器可以轮询接收器: 如果在发送RLC PDU之后传输(Tx)或ReTransmission(ReTx)队列将变空。 如果在发送RLC PDU之后发送窗口将停止,并且不再可能进行RLC PDU发送。 如果满足上述任何条件,则发射器可以轮询接收器。发送器通过将RLC PDU报头中的P字段设置为1来轮询接收器,将状态变量POLL SN设置为等于VT(S)-1,并且启动t-PollRetransmit计时器。定时器t-pollRetransmit充当周期性时间间隔,如果到期,则发送器保持轮询接收器以发送RLC STATUS PDU。图5.16说明了发射机使用的轮询算法。 图5.15:重传时的RLC AM发射机。 在接收到包含用于具有SN = POLL SN的RLC PDU的ACK或NACK的RLC STATUS PDU时,停止t-PollRetransmit定时器。如果定时器到期,则发送器可以重新发送具有SN = VT(S)-1的RLC PDU或者未被确认的那些RLC PDU中的任何一个,并且将RLC PDU报头中的P字段设置为1。 图5.17 {5.19分别显示了封装单个RLC SDU,多个RLC SDU或RLC SDU段的RLC PDU格式。 SN字段的长度可以是10或16比特,如RRC子层所配置的。每个RLC PDU由RLC报头和有效载荷组成。有效载荷可以是单个RLC SDU,级联RLC SDU或一段RLC SDU。表5.5中解释并总结了标题字段。 图5.17显示了一个RLC PDU,它可用于单个RLC SDU或RLC SDU的一部分。如果用于RLC SDU的一段,则FI(成帧指示符)字段指示该段是在其RLC SDU的开头,中间还是其RLC SDU的末尾。 FI字段的含义和格式如表5.5所示。 图5.16:轮询时的RLC AM发送器。 图5.18显示了在同一RLC PDU中连接多个RLC SDU时的RLC PDU格式。 RLC头部具有扩展部分,因为有效载荷中包括多于一个RLC SDU(由多于一个有效载荷字段表示)。如果存在多个Payload字段,则除最后一个Payload字段外,每个Payload字段元素都会显示E和LI字段。 图5.17:单个RLC SDU或RLC SDU段的RLC PDU(10位SN)。 图5.18:多个RLC SDU的RLC PDU(10位SN)。 图5.19显示了存在单个RLC SDU段时的RLC PDU格式。 RLC有效载荷由RLC SDU段组成。如果要将单个RLC PDU段再次重新分段为多个段以进行重传,则也使用该格式。段偏移(SO)指示有效载荷与其原始RLC SDU的偏移。 SO连同RLC PDU的长度可用于明确地指示该段与原始RLC SDU的起始字节和结束字节偏移。 图5.19:单个RLC SDU段的RLC PDU(10位SN)。 图5.20显示了RLC STATUS PDU格式。它由RLC头和有效负载组成。有效载荷由一个且仅一个ACK SN字段和零个或多个NACK SN字段组成。 RLC STATUS PDU实现选择性重复ARQ方案。也就是说,RLC STATUS PDU指示接收器在ACK SN字段中尚未接收的第一个和最高SN。它还选择那些尚未接收并向发射机指示重复的RLC PDU 那些丢失的RLC PDU的传输具有在NACK SN字段中的SN。 NACK SN可用于NACKing RLC SDU段。在这种情况下,包括段开始偏移(SOstart)和段结束偏移(SOend)。图5.20显示了具有一个ACK SN和两个NACK SN的RLC STATUS PDU;每个NACK SN都有自己的一组SOstart和SOend。可以将填充添加到RLC PDU以使其保持八位字节对齐。 5.5.7 RLC AM接收方 接收器侧的RLC AM实体使用大小为AM窗口大小的接收窗口。接收到的具有SN的RLC PDU必须落入接收窗口[VR(R)VR(MR)[,存储在接收(Rx)缓冲器中,否则它被丢弃)。 AM窗口是用于处理接收的RLC PDU的滑动窗口协议,其可以是无序的或重复的。 表5.4显示了作为接收器的RLC AM实体使用的状态变量。 VR(R)和VR(MR)表示接收窗口的下边缘和上边缘。 t-重新排序计时器的值可以为零。 图5.20:RLC STATUS PDU(10位SN)。 间隔为零的t重新排序定时器意味着在接收(Rx)缓冲器中存储RLC PDU时,RLC可以开始重新组装缓冲的RLC PDU,按照它们的SN的升序重新排序它们,剥离RLC PDU报头,以及将它们传递给PDCP子层。 接收窗口和状态变量如图5.21所示。接收窗口可以滑动,指示要接收的SN的预期范围。 VR(MS)存储在接收器处仍然丢失的第一个和最高SN。 VR(MS)用于在RLC STATUS PDU中设置ACK SN字段。 VR(H)用于在接收到的最高SN之后保持SN。当发送RLC STATUS PDU时,VR(MS)被设置为大于VR(H)的第一个丢失的RLC PDU SN。如果接收的RLC PDU在窗口[VR(R)VR(MR)[中]具有其SN,则将其存储在接收(Rx)缓冲器中。接收到RLC PDU后更新状态变量的流程图如图5.22所示。在该图中,重要的是注意到在将接收的RLC PDU存储在接收(Rx)缓冲器中时,状态变量VR(H),VR(X),VR(MS)和接收窗口[VR(R) )VR(MR)[更新。 表5.4接收方的RLC AM状态变量 状态变量 用法 初始值 含义 AM Window_ Size 窗口大小 512, 32768 确定接收窗口大小[VR(R)VR(MR)[其中VR(MR)= VR(R)+ AM窗口大小 VR(R) 接收 0 在最后一个顺序完成接收RLC PDU之后的SN的值,并且它用作接收窗口的下边缘 VR(MR) 最大可接受的接收 0 设置为VR(R)+ AM窗口大小,它保存超出接收窗口的第一个AMD PDU的SN值,并作为接收窗口的较高边缘 VR(H) 最高收到 0 在接收的RLC数据PDU中具有最高SN的RLC PDU的SN之后的SN的值 VR(MS) 最大STATUS传输 0 当STATUS PDU需要从Rx发送到Tx时,保持SN的最高可能值,可由ACK SN指示 VR(X) t-重新排序 0 在触发t重新排序的RLC数据PDU的SN之后保持SN的值 t-Reordering 计时器 0 定时器值在到期时触发对接收到的RLC PDU的重新排序并将它们传送到PDCP 图5.22解释了RLC AM接收器的行为。将之前未接收到的具有SN = x的接收的RLC PDU存储在接收(Rx)缓冲器中。在将RLC存储在接收(Rx)缓冲区中时,首先根据以下顺序更新状态变量: 如果x> VR(H),则将VR(H)更新为x + 1。 如果x = VR(MS),则将VR(MS)更新为第一RLC PDU的SN,其中SN> VR(MS)尚未被接收。如果它是一个段,这也适用于SN = x的接收RLC PDU。 图5.21:RLC AM接收窗口。 如果x = VR(R),则将VR(R)更新为第一个RLC PDU的SN,其中SN> VR(R)尚未接收,并将VR(MR)更新为VR(R)+ AM窗口大小。如果它是一个段,这也适用于SN = x的接收RLC PDU。如果更新VR(R),则将接收窗口滑动到新位置[VR(R)V(MR)[。 在状态变量已被更新之后,并且如果在接收窗口之外存在任何缓冲的RLC PDU,则RLC AM实体开始重新组装所有缓冲的RLC PDU,重新排序它们,剥离RLC报头,并将它们传送到PDCP子层。 5.5.8接收端的RLC STATUS PDU传输 接收侧将产生并发送RLC STATUS PDU到发送器以通知后者哪个RLC PDU被确认或NACK。如果满足以下任何条件,接收器将直接或在一段时间后将RLC STATUS PDU发送到发送器: 其报头中具有P字段的RLC PDU被设置为1并且它落在接收窗口之外。如果RLC PDU落入接收窗口,则RLC STATUS PDU传输被延迟,直到RLC PDU落在接收窗口之外。 检测到RLC PDU接收失败或者如果由MAC子层指示。这仅适用于启用enableStatusReportSN-Gap标志的情况,如表5.1所示。 图5.22:RLC AM接收器端。 在接收到RLC PDU之后,该RLC PDU在期望被接收的SN中产生间隙(即,指示丢失的RLC PDU)。如果VR(H)> VR(R),则会发生这种情况。 当接收器发送RLC STATUS PDU时,它包括ACK和零或更多NACK,如图5.20所示,对于尚未在接收窗口中接收的所有RLC PDU [VR(R)VR(女士)[。 5.5.9 RLC SDU丢弃 PDCP子层可以请求丢弃PDCP PDU或其RLC SDU。在这种情况下,如果SDU及其片段尚未发送到接收器,则RLC可以静默地丢弃该RLC SDU。 5.5.10 RLC AM发送器和接收器的示例 要通过示例阐明AM发送器和接收器操作,请考虑图5.23中的示例。在该示例中,RLC SN字段的长度为10位,AM窗口大小为512,这是SN空间的一半。发送器的接收窗口大小为512,其发送窗口[VT(A)VT(MS)[,设置为[0 512 [,并且VT(S)初始值为零)。 发送器从上层PDCP子层接收七个RLC SDU,将它们排队到传输(Tx)队列。发送器从MAC子分析器接收相等大小的上行链路传输机会,其中每个机会可以一次容纳单个RLC SDU(包括RLC报头)。为了发送七个RLC PDU,其中SN编号为0到6,发送器向每个发送的RLC PDU分配等于VT(S)的SN,递增VT(S),并将每个RLC PDU传递到MAC子层以便传输到收件人。由于VT(S)在每次传输后递增,因此其值最终变为等于7。 接收器的AM窗口大小为512,其接收窗口[VR(R)VR(MR)[,设置为[0 512 [。在接收器处,状态变量VR(R),VR(H),VR(MS)和VR(X)都具有零的初始值。 VR(MR)的初始值为VR(R)+ AM窗口大小= 512。 接收器仅接收具有SN#0,#2,#4,#5的RLC PDU,而具有SN#1,#3和#6的那些RLC PDU通过空中丢失并且未在接收器处接收。 由于SN等于0,2,4,5的RLC PDU都在接收窗口内,所以它们都被接受并存储在接收(Rx)缓冲器中。每个接收到的RLC PDU都遵循图5.22中的算法。在接收到具有SN#0的RLC PDU之后,V(R)已经滑动到值1.在完成接收具有SN#5的RLC PDU之后,更新状态变量,其中VR(H)= VR(X)= VR(MS) = 6,并且接收窗口[VR(R)VR(MR)[仍然是[1 513 [因为具有SN#1的RLC PDU仍然丢失]。由于具有SN#0的RLC PDU现在在接收窗口之外,因此RLC将其重新组合,重新排序,剥离其RLC报头,并将其传送到PDCP子层。 表5.5 UM和AM的RLC PDU标头字段 域 值 含义 D/C 0,1 指示RLC PDU是RLC数据PDU还是RLC控制PDU(例如,STATUS PDU) RF 0,1 重组标志。指示RLC PDU是包含单个RLC SDU还是包含RLC SDU的一段 P 0,1 轮询位。如果设置,则表示发送器从接收器请求RLC STATUS PDU报告 FI 00, 01, 10, 11 Framinf信息指示RLC SDU是在RLC的开头,中间还是末尾分段 SDU: 00:段与RLC SDU完全相同 01:segment是RLC SDU的起始段 10:段是RLC SDU的中间段 11:segment是RLC SDU的结束段 E 0, 1 0:数据字段跟随RLC标题 1:一组E字段和LI字段跟随RLC头部 SN [0 31], [0 1023], [0 65535] 序列号。表示相应RLC SDU的SN。对于UM,SN是5位。对于AM,SN是10位或16位。对于RLC SDU段,SN字段指示从其构造RLC SDU段的原始RLC SDU的SN。 LI [0 2047], [0 32767] RLC PDU中存在的相应有效载荷字段的字节长度。对于RLC UM,LI可以是11位,对于RLC AM,L1可以是15位 LSF 0,1 最后一段标志。指示这是否是RLC SDU的最后一段 SO [0 32767], [0 65535] 段偏移。指示从原始RLC SDU的开头以字节为单位的偏移量。 SO可以是15位或16位 CPT 000, 0001 控制PDU类型指示RLC控制PDU的类型(RLC STATUS PDU或其他) ACK SN [0 1023], [0 65535] 下一个未接收的RLC PDU的SN,其未在STATUS PDU中报告为丢失 E1 0, 1 扩展位1.指示是否跟随一组NACK SN,E1和E2 E2 0, 1 扩展位2.指示一组SOstart,SOend是否跟随NACK SN NACK SN [0 1023], [0 65535] 指示RLC PDU的SN或在接收器处检测为丢失的RLC SDU的片段 SOstart [0 32767], [0 65535] 具有SN = NACK SN的RLC SDU的片段的第一字节已经在接收器处被检测为丢失 SOend [0 32767], [0 65535] 具有SN = NACK SN的RLC SDU的片段的最后一个字节已经在接收器处被检测为丢失 图5.23:RLC AM实体示例。 在接收到具有SN#2或#4的RLC PDU时,它触发接收器发送RLC STATUS PDU,因为接收到具有SN#2或#4的RLC PDU产生SN间隙,其中RLC PDU具有SN# 缺少1或#3。 当接收具有SN#2的RLC PDU时,接收器可以发送RLC STATUS PDU,其中ACK SN被设置为等于VR(MS)= 3并且一个NACK SN被设置为等于1.在接收具有SN#4的RLC PDU时, 接收器发送RLC STATUS PDU,其中ACK SN被设置为等于VR(MS)= 5并且两个NACK SN被设置为等于1和3。 如果接收器接收到具有SN#1,#3的RLC PDU,则接收窗口滑动到[6 518 [。 因此,具有SN#2,#4,#5的RLC PDU变得在接收窗口之外,并且RLC重新组装它们,重新排序它们,剥离它们的RLC报头,并将它们传送到PDCP子层。