NR PDCP(二) format/parameters

news2024/11/17 5:29:42

这篇主要是PDCP PDU,PDCP Formats及其参数的含义, 收发过程中用到的变量,常量和定时器的总结,都是概念性描述。

PDU

24dc1eb6c95c417daab9d965190eb9fa.png

 和RLC 类似,PDCP PDU 也分为data pdu 和control PDU。PDCP data PDU 的data field对应的是user plane data ,control plane data和MAC-I 。

PDCP control PDU 的data field 对应的是PDCP status report ,interspersed ROHC feedback 和EHC feedback等信息。

 

Formats

7d2a551cccf24ea28c90f49a7a522158.png

 PDCP PDU 的长度对应的是8 bits倍数 bit string。其中最高有效位是表格第一行最左边的bit,最低有效位是最后一行最右边的bit,一般bit string是从左到右读取,然后从上到下按行的顺序读取。PDCP PDU 中每个参数 field 对应的bit 根据图中的位置确定即可。上面的描述是field的填写和读取原则,例如在填写和读取PDCP status report的FMC时,每一bit与COUNT对应关系。

PDCP SDU长度对应是8 bits倍数的bit string。压缩或未压缩的 SDU 从第一位开始就被包含在PDCP data PDU 中,如下图示。

b6b8438a868b494985be80c65512c6af.png

 下面是各个PDCP data PDU的结构图示,没有类似RLC的segement field ,也就是PDCP 不支持分段操作,因而PDCP PDU只有收到和未收到的说法。  

0d0649091642447192f143ff1228bb26.png

 74ddc7c5adcf432da933ae90b92f77fb.png

 df405b2d09bf409ea40f30524066b443.png

 7ffe854250f242808d4bdf00862bb5f5.png

 eedeeb92fc344a3e8e7e2e12a66c0ca5.png

 1bafb123234f4c5397759f4419976bf7.png

 85dd3d34ed4e4668b3fd94e32744e32d.png

 e3be073a154d4dedad0ea6d85127c5a4.png

 ab873cfd25514026b04ea260c8386baa.png

 

bcf835cdacbb43a0b02a737ff9d12b79.png

b818dd50105148dab7a497db0e2eefe7.png 

 

Parameters

接下来看下每个PDCP data PDU的结构中field的含义。通常每个字段的最左边bit是第一个bit 对应最高bit,最右边bit对应最低bit,以无符号整数的标准二进制编码进行编码。在所有情况下,在读取PDU时,这些bit都是从MSB到LSB进行的。

532d549f097b458c91f0d9497e0eacd4.png

 PDCP SN 长度对应 12或18 bits,通过RRC层参数配置,如上图DRB 的PDCP SN的bit数由RRC层配置的参数pdcp-SN-sizeUL/DL得到,UM和AM DRB可以配置为12 或18 bits,而SRBs只能是12 bits,所以配置SRB时不会带pdcp-SN-size。

ca5098ae937d4957bbaf9fe660368d14.png

Data field的长度根据实际发送的data长度确定,Data field可能对应未压缩的PDCP SDU,例如user plane data或control plane data;也可能对应压缩的 PDCP SDU,这时候只能是user plane data。除 PDCP PDU header和 MAC-I 之外的所有字段都属于data field的范畴。

85e463718c8841198950d6055b06a2eb.png

MAC-I 长度对应32 bits,该字段携带是按规定计算的消息验证码。

对于 Uu 口的 SRB,MAC-I 字段始终存在。如果未配置完整性保护,则 MAC-I 字段仍然存在,但应使用设置为 0 的填充位进行填充。

对于sidelink SRB1、SRB2 和 SRB3,仅当sidelink SRB1、SRB2 和 SRB3 配置了完整性保护时,MAC-I 字段才会出现。

对于 DRB(包括用于单播的sidelink DRB),只有当 DRB 配置了完整性保护时,MAC-I 字段才会出现。

c145c575f31d4ab4b54c2c936d9ef19d.png

 

COUNT长度对应32 bits,COUNT值由HFN和PDCP SN组成。HFN 部分的比特大小等于 32 bits减去 PDCP SN 的长度。

95288932d2224468837b0fa10715d955.png

 R field长度对应1bit,Reserved bit应设置为 0。接收端要忽略Reserved bits。

e222e75ce1394d1e9284d4916c1a7d89.png

 D/C长度对应1 bit,该bit用于确定PDCP PDU是Contro PDU(value 0)还是Data PDU(value 1)。

