了解 Junos YANG 模块
瞻博网络使用 YANG 模型发布 Junos 设备的架构,其中包含配置和操作状态数据、操作命令以及 Junos 扩展。以下各节讨论本机 Junos YANG 模块。
Junos YANG 模块概述
瞻博网络提供的 YANG 模块可定义运行 Junos OS 的设备和运行 Junos OS 演化版的设备的配置层次结构、操作命令和状态数据以及 YANG 扩展和类型。从 Junos OS 17.2 版开始,YANG 模块特定于某个设备系列。 表 1 概述了不同设备系列的标识符,并指出了每个系列中包含的平台。从 Junos OS 演化版 23.4R2 开始,所有 Junos OS 演化版平台都使用 junos 设备系列标识符。
| 设备系列标识符 |
Junos OS 平台 |
Junos OS 演化版平台 |
|---|---|---|
| 朱诺斯 |
ACX 系列 |
ACX 系列 |
| Junos-ES |
J 系列 |
– |
| Junos-EX |
EX 系列(某些平台) |
– |
| Junos-QFX |
QFX 系列 |
QFX 系列(23.2 及更早版本) |
同一系列中的不同平台可能归类为不同的设备系列。在运行 Junos OS 演化版 23.4R1 及更早版本的设备上,以及运行 Junos OS 的设备上,您可以通过在设备上执行 show system information 操作模式命令或 <get-system-information/> RPC 来验证特定设备的家族。 Family 命令输出中的字段值或 <os-name> RPC 回复中的元素表示设备系列。
从 Junos OS 17.4R1 版开始,配置 YANG 模块被拆分为一个根模块,根模块由多个较小的模块进行增强。此外,本机 Junos YANG 模块对模块的名称、文件名和命名空间使用新的命名约定。模块名称和文件名包括设备系列以及模块中的架构所属的配置或命令层次结构的区域。模块文件名还包括修订日期。 表 2 汇总了 Junos 设备原生的 YANG 模块,并标识了使用不同模块名称的版本。
不需要特定于系列的架构且所有平台通用的模块使用 junos 设备系列作为模块的名称、文件名和命名空间。
| Junos YANG 模块 |
描述 |
模块名称 |
释放 |
|---|---|---|---|
| 配置模块 |
定义 Junos 配置层次结构的架构。 从 Junos OS 17.4R1 版开始,配置 YANG 模块被拆分为一个根模块 (family-conf-root),该根模块由多个较小的模块进行扩充。 |
|
14.2 至 17.3 |
|
|
17.4R1 及更高版本 |
||
| 作战指挥模块 |
表示操作命令层次结构和定义操作模式命令的远程过程调用 (RPC) 的模块集合组。命令层次结构的不同区域有单独的模块。 |
|
16.1 到 17.3 |
|
|
17.4R1 及更高版本 |
||
junos-state 状态模块 |
用于操作状态数据的精选 YANG 模块集。 | junos-state-area |
22.2R1 及更高版本 |
|
|
定义操作状态的 YANG 数据模型。这些模型通过 gNMI |
|
24.2R1 及更高版本(Junos OS 演化版) |
| DDL 扩展模块 |
包含 Junos 设备的数据定义语言 (DDL) 语句。 此模块包括 和 |
|
15.1 到 17.3 |
|
|
17.4R1 及更高版本 |
||
| ODL 扩展模块 |
包含输出定义语言 (ODL) 语句,可用于为 Junos 设备上执行的 RPC 创建和自定义格式化的 ASCII 输出。 |
|
16.1 到 17.3 |
|
|
17.4R1 及更高版本 |
||
| 元数据批注扩展模块 |
定义配置操作的元数据批注。 注释在 RFC 7952 通过 YANG 定义和使用元数据中定义。 |
junos-configuration-metadata |
22.2R1 及更高版本(Junos OS 演化版) |
| 类型模块 |
包含 YANG 类型的定义。 |
|
17.4R1 及更高版本 |
为了支持不同版本中不同设备家族的 YANG 模块,下载的模块按设备家族进行组织,每个模块的名称、文件名和命名空间反映了模块中的架构所属的设备家族。
有关获取模块的信息,请参阅 下载和生成 Junos YANG 模块。
有关模块命名空间的信息,请参阅 了解 Junos YANG 模块命名空间和前缀。
下载并生成 Junos YANG 模块
您可以通过以下方式检索 Junos OS 和 Junos OS 演化 YANG 模块:
-
从瞻博网络网站下载模块,网址为 https://www.juniper.net/support/downloads
-
从 Juniper/yang GitHub 存储库下载模块
-
在瞻博网络设备上生成模块
从 Junos OS 演化版 23.4R1 开始,我们将在瞻博网络下载站点和 GitHub 上发布 Junos OS 演化版原生 Yang 模块。在早期版本中,必须在设备上生成模块。
在 Junos OS 17.1 及更早版本中,瞻博网络网站和 GitHub 上发布的用于 Junos OS 配置和命令层次结构的 YANG 模块定义了运行该 Junos OS 版本的所有设备的架构。相比之下,在本地设备上生成的 YANG 模块定义了特定于该设备的架构。特定于设备的架构包括来自本机模块的节点以及来自添加到设备的任何标准或自定义模块的节点。
从 Junos OS 17.2 版开始,Junos YANG 模块特定于设备系列,每个模块的命名空间反映了模块中的架构所属的设备系列。因此,下载包和 GitHub 存储库包括每个设备系列模块的单独目录,以及所有设备系列通用模块 的公共目录。 每个特定于家族的目录都使用其设备家族标识符作为目录名称,并包含该家族中平台上支持的配置和操作命令模块。 表 1 中定义了设备系列标识符。在运行 Junos OS 17.2 版的本地设备上生成的 YANG 模块仍定义特定于该设备的架构。
从 Junos OS 17.4R1 版开始,默认情况下,在本地设备上生成的 YANG 模块包含特定于家族的架构,这些架构在给定设备系列中的所有设备上都是相同的。要生成特定于设备的模块,请在层次结构级别配置 device-specific 配置语句 [edit system services netconf yang-modules] 。
表 3 汇总了针对不同 Junos OS 版本下载和生成的 YANG 模块中的架构范围。
| Junos OS 版本 |
下载模块中的架构范围 |
生成的模块中的架构范围 |
|---|---|---|
| 17.1 及更早版本 |
所有设备 |
装置 |
| 17.2 到 17.3 |
设备系列 |
装置 |
| 17.4R1 及更高版本 |
设备系列 |
设备系列 |
从 Junos OS 演化版 23.4R1 开始,我们将在瞻博网络下载站点和 GitHub 上发布 Junos OS 演化版 YANG 模块。在早期版本中,必须在设备上生成模块。
此外,从 Junos OS 23.4R1 版和 Junos OS 演化版 23.4R1 开始,我们在单个下载包和 GitHub 存储库文件夹中提供给定操作系统和版本的所有 YANG 数据模型。包和存储库文件夹包括:
-
本机配置、状态和 RPC 数据模型
-
该操作系统支持的 OpenConfig 配置和状态模型
-
该操作系统支持的 IETF 型号
有关如何下载或生成 Junos OS YANG 模块的更多信息,请参阅 使用瞻博网络 YANG 模块。
了解 Junos YANG 模块命名空间和前缀
在 Junos OS 17.1 版及更早版本中,Junos YANG 模块使用唯一标识符来区分每个模块的名称空间。
namespace "http://yang.juniper.net/yang/1.1/module-id;
从 Junos OS 17.2R1 版开始,Junos YANG 模块特定于某个设备系列。为了支持给定版本中不同设备系列的不同 YANG 模块,YANG 模块使用一个命名空间,该命名空间除了包含标识符外,还包括模块名称、设备系列和 Junos OS 版本字符串。例如:
namespace "http://yang.juniper.net/yang/1.1/module-id/module-name/device-family/release";
从 Junos OS 17.4R1 版开始,命名空间经过简化,包括设备系列、模块类型以及每个模块唯一的标识符,用于区分模块的命名空间与其他模块的命名空间。
namespace "http://yang.juniper.net/device-family/type/identifier";
以下定义适用于出现该变量的命名空间的所有版本:
device-family |
模块中的架构所属设备家族的标识符,例如 具有设备特定架构的模块和具有特定于系列的架构的模块都在命名空间中使用相同的设备系列标识符。
注意:
通用模块使用 |
identifier |
将模块的命名空间与其他模块的命名空间区分开来的字符串。 Junos 配置和命令模块包括一个标识符,该标识符指示模块中的架构所属的配置或命令层次结构区域。 |
module-id |
特定于模块的唯一标识符,例如 |
module-name |
例如, |
release |
Junos OS 或 Junos OS 演化版,其中支持该模块中的架构。 |
type |
模块的类型。可能的值包括:
|
表 4 概述了不同版本中每个模块的命名空间 URI 和前缀(由模块语句 prefix 定义)。从 Junos OS 17.2 版开始,每个操作命令模块的前缀反映了该模块中包含的 RPC 的命令层次结构区域。同样,从 Junos OS 17.4R1 版开始,每个配置 YANG 模块的前缀反映了该模块中包含的配置语句层次结构。Junos YANG 扩展和类型模块使用 junos 命名空间中的设备系列标识符,但这些模块对于所有设备系列都是通用的。
| 杨模块 |
释放 |
Namespace URI |
前缀 |
|---|---|---|---|
| 配置模块 |
17.1 及更早版本 |
http://yang.juniper.net/yang/1.1/jc |
|
| 17.2 到 17.3 |
http://yang.juniper.net/yang/1.1/jc/configuration/device-family/release |
|
|
| 17.4R1 及更高版本 |
http://yang.juniper.net/device-family/conf/hierarchy |
|
|
| 作战指挥模块 |
17.1 及更早版本 |
http://yang.juniper.net/yang/1.1/jrpc |
|
| 17.2 到 17.3 |
http://yang.juniper.net/yang/1.1/jrpc/module-name/device-family/release |
hierarchy |
|
| 17.4R1 及更高版本 |
http://yang.juniper.net/device-family/rpc/hierarchy |
hierarchy |
|
junos-state 状态模块 |
22.2R1 及更高版本 | http://yang.juniper.net/junos/state/state-area |
js-area |
|
|
24.2R1 及更高版本 |
|
|
| DDL 扩展模块 |
17.1 及更早版本 |
http://yang.juniper.net/yang/1.1/je/ |
|
| 17.2 及更高版本 |
http://yang.juniper.net/yang/1.1/je/junos-extension/junos/release |
|
|
| 17.4R1 及更高版本 |
http://yang.juniper.net/junos/common/ddl-extensions |
|
|
| ODL 扩展模块 |
17.1 及更早版本 |
http://yang.juniper.net/yang/1.1/jodl |
|
| 17.2 到 17.3 |
http://yang.juniper.net/yang/1.1/jodl/junos-extension-odl/junos/release |
|
|
| 17.4R1 及更高版本 |
http://yang.juniper.net/junos/common/odl-extensions |
|
|
| 元数据批注扩展模块 |
22.2R1 及更高版本 |
http://yang.juniper.net/junos/jcmd |
jcmd |
| 类型模块 |
17.4R1 及更高版本 |
http://yang.juniper.net/junos/common/types |
|
从 Junos OS 17.2 版开始,当您在[edit system services netconf]层次结构级别配置rfc-compliant语句并在 NETCONF 会话中请求配置数据时,服务器会将元素的默认<configuration>命名空间设置为与相应 YANG 模型中相同的命名空间。例如:
<rpc>
<get-config>
<source>
<running/>
</source>
</get-config>
</rpc>
]]>]]>
<nc:rpc-reply
xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:junos="http://xml.juniper.net/junos/17.2R1/junos">
<nc:data>
<configuration
xmlns="http://yang.juniper.net/yang/1.1/jc/configuration/junos/17.2R1.13"
junos:commit-seconds="1493761452"
junos:commit-localtime="2017-05-02 14:44:12 PDT"
junos:commit-user="user">
...
</configuration>
</nc:data>
</nc:rpc-reply>
]]>]]>
更改历史记录表
功能支持由您使用的平台和版本决定。使用 功能资源管理器 确定您的平台是否支持某个功能。
junos 设备系列标识符,而不是
junos-qfx。
junos:command 随扩展发出的架构中包含扩展语句。