当前位置: 首页 > news >正文

Buffer Status Reporting(BSR)

 

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

   以一个实网中的异常场景开始,大概流程是有UL data要发送,UE触发BSR->no UL grant->SR->no UL grant->trigger RACH->RACH fail->RLF->RRC reestablishment:简单描述就是UE触发BSR,此时没有UL grant,之后触发SR,仍然没有 UL grant,之后触发RACH,RACH fail引起RLF,引起RRC reestablishment;这个异常场景在弱信号情况下比较常见,其中涉及的具体内容其实是比较多的,这篇就看下BSR的内容,BSR 的内容主要在38.321 5.4.5章节。

     开始之前简单看下BSR和SR的区别:UE通过SR向gNB请求上行资源时,只指明了UE有上行数据需要发送,并没有指明需要发送的上行数据数量。而BSR的作用是将UE当前buffer中待发送的数据情况通知给gNB,gNB可根据BSR上报的UE buffer的数据量,给UE分配上行资源;换个角度看,UE发BSR时,是通过BSR MAC CE,既然能发BSR,肯定是有UL grant,足够发BSR,如果没有UL grant,UE要通过SR向gNB要UL grant,进而UE就要发送SR。接下来看看协议中是如何描述BSR的。

 

BSR相关的RRC层参数如下

d9d9f0d420b64991a01b205a8eda164e.png

logicalChannelSR-Mask:在配置configured uplink grant of type1 or type2 时用于控制SR 的触发。True代表对应logical channel有配置SR masking。

logicalChannelSR-DelayTimerApplied:用于指示是否对logical channel 应用SR 传输的delay timer;设置为false的话,BSR-Config中就不会包含logicalChannelSR-DelayTimer。

logicalChannelSR-DelayTimer:单位是subframe数,Value sf20 代表20 subframes, sf40 代表40 subframes,以此类推;该timer的作用顾名思义,就是在run期间不能触发SR。

periodicBSR-Timer:单位是subframe数, Value sf1 代表1 subframes, sf5 代表5 subframes,以此类推。

retxBSR-Timer:单位是subframe数, Value sf10 代表10 subframes, sf20 代表20 subframes,以此类推。

logicalChannelGroup:logical channel group的ID, 代表logical channel 对应的LCG ID。

 

说到参数LCG ID,那就顺带看下LC 和LCG的关系。实网下根据业务的不同,UE可能建立很多RB,如果为每一个逻辑信道(LC)上报一个BSR,会带来大量的信令开销。为了减少这种开销,和LTE相同,NR引入了逻辑信道组(LCG)的概念,不同的是,NR将LCG个数由LTE的4个扩展到了8个,以满足NR系统更多样的业务场景。所以UE是基于LCG上报BSR,而不是为每个逻辑信道上报一个BSR。而逻辑信道的分组是gNB的算法,逻辑信道分组也是为了提供更好的BSR上报机制,一般会将有相似调度需求的逻辑信道放入同一LCG中。例如将相同QCI/priority的逻辑信道放入同一LCG。如下图logical channel 4/2 分别对应的是LCG 7/0。

2cdba836f76f44ab9a575cff209442a8.png

既然UE的LCG和逻辑信道的配置是由gNB控制的,那gNB就知道每个LCG包含哪些逻辑信道以及这些逻辑信道的优先级。虽然gNB无法知道一个单独的逻辑信道的缓存状态,但由于同一LCG中的逻辑信道有着类似的QoS/priority需求,所以基于LCG上报BSR也可以在一定程度上满足业务的QoS需求。

 

下面是38.321中BSR的内容。

9cbbaded93f348e594f49604ff5b4191.png

 BSR是用于向serving gNB 提供 MAC entity中的 UL data volume信息的过程,之后gNB根据BSR 中的UL data volume及自身loading,向UE下发对应的UL grant,用于UE UL 传输。

