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(单个快照)订阅模式。设备通常会在 Junos 遥测中启动 gRPC,以便进行流式遥测。

gRPC 服务

gRPC 是一个开源框架,提供安全可靠的数据传输。您可以使用一组远程过程调用 (RPC) 接口来配置 Junos 遥测,并通过 gRPC 框架对遥测数据进行流式传输。gRPC 远程过程调用用于预配传感器以及订阅和接收遥测数据。OpenConfig 支持 YANG 数据模型。OpenConfig 数据模型以通用的键/值格式将数据生成为 Google Protocol Buffe (.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 或更高版本的设备。

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

表 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 指定用于启用 Junos 遥测的 RPC 模型。此软件包还包括所需的 YANG 型号。

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

使用 Web 浏览器导航至 瞻博网络 网页上的所有 Junos 平台软件下载 URL: https://www.juniper.net/support/downloads/。 在“网络管理”选项卡中,向下滚动以选择“OpenConfig”。选择“软件”选项卡。选择适当的 OpenConfig 模块版本。

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

  • 用于标识用于流式传输遥测数据的系统资源的 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_IETFASCII。在有效选项之外选择任何其他配置都会导致错误消息。

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

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

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

    有关详细信息,请参阅 通过 gNMI 订阅遥测数据的准则

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

gNMI 起源

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

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

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

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

特殊原产地价值

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

YANG 建模数据的来源定义

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

注意:

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

集合中原产地的部分规格

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

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

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

具有多个源的集合的事务性

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