欢迎关注同名微信公众号“modem协议笔记”。

UE有UL data时,会发送BSR的告知网络侧自己详细的请求,期望网络能够如期下发UL grant,正常情况下网络侧会给UE足够的UL grant去发送UL data,整个过程都会比较顺利。UE收到UL grant后,欣喜若狂,接下来要分配UL grant,但是很快就有一个难题摆在眼前,有时候UE侧会有很多逻辑信道有UL data发送,也就是UE需要将多个逻辑信道复用到一个MAC PDU中,这么多逻辑信道,手心手背都是肉,那怎么分?毫无疑问spec上给出了解决方式,答案在38.321 5.4.3.1Logical channel prioritization (LCP),这部分算是很久的内容了,整体逻辑和LTE一样。在配置之初,网络侧会为每个逻辑信道分配一个priority,进而可以决定多个逻辑信道的复用顺序。拥有最高priority的逻辑信道的data会被优先处理,高优先级逻辑信道的data会优先包含在MAC PDU中,接着是第二高priority的逻辑信道的data,直到分配的UL grant被全部用完或没有UL data要发送。

但是又有一个难题出现了,如果高priority的逻辑信道一直有UL data要发,那这个逻辑信道就会一直占用UL grant,其他逻辑信道无法发送自己的data,从而出现问题。和LTE一样,NR引入了Prioritized Bit Ratio(PBR)和Bucket Size Duration(BSD)的概念,即通过RRC信令配置各个逻辑信道参数时,提前为每个逻辑信道配置好各自的PBR及BSD,这样使得当前逻辑信道的的发送UL data增长到PBR×BSD时,其他待传输数据就不能再继续用UL grant,剩下的UL grant就要分配给其他低优先级的逻辑信道,PBR*BSD对应的就是每个逻辑信道的最小数据速率保证,从而保证了其他低优先级逻辑信道的QoS。由于这部分R17和R15相比,基本没有什么变化,只是多了几个参数,就直接看看R17 spec是怎么写的,都有哪些规定。

相关参数

logical channel prioritization过程中UL data调度的相关参数如下

priority: 逻辑信道的优先级,value对应1~16,value越小 优先级越高。

bucketSizeDuration(BSD): 单位是ms, ms5代表 5 ms, ms10代表 10 ms。

prioritisedBiteRate(PBR): 单位是kiloBytes/s,kBps0代表 0 kiloBytes/s ,kBps8代表 8 kiloBytes/s 依次类推,对于SRB,该值只能设置为infinity,如下,是实网环境下各个RB和逻辑信道之间的配置关系,SRB1的优先级通常是最高的,一般对应逻辑信道 id 1,只要有UL data 要发,所有的UL grant都会先分配给该逻辑信道,毕竟其他逻辑信道都是弟弟。

LCP 过程的控制参数如下

allowedServingCells 可以限制逻辑信道能够应用的服务小区。

allowedCG-List 用于限制可以configured grant的传输,具体看下面的RRC层参数的具体意义。

allowedPHY-PriorityIndex用于设定动态 grant传输 允许的PHY priority index。

allowedHARQ-mode:R17新增参数,对应uplinkHARQ-mode,可以用于控制允许的HARQ mode;uplinkHARQ-mode 可以控制enable/disable HARQ feedback,分别对应HARQmodeA/HARQmodeB,uplinkHARQ-mode介绍详见NTN(五)C-DRX。

allowedSCS-List规定了允许传输的SCS,maxPUSCH-Duration规定了传输的最大PUSCH duration,两个参数的设定与业务时延要求有关系,如果业务时延要求较短,可以将allowedSCS-List配置为较大SCS或将maxPUSCH-Duration配置为较小duration。

configuredGrantType1Allowed用于控制configured grant type 1是否可以用于上行传输。

allowedSCS-List、maxPUSCH-Duration 和 configuredGrantType1Allowed还与UE 能力挂钩,如下。

lcp-Restriction:指示 UE 是否支持根据 RRC 配置限制,使用 RRC 参数 allowedSCS-List、maxPUSCH-Duration 和 configuredGrantType1Allowed为每个 UL grant选择逻辑信道。

上述几个参数在RRC层具体描述如下:

maxPUSCH-Duration: 某个逻辑信道配置该参数的情况下,则对应的UL MAC SDU 只能使用PUSCH持续时间小于等于该字段指示时间的UL grant进行传输;不配置时,没有限制。