与BSR相关的几个RRC层参数分别是periodicBSR-Timer;retxBSR-Timer;logicalChannelSR-DelayTimerApplied;logicalChannelSR-DelayTimer;logicalChannelSR-Mask;logicalChannelGroup。

每个logical channel 可以使用 logicalChannelGroup 分配到一个 LCG。 LCG 的最大数量为八个。

更具体的,MAC entity是根据 RLC和 PDCP中的data volume计算过程确定logical channel可用的 UL 数据量,用于BSR的上报。

 

BSR 触发场景(BSR的分类)

d8318c0ce835491c97818589ab2dcba5.png

(1)属于某个LCG的逻辑信道的有UL data要发送 ,并且该 UL data对应逻辑信道的优先级高于任何其他LCG有UL data要发送的逻辑信道的优先级或

当所有LCG 逻辑信道都没有UL data要发送时,某个LCG的逻辑信道有UL data要发送,在这种情况下触发的BSR叫做 regular BSR;

(2)为了避免UE发送了BSR却一直没有收到UL grant的情况,gNodeB为UE配置了一个retxBSR-Timer定时器,当retxBSR-Timer 超时并且某个LCG的至少一个逻辑信道有UL data要发送,在这种情况下触发的BSR也称为Regular BSR,目的是使得UE周期性地向gNB更新Buffer Status;

(3)考虑到当regular BSR、padding BSR的触发条件都不满足时,网络侧也能知道UE的buffer status,以便后续为UE分配适当UL grant,定义了在periodicBSR-Timer 超时,在这种情况下触发的BSR称为Periodic BSR。

(4)UL grant给多了,UL数据组包接收后,还有剩余bits没用完,就要在对应的资源上加padding(MAC需要用 0 来填充),那padding bits数大于等于BSR MAC CE 加上其subheader的大小时,触发的BSR叫做 padding BSR;

当多个逻辑信道同时触发Regular BSR时,每个逻辑通道各自触发一个独立的Regular BSR,最后UE根据LCG 确定具体的buffer上报BSR。接下来看下BSR MAC CE的结构。

BSR MAC CE

ee5eca8145554abb853929cd58ab9972.png

 如开头所述,为提高空口效率,BSR并不是为每个LC绑定一个BSR,而是为每个LCG绑定一个BSR,上报时以LCG为单位上报,如上图的LCG ID用于区分BSR。

257bf702063344af9acd193001157453.png    BSR MAC CE包含的类型分别是Short BSR/Long BSR/Short Truncated BSR/Long Truncated BSR,分别通过LCID 59~62进行区分。Pre-emptive BSR MAC CE用于IAB场景,不在本篇内容之内。

四种BSR MAC CE的发送与BSR的类型优先序,padding BSR 根据场景的不同可以上报上述四种BSR MAC CE;而Regular BSR和Periodic BSR 只能上报Short BSR/Long BSR MAC CE,具体内容后面再说。

 

short BSR/short Truncated BSR MAC CE

00301593fc2644e0acbd4549cb15534a.png

 short BSR和short Truncated BSR MAC CE的结构如上,分别由3 bits的LCG ID及5 bits的Buffer size组成,其中LCG ID对应的是BSR 上报的LCG id;

Buffer size代表PDCP和RLC的data volume 单位是bytes,其中RLC header和MAC subheader不在buffer size的计算范围内。

 

short BSR和short Truncated BSR MAC CE的Buffer size为5bits,对应0~31个value,分别代表不同的buffer size value,对应如下。

43cad340e4cb4774912c33ee11f5321e.png

 例如上报的Buffer size index 为18 ,就代表buffer size 实际value在(2014,2806]bytes之间,之后网络侧根据实际loading,下发对应的UL grant即可。

 

long BSR/long Truncated BSR MAC CE