5bde60c3b36c4cd7a8a6dacda168f46e.png

PDU type长度对应 3bits,该field用于指示PDCP control PDU的type,'000'对应PDCP status report,‘001’对应interspersed ROHC feedback,‘010’对应EHC feedback,‘011-111’是reserved 值。

f16c00edd7454e0eb61e658add90caad.png

 FMC长度32 bits,FMC 代表First Missing COUNT,用于指示在reordering window中第一个 missing 的PDCP SDU的COUNT 值,也就是RX_DELIV的值。

88997dd9e35a4a668810fa6a4887762a.png

 Bitmap长度可变。bitmap字段的长度可以为 0。该字段指示在PDCP 接收端哪些 SDU 丢失以及哪些 SDU被正确接收。Bitmap中第Nbit位置就是N,例如Bitmap中第1bit的位置为1。bit value =0代表COUNT=(FMC+bit position)mod 2^32 的PDCP SDU 丢失,bit value =1代表COUNT=(FMC+bit position)mod 2^32 的PDCP SDU 被正确接收。

d813ddc16b0044138a2e04aaefe18090.png

 Interspersed ROHC feedback 长度可变,该字段包含一个仅有feedback的 ROHC packet,即与PDCP SDU无关的ROHC packet。

7f5c383b811141cfa79230e627bbc2f3.png

 SDU type长度为3bits,即PDCP SDU类型,PDCP entity可以根据 SDU type的不同处理 SDU,例如 ROHC 适用于 IP SDU,但不适用于 其他SDU type。这个SDU type用于sidelink 场景。

77e512d274e54a459b8f9539c65ee065.png

KNRP-sess ID长度为16 bits,用于sidelink场景,对于不需要完整性和加密保护的SLRB,UE应在PDCP PDU header中将KNRP-sess ID设置为“0”。

ced76f4807c54387a77ff3786c9bd487.png

 UDC feedback PDCP control PDU中的field,适用于 AM DRB。FE用于指示是否检测到checksum error。value“1”表示检测到checksum error,这时候UE 应reset compression buffer。

 

State variables, constants, and timers

PDCP entity 中使用的状态变量都是非负整数,取值范围为 0 到 [2^32 – 1]。

PDCP data PDU的SN要对2^[SN-size] 进行mod运算得到,对于UM和AM DRB,SN size可以配置为12 或18 bits,而SRBs只能是12 bits,SN的循环范围对应:0 到 [2^[pdcp-SN-SizeUL] – 1] 或 0 到 [2^[pdcp-SN-SizeDL] – 1] 或 0 到 [2^[sl-PDCP-SN-size] – 1]。

574d0f64e62f46a88916407522981a4d.png

 PDCP entity 发送端只要维护一个状态变量TX_NEXT,该状态变量指示下一个要传输的PDCP SDU 的 COUNT值。初始值为 0,除了配置有state variables continuation的 SRB。对于配置有state variables continuation的target SRB,初始值是存储在对应source SRB的PDCP entity中的值。对于配置了state variables continuation的 source SRB,初始值为对应 target SRB存储在PDCP entity中的值。

16b5c1a3aac647408ef74d68063fcf64.png

 接收PDCP实体为了进行正确的数据接收和窗口维护操作,需要维护下列状态变量和常量。

(1)RX_NEXT:该状态变量表示预期接收的下一个 PDCP SDU 的 COUNT 值。初始值为 0,除了sidelink广播和组播,以及配置有state variables continuation的 SRB。对于广播和组播的NR sidelink通信,RX_NEXT的SN部分的初始值为(x +1) modulo (2[sl-PDCP-SN-Size]),其中x是第一个收到的PDCP Data PDU的SN . 对于配置有state variables continuation的目标SRB,初始值是存储在对应源SRB的PDCP entity中的值。对于配置了state variables continuation的source SRB,初始值为对应目标SRB存储在PDCP entity中的值。对于用于广播和组播的 NR sidelink通信,由 UE 实现来选择 RX_NEXT 的 HFN 部分,以便使得RX_DELIV 的初始值是正值。

(2)RX_DELIV:该状态变量指示第一个PDCP SDU 未传送到上层但仍在等待的 COUNT 值,即重排序窗口的下边界。初始值为 0,除了sidelink广播和组播,以及配置有state variables continuation的 SRB。对于广播和组播的 NR sidelink通信,RX_DELIV 的 SN 部分的初始值为 (x – 0.5 × 2[sl-PDCP-SN-Size–1]) modulo (2[sl-PDCP-SN-Size]) ,其中 x 是第一个接收到的 PDCP data PDU 的 SN。对于配置有state variables continuation的目标SRB,初始值是存储在对应源SRB的PDCP entity中的值。对于配置了state variables continuation的source SRB,初始值为对应目标SRB存储在PDCP entity中的值。

