Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

配置 gNOI 服务

总结 将远程网络管理系统配置为可在网络设备上执行 gNOI 操作的 gRPC 客户端。

gRPC 网络操作接口 (gNOI) 使用 gRPC 远程过程调用 (gRPC) 框架在网络设备上执行操作。网络管理系统必须安装 gRPC 堆栈。

OpenConfig 为 gNOI 服务定义了原型定义文件。原型定义文件定义给定服务的操作 (RPC) 和数据结构(消息)。这些定义与语言无关。gRPC 支持使用许多不同的语言来执行服务操作。您必须为所选语言编译原型定义文件。然后,创建使用已编译文件中的对象(类、函数、方法等)的应用程序,以连接到网络设备上的 gRPC 服务器并执行所需的操作。

有关将 gRPC 与不同的受支持语言一起使用的信息,请参阅 gRPC 文档。以下部分提供了用于设置 gRPC 客户端以及下载和编译 Python 的 gNOI 原型定义文件的示例命令。必须使用适用于所选操作系统、环境和 gRPC 语言的命令。

在配置 gRPC 客户端之前,请按照 配置 gRPC 服务中的定义配置 gRPC 服务器。

设置 gRPC 客户端

gNOI 使用 gRPC 框架在网络设备上执行操作。gRPC 支持使用许多不同的语言。在使用所选语言执行 gNOI 操作之前,必须在网络管理系统上安装 gRPC 堆栈。

例如,要在运行 Ubuntu 20.04 LTS 的网络管理系统上安装 Python 的 gRPC 堆栈(在适当的情况下使用 sudo ):

  1. 为 Python 3 安装 pip
  2. grpcio安装 Python 软件包。
  3. grpcio-tools安装 Python 软件包。

编译原型定义文件

gRPC 支持使用多种语言。若要在网络设备上执行 gRPC 操作,必须针对所选语言编译相应的原型定义文件。OpenConfig 在 OpenConfig GitHub 存储库中提供了必要的原型定义文件。您可以使用协议缓冲区编译器(protoc 或等效应用程序)来编译 .proto 文件。

对于此设置,我们执行一个脚本,将所有所需的 .proto 文件复制到目录中,更新文件以使用相对导入语句,然后编译文件。

要下载并编译 Python 的 gNOI 原型定义文件,请执行以下操作:

  1. 为原始源文件创建临时目录。
  2. 将 gNOI GitHub 存储库克隆到本地设备。
  3. 为您的语言编译 .proto 文件,在本例中为 Python。

    示例 shell 脚本执行以下操作:

    • 创建 src/proto 目录。
    • 将所需的原型文件复制到新目录中。
    • 更新每个原型文件中的导入语句以使用相对路径。
    • 编译指定列表中的每个原型文件以用于 Python。

    要使用脚本编译文件,请从包含该 src 目录的父目录执行脚本。

    注意:

    该脚本仅编译 Junos 设备上支持服务的 proto 文件子集(如 中 gnoiFileList定义)。若要在其他服务可用时对其进行编译,可以更新变量以包含这些服务。

  4. 通过查看目标目录中的输出文件来验证是否已编译原型文件。

    文件列表应包括已编译的文件,对于 Python 来说,这些文件在输出文件名中 具有_pb2pb2_grpc

创建 gNOI 应用程序

编译原型定义文件后,将创建使用已编译文件中的对象的应用程序。应用程序连接到网络设备上的 gRPC 服务器并执行所需的操作。本节提供了两个示例 Python 模块,它们在各自的部分中进行了介绍。

grpc_channel.py

Python grpc_channel.py 模块提供了示例函数,这些函数使用为所选身份验证方法(仅限服务器或相互)提供的参数创建 gRPC 通道。

gnoi_connect_cert_auth_mutual.py

gnoi_connect_cert_auth_mutual.py Python 应用程序与给定的 gRPC 服务器建立 gRPC 通道,并执行简单的 gNOI System 服务操作。用户提供必要的连接和相互身份验证信息作为应用程序的输入。应用程序调用模块中的grpc_channel.py相应函数,以在客户端和服务器之间建立 gRPC 通道。如果应用程序成功建立了 gRPC 通道,它将执行一个简单的系统服务 RPC 以从网络设备检索时间。

执行应用程序

创建应用程序以执行 gNOI 服务操作后,可以执行应用程序并提供任何必要的参数。下面的示例使用上一节中提供的脚本连接到网络设备上的 gRPC 服务器并请求时间。gRPC 服务器配置为需要并验证客户端的证书。

  • 对于相互身份验证,除了服务器的 IP 地址、gRPC 端口和根 CA 证书外,客户端还提供自己的密钥和 PEM 格式的 X.509 公钥证书。客户端还提供用于 RPC 调用的凭据: user_id 参数提供用户名,应用程序提示输入用户密码。