我是靠谱客的博主 轻松鱼,最近开发中收集的这篇文章主要介绍【5G RLC】AM模式的数据传输详解AM模式的数据传输详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。


博客内容主要围绕:
       5G/6G协议讲解
       算力网络讲解(云计算,边缘计算,端计算)
       高级C语言讲解
       Rust语言讲解



AM模式的数据传输详解

在这里插入图片描述

       在5G NR中,RLC有TMUMAM三种不同的业务模式,每种模式都可以发送和接收数据,根据其需求提供不同的逻辑信道。本篇博文介绍了AM模式数据传输。

RLC AM模式的特点:

  • 在发送和接收端都实现了缓存;
  • TX侧会进行分段。而RX侧会进行分段重组;
  • 对于每个RLC PDU都要求有反馈机制(ACK或者NACK);
  • SRB1/SRB2/SRB3和DRBs都采用RLC AM模式;
  • AM模式的SN长度可以是12bit或者18bit;
  • RLC AM模式一个完整的或者分段的SDU与一个SN相关联;

如何通过RLC进行数据传输?

       RLC实体通过PDCP层接收/发送PDCP PDUs(也就是RLC SDUs),并通过MAC和PHY层向对端RLC实体发送/接收RLC PDUs。

  • PDU是一个层的输出;
  • SDU是一个层的输入;

请添加图片描述

PDU的传输顺序是什么?

RLC AM模式下按照下面的顺序进行PDU传输:

  • 控制PDU(RLC 状态PDU);
  • 重传PDU;
  • 分段的PDU;
  • 完整的PDU;

RLC传输(完整或分段的PDU)

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

请添加图片描述

RLC PDU(s)的传输数量与MAC TB的大小有关。如果MAC TB大小不足以传输完整的RLC PDU,则RLC将会对RLC PDU进行分段。MAC的TB大小取决于基站对终端的上行授权字节数,这与当前的空口环境有关。

请添加图片描述

  • SI:SI字段表示RLC PDU中是否包含完整的RLC SDU,或者RLC SDU的第一段、中间段、最后一段;
  • SO:分段偏移量(不用于第一个分段);

RLC AM模式数据重传

在AM模式下,每个RLC PDU以序列号升序发送,并存储在重传缓冲区中。由于RLC AM支持ARQ以保证可靠交付,因此UE会发送RLC STATUS PDU报文,通知发送侧UE当前接收到的RLC PDU。如下图所示:

  • SN=2 的RLC PDU丢失;
  • 所以在UE发送的RLC STATUS PDU中ACK SN=4,NACK SN=2;
  • 发送侧收到RLC STATUS PDU后,从DU中重发SN=2的RLC PDU。

请添加图片描述


RLC的最大重传次数

如果STATUS PDU被丢弃,则在轮询重传定时器(Poll Retransmission timer)到期后,重传SN=2的RLC PDU——该RLC PDU是DU最近一次传输的RLC PDU。如果轮询重传定时器过期次数超过maxRetxThreshhold阈值,则触发RLF (Radio Link Failure),释放终端。

请添加图片描述


RLC Window Stall

当TxNext和TxNextAck之间的差等于SN窗口大小(最大SN大小的一半)时,RLC窗口发送停滞。如下图所示,窗口停滞发生了,如果重传缓冲区中没有RLC PDU,则重新传输SN最高的PDU (SN=131172)。

请添加图片描述

  • TxNext:该状态变量保存了要为下一个新生成的AMD PDU分配的SN值;
  • TxNextAck:该状态变量保存了按序下一个期望收到ACK的RLC SDU的SN值,作为发送窗口的下界

当出现窗口停滞时,CU向PDCP发送请求,要求停止发送数据。根据规范,当发送的PDUs(WINDOW_SIZE =13072)没有收到ACK时,就会发生停滞状态,这意味着DU必须维护131072个缓冲区

这里有一个问题:

  • 由于系统限制,DU可能不支持这种巨大的缓冲区;
  • 可能的情况是,虚假的UE消耗了所有的缓冲区,而没有为其它UE留下缓冲区。


    因此,可以根据此公式修改窗口停滞条件的阈值:
  • Window Stall Threshhold = (MAX_DATA_RATE/AVG_PDU_SIZE)*RLC_RTT
  • RLC_RTT = Status Prohibit Timer + MAX_HARQ_RETX
  • 其中:
    • MAX_DATA_RATE: Maximum Data Rate Supported by UE
    • RLC_RTT: RLC Round Trip Time
    • MAX_HARQ_RETX: Maximum Harq Retransmission
    • AVG_PDU_SIZE: Average RLC PDU Size

RLC AM模式下PDU的接收和重组

  • AM PDU是从MAC层接收的;
  • 如果RLC PDU SN在接收窗口内,则RLC继续后续处理;如果不在,则直接丢弃该数据包;
  • RLC层还会检查AM PDU是否携带已经接收到的RLC SDU分段字节(检查是否重复)。当接收到的AM PDU包含新数据时,它继续进行处理;
  • RLC将AM PDU放在接收缓冲区中;

定时发送状态报告,向终端共享上行数据包的接收状态。下面两幅图描述了在定时器t-reassembly (t1,t2,t3)期间内对RLC数据包的处理,以及RLC UL状态变量的更新。假设在每个t-reassembly中,会接收50个RLC PDU,在每个t-reassembly期间,都会发送STATUS PDU。由于没有从UE接收到TB (MAC传输块),所以RLC SN丢失了。

请添加图片描述

如上图所示,具有RLC SN(5~8)的MAC TB在t1时间丢失,在t2时间由于HARQ重传而收到。从图中可以看出,在t2时间内发送的状态PDU中没有AckSn=5。

  • 注意:t1时间内的数据包丢失将在t3时间内使用STATUS PDU通知UE(使用NackSn)。

请添加图片描述
上图中,包含RLC SN(5~8)和RLC SN(40~49)的MAC TBs在t1持续时间内丢失。在t2中,Status PDU在接收到带有RLC SN(5~8)的Harq Retx (Harq retransmit TB)之前发送,因此Status PDU不报告收到RLC SN(5~8),只发送Status PDU(AckSn-5)。t2到期后,假设RLC SN(40~49)的MAC TB丢失,将丢失的数据包信息在Status PDU(AckSn-50,NackSn-40,range-10)中发送给UE。

t1丢失的RLC包在t3的STATUS Report中上报给UE。在STATUS PDU (AckSn 50,NackSn-40,range10)中。SN(40 - 49)中的PDU被认为丢失或丢弃。

  • 注意:Reassembly timer是DU-RLC等待UE对丢失的RLC包进行HARQ重传的时间

接收和重组RLC计时器

  • tReassembly:tReassembly >= DL数据包到达UE的时间 + HARQ 的时间;
  • tpollretransmit:tpollretransmit >= tstatusProhibit + 2 PUSCH transmission ( BSR + RLC Status PDU);
  • tstatusProhibit:HARQ RTT <= tstatusProhibit <= tReassembly


在这里插入图片描述

最后

以上就是轻松鱼为你收集整理的【5G RLC】AM模式的数据传输详解AM模式的数据传输详解的全部内容,希望文章能够帮你解决【5G RLC】AM模式的数据传输详解AM模式的数据传输详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部