1256bbd82f634f18a7491e0fbcb048d5.png

 从MAC CE的结构看LCGi 对应LCG0~LCG7;对于long BSR,当LCGi=1时,代表LCG i的Buffer size field 会上报,也就是BSR MAC CE中会包含其Buffer size field, 当LCGi=0时,代表LCG i 不会有Buffer size field上报,即BSR MAC CE中不会有其Buffer size field。 对于Long Truncated BSR,当LCGi=1时,代表LCG i 有pending size要发送, 当LCGi=0时,代表LCG i 没有pending size要发送,其实功能和long BSR类似。

long BSR/long Truncated BSR的Buffer size对应8bits,其Buffer size index范围是0~254(255 reserved),代表不同的bytes值。 Buffer size field 以LCG i升序排列(LCG 0~7) 。对于long Truncated BSR,Buffer size的大小有限制,不能超过padding bits数。

由于NR可配置8个LCG,如果将8个LCG缓存数据的大小全部上报给gNB,即使一些LCG中没有缓存数据,也会造成资源浪费,因此在NR中设计了可变大小的BSR格式。结合上面的描述可以看出,short 和long BSR 的区别就是short BSR的大小是固定的,long BSR 大小可变;其中,Truncated BSR是在上行资源不足以上报 normal BSR时,向网络侧上报部分LCG的信息。

 

BSR 上报流程

Regulat BSR 和Periodic BSR

5af3442387e0485f9146cb3b5e36b955.png

 对于Regular BSR,如果有logical channel 触发了BSR且有配置logicalChannelSR-DelayTimerApplied=true,那MAC entity要start/restart logicalChannelSR-DelayTimer;其他情况,不需要开启logicalChannelSR-DelayTimer,logicalChannelSR-DelayTimer有在running就要停止。

c9ecc878872442cf9d1d0eaee7f92a7b.png

 对于Regular BSR和Periodic BSR,当多于一个LCG有UL data 要传输时,对于有UL data传输的所有LCGs要上报Long BSR;否则,只有一个LCG有UL data要传输, 就上报Short BSR。

 

Padding BSR

16abeaa73964448fb5fd5f62162d1b5d.png

 对于Padding BSR,对应padding bits大于等于short BSR+subheader的size但是小于long BSR+subheader的size时,

1 恰巧当前不止一个LCG有UL data传输时

  1.1如果当前padding bits等于Short BSR+subheader,就report 有UL data要传输的最高优先级LC 的short Truncated BSR;

  1.2 当padding bits大于short BSR+subheader的size但是小于long BSR+subheader的size,就根据LCG 中LC的优先级降序的顺序上报Long Truncated BSR(如果出现优先级相同的情况,就根据LCGID升序的顺序上报)。

2 如果只有一个LCG有UL data传输时,就上报Short BSR。

padding bits大于等于long BSR+subheader的size时,就上报包含所有有UL data传输的LCG long BSR。

 

BSR cancel

092b77dc16554477a2471e387bd388b0.png

  当UL grant 足以用于传输所有pending的data但不够额外容纳 BSR MAC CE 及其subheader时,可以取消所有触发的 BSR。 当传输的MAC PDU包括long或short BSR MAC CE 时,应取消在 MAC PDU 组装之前触发的所有 BSR,因为此时的long或short BSR MAC CE对应的buffer status包含MAC PDU assembly之间触发的BSR内容。

 

其他规定

0406342fb36949e9bdf094816349d586.png

 当前至少一个BSR被触发且还没有取消时,如果当前的UL grant足够发送BSR MAC CE+subheader,就发送当前的生成功的BSR MAC CE,启动或重启 periodicBSR-Timer(所有生成的 BSR 都是long或 short Truncated BSR时 不需要开启periodicBSR-Timer),也要开启retxBSR-Timer。

a2877ec90f4447f7a53f68b3642b0b1a.png

 当前至少一个BSR被触发且还没有取消时,logicalChannelSR-DelayTimer没有run且触发了Regualer BSR:

1 当前没有UL grant进行传输;