(3)RX_REORD:此状态变量指示与触发 t-Reordering的 PDCP data PDU 关联的 COUNT 值下一个COUNT 值。 对于配置有state variables continuation的目标SRB,初始值是存储在对应源SRB的PDCP entity中的值。对于配置了state variables continuation的 source SRB,初始值为对应目标SRB存储在PDCP entity中的值。

(4)Window_Size:此常量指示reordering window的大小,等于SN取值空间的一半,当SN长度配置为12bit时,窗口大小为2048,当SN长度配置为18bit时,窗口大小为131072。具体地, 对于SRB/DRB,该值等于 2^([pdcp-SN-SizeDL] – 1);对于SLRB,对应2^([sl-PDCP-SN-Size] – 1)。

206183e95ed64bb3a9ee97a3ac9eb230.png

 具体SRB需要配置state variables continuation的DAPS场景如上38.331所述。

792632e1f50a47908096d094c32a0aa1.png

 PDCP entity 发送端只有一个Timer discardTimer,该timer值能用于DRBs,当从upper layer收到SDU时 ,就要对该SDU启动一个新的discardTimer。

当 PDCP SDU 的 discardTimer 超时,或者 PDCP SDU 的成功传递被 PDCP 状态报告确认时,发送 PDCP entity将丢弃 PDCP SDU 以及相应的 PDCP data PDU。如果相应的PDCP Data PDU已经提交给RLC,则也要向RLC指示丢弃的命令。discardTimer只有start和超时,不存在stop的场景。

PDCP entity接收端对应t-Reordering,由RRC层参数配置,但 NR sidelink场景除外。对于 NR sidelink,t-Reordering由UE 实现确定。该计时器主要用于检测PDCP data PDU的丢失。如果 t-Reordering 正在运行,则不应额外启动 t-Reordering,即每个接收 PDCP entity只会有一个 t-Reordering 在给定时间运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/711734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA USB FX2 ov5640摄像头视频采集 驱动CY7C68013A实现 提供2套工程源码和技术支持

目录 1、前言2、我这儿已有的 FPGA USB 通信方案3、CY7C68013A芯片解读和硬件设计FX2 简介SlaveFIFO模式及其配置 4、工程详细设计方案5、vivado工程6、上板调试验证7、福利:工程代码的获取 1、前言 目前USB2.0的实现方案很多,但就简单好用的角度而言&a…

SpringBoot的缓存管理

缓存是分布式系统中的重要组件,主要解决数据库数据的高并发访问问题。在实际开发中,尤其是用户 访问量较大的网站,为了提高服务器访问性能、减少数据库的访问压力、提高用户体验,使用缓存显得 尤为重要。Spring Boot对缓存提供了良…

js将后台返回的数据转化为树形结构(扁平数组转树状结构)

前言 做项目使常遇到需要将后台返回的数据,转换为树状结构给用户展现,例如: 这也是前端面试常考的算法题,一起来检测一下吧。 步骤 准备一个空的树对象。遍历列表中的每个元素。对于每个元素,根据该元素的父级ID找到…

Linux常用命令——fdisk命令

在线Linux命令查询工具 fdisk 查看磁盘使用情况和磁盘分区 补充说明 fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝…

ERP重构-SLA子分类账-分布式实现方案

背景 ERP中的GL总账模块,明细数据来源于各个业务模块如库存、成本、应收、应付、费控、资产等,统称为子模块,生成的账叫做子分类账。然而记账的业务逻辑各式各样,但是最终输出都是来源、类型、期间、科目、借贷金额等等关键信息。…

Java-数据结构(二)-Map:HashMap、TreeMap、LinkedHashMap

目录 一、 引言二、问题2.1 什么是Map2.2 使用Map的好处2.3 Map的底层原理2.4 Key和Value的含义2.5 Key值为什么不能重复2.6 Key值和Hash的关系 三、 HashMap3.1 初始化HashMap3.2 添加和获取元素3.3 遍历HashMap3.4 删除元素3.5实现原理①HashMap的put()方法②HashMap的get()方…

【海量数据挖掘/数据分析】 之 贝叶斯分类算法(朴素贝叶斯分类、贝叶斯分类计算流程、拉普拉斯修正、贝叶斯分类实例计算)