configuredGrantType1Allowed:针对URLLC业务,引入这个可以避免其他业务抢占URLLC业务的Configured Grant参数,配置的话 只能是True;如果有配置这个IE或UE不支持lcp-Restriction 能力,来自该逻辑信道的 UL MAC SDU 可以用configured grant type 1 传输。否则,来自该逻辑信道的 UL MAC SDU 不能用configured frant type 1 传输。

allowedCG-List:仅适用于 Configured UL grant场景,Configured grant场景会配置对应的ConfiguredGrantConfigIndexMAC。如果有配置该IE,则来自该逻辑信道的 UL MAC SDU 只能映射到该IE指示的Configred grant的配置。如果有配置该IE 但是没有配置任何ConfiguredGrantConfigIndexMAC,则来自该逻辑信道的 UL MAC SDU 不能映射到任何已配置的configured grant 配置上 。如果该字段不存在,来自该逻辑信道的 UL MAC SDU 可以映射到任何已配置的configured grant 配置上。如果字段 configuredGrantType1Allowed 存在,则只有在该List中有指示已配置configured grant type 1 才允许由该逻辑通道使用;否则,该list不应包括任何已配置的configured grant type 1配置。

allowedServingCells:针对重复传输(Duplication),引入了这个参数,用于限制重复内容在相同的小区传输,后面,allowedServingCells也被应用来限制逻辑信道能够应用的服务小区。所以这个参数配置时需要注意,如果与逻辑信道关联的 DRB/SRB有配置PDCP CA duplication (即PDCP entity与属于相同Cell group的多个RLC entity相关联),则该字段是强制存在的,其他情况该字段是可选配置的。如果有配置该参数,则来自该逻辑信道的 UL MAC SDU 只能映射到该列表中指示的服务小区。否则,该逻辑信道的 UL MAC SDU 可以映射到对应cell group中的任何已配置服务小区。重复传输详见NR PDCP duplication。

allowedPHY-PriorityIndex:此限制仅适用于动态grant 场景。R16 可以通过配置priorityIndicatorDCI =enable,使得DCI 0_1/0_2 带有1 bit的Prority indicator field,进而告知UE 该动态调度对应的priority,priority index 非0即1,具体如下图示;如果该字段存在并且动态grant具有对应的PHY priority index,则来自该逻辑信道的 UL MAC SDU 只能映射到指示PHY priority index等于该字段配置的值的动态grant。如果该字段存在并且动态grant没有 PHY priority index(即对应priority index 0),则如果该字段的值为p0,则来自该逻辑信道的 UL MAC SDU 只能映射到该动态 grant. 如果该字段不存在,则来自该逻辑信道的 UL MAC SDU 可以映射到任何动态 grant。

下面看下38.321 中UL grant的分配规则

UE为每个逻辑信道j 维护一个参数Bj,当某个logical channel j建立时,对应的Bj初始化为0。

在每次LCP 过程时,Bj增加PBR*T,其中T代表上次Bj增长后经过的时间;如果Bj>bucket size(PBR*BSD),则Bj=bucket size(PRB*BSD)。

这个bucket size(PBR*BSD)对应的是每一轮资源分配时,每个逻辑信道可以得到的最大的UL grant量。

Selection of logical channels

当UE有新传要执行时,要同时满足下面的条件的前提下才能为UL grant选择逻辑信道:

1 有配置allowedSCS-List时,allowedSCS-List 中允许的SCS index包括与 UL grant关联的SCS;

2 有配置maxPUSCH-Duration时,UL grant 的PUSCH 传输duration 要小于等于maxPUSCH-Duration配置的值;

3 confiuredGrantType1Allowed=true时,UL grant要对应Configured grant type 1;

4 allowedCG-List 包含对应UL grant的configured grant index;

5 allowedPHY-PriotityIndex 包含动态 UL grant 的priority index;

6 allowedServingCells 对应的是允许使用UL grant的cell info(这个参数不会用于CA duplication deactive的情况);

7 符合allowedHARQ-mode的要求。

上面七个条件是and的关系,对应参数有配置时才要考虑。

Allocation of resources

逻辑信道资源分配步骤如下。