2 对于configured ul grant的场景,在logicalChannelSR-Mask=false时触发了regular BSR(比如configured ul grant场景配置的UL grant 不够了,也要通过SR取要UL grant);

3 可用于新传输的 UL-SCH 资源不满足发送 经过LCP映射限制过程后的触发的BSR,意思就是UL grant不够发送BSR(LCP 过程其他篇再说);

上述情况就要触发SR,向网络侧要UL grant。

这里就是开篇 UE发送BSR后,没有收到UL grant 之后触发SR的理论依据。

55cb8de2b53840f7a60c29d83476809f.png

 即使多个事件已触发 BSR,一个MAC PDU最多应只能包含一个 BSR MAC CE。

 Regular BSR 和Periodic BSR 的优先级高于padding BSR,对于由retxBSR-Timer超时触发的BSR,MACentity 认为触发BSR的LC 的优先级是最高的。即retxBSR-Timer超时引起BSR的LC要优先处理。

MAC entity应在收到在任何 UL-SCH上传输新数据的UL grant后重新启动retxBSR-Timer。

de9fed2680c74302a822305f7d91d737.png

 上面这段描述并没有特别强制的问题,就描述了下对应情况允许的做法,就列在这里做个记录。

最后各个timer的汇总如下

012264530aeb42f39575ca5d98ae58b6.png

上面主要是根据开篇的那个异常常景,走读一遍协议中BSR的具体内容,后面针对这个异常场景中涉及的其他流程再看下相关协议内容;本篇结束,感谢阅读。

 

 

 

相关文章:

Buffer Status Reporting(BSR)

欢迎关注同名微信公众号“modem协议笔记”。 以一个实网中的异常场景开始,大概流程是有UL data要发送,UE触发BSR->no UL grant->SR->no UL grant->trigger RACH->RACH fail->RLF->RRC reestablishment:简单描述就是UE触…...

代码随想录LeetCode | 单调栈问题

前沿:撰写博客的目的是为了再刷时回顾和进一步完善,其次才是以教为学,所以如果有些博客写的较简陋,是为了保持进度不得已而为之,还请大家多多见谅。 预:看到题目后的思路和实现的代码。 见:参考…...

C++之可调用对象、bind绑定器和function包装器

可调用对象在C中,可以像函数一样调用的有:普通函数、类的静态成员函数、仿函数、lambda函数、类的非静态成员函数、可被转换为函数的类的对象,统称可调用对象或函数对象。可调用对象有类型,可以用指针存储它们的地址,可…...

MongoDB--》文档查询的详细具体操作

目录 统计查询 分页列表查询 排序查询 正则的复杂条件查询 比较查询 包含查询 条件连接查询 统计查询 统计查询使用count()方法,其语法格式如下: db.collection.count(query,options) ParameterTypeDescriptionquerydocument查询选择条件optio…...

网络协议(六):网络层

网络协议系列文章 网络协议(一):基本概念、计算机之间的连接方式 网络协议(二):MAC地址、IP地址、子网掩码、子网和超网 网络协议(三):路由器原理及数据包传输过程 网络协议(四):网络分类、ISP、上网方式、公网私网、NAT 网络…...

热启动预示生态起航的Smart Finance,与深度赋能的SMART通证

2023年初加密市场的回暖,意味着各个赛道都将在新的一年里走向新的叙事。最近,我们看到GameFi赛道也在市场回暖的背景下,逐渐走出阴霾。从融资数据上看,1月获得融资的GameFi项目共12个,融资突破8000万美元,1…...

提分必练,中创教育PMP全真模拟题分享

湖南中创教育每日五题分享来啦,“日日行,不怕千万里;常常做,不怕千万事。”,每日五题我们练起来! 1、在系统测试期间,按已识别原因的类型或类别记录了失败测试的数量。项目经理首先需要从最大故…...

PID控制算法基础介绍