【海量数据挖掘/数据分析】 之 贝叶斯分类算法(朴素贝叶斯分类、贝叶斯分类计算流程、拉普拉斯修正、贝叶斯分类实例计算) 目录 【海量数据挖掘/数据分析】 之 贝叶斯分类算法(朴素贝叶斯分类、贝叶斯分类计算流程、拉普拉斯修正、贝叶斯分类…

无java环境运行jar

1、编写简单java程序。 例: public static void main(String[] args) {if(args.length>0)System.out.println("Params is:"args[0]);System.out.println("Hello word ! I am demo,,,&#xff0c…

软考高级网规考试笔记(涉及表格用图片代替_9万字左右)

作者:BSXY_19计科_陈永跃_23年7月更 BSXY_信息学院_v:CwJp0403 注:未经允许禁止转发任何内容 笔记说明: 目前还只有笔记,其他资源将会在近期更新,(笔记5.5即可,不诚勿加可以去其他地方自找找看&…

Quartz任务调度笔记

一、概念 1.1简介 Quzrtz是OpenSymphony开源组织在Job scheduling领域的开源项目 特点:Quartz具有丰富特性的"任务调度库",能够集成于任何的Java应用,小到独立的应用,大到电子商业系统。quartz能够创建亦简单亦复杂的调…

DAY35:贪心算法(二)分发饼干+摆动序列

文章目录 455.分发饼干思路两个for循环嵌套的写法为什么这种写法必须要有visited数组debug测试逻辑问题:没有进行计数逻辑问题:找到了result3个孩子 一层for循环的写法为什么这种写法一定要把小孩数组放在外面 376.摆动序列(逻辑问题&#xf…

02_04实时调度类及SMP多核处理器的实时操作系统体系结构

上一篇文章说的是普通进程的调度但同时还有实时进程在linux上面进行运行 这边来看看实时进程在linux里面怎么调度 同时linux操作系统对实时任务的处理方式和设计思想 实时调度类 Linux进程分为两大类:实时进程和普通进程。 实时进程与普通进程根本不同之处,如果系…

ModuleNotFoundError: No module named ‘transformers_modules.chatglm2-6b‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

青少年机器人技术一级核心知识点:机械结构及模型(四)

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

LabVIEW大模拟数据解决方案

LabVIEW大模拟数据解决方案 比亚迪汽车对于在动力总成标定和控制部门工作的400多名工程师来说,这种投资包括实现NI的新战略和解决方案,以更好地捕获和管理大量的原始测试数据,在车辆上市前做出更明智的决策。 因为能够更好地获取更优质的数…

Go语言开发者的Apache Arrow使用指南:内存管理

如果你看了上一篇《Go语言开发者的Apache Arrow使用指南:数据类型》[1]中的诸多Go操作arrow的代码示例,你很可能会被代码中大量使用的Retain和Release方法搞晕。不光大家有这样的感觉,我也有同样的feeling:**Go是GC语言[2]&#x…

MWCS 2023,到底有些啥?(下篇)

█ 亚信科技 5G行业专网一体机: 反光太厉害了,看不太清: 这几张都是小枣妹拍的,^_^: █ 浩鲸科技 浩鲸,就是以前的中兴软创: █ 紫光展锐 6G这块,干货很多: 这次重点展示…

docker容器日志占满硬盘空间的解决方案

目录 原因分析解决方案方案一 定时清空日志文件方案二 全局容器日志大小方案三 修改日志驱动 docker常用清理空间命令 原因分析 由于默认情况下,docker使用json-file类型的日志驱动,该日志驱动默认情况下,每个容器的日志会一直追加在文件名为…

chatgpt赋能python:用Python模拟用户登录,实现多个网站的SEO优化

用Python模拟用户登录,实现多个网站的SEO优化 介绍 在互联网时代,SEO已成为许多网站提高曝光率和流量的重要手段之一。而SEO优化的一个重要方面就是网站的用户登录。然而,手动登录多个网站进行SEO操作是非常耗时耗力的。那么,有…

卷积神经网络实现猫狗分类

目录 一、环境配置二、神经网络CNN1、简介2、CNN结构3、层次说明 三、数据集准备1、下载数据集2、数据集分类 四、 猫狗分类的实例——基准模型1、构建网络模型2、配置训练方法3、转换格式4、模型训练并保存生成的模型5、结果可视化 五、调整基准模型1、图像增强2、增强后的图像…