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

UECC-UE连接协调的运作方式

文章目录

    • UECC 基础概念与核心原则
      • 什么是 UECC?
      • 核心原则
    • UE 任务详解
      • 任务定义
      • 任务组成要素
    • 特殊任务类型:透明 UE 任务
      • 核心特性
      • 启用方式
      • 执行机制
    • UECC 完整操作流程(3/3)
      • 基础信号交互(1/3)
      • 订阅与转发机制(2/3)
      • ueTaskInitInd
      • expectedMsgList
      • expectedMsgInd
    • 队列查询与消息转发(3/3)
      • forwardMsgInd
      • isTaskReqInQueue()
    • 任务调度与队列管理实例
      • 1. 无优先级调度场景
      • 2. 优先级调度场景
      • 3. 任务订阅场景
      • 4. 透明任务与普通任务并行场景
    • 架构协作流程(以 UE 接入为例)

UECC 基础概念与核心原则

什么是 UECC?

UECC 全称UE Connection Coordination(UE 连接协调),是 UEH(UE Handling,UE 处理)架构中负责任务管理的核心模块。它的本质是一个任务队列框架,通过协调 UE层面的各类任务,确保相互冲突的流程不会并行执行。

核心原则

所有 UE 层面的活动必须通过 UECC 发起
核心目标:

  1. 阻止不可交互的流程并行运行(比如E-RAB建立和释放)。
  2. 以 UE 任务为基本管理单位,通过队列机制实现有序调度。

UE 任务详解

任务定义

UE 任务是指为响应特定事件而执行的一系列操作,触发场景包括:
接收 RBS(Radio Base Station,无线基站)节点外部消息(如 RRC 连接请求)

RBS 节点内部事件(如超时、传输失败)

任务组成要素

  1. 任务名称(Task Name)
  2. 任务驱动者(Task Driver)
  3. 优先级(Priority)
  4. 重复处理策略------- >>>
    保留最后一个(Keep Last):仅保留最新任务
    保留第一个(Keep First):仅保留最早任务
    全部保留(Keep All):默认方式,所有任务入队
  5. 任务数据(Task Data)

特殊任务类型:透明 UE 任务

核心特性

可与其他任务并行执行,无需协调
运行时间原子化(操作不会被中断所需要的时间)
禁止修改任何 UE 相关数据(如 UE 上下文)

启用方式

优先级类别设为UEH_UE_PRIORITY_CLASS_TRANSPARENT

通过任务属性明确指定为透明任务

执行机制

由ueTaskInitInd信号触发(区别于普通任务的ueTaskInitReq)
独立于主线程运行,不阻塞其他任务队列

UECC 完整操作流程(3/3)

基础信号交互(1/3)

ueTaskRequestInd
发送方:任务请求者
接收方:UECC
作用:将新任务加入 UECC 队列(Class B 向 UECC 提交 TaskA)

ueTaskInitReq
发送方:UECC
接收方:任务驱动者
作用:启动队列中首个任务或上一任务指定的下一个任务。任务执行期间,新任务会被暂存队列,直到收到ueTaskInitCfm信号才视为完成。

ueTaskInitCfm
发送方:任务驱动者
接收方:UECC
作用:确认任务完成,可指定下一执行任务(实现任务顺序控制)

订阅与转发机制(2/3)

ueTaskInitInd

发送方:UECC
接收方:透明任务的驱动者
作用:启动透明任务

expectedMsgList

用途:正在执行的任务通过该列表订阅特定任务
规则:新订阅任务直接转发给订阅者;已在队列的订阅任务不转发
如:Class A->通过ueCtxtData->UECC

expectedMsgInd

发送方:订阅任务的类(如 Class A)
接收方:UECC
作用:立即请求队列中已存在的订阅任务,UECC 通过forwardMsgInd转发并从队列移除该任务

队列查询与消息转发(3/3)

forwardMsgInd

发送方:UECC
接收方:订阅任务的类
作用:将新加入队列的订阅任务转发给订阅者

isTaskReqInQueue()

调用方:正在执行的任务(如 Class B)
作用:查询特定任务是否在队列中
特点:查询不影响任务状态,被查询任务仍保留在队列

任务调度与队列管理实例

1. 无优先级调度场景

当无任务运行时,新任务(如 TaskA)直接启动
流程:ueTaskRequestInd(提交 TaskA)→ ueTaskInitReq(启动 TaskA)→ ueTaskInitCfm(TaskA 完成)

2. 优先级调度场景

当 TaskB 正在执行时,TaskA 和 TaskC 先后入队,若 TaskC 优先级高于 TaskA:
流程:TaskB 运行→ TaskA 入队→ TaskC 入队→ TaskB 完成→ ueTaskInitReq(启动 TaskC)→ TaskC 完成→ ueTaskInitReq(启动 TaskA)

3. 任务订阅场景

Class B 执行 TaskB 时,通过expectedMsgList订阅 TaskA
当 TaskA 提交后,UECC 通过forwardMsgInd直接转发给 Class B
Class B 完成后,可通过ueTaskInitCfm指定启动 TaskA

4. 透明任务与普通任务并行场景

Class B 执行 TaskB 时,同时订阅普通任务 TaskA 和透明任务 TaskD
TaskD 提交后,UECC 通过ueTaskInitInd启动(与 TaskB 并行)
TaskA 提交后,UECC 通过forwardMsgInd转发给 Class B

架构协作流程(以 UE 接入为例)

UE 发送 RRC 连接请求(触发 Task)

UECC 接收ueTaskRequestInd,将任务入队

启动任务后,通过ueTaskInitReq通知 RRC 模块

完成 RRC 连接后,发送ueTaskInitCfm给 UECC

UECC 调度下一任务(如 E-RAB 建立)

http://www.dtcms.com/a/273266.html

相关文章:

  • (一)OpenCV——噪声去除(降噪)
  • React--Fiber 架构
  • 数据库操作核心知识点整理
  • mac m1芯片 安装pd及win10系统
  • 第12讲—一元函数积分学的物理应用
  • 在vscode中安装jupyter
  • 电机电角度与机械角度的个人理解:从蒙圈到理解到放弃
  • 蓝桥云课 矩形切割-Java
  • 快速分页wpf
  • npx cowsay 让动物说话~
  • Java重试+事务的方式优化saveBatch,配置信息修改
  • Flink Exactly Once 和 幂等
  • 【郑大二年级信安小学期】Day9:XSS跨站攻击XSS绕过CSRF漏洞SSRF漏洞
  • 服务器深夜告警?可能是攻击前兆!
  • Unity插件——ABC详解
  • AI驱动的低代码革命:解构与重塑开发范式
  • LeetCode 8. 字符串转换整数 (atoi)
  • 【保姆级喂饭教程】idea中安装Conventional Commit插件
  • FreeRTOS—任务创建和删除的API函数和方法
  • 书生实训营第二关:大模型对战
  • 列表初始化
  • C++ Lambda 表达式详解
  • 《棒垒球知道》奥运会的吉祥物是什么·棒球1号位
  • 【c++八股文】Day6:using和typedef
  • [yolo-world]YOLO-World数据集介绍及标注格式详解
  • SoC程序如何使用单例模式运行
  • 什么是 MIT License?核心要点解析
  • [数据结构与算法] 优先队列 | 最小堆 C++
  • 几种LLM推理加速技术的区别
  • 列表页与详情页的智能识别:多维度判定方法与工业级实现