gNMI中路径Origin与Get/Subscribe请求use_model的区别及概念疑问
gNMI中Origin、Schema与Use_Model的区别及YANG模型定位
核心概念厘清
- Schema:gNMI语境里指数据结构的命名空间/体系集合,用来区分不同来源的配置/状态数据体系(比如OpenConfig标准化体系、设备原生CLI对应的体系)。
- 数据模型:是具体的结构化数据定义,你设备上实现的YANG模型就属于数据模型——YANG是定义数据模型的语言,每个YANG模块都是一个具体的数据模型单元。
Origin的作用
Origin是gNMI路径(Path)中的字段,核心功能是指定要访问的数据所属的schema命名空间。因为不同schema下可能存在同名的路径(比如/interfaces/interface在OpenConfig和设备原生体系里结构可能完全不同),用Origin就能精准定位目标数据的来源体系。
你看到Cisco示例里用Origin指定YANG模型,本质是把该YANG模型所属的schema命名空间通过Origin声明,告诉gNMI目标端要访问这套YANG定义的数据。
Use_Model的作用
use_model是GetRequest和SubscribeRequest中的参数,核心是强制gNMI目标端按照指定的数据模型结构返回数据,实现设备原生数据到目标模型规范的适配。举个实际场景:
- 若设备同时支持原生YANG模型和OpenConfig YANG模型,你通过Origin指定了原生schema,但用use_model指定OpenConfig的某个模型版本,目标端会自动把原生数据转换成OpenConfig模型定义的结构返回给你。
- 它解决的是“数据格式一致性”问题,确保你拿到的数据严格符合预期的模型规范,避免因设备原生实现差异导致的数据结构混乱。
两者核心差异
- Origin:决定数据从哪个schema体系里取
- use_model:决定返回的数据要符合哪个模型的结构
内容的提问来源于stack exchange,提问作者ibsen
相关产品推荐
相关产品推荐

