UL grant的分配(LCP)
欢迎关注同名微信公众号“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)
欢迎关注同名微信公众号“modem协议笔记”。 UE有UL data时,会发送BSR的告知网络侧自己详细的请求,期望网络能够如期下发UL grant,正常情况下网络侧会给UE足够的UL grant去发送UL data,整个过程都会比较顺利。UE收到UL grant后&a…...

真我air笔记本电脑怎么重装Win10系统?
真我air笔记本电脑怎么重装Win10系统?最近真我air笔记本电脑挺多用户购买的,因为这款电脑性价比比较高,适合学生和一些办公人员来使用。但是系统预制了Win11系统,有用户想要将系统重装到Win10来使用。那么如何去进行系统的重装呢&…...

【闲聊杂谈】深入剖析SpringCloud Alibaba之Nacos源码
Nacos核心功能点 服务注册 Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中; 服…...
MySQL删除或清空表内数据的方法
MySQL删除或清空表内数据的方法 一、使用MySQL清空表数据命令:truncate SQL语法为: truncate table 表名注意: truncate该命令会直接将数据表内数据清空;truncate该命令删除数据后会重置Identity(标识列、自增字段…...
Android 权限(二): 动态权限讲解
1. 前言 继上一篇文章说到Android权限汇总, 请移步笔者的文章Android 权限(一):权限大全_broadview_java的博客-CSDN博客_android 仅使用中允许权限 先要理清楚权限分类和定义,本篇文章继续说一下动态权限的申请和框架层的实现流程, 以及如何实现赋予系统应用默认的…...

【C++】2.类和对象(上)
1.面向过程和面向对象 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 2.类的引入…...

扬帆优配|3300点半日游!上证指数冲高回落;再迎重磅利好!
今天早盘,A股冲高回落,上证指数3300点得而复失,深证成指也于12000点无功而返。 盘面上,煤炭、钢铁、房地产、才智政务等板块涨幅居前,酿酒、酒店餐饮、日用化工、IT设备等板块跌幅居前。北上资金净流入7.77亿元。 房地…...

如何编写性能测试计划?一篇文章教你设计符合项目的性能测试计划
上篇文章,我们讲过性能测试计划,接下来我们就来讲讲如何设计符合项目的性能测试计划。到上篇为止,我们了解了性能测试计划中包含的内容,但是,这个颗粒度,我觉得作为一名测试经验不够丰富的性能工程师来说&a…...
第3章 Windows 下安装 Memcached教程
官网上并未提供 Memcached 的 Windows 平台install 包,咱们可以使用以下链接来download ,需要根据自己的去下载: 点击下载 在 1.4.5 版本以前 memcached 可以作为一个服务install ,而在 1.4.5 及之后的版本删除了该功能。因此咱…...
RXjava中的操作符
要使用Rxjava首先要导入两个包,其中rxandroid是rxjava在android中的扩展 implementation io.reactivex:rxandroid:1.2.1implementation io.reactivex:rxjava:1.2.0Rxjava中的操作符 创建型操作符 interval 创建一个按固定时间间隔发射整数序列的Observable…...

前端页面jquery规范写法
使用最新版本的 jQuery 最新版本的 jQuery 会改进性能和增加新功能,若不是为了兼容旧浏览器,建议使用最新版本的 jQuery。以下是三条常见的 jQuery 语句,版本越新,性能越好: $(.elem) $(.elem, context) context.find(.elem) 结果 1.6.2 版执行次数远超两个老版本。 jQ…...

【HEC-RAS水动力】HEC-RAS 1D基本原理(恒定流及非恒定流)
一、数据说明 HEC-RAS模型主要由工程文件 (.prj) 文 件 、 河道地形数据文件 ( .g01)、运行文件(p01)、非恒定流文件 ( .u01) 等部分组成。 1. 一般数据 在创建并保存project文件(*.prj)后,其他data文件均会自动以同样的名字保存,但采用不同的后缀来区分各类文件。 &qu…...

2.Gin内容介绍
目录 参考 主要内容 关于Web 创建项目 为什么要用框架 Gin框架介绍 Gin框架安装与使用 安装 第一个Gin示例: RESTful API Gin渲染 HTML渲染 自定义模板函数 静态文件处理 使用模板继承 补充文件路径处理 JSON渲染 XML渲染 YMAL渲染 protobuf渲染…...

python--matplotlib(3)
前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制作的图形达到出版级的标准。 其他matplotlib文章 python--matpl…...

从源码中探究React中的虚拟DOM
引文 通过本文你将了解到 什么是虚拟DOM?虚拟DOM有什么优势?React的虚拟Dom是如何实现的?React是如何将虚拟Dom转变为真实Dom? 一、概念 虚拟DOM实际上是一种用来模拟DOM结构的javascript对象。当页面变化的时候通过一种算法来…...
容器架构概述
文章目录1. 介绍容器历史2. 描述 Linux 容器架构3. Podman 管理容器1. 介绍容器历史 近年来,容器迅速流行起来。然而,容器背后的技术已经存在了相对较长的时间。2001年,Linux引入了一个名为VServer的项目。VServer 是第一次尝试在高度隔离的…...
掌握MySQL分库分表(四)分库分表中间件Sharding-Jdbc,真实表、逻辑表、绑定表、广播表,常见分片策略
文章目录什么是ShardingSphere-JDBC?Sharding-Jdbc常见概念术语数据节点Node真实表逻辑表绑定表广播表数据库表分片(水平库、表)分片键 (PartitionKey)行表达式分片策略 InlineShardingStrategy(必备)标准分片策略Stan…...

2022-06-16_555时基的迷人历史和先天缺陷!
https://www.eet-china.com/news/magazine220608.html 555时基的迷人历史和先天缺陷! 发布于2022-06-16 03:39:12 LARRY STABILE 流行数十年的555时基,业内不知晓的工程师应该寥寥无几!几乎所有的数字电路教材中,都有该芯片的身影…...
SpringBoot 基础知识汇总
一、环境准备Java:Spring Boot 3.0.2 需要 Java 17,并且与 Java 19 兼容Maven:Apache Maven 3.5 或更高版本兼容二、启动器以下应用程序启动器由 Spring Boot 在该组下提供:org.springframework.boot表 1.Spring 引导应用程序启动…...
centos7下用kvm启动Fedora36 Cloud镜像
环境 os:centos7 Arch: aarch64 安装qemu-kvm yum install qemu-kvm kvm virt-install libvirt systemctl start libvirtd.service创建镜像 下载aarch64架构的Fedora36镜像 wget https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/36/Cloud/aarch64/images/Fedora-Cl…...
JAVA开发代码小工具集合
目录 前言编号生成工具EasyExcel 工具断言工具HTTP 工具字符串 工具验证码生成工具Excel 工具Class 工具Enum 工具分页工具断言工具2IP 地址工具Map 工具 前言 这些工具都是日常开发中能用到的,前后端都有,觉得好用就拿过来了… 编号生成工具 import j…...

获取 OpenAI API Key
你可以按照以下步骤来获取 openai.api_key,用于调用 OpenAI 的 GPT-4、DALLE、Whisper 等 API 服务: 🧭 获取 OpenAI API Key 的步骤: ✅ 1. 注册或登录 OpenAI 账号 打开 https://platform.openai.com/ 使用你的邮箱或 Google/…...

抽奖系统核心——抽奖管理
目录 前端逻辑: 核心全局变量: reloadConf函数: nextStep函数: 后端实现: 抽奖接口: Controller层: Service层: MqReceiver: drawPrizeService: statusConvert()方法: activityStatu…...

构建 MCP 服务器:第 4 部分 — 创建工具
这是我们构建 MCP 服务器的四部分教程的最后一部分。在第一部分中,我们使用基本资源创建了第一个 MCP 服务器。第二部分添加了资源模板并改进了代码组织。在第三部分中,我们添加了提示符并进一步完善了服务器结构。现在,我们将通过添加工具来…...
《前端面试题:JS数据类型》
JavaScript 数据类型指南:从基础到高级全解析 一、JavaScript 数据类型概述 JavaScript 作为一门动态类型语言,其数据类型系统是理解这门语言的核心基础。在 ECMAScript 标准中,数据类型分为两大类: 1. 原始类型(Pr…...
3.2 HarmonyOS NEXT跨设备任务调度与协同实战:算力分配、音视频协同与智能家居联动
HarmonyOS NEXT跨设备任务调度与协同实战:算力分配、音视频协同与智能家居联动 在万物互联的全场景时代,设备间的高效协同是释放分布式系统潜力的关键。HarmonyOS NEXT通过分布式任务调度技术,实现了跨设备算力动态分配与任务无缝流转&#…...
在 Windows 系统上运行 Docker 容器中的 Ubuntu 镜像并显示 GUI
在 Windows 上安装一个 X Server(如 VcXsrv 或 X410),Ubuntu 容器通过网络将图形界面转发到 Windows。 步骤: 安装 X Server: 推荐使用VcXsrv,免费开源。 安装后运行 XLaunch,选择࿱…...
华为仓颉语言初识:并发编程之同步机制(上)
前言 线程同步机制是多线程下解决线程对共享资源竞争的主要方式,华为仓颉语言提供了三种常见的同步机制用来保证线程同步安全,分别是原子操作,互斥锁和条件变量。本篇文章详细介绍主要仓颉语言解决同步机制的方法,建议点赞收藏&a…...
DeepSeek本地部署及WebUI可视化教程
前言 DeepSeek是近年来备受关注的大模型之一,支持多种推理和微调场景。很多开发者希望在本地部署DeepSeek模型,并通过WebUI进行可视化交互。本文将详细介绍如何在本地环境下部署DeepSeek,并实现WebUI可视化,包括Ollama和CherryStudio的使用方法。 一、环境准备 1. 硬件要…...

【笔记】旧版MSYS2 环境中 Rust 升级问题及解决过程
下面是一份针对在旧版 MSYS2(安装在 D 盘)中,基于 Python 3.11 的 Poetry 虚拟环境下升级 Rust 的处理过程笔记(适用于 WIN 系统 SUNA 人工智能代理开源项目部署要求)的记录。 MSYS2 旧版环境中 Rust 升级问题及解决过…...