5G和LTE中的HARQ协议
LTE中有两种重传机制:MAC层的HARQ机制,以及RLC层的ARQ(只针对AM(aknowledgement mode确认模式)数据传输)机制。
HARQ:
HARQ(HybridAutomatic Repeat reQuest混合自动重传请求),是一种结合FEC(ForwardError Correction,前向纠错)与ARQ(Automatic RepeatreQuest)方法的技术。
FEC通过添加冗余信息,使得接收端能够纠正一部分错误,从而减少重传的次数。
对于FEC无法纠正的错误,接收端会通过ARQ机制请求发送端重发数据。接收端使用检错码,通常为CRC校验,来检测接收到的数据包是否出错。如果无错,则接收端会发送一个肯定的确认(ACK)给发送端,发送端收到ACK后,会接着发送下一个数据包。如果出错,则接收端会丢弃该数据包,并发送一个否定的确认(NACK)给发送端,发送端收到NACK后,会重发相同的数据。
前面介绍的ARQ机制采用丢弃数据包并请求重传的方式。虽然这些数据包无法被正确解码,但其中还是包含了有用的信息,如果丢弃了,这些有用的信息就丢失了。通过使用HARQ with softcombining(带软合并的HARQ),接收到的错误数据包会保存在一个HARQ buffer中,并与后续接收到的重传数据包进行合并,从而得到一个比单独解码更可靠的数据包(“软合并”的过程)。然后对合并后的数据包进行解码,如果还是失败,则重复“请求重传,再进行软合并”的过程。
根据重传的比特信息与原始传输是否相同,HARQ with softcombining分为chase combining和incrementalredundancy(增量冗余)两类。chase combining中重传的比特信息与原始传输相同;incremental redundancy 中重传的比特信息不需要与原始传输相同。LTE中只使用incremental redundancy机制。
只有DLSCH和ULSCH传输支持HARQ,其他信道不支持HARQ。
HARQ process:
HARQ使用stop-and-waitprotocol(停等协议)来发送数据。
在停等协议中,发送端发送一个TB后,就停下来等待确认信息。接收端会使用1比特的信息对该TB进行肯定(ACK)或否定(NACK)的确认。但是每次传输后发送端就停下来等待确认,会导致吞吐量很低。因此LTE使用多个并行的stop-and-wait process:当一个HARQprocess在等待确认信息时,发送端可以使用另一个HARQ process来继续发送数据。
这些HARQ process共同组成了一个HARQ实体(HARQ entity),这个实体结合了停等协议,同时允许数据的连续传输。
每个UE都有一个HARQ实体。但在载波聚合中,一个UE对应每个载波单元(Component Carrier)都有各自的HARQ实体。
每个HARQ process在一个TTI只处理一个TB(TransportBlock,传输块)。
每个HARQ process在接收端都需要有独立的HARQbuffer,以便对接收到的数据进行软合并。
在空分复用中,一个TTI会并行传输2个TB,此时每个TB有各自独立的HARQ确认信息,1个HARQ实体包含2个HARQprocess集合。
HARQ相关概念:
HARQ process number:也称为HARQprocess ID,唯一地指定一个HARQ process。
NDI:New Data Indicator的缩写。每个HARQprocess会保存一个NDI值,该值使用1比特来指示被调度的数据是新传还是重传。如果同一HARQ process的NDI值与之前相比发生了变化(NDItoggled),则表示当前传输是一个新的TB的初传,否则(NDI not toggled)表示当前传输是同一个TB的重传。
RV:Redundancy Version的缩写。用于指示传输所使用的冗余版本,其取值范围为0~3。
MCS:Modulation and CodingScheme的缩写。DCI使用5比特的MCSindex(0~31)来指示当前传输所使用的调制和编码样式,并影响到TBS的选择。MCS共计32种组合,其中3种组合(索引为29~31)是预留的,且这3种组合只用于重传。
同步/异步、自适应/非自适应
HARQ协议在时域上分为同步(synchronous)和异步(asynchronous)两类;在频域上分为自适应(adaptive)和非自适应(non-adaptive)两类。
异步HARQ(asynchronousHARQ)意味着重传可以发生在任一时刻,也意味着能以任意顺序使用HARQ process。同步HARQ(synchronousHARQ)意味着重传只能在前一次传输之后的固定时刻发送,也意味着某个特定的子帧,只能使用某个特定的HARQ process。
同步HARQ的好处在于HARQprocess号可以直接从系统帧号/子帧号中推导出来,而无需显式地发送HARQ process number;异步HARQ的好处在于重传调度更加灵活。
自适应HARQ(adaptiveHARQ)意味着可以改变重传所使用的PRB资源以及MCS。非自适应HARQ(non-adaptiveHARQ)意味着重传必须与前一次传输(新传或前一次重传)使用相同的PRB资源和MCS。
在LTE中,下行使用异步、自适应HARQ;上行使用同步HARQ,但重传可以是自适应的,也可以是非自适应的。
5G和LTE中的HARQ协议的更多相关文章
- Android 中多点触摸协议
http://blog.csdn.net/zuosifengli/article/details/7398661 Android 中多点触摸协议: 参考: http://www.kernel.org/ ...
- C# WCF学习笔记(二)终结点地址与WCF寻址(Endpoint Address and WCF Addressing) WCF中的传输协议
URI的全称是 Uniform Rosource Identifire(统一资源标识),它唯一标识一个确定的网绐资源,同时也表示资源所处的位置及访问的方式(资源访问所用的网络协议). 对于Endpoi ...
- 详解Objective-C中委托和协议
Objective-C委托和协议本没有任何关系,协议如前所述,就是起到C++中纯虚类的作用,对于“委托”则和协议没有关系,只是我们经常利用协议还实现委托的机制,其实不用协议也完全可以实现委托. AD: ...
- PHP中的http协议
PHP中的http协议 http协议基本组成 报文:用于Http协议交互的信息 请求行:包括请求的方法,URL和HTTP协议版本 状态行:包括响应结果的状态码,状态描述和Http版本 首部字段:包括请 ...
- springboot中通过cors协议解决跨域问题
1.对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现. 针对跨域问题,我们可能第一个想到的解决方案就是jsonp,并且以前处理跨域问题我基本也是这么处 ...
- objective-C中的"非正式协议"和“正式协议”
objective-C中的接口与泛型 先承认我是标题党,因为在obj-c的世界中,官方根本没有"接口"与"泛型"这样的说法. 不过在obj-c中有二个与之接近的 ...
- LTE 中基于X2的切换
LTE 中基于X2的切换 (36.300, 23.401)SGW 保持不变 http://blog.sina.com.cn/s/blog_673b30dd0100j4pe.html 1:eNod ...
- Java中的UDP协议编程
一. UDP协议定义 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...
- Python中的端口协议之基于UDP协议的通信传输
UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) 3.利用socketserver模块实现udp传输协议的并 ...
随机推荐
- 【Beta阶段】第十次Scrum Meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #69 后端文档https://github.com/rRetr0Git/rateMyCourse/issues/69 网站测试.推广 牛宇 ...
- [2019BUAA软件工程]个人期末总结感想
写在前面 经过一学期对于软件工程的学习,笔者完成了一次结对编程以及三个周期的敏捷开发流程.在本博客中笔者对于一学期的学习进行了总结,并对于自己最初的疑惑做出了回答. 笔者在学期开始前应课程要求 ...
- 一分钟理解什么是REST和RESTful
从事web开发工作有一小段时间,REST风格的接口,这样的词汇总是出现在耳边,然后又没有完全的理解,您是不是有和我相同的疑问呢?那我们一起来一探究竟吧! 就是用URL定位资源,用HTTP描述操作. 知 ...
- 真机调试No target device的解决(android studio)3.4.1
驱动等都正常,手机连接正常.但是还是报错 搜索到如下办法成功解决:adb未启动或启动失败,这时候选择android studio界面底端的logcat,会自动重启adb.
- mysql判断表字段或索引是否存在,然后修改
判断字段是否存在: DROP PROCEDURE IF EXISTS schema_change; DELIMITER // CREATE PROCEDURE schema_change() BEGI ...
- redhat 6安装python 3.7.4报错ModuleNotFoundError: No module named '_ctypes' make: *** [install] Error 1
问题描述: 今天在测试环境中,为了执行脚本,安装下python3命令,在执行make install的时候报错: ModuleNotFoundError: No module named '_ctyp ...
- RedHat 7关闭防火墙方法
1.在之前的版本中关闭防火墙等服务的命令是 service iptables stop /etc/init.d/iptables stop 2.RHEL7开始,使用systemctl工具来管理服务程序 ...
- git rebase使用场景
1. 当前分支落后拉取后,整理commit,使得提交历史为直线 git pull = git fetch + git merge git pull --rebase = git fetch + git ...
- npm 加速之 yarn cnpm pnpm
npm 加速之 yarn cnpm pnpm 有没有感觉到使用 npm 的时候很慢? 安装速度 几Kb/s 不说, 还装着装着出错了, 奇奇怪怪的问题.这种情况大多数还是因为网络的原因, 很多时候虽然 ...
- java Random 随机重排
将一个数组或序列随机重新排列. /** * Created by xc on 2019/11/23 * 随机重排 */ public class Test7_7 { public static voi ...