在5G无线侧,RLC具有TM、UM和AM三种不同的工作模式,每种模式都可以发送和接收数据,根据需要服务于不同的逻辑信道,本文章提供了AM模式数据传输的概述。

描述了什么时候会使用AM模式,AM模式是怎么来实现重传的,AM模式下:数据报文和控制报文的格式等。

RLC AM 模式特性

  • 在传输和接收时都需要进行缓冲
  • 在发送端完成分段,在接收端重新组装
  • RLC PDU需要ACK/NACK反馈机制
  • SRB1/SRB2/SRB3和DRB的数据使用RLC AM模式(SRB0呢?)  (SRB0应该是UM模式,例如SIB和MIB这些都没有重传机制)
  • 序列号AM(12,18)位
  • RLC AM模式完整/分段SDU与SN相关
  • 1个RLC SDU=1个RLC PDU

  

 

 

 这个图还是比较不错的,描述了在随机接入过程中不通的消息使用不通的承载,然后使用不通的RLC  模式

 

每个逻辑信道对应一种RLC配置,RLC配置和ARQ都不依赖于物理层子载波间隔、CP类型和TTI长度等。

  1.       SRB0承载、寻呼和系统信息广播采用TM传输模式

  2.       其他SRB承载采用AM传输模式

  3.       DRB承载可以采用AM或UM模式

 

 

 

 SRB承载控制面(信令)数据,根据承载的信令不同分为以下三类SRB:

        1. SRB0 承载RRC连接建立之前的RRC信令, 通过CCCH逻辑信道传输, 在RLC层采用TM模式;
  2. SRB1 承载RRC信令(可能携带一些NAS信令)和SRB2 建立之前的NAS信令, 通过DCCH逻辑信道传输,在RLC层采用AM模式;
  3. SRB2 承载NAS信令,通过DCCH逻辑信道传输,在RLC层采用AM模式。SRB2 优先级低于SRB1,在安全模式完成后才能建立SRB2;
  DRB承载用户面数据,根据QoS不同,UE与eNodeB之间可同时最多建立8个DRB。
————————————————
版权声明:本文为CSDN博主「文火冰糖的硅基工坊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HiWangWenBing/article/details/126238674

数据是怎样通过RLC层进行传输的呢?

RLC实体从PDCP层接收/发送PDCP PDU(即RLC SDU),并通过MAC和PHY层向其对等RLC实体发送/接收RLC PDU。

  • PDU是层的输出
  • SDU层的输入

 

 

RLC传输(Complete/Segmented PDU)

下图描述了完整和分段式PDU的传输

 

 这里有一个问题,这个size1231从何而来?  在实际项目中看到的这个size是1381。想着rlc sdu size能否改大? 后来在查资料证明:这个是受限于以太网的MTU最大1500byte的限制。关于这块具体限制请看MTU的理解。

https://www.cnblogs.com/beilou310/p/16966423.html  还在整理记录中

 

 SI:表示分段信息,若是0表示没有分段,若是1:表示第一段分段,若是2表示最后分段,若是3表示中间分段,目前最多分3段。  SO表示段偏移,后面还有具体实例。

 这儿对RLC AM 模式里面一个很重要的概念进行介绍:RLC状态报告

 

 

 

 

通过上面描述可以看到,在AM模式下,接收端需要给发送端回复状态报告,告诉发送端我已经收到了,是RLC层的确认,不是mac层的harq反馈。

基站测和UE 测在AM模式下,都需要像对端发送状态报告。

 

 

 

 上面这段来自于:https://www.ekuibu.com/forum.php?mod=viewthread&tid=22

那么既然说到了RLC的状态报告,我们看看RLC 重传:

在AM模式下,每个RLCPDU以升序发送序列号,并存储在重传输缓冲器中。由于RLC AM支持ARQ以保证可靠的传输,因此UE发送RLC STATUS PDU消息来指示UE接收到的RLC-PDU的当前状态。如下图所示:

