Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解拨入式遥测

拨入式遥测是一种网络监控方法,收集器启动与设备的连接以检索遥测数据。收集器“拨入”到网络设备,通常使用 gRPC 等协议来请求和接收数据。

在拨入模式下,数据收集器启动与网络设备的连接并订阅遥测数据。收集器和设备建立会话。设备按配置的时间间隔将数据流式传输到收集器。当运维人员需要统一通道来存储配置和操作数据时,通常使用此模式。

图 1:拨入式遥测 Network communication flow: Collector connects to target device via customer cloud network to gather telemetry data.

Junos 遥测支持通过 gRPC 传输进行的 gNMI 和瞻博网络扩展工具包 (JET) 拨入连接。

注意:

您可以以拨入方式将 gNMI 用于按需请求(例如,用于获取数据的一次性“获取”操作)。对于 gNMI 拨入连接,您必须启用 gNMI 服务。支持 POLL(收集器轮询快照)和 ONCE(单个快照)订阅模式。设备通常会启动 gRPC,以便在 Junos 遥测中进行流式遥测。

gRPC 服务

gRPC 是一个开源框架,提供安全可靠的数据传输。您可以使用一组远程过程调用 (RPC) 接口来配置 Junos 遥测,并通过 gRPC 框架流式传输遥测数据。gRPC 远程过程调用用于配置传感器以及订阅和接收遥测数据。OpenConfig 支持 YANG 数据模型。OpenConfig 数据模型以通用键/值格式将数据生成为 Google Protocol Buffer (.gpb) 消息。

注意:从 Junos OS 18.2R1 版开始,基于 OpenConfig 的路由引擎 (RE) 传感器可以通过 UDP 以 gpb 结构消息的形式将数据流式传输。

使用 gRPC 流式传输数据

根据 OpenConfig 规范,流数据仅支持基于 gRPC 的传输。gRPC 服务器从运行客户端的管理系统终止 gRPC 会话。RPC 调用会触发 Junos OS 传感器的创建,这些传感器会定期流传输数据或报告特定事件。然后,这些传感器通过相应的 gRPC 通道转发更新。

注意:

从 Junos OS 18.2R1 版开始,当外部流服务器或收集器配置传感器以在运行 Junos OS 的设备上通过 gRPC 导出数据时,传感器配置将提交给 junos-analytics 临时配置数据库的实例。可以使用操作 show ephemeral-configuration instance junos-analytics 命令查看配置。在早期版本中,传感器的配置承诺到临时配置数据库的默认实例。

注意:

瞻博网络遥测报头之前作为遥测更新的一部分导出,现在导出为扩展报头。

  • 用于 GnmiJuniperTelemetryHeader.proto 解码运行 Junos OS 19.3 或更低版本的设备的更新。
  • GnmiJuniperTelemetryHeaderExtension.proto用于运行 Junos OS 19.4 或更高版本的设备。

为了支持 Junos 遥测解决方案而实施的 RPC 的列表和说明,请参阅 表 1

表 1:遥测 RPC

RPC 名称

描述

telemetrySubscribe

为指定的 OpenConfig 路径列表指定遥测参数和流数据。

getTelemetrySubscriptions

检索通过 telemetrySubscribe创建的订阅列表。

cancelSubscription

取消订阅通过 telemetrySubscribe创建的订阅。

通过 gRPC 流式传输的数据在协议缓冲区 (.gpb) 消息中的 OpenConfig 键值对中进行格式化。在这种通用格式中,键是与受监视设备的 OpenConfig 架构中的系统资源路径相对应的字符串。值对应于标识系统资源操作状态的整数或字符串,如接口计数器。

注意:

从 Junos OS 18.2R1 版开始,除了用于基于 OpenConfig 的路由引擎 (RE) 传感器的键值对外,通过 gRPC 流式传输的数据还可以格式化为 protobuf。这些传感器是对数据包转发引擎 (PFE) 传感器的补充。

下面显示了通用键/值格式:

以下示例显示如何表示接口的一组计数器:

映射表将字段名称映射到 OpenConfig 键字符串。

使用 OpenConfig 启用 Junos 遥测

OpenConfig for Junos OS 指定了一个 RPC 模型来启用 Junos 遥测。此软件包还包括所需的 YANG 型号。

您可以在 GitHub 存储库中找到给定操作系统的所有 YANG 数据模型 ,并在单个下载包中发布。包和存储库包括本机配置、状态和 RPC 数据模型,以及该操作系统支持的 OpenConfig 和 IETF 数据模型。您还可以从瞻博网络下载站点访问 YANG 数据模型。

要下载 OpenConfig 和 YANG 模型文件,请打开 Web 浏览器并导航到 https://www.hpe.com/us/en/networking/hpe-juniper-networking.html,然后单击 支持以打开 https://support.juniper.net/support/ 的 瞻博网络 支持门户。选择“下载”选项卡,在“键入产品名称”字段中输入产品名称,单击“查找产品”,搜索并选择所需的产品,然后从下拉列表中选择相应的 Junos OS 和软件版本。在同一页面上向下滚动,展开 + 工具部分,然后下载所需文件:用于 OpenConfig 模型的 JUNOS 遥测接口数据模型文件和用于 YANG 文件的 YANG 模块。

编程接口 OpenConfigTelemetry 定义遥测 gRPC 服务。 telemetrySubscribe RPC 指定以下订阅参数:

  • OpenConfig 路径,用于识别用于流式传输遥测数据的系统资源,例如:/interfaces/interface/state/counters/

  • 报告数据并将其流式传输到收集器服务器的间隔(以毫秒为单位),例如: sample_frequency = 4000

