Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

gNOI 系统服务

总结 使用 gNOI System 服务对目标网络设备执行系统操作,包括重新启动设备、升级软件以及对网络进行故障排除。

概述

gNOI System 服务提供 RPC,用于在网络设备上执行多种不同的系统操作,包括以下操作:

  • 重新启动设备
  • 执行 ping 和 traceroute 命令以排除网络故障
  • 升级软件
  • 执行路由引擎切换

proto 定义文件位于 https://github.com/openconfig/gnoi/blob/master/system/system.proto

注意:

如果系统故障,进程 gnoi-system 将重新启动。要手动重新启动,请使用 restart gnoi-system 命令。

网络设备配置

开始之前:

  • 按照配置 gRPC 服务中的说明,在网络设备上 配置 gRPC 服务
  • 按照配置 gNOI 服务中的说明,配置网络管理系统以支持 gNOI 操作

使用 System 服务 RPC 不需要其他配置。

Ping 和 Traceroute

您可以在网络设备上执行 ping 和 traceroute 命令,以排除网络上的问题。

表 1:用于网络故障排除支持的 system.proto RPC
版本中引入的 RPC 说明
Ping()

Ping 设备。 Ping() RPC 支持 IPv4 和 IPv6 ping。ping 完成后,此 RPC 会回流式传输 ping 的结果。

默认数据包数:5

Junos OS Evolved 22.2R1

Traceroute()

在目标设备上执行 traceroute 命令并回流式传输结果。

默认跃点计数:30

Junos OS Evolved 22.2R1

示例:Ping

在此示例中,客户端执行 gnoi_ping_request.py Python 应用程序。应用程序会将 Ping() RPC 发送至网络设备,然后网络设备对指定设备执行 ping 操作。

应用程序gnoi_ping_request.py会导入模块grpc_channel以建立通道。配置 gNOI 服务中介绍了该grpc_channel模块。应用程序的参数存储在 gnoi_ping_request_args.txt 文件中。此处显示应用程序和参数文件。

gnoi_ping_request.py

gnoi_ping_request_args.txt

执行应用程序

在客户端上执行应用程序,这将提示服务器密码,获取 RPC 调用凭据。表示 PingResponse 设备发送了五次 ping。最终响应包括 ping 请求的汇总统计信息,其中显示设备发送了 5 次 ping,收到了 5 个响应。

重新启动设备

使用 System 服务 RPC 远程重新启动设备,检查重新启动的状态,并根据需要取消重新启动。您可以在设备或特定子组件上执行这些 RPC。Junos 设备支持以下重新启动方法:

  • 冷 (1):可用于所有类型的重启。

  • 电源关闭 (2):用于 FPC 重新启动。

  • 停止 (3):用于主动控制处理器重新启动。

  • POWERUP (7):用于 FPC 重新启动。

表 2:用于重新启动支持的 system.proto RPC
版本中引入的 RPC 说明
Reboot()

重新启动目标。一次只能对目标执行一次重新启动请求。

您可以选择配置将来重新启动的延迟,单独重新启动子组件,并在重新启动开始时添加消息。以纳秒为单位配置延迟。

Junos 设备支持以下重新启动方法:

  • 冷 (1)

  • 电源关闭 (2)

  • 停止 (3)

  • 电源 (7)

Junos OS Evolved 22.2R1

RebootStatus() 返回重新启动的状态。

Junos OS Evolved 22.2R1

CancelReboot() 取消悬而未决的重新启动请求。

Junos OS Evolved 22.2R1

示例:重新启动

在此示例中,客户端执行 gnoi_reboot_request.py Python 应用程序。应用程序发送重新启动请求,然后检查重新启动的状态。

应用程序允许用户在几秒钟内设置重新启动延迟。由于应用 RebootRequest() 以纳秒为单位来解释延迟,从而将用户输入转换为纳秒的请求。在此示例中,客户端为重新启动操作指定 60 秒的延迟。