step1:对于所有Bj>0的逻辑信道,按照优先级递减顺序排序。当某个逻辑信道的PBR配置成无穷大时,只有当这个逻辑信道的资源得到满足后,才会考虑比它优先级低的逻辑信道;其他情况每个逻辑信道每次可以分的的最大UL grant只能是bucket size=PRB*BSD。

step2:Bj减去逻辑信道j在步骤1中用到MAC PDU的所有MAC SDU的大小。

step3:如果前两步执行后仍有上行资源剩余,则把剩余的资源按照逻辑信道优先级分配给各个逻辑信道,而不再比较Bj的大小。只有当所有高优先级的逻辑信道的数据都发送完毕且UL grant还未耗尽时,低优先级的逻辑信道才能得到服务。两个逻辑信道优先级相同时,就要同等服务。

举个例子如上图,假如只有两个逻辑信道要有UL data要发送,对应的bucket size(BSD*PBR)分别为橘黄色部分和蓝色部分。第一种情况,UL grant只能满足逻辑信道1 的bucket size,就先把逻辑信道1 对应量的data 送出去,剩余的UL grant全部给逻辑信道2;第二种情况,UL grant 正好可以满足两个逻辑信道的bucket size 要求,就按照优先级高低,都装进去;第三种情况,UL grant 装满两个逻辑信道的bucket size后,还有剩余,这时候,只考虑优先级的高低,优先级高的先用,优先级低的后用,直到用完或者逻辑信道没有UL data 发时为止,所以先上逻辑信道1 的其他UL data,装走逻辑信道1的剩余UL data后,UL grant还有余量 再装逻辑信道2。

UE在UL调度时要遵守以下规定:

1 一个完整的RLC SDU(或分段传输的RLC SDU或重传的RLC PDU),如果剩余UL grant足以发送,UE就不能对它执行segment,这样也可以减轻网络侧接收的处理负担;

2 如果UE需要对RLC SDU执行分段,则要按照ul grant的余量,最大化segment 的size,以便达到尽可能减少RLC SDU segment的目的;

3 UE尽可能传输数据量大的RLC SDU;

4 如果UE MAC entity收到的UL grant >=8Bytes,且有UL data要传输,则MAC entity不能只传输Padding BSR和/或Padding,也应该包含相应的上行数据。

具体到逻辑信道,要按照以下顺序执行优先级过程,优先级顺序由高到底排列。

某些场景,网络侧和能力比较强的UE会达成共识,这样的UE收到 UL grant但是没有data发送时,就可以不发任何东西了,这样可以减轻UE的负担,网络侧也能省去一些麻烦,具体如下。

不生成MAC PDU的情况

SkipUplinkTxDynamic: UE没有UL data要传输时,如果支持该功能,UE就可以在这个UL grant的资源上不发任何data

enhancedSkipUplinkTxDynamic:如果UE没有UL data和UCI要发送时,如果支持该功能,UE就可以在这个UL grant的资源上不发任何data。

简单的说就是UE 没有UL data发,网络开了skip功能,UE也支持,那UE就可以skip;不支持的话UE就要在UL grant上加padding。

如果MAC配置了enhancedSkipUplinkTxDynamic=ture,同时UL grant是通过C-RNTI加扰的DCI 收到的,或对应的是configured UL grant,那HARQ entity满足以下条件,MAC entity就不会生成对应的MAC PDU:

1 此次PUSCH传输不需要发送aperiodic CSI;

2 MAC PDU没有MAC SDU,就是没有data要发;

3 MAC PDU只包括 periodic BSR,同时任何逻辑信道组(LCG)都没有可发送的数据,或MAC PDU只包括Padding BSR。

4 PUSSH 传输不存在UCI复用的情况

除了上面的情况,如果HARQ entity满足以下条件,MAC entity就不会生成对应的MAC PDU:

1 MAC配置了skipUplinkTxDynamic=ture,同时UL grant是通过C-RNTI加扰的DCI 收到的,或对应的是configured UL grant;

2 此次PUSCH传输不需要发送aperiodic CSI;

3 MAC PDU没有MAC SDU;

4 MAC PDU只包括 periodic BSR,同时任何逻辑信道组(LCG)都没有可发送的数据,或MAC PDU只包括Padding BSR。