第一步,SN=2的RLCPDU丢弃;第二步,因此,在RLC状态下,从UE发送的PDU(AckSn-4,NackSn-2);第三步,在接收到RLC状态PDU之后,SN=2的RLC PDU从DU重新传输。

 

 通过接收端发送rlc状态报告,发送端才知道是否需要进行RLC的重传。

RLC最大重传是多少

如果STATUS PDU被丢弃,那么轮询重传计时器到期后,SN=2的RLC PDU被重传,这是从DU发送的最新RLC PDU。如果轮询重传计时器到期计数超过maxRetxThreshhold值,则触发RLF(无线链路故障)并释放UE。

 

 

AM数据报文格式

下面通过AM数据报文的格式,来看一下RLC是如何实现AM模式功能的。AM RLC只传输UL/DL DCCH或UL/DL DTCH的数据包。

 

 

  1. SN. RLC要确保每一个报文的送达,所以要对自己发出去的每一个报文都登记造册,所以编号(SN)是必须的。
  2. D/C. AM报文包含两大类,一个是数据报文,一个是控制报文,控制报文是指RLC状态报告,这两种报文格式截然不同。D/C字段即用来标识此是何种报文的。

 

 SI。 当要给AM数据报文把一个业务包给分段了时,则RLC层还需要知道被分段的报文处于哪些报文中,是如何被分段的。SI字段主要其这样的作用,能标识是否包含了分段,以及是哪一个分段。为了配合SI完成分段报文的传输,同一个被分片的报文具有相同的SN。

 下面是一份AM 数据报文的log:这份log恰好包含了分段和不分段的情形, UE接收到5个SDUs(6个PDUs – 第1个SDU的最后分段,中间3个SDU未分段, 第5个SDU分成2段),因此正好把PDU结构各字段  ----  D/C(Data/Control), P(Polling Bit), SI(Segmentation Info), SO(Segment Offset)  ---- 都包含了.

 

 图上已经描述很清晰了,不在多说。解释下subheader7,subheader8,subheader9:

没有对应的协议理论,只是该芯片厂商的log打印实现。 该芯片厂商为统计不同类型的RLC包,而根据RLC 3种Mode以及各mode下一些Header字段的不同类型(比如SN长度12或18)或者是否包含某些字段(比如SO)而细分成9种类型的Sub Header。

比如: Sub Header 7:AM, SN为18 bits, 无SO; Sub Header 8:AM, SN为12 bits, 有SO; Sub Header 9:AM; SN为18 bits; 有SO.


原文链接:https://blog.csdn.net/travel_life/article/details/109514291

 

AM 状态报告报文格式

RLC在接收到一定数量的报文后,满足一定条件时,会回复状态报告。告诉对端哪些报文收到了,哪些报文没有收到。其原则是在报文的发送中尽可能传递更多的信息。与数据报文一个明显的区别是,状态报告没有了SN号,因为状态报告不需要重传。

所以不是说每一包都会有状态报告回复。

 

 以如下场景为例,绿色为已经接收到的报文,白色为没有接收到的报文。

 

 

 下面是一份更详细的log: 显示了接收端收到的AM pdu的信息,然后根据接收到的PDU信息,是怎么回复的状态报告:

这份log恰好包含了下行DATA PDU数据传输和UE反馈上行STATUS PDU的最复杂场景之一 –--- 丢掉的数据包括:连续几个包中的第1个包的部分字段,中间几个包的全部,最后一个包的部分字段,因此包括了结构里所有的字段(NACK_SN, SO Start, SO End, NACK Range). 图中右侧是UE接收到的一堆DL DATA PDUs, 左下角是UE针对这些PDU反馈的STATUS PDU.

 

 有一个点就是15044从812开始丢弃:这个应该是通过收到的第一段可以计算出来的。


————————————————
版权声明:本文为CSDN博主「yu_yuan_hong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/travel_life/article/details/109530474

 

 

 转载:https://blog.csdn.net/u010202588/article/details/120254284

转载:https://zhuanlan.zhihu.com/p/272485068

 

posted on 2022-12-09 17:55  shiyuan310  阅读(2713)  评论(0编辑  收藏  举报