在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的数据包。
- SN. RLC要确保每一个报文的送达,所以要对自己发出去的每一个报文都登记造册,所以编号(SN)是必须的。
- 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