应用程序gnoi_reboot_request.py会导入模块grpc_channel以建立通道。配置 gNOI 服务中介绍了该grpc_channel模块。应用程序的参数存储在 reboot_status_request_args.txt 文件中。此处显示应用程序和参数文件。

gnoi_reboot_status_request.py

reboot_status_request_args.txt

执行应用程序

当客户端执行应用程序时,应用程序会提示为 RPC 调用凭据输入服务器密码。然后,应用程序在 60 秒延迟后重新启动服务器,并返回适用的重新启动状态消息。在服务器重新启动之前,也会在服务器上显示下 reason 的消息集。在此示例中,登录到服务器的任何用户都会在重新启动之前看到“测试 gNOI 重新启动”。

升级软件

表 3 列出了支持软件升级的 system.proto RPC。

表 3:软件升级支持的 system.proto RPC
版本中引入的 RPC 说明
SetPackage()

在目标设备上安装软件映像。

Junos OS Evolved 22.2R1

您可以使用 RPC 将 SetPackage() 软件映像复制到目标设备并安装它。源软件映像必须位于本地网络管理系统上。如果文件复制操作成功,且目标位置已存在同名文件,则该文件将被覆盖。如果目标位置不存在,或者写入数据时出错,RPC 将返回错误。

默认情况下,SetPackage()不重新启动设备并激活软件。您必须在消息中activateSetPackageRequest将选项显式设置为 1,才能激活新软件。如果激活该软件,设备将重新启动并使用新的软件映像。如果未激活软件,则必须重新启动相关节点以完成安装并激活新软件映像。

示例:安装软件包

在此示例中,客户端会执行 gnoi_system_set_package.py Python 应用程序,该应用程序将执行以下操作:

  • 将软件包从本地网络管理系统复制到网络设备。
  • 将软件包安装在网络设备上。
  • 重新启动网络设备,从而激活新软件映像。

应用程序使用适当的参数构造 SetPackageRequest 消息,以定义复制和安装操作的请求。然后,应用程序调用 SetPackage() RPC,将请求发送至网络设备。消息 SetPackageRequest 包含以下组件:

  • 包含软件映像的路径和文件信息的初始 Package 消息。参数 activate 设置为 1 (True),以重新启动设备并激活软件。
  • 连续消息中的软件图像文件内容流,不超过 64KB。
  • 最后一条消息,带有文件校验和,用于验证文件内容的完整性。

应用程序gnoi_system_set_package.py会导入模块grpc_channel以建立通道。配置 gNOI 服务中介绍了该grpc_channel模块。应用程序参数存储在文件中args_system_set_package.txt。应用程序和参数文件如下所示:

gnoi_system_set_package.py

args_system_set_package.txt

执行应用程序

当客户端执行应用程序时,应用程序会将软件包从本地设备复制到网络设备,安装它,然后重新启动设备以完成安装。

路由引擎切换

您可以使用 SwitchControlProcessor() RPC 执行路由引擎切换。

注意:

在两个路由引擎出现后,连续路由引擎切换事件之间的间隔必须至少为 400 秒。

表 4:路由引擎切换支持的 system.proto RPC
版本中引入的 RPC 说明
SwitchControlProcessor()

从当前路由引擎切换到指定的路由引擎。如果当前和指定的路由引擎相同,则为 NOOP。如果目标不存在,RPC 将返回错误。

注意:

Junos 设备不支持control_processor SwitchControlProcessorResponse

Junos OS Evolved 22.2R1

示例:路由引擎切换

在此示例中,gNOI 客户端执行 gnoi_system_switch_control_processor.py 应用程序以执行路由引擎切换。客户端通过包括 control_processor 参数来指定哪个交换机控制处理器或路由引擎应是主路由引擎。如果目标路由引擎不存在,RPC 将返回错误 INVALID_ARGUMENT

应用程序会导入模块grpc_channel以建立通道。配置 gNOI 服务中介绍了该grpc_channel模块。

gnoi_system_switch_control_processor.py

执行应用程序

客户端执行应用程序并将参数re1设置为control_processor,以便 re1 成为主要路由引擎。

执行操作后,re1 是目标设备上的主路由引擎。