这部分至此就结束了。回到最初的异常场景BSR->no UL grant->SR->no UL grant->trigger RACH->RAfail->RLF->RRC reestablishment,UE 收到UL grant后,要按照这篇中的规则办事,保证各个逻辑信道可以正常工作。但是BSR送出去后没有收到UL grant,最后触发了SR,如果又没有收到UL grant,这时候UE的内心或许无奈,或许又有点生气着急..... 那UE具体该怎么做?下篇SR再继续顺一遍spec中的内容。

UL grant的分配(LCP)相关推荐

  1. mysql grant权限分配(转)。

    https://blog.csdn.net/aggrelxf/article/details/6064445 转载于:https://www.cnblogs.com/hyry/p/11229725.h ...

  2. 5G NR - RLC协议阅读笔记 - 从LTE到NR的变化

    在讨论NR RLC相对于LTE做出的重大变化的How和Why之前,我们先来看下What. 通过对比LTE和NR协议,我们注意到UM和AM的处理流程图有三个重大改动,协议其余部分的区别都是围绕这几个改动 ...

  3. LTE MAC层令牌桶算法

    文章目录 引言 令牌桶算法概述 MAC令牌桶算法实现 参考文献 引言 LTE MAC层的一个重要的功能是从各个逻辑信道读取数据(MAC SDU),然后将它们封装成一个数据块(MAC transport ...

  4. LTE rach 分析

    LTE rach 分析 - 1st Time Access Msg1 (Rach.indication) :UE从RAPreamble 中随机选择preamble,计算RA-RNTI,在PRACH 上 ...

  5. LTE 测试文档(翻译)

    Testing Documentation 翻译 (如有不当的地方,欢迎指正!) 1 概述 为了测试和验证 ns-3 LTE 模块,文档提供了几个 test suites (集成在 ns-3 测试框架 ...

  6. 【5G】MAC BSR – Buffer Status Reporting

    博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G ...

  7. mysql里guest用户_MySQL用户权限分配

    mysql> grant 权限1,权限2,-权限n on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令'; 权限1,权限2,-权限n代表select,ins ...

  8. Oracle Synonym and Grant

    一.Grant 权限分配 1.授权 grant all on scott.emp to LK_TEST;--把emp所有表权限给与LK_TEST: grant select on scott.emp ...

  9. mysql的grant用法

    mysql的grant用法 GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD '*C242DDD213BE9C6F8D ...

最新文章

  1. 如何在Mac上加入adb服务
  2. MySql中怎样使用case-when实现判断查询结果返回
  3. mysql数据库整体备份和恢复_MySQL 数据库的备份和恢复
  4. 在 Windows 上测试 Redis Cluster的集群填坑笔记
  5. Bootstrap 表单的动作按钮
  6. 想学高级软件测试去哪里学,软件测试要学多久
  7. android测试空指针什么意思,Android神秘的空指针异常
  8. linux help
  9. 8.卷2(进程间通信)---读写锁
  10. FISCO BCOS 跨链WeCross ppt
  11. 《一天搞懂深度学习》--李宏毅
  12. PHP调用京东联盟接口以及配置签名
  13. 【Code】8位编程语言的创始人,你知道几位?
  14. WiFi 802.11可调参数说明---分片阈值(fragmentation threshold)
  15. Android无障碍服务( Accessibility Service)应用
  16. n张图像合成一个长图
  17. python爬取百度迁徙动态图_爬取动态图片—以百度图片为例
  18. ALCOA+CCEA原则(数据完整性标准)
  19. [导入]山寨也疯狂:前卫手表造型 Cool G108 Watch手机亮相
  20. Audio声音模式定制--声音大小定制

热门文章

  1. 论文编辑与投稿——word另存PDF显示“错误!未找到引用源”的解决方案
  2. 个人所得税计算器 微信小程序开发 计算差值方法
  3. Spark 数据倾斜介绍_大数据培训
  4. 用kotlin方式打开《第一行代码:Android》之开发酷欧天气(1)
  5. 【数据结构】采用邻接矩阵表示法创建无向网、无向图、有向图、有向网
  6. html原生轮播图的实现,使用原生js实现点击切换图片(轮播图)效果
  7. python如何查看函数功能_python如何查看类的函数
  8. Office-001 Word中如何插入章节Chapter?
  9. 的确,人在做,天在看
  10. 编程中无穷大的设定 很多人可能设为0x7fffffff,这个数的确是32-bit int的最大值,符号位为0,其他的都是1 但在很多情况下,0x7fffffff会出现错误,比如溢出,这样两个无穷大数相