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传输协议的并 ...
随机推荐
- pyqt(day2)
一.安装python 二.安装pyqt5 pip install pyqt5 三.安装pycharm 四.第一个pyqt程序 import sys from PyQt5.QtWidgets impor ...
- poi导出word表格
代码如下: package com.ksource.pwlp.util; import java.io.FileOutputStream; import java.math.BigInteger; i ...
- buddo源码分析-transport组件之Netty(一)
dubbo 2.5.10 版本,netty仍然使用的是netty的3.10.5版本,我们从下面的代码可以看出,SPI默认使用的是“netty”,而不是“netty4”. package com.ali ...
- 多线程--同步--方法块和同步块synchronized
package com.sxt.syn; /** * 线程安全: 在并发时保证数据的正确性.效率尽可能高 * synchronized * 1.同步方法 * 2.同步块 * * */ public c ...
- 如何在nginx下实现访问web网站密码认证保护的功能
在某些特定的环境下,我们希望nginx下的web站点在访问时需要用户输入账户密码才能访问.以便拒绝那些不速之客. 其实,配置起来也很简单,按照下面的步骤即可实现. 一.编辑虚拟主机配置文件. serv ...
- Vue 自定义按键修饰符
如点击F2 触发某个事件 <input type="button" name="" id="" value="添加" ...
- jQuery 取值操作
模板使用: https://startbootstrap.com/themes/sb-admin-2/ 使用的 bootstrap 模块 ,上面的这个网站可以下载 select 取值 <sele ...
- java.lang.ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect
添加这个依赖 <dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystr ...
- 文档工具的王者Sphinx
Sphinx https://www.sphinx.org.cn/ Sphinx是一个工具,可以轻松创建由Georg Brandl编写并根据BSD许可证授权的智能和美观文档 它最初是为Python文档 ...
- k8s记录-node组件部署(十)
1)CA 证书配置登录 192.168.0.1 app 用户下cd ssl/kubernetes#注意修改 KUBE_HOME,BOOTSTRAP_TOKEN #与 3.5 3)token 一致,KU ...