流式处理服务器或收集器使用 telemetrySubscribe RPC 请求指定路径上数据的内联订阅。然后,设备会在与订阅请求相同的连接上发回遥测数据。

gRPC 服务器概述

Junos 遥测支持多端口服务配置,允许您配置多组遥测服务以侦听不同的端口。

Junos 遥测提供灵活的 gRPC 服务配置功能,允许您设置多台 gRPC 服务器,每台服务器都有不同的服务、侦听地址和端口。这些功能提供了对服务管理和遥测数据收集的精细控制。您可以为每个服务器配置 TLS 证书以确保安全通信。要配置 gRPC 服务器,请参阅 配置 gRPC 服务

gNMI 服务

gNMI(gRPC 网络管理接口)是一种基于 gRPC 的协议,用于配置和监控网络设备。gNMI 由 OpenConfig 专门为网络管理开发,允许网络运营商检索和修改设备配置数据,并订阅来自网络设备的实时遥测数据。数据收集是遥测解决方案中的一项关键任务。gNMI 支持 ONCE、POLL 和 STREAM 等订阅模式,用于遥测更新。gNMI 使用 gRPC 框架,支持协议缓冲区 (protobuf) 等高效的数据编码格式,并通过 TLS 确保安全通信。YANG 模型定义了配置和遥测数据的结构。

gNMI 的主要组件是:

  • gNMI 客户端:在外部系统上运行。它发送 gNMI 请求来配置设备、检索配置数据和订阅遥测流。

  • gNMI 服务器:在网络设备上运行并提供对遥测和配置数据的访问。gNMI 服务器根据请求的类型处理请求。如果是配置管理更改,gNMI 服务器会更新设备配置并向客户端发送响应。如果是遥测数据收集请求,它会将数据流式传输到 gNMI 客户端。

gNMI 支持以下用于控制和监视网络设备的远程过程调用 (RPC):

  • 获取:此 RPC 检索网络设备的当前状态,包括配置和操作数据。

    注意:

    使用 type gNMI get 命令中的选项指定要检索的数据类型。可用选项包括 CONFIGSTATEALL。有效的类型选项为 CONFIG。使用编码定义 gNMI 协议支持的值编码格式。可用选项包括 JSONBYTESPROTOASCIIJSON_IETF。有效的编码选项是 JSON_IETF ASCII和 。选择除有效选项之外的任何其他配置都会导致错误消息。

  • Set:set RPC 修改网络设备的配置。

  • 订阅:使用此 RPC 订阅来自网络设备的遥测数据。支持以下订阅模式:

    • ONCE:仅检索一次当前值。
    • POLL:每当收到轮询消息时发送当前值。
    • STREAM:按指定的时间间隔或发生更改时持续发送更新。

    有关更多信息,请参阅 gNMI 订阅

  • 功能:使用此 RPC 可发现设备的功能,例如支持的模型和编码。

gNMI 起源

Path消息的origin字段标识路径的架构。该origin字段编码为字符串。<origin, path>元组唯一标识消息中的路径。

origin 字段在消息的任何 Path 上下文中都有效。通常,它按以下方式使用:

  • 使用 a SetRequest 指示特定模式修改了目标配置。
  • 使用 a GetRequest 检索特定架构的内容,或使用 a GetResponse 指示有效负载包含来自特定 <origin, path> 架构的数据。
  • 使用 a SubscribeRequest 订阅特定架构中的路径,或使用 a SubscribeResponse 指示更新对应于特定 <origin, path> 元组。

当一条消息使用多个 origin时,请勿在 中prefix指定路径,因为 适用于prefix消息中的所有路径。指定 a prefix 时,包括任何必需origin的 。请勿在单个请求中同时prefix指定origin任何 RPC 有效负载消息的 path 字段。

原产地的特殊值

源值在 gNMI 协议的带外商定。如果字段未指定,则 origin 其值必须默认为 openconfig。建议显式设置原点。

YANG 建模数据的来源定义

openconfig-extensions:origin 字段可用于确定实例化特定模块的来源。

注意:

originnamespace不同 。虽然 YANG 命名空间是在模式树中的任何深度定义的,但 an origin 仅用于消除整个模式树的歧义。也就是说,任何不在根的元素都会从其根实体继承其origin元素,而不管构成该根的 YANG 模式模块如何。

原产地的部分规格

如果 RPC 指定了 、 或replace在其消息中Path包含 的origin字段,则Set必须通过以下方式将相应的更改限制到指定的update源:delete

  • replace操作只能替换指定路径上指定origin的内容。不得替换未在 中SetRequest指定的来源 其内容。为了使replace操作替换它的任何origin内容,必须在 SetRequest.
  • delete操作必须仅删除指定 origin.要从多个源中删除内容,客户端必须deleteSetRequest在 .

这些规则适用于源表示不重叠的数据的情况。在某些情况下(例如 CLI 和 OpenConfig),源可能会反映同一数据的不同“视图”,因此它们的交互更加复杂。

具有多个来源的集合的交易性

当 a SetRequest 指定多个源时(换句话说,当它包含两个或多个路径引用不同源的操作时),所有受影响的数据树都必须被视为单个事务。只有当所有操作都成功时,才 SetResponse 应指示成功。如果任何操作失败,则必须回滚所有源的更改,并且必须返回错误状态以响应 Set RPC。