参考文档:
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
目录
一 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成功的概率为 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