• LTE& NR ARQ


    参考文档:

    https://www.bilibili.com/video/BV1yv411y75N/?spm_id_from=333.337.search-card.all.click&vd_source=a624c4a1aea4b867c580cc82f03c1745  HARQ
    https://www.bilibili.com/video/BV1sT4y1N7AP/?spm_id_from=333.337.search-card.all.click&vd_source=a624c4a1aea4b867c580cc82f03c1745  HARQ
    https://www.bilibili.com/video/BV1HK411G76n/?spm_id_from=333.337.search-card.all.click&vd_source=a624c4a1aea4b867c580cc82f03c1745
    https://blog.csdn.net/weixin_44510906/article/details/113812259
    https://www.zhihu.com/zvideo/1398535777568055296
    https://wenku.baidu.com/view/f77856966edb6f1aff001fcb.html?fr=aladdin664466&ind=4

      youtube  一些视频
     

    前言:

        

          HARQ  是MAC 层使用的一种重传技术,主要包括 FEC+ARQ

          ARQ 是RLC 层使用的一种重传技术,虽然也是重传,但是其和HARQ 重传的内容不一样

      

        这篇重点讲一下三ARQ 技术

    关键字

       HARQ:Hybrid Automatic RepeatRequest 混合自动重传请求。

       ARQ :Automatic Repeat  Request

       FEC: Forward Error correction

       ack: acknowledgements

    目录

    1.    RLC 层简介
    2.    RLC数据传输模式
    3.    RLC重新排序( PDU reordering)   
    4.    RLC  ARQ 
    5.    几个简单例子


    一 RLC 层简介

        

      1.1  RLC 层主要功能


     1.2 entitly 分类

        TM  entitly:

             透传(BCCH|PCCH|CCCH

       UM  entitly

             The UM can be configured for DL/UL DTCH and UL CCCH logical channels.

     实现RLC 所有的功能除了重传以及重新分段

    发送的时候,RLC SDU 先分段,连接. 加上一个头,头主要包括 Sequence number, length indicator, 

    接收的时候,把头再去掉

     AM entitly

     

    传输AM实体时,执行以下操作:

    ■ 传输缓冲器中的SDU被分段或级联。

    ■ 在每个PDU添加RLC报头

    ■ RLC PDU也被放置在重传缓冲器中用于重传。

    ■ 当收到ACK时,来自重传缓冲器的数据被清除。

    ■ 在NACK接收中,发送实体调度重传。

    ■ 在重传期间可以进行重新分段,并且每个分段可以作为单独的PDU传输。

    接收AM实体时,执行以下操作:

    ■ 接收到的RLC PDU累积在AM缓冲器中并执行重新排序,并将完整的SDU传递给上层


     二  RLC数据传输模式

        

          2.1  TM data transfer

           TM模式中:

           RLC层充当缓冲器,仅向较低层传输SDU,无需修改。类似地,当从较低层接收到新的PDU时,它将相同的PDU发送到较高层而不进行修改。TM模式下不发生重传

          2.2 UM data transfer mode

             

           在UM中,数据不需要来自另一方的任何接收ACK|NACK响应。

          发射机端UM模式的功能包括:  分段、级联和添加UM报头。

          接收机端UM模式的功能:

            包括重新排序、RLC报头移除和RLC SDU重新组装。由于HARQ重传而接收的PDU可能出现故障,因为它们使用序列号重新排序。UM模式下没有重传。

       2.3 AM data transfer mode

             主要概念: ACK|NACK, 轮询,RLC窗口

        发送机

               对上层的数据执行 分段|级联后,添加Header(SN,length),再创建一个副本放在重传缓冲器。如果RLC获得NACK或在一定时间内未从另一方获得任何响应,则重传缓冲器中的RLC分组(也称为RLC PDU)将再次传输。如果RLC获得ACK,则丢弃重传缓冲区中的那些。

              RLC AM发送实体将控制PDU的发送优先于数据PDU,并且将数据PDU的重传优先于新PDU的传输。在重传过程中,如果完整的PDU能够适应所通告的大小,则会重传PDU。否则,执行重新分段;单个PDU被划分为多个PDU段,每个段具有RLC报头,并被发送。

         接收机:

              重新排序、删除RLC报头、RLC SDU重组和发送状态PDU。由于接收到的PDU由于HARQ和ARQ级重传而出现故障,因此执行重新排序并将最终SDU发送到上层。发送状态PDU以指示PDU是在接收机侧被正确接收还是丢失。


    三 RLC重新排序( PDU reordering)   

          3.1 UM  数据传输例子

          

    3.2 AM 例子


     四  RLC  ARQ 

         4.1 ARQ  程序

            自动重复请求(ARQ)也称为自动重复查询,是一种用于数据传输的错误控制方法,其使用确认(ACK|NACK)和超时(在接收到确认之前允许经过的指定时间段)来在不可靠的服务上实现可靠的数据传输。如果发送方在超时之前没有收到确认,它通常会重新发送帧/数据包,直到发送方收到确认或超过预定义的重传次数。当发送侧RLC实体开始轮询过程时,RLC中的ARQ进程启动。

     4.2 ARQ procedures – polling

    轮询过程触发来自接收侧AM RLC实体的STATUS报告。发送侧AM RLC实体在以下条件下启动轮询过程:

    ■ AMD PDU数量>=轮询PDU

    ■ AMD PDU数据的字节数>=pollByte

    ■ 传输和重传缓冲器都变空

    ■ 无法传输新的RLC数据PDU

    ■ 当发送AM RLC实体轮询其对等接收AM RLC时,RLC PDU报头的P字段设置为1

    注:pollPDU和pollByte由上层配置。

    4.3 ARQ procedures – status reporting

    STATUS PDU向对等实体提供RLC PDU或PDU段的ACK或NACK。RRC配置状态禁止功能是否用于AM RLC实体。状态PDU可在以下情况下触发:

    ■ 接收到来自对等实体的轮询。

    ■ 检测RLC数据PDU的接收失败(t-重新排序定时器到期)

    ■ 计时器t-StatusProhibit

    ■ 当t-StatusProhibit计时器正在运行时,STATUS PDU无法发送到下层。

    ■ 当STATUS PDU被发送到低层时,t-StatusProhibit被重新启动。

    ■ t-StatusProhibit由上层配置。

    4.4 ARQ procedures – retransmission

         ACK_SN:

         当发送侧RLC AM实体仅接收到具有ACK_SN的STATUS PDU时,它假设接收侧RLC已接收到SN

        例如,如果接收到ACK_SN=4 的STATUS PDU。这表示接收侧已正确接收到序列号为3的PDU。现在可以从发送侧重传缓冲器中删除这些PDU。

        NACK:

         收到这个需要重传PDU,直到达到最大重发阈值

         AMD PDU的NACK可通过以下方式接收:

            ■ 来自对等方的PDU状态

            ■ 传输MAC的HARQ传递失败

            ■ 在接收到NACK时,如果PDU的SN落在传输窗口内,它将考虑为其接收NACK的PDU进行重传

        具有分段的AMD PDU的重传中,如果要重传的AMD PDU不符合在特定传输机会下由低层指示的RLC PDU的总大小,RLC可以对AMD PDU进行分段。

         在分段AMD PDU的重传中,如果要重传的AMD PDU段的一部分不符合特定传输机会下RLC PDU的总大小,RLC可以对AMD PDU-段部分进行重传。

         当形成新的PDU段时,只有原始PDU的数据字段映射到新的PDU段,并相应地设置header

     


    五  几个简单例子

         5.1 分段例子:

                 

           小数据传输为什么更容易成功: 墨菲定律

           假设传输100 bits,  以及50bit两种方案 。每个Bit 成功的概率为99%,失败的概率为1%

            整个PDU成功的概率为0.99^{100}<0.99^{50}

    AMD PDU format-

    ----------发送方----------------

    Header 标志位含义

           D/C-Data Control:

                  1bit  Indicates whether PDU is data or control data

          RF-Resegmentation Flag:

                    1bit:  indicates whether PDU is AMD 

          P- Polling

                    1bit:  Indicates whether or not transmitting side is requesting acknowledgement of reception

        LSF- Last Segment Flag

                   Indicates whether last byte of AMD PDU segment corresponds to last byte of AMD PDU

       SO-Segment offset 

             15bits: indicates position of AMD PDU Segemnt within original AMD PDU

    -------------Status PDU format------------- 接收方回复ACK|NACK

    ACK_SN:

             Indicates SN of next not-received RLC PDU ,which is not reported as missing in status PDU

     

    SOstart- Segment offset start 

             Indicates position of first byte of AMD PDU segment within data field of AMD PDU

    CPT- Control PDU Type

          Indicates type of RLC control PDU

    nack_SN:

            Indicates SN of AMD PDU that has losted ast receving side

      SOend 

          Indicates position of last byte of AMD PDU segment within data field of AMD PDU

       

    5.2 : Basic Poll Bit Handle

             上行发送的pdu:

              sn=x, poll bit =1(0 不反馈,1反馈)

             基站反馈

              ACK(SN=x+1)

              不反馈可能基站侧CRC校验出错

        5.3  RLC PDU with other SN can be transmitted while waitting for ACK|NACK

                     

            同时发送多个bit

            一个NACK包含多个SN,需要重传

       4.3 Retransmission due to t-poll Retransmit  timeout

     上行发送PDU, 超时后,还没有收到网络侧的ACK

    ,则重发该SN

    5.4  LTE 例子

      上行发送SN=731,P=1的PDU

     

    网络侧回复 ACK_SN=732

     

         ACK_SN=449

       备注: 这里面即使传输成功,依然会有一定概率是错误的,循环码的检错能力是由码距决定的。

    后面应用层依然需要进行CRC 校验

    在吞吐量测试的时候,我们可以通过NACK NUM 以及 RB cfg Idx 看到其对吞吐量的影响

     NR

       UE 上行发送SN1891,希望网络侧回复1892的ACK_SN


  • 相关阅读:
    【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间
    [附源码]计算机毕业设计springboot新能源汽车租赁
    ruoyi框架开发LOT项目
    以太网帧间隙IFG详解(Interframe Gap帧间距)
    Meta因露骨AI图片陷入困境
    28图图解Raft协议,so easy~~
    Springmvc中对请求的处理
    基于C51实现数码管的显示
    1031 Hello World for U
    前端git提交后菜单的配置
  • 原文地址:https://blog.csdn.net/chengxf2/article/details/127508115