PID控制的概念 生活中的一些小电器,比如恒温热水器、平衡车,无人机的飞行姿态和飞行速度控制,自动驾驶等等,都有应用到 PID——PID 控制在自动控制原理中是一套比较经典的算法。 为什么需要 PID 控制器呢? 你一定用…...

Ajax 学习笔记

一、Ajax1.1 什么是AjaxAJAX Asynchronous JavaScript and XML(异步的JavaScript和XML)。Ajax是一种在无需加载整个网页的情况下,能够更新部分网页的技术,它不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术…...

​力扣解法汇总1234. 替换子串得到平衡字符串​

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 有一个只含有 Q, W, E, R 四种字符,且长度为 n 的字符串。 假如在该…...

C++关键字之const、inline、static

C 关键字总结 1.const const是 constant 的缩写,本意是不变的、不易改变的意思。在C中用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数使用如下: //修饰普通类型变量 const int a 7; int ba;…...

【成为架构师课程系列】怎样进行概念架构(Conceptual Architecture)?

目录 前言 什么是概念架构 概念架构阶段的3个步骤 初步设计 高层分割 分层式概念服务架构 Layer:逻辑层 Tier: 物理层 按通用性分层 技术堆叠 考虑非功能需求 【禅与计算机程序设计艺术:更多阅读】 前言 胜兵先胜而后求战,败兵先站而后求胜。…...

PostgreSQL的下载安装教程(macOS、Windows)

postgresql是GIS服务端几乎不可避免要打交道的数据库。因为mysql的空间扩展真是不尽人意。所以想要学会GIS服务端知识,postgresql(下文简称pg)你是必须要会的。 首先要知道,pg是一个空间数据库,和普通数据库不同的是pg支持空间数据的存储与操作。这里所谓的空间数据一般指…...

98年的确实卷,公司新来的卷王,我们这帮老油条真干不过.....

都说00后躺平了,但是有一说一,该卷的还是卷。这不,前段时间我们公司来了个00后,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 …...

软件架构知识2-系统复杂度

架构设计的真正目的:是为了解决软件系统复杂度带来的问题,一个解决方案。 系统复杂度,如何入手: 1、通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。 2、架构设计并不是要…...

JavaSE学习day4_02 数组(超级重点)

3.数组 3.1什么是数组 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。 3.2数组定义格式 3.2.1第一种(常用) 数据类型[] 数组名 示例: int[] arr; double[] arr; char[] arr; 3.2.2第二种(在…...

Theano教程:Python的内存管理

在写大型程序时候的一大挑战是如何保证最少的内存使用率。但是在Python中的内存管理是比较简单的。Python显示分配内存,使用引用计数系统管理对象,当指向某一个对象的引用数变为 0 的时候,该对象所占的内存就会被释放。理论上听起来很不错&am…...

Linux | Liunx安装Tomcat(Ubuntu版)

目录 一、下载并上传Tomcat压缩包到Ubuntu 1.1 下载并解压 1.2 执行 startup.sh 文件 二、验证Tomcat启动是否成功 2.1 查看启动日志 2.2 查看启动进程 三、Windows访问 Tomcat 服务 四、停止 Tomcat 服务 Tomcat是一款Web服务器,开发Web项目基本上都会用到…...

缓冲区浅析

缓冲区 程序运行输入数据时,从键盘的输入先存储到缓冲区,只有当缓冲区满或者输入回车时程序才会真正地从缓冲区读入数据 int main() {int a, b;cin >> a >> b;return 0; }in: 1 2\n 例如这里输入空格时程序没有输出,而是将空格…...

Day888.MySQL是怎么保证主备一致的 -MySQL实战

MySQL是怎么保证主备一致的 Hi,我是阿昌,今天学习记录的是关于MySQL是怎么保证主备一致的内容。 MySQL 能够成为现下最流行的开源数据库,binlog 功不可没。 在最开始,MySQL 是以容易学习和方便的高可用架构,被开发人…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...