了解用于管理网络设备的 gRPC 服务
gRPC 客户端应用程序可以使用在 OpenConfig 网络接口(gNMI、gNOI、gRIBI)中定义的 gRPC 网络服务来管理受支持的网络设备。
gRPC 网络服务的优势
- 提供简单、不受供应商限制的接口来管理网络设备。
- 使您能够更轻松地大规模管理多供应商网络。
- 使用 gRPC 远程过程调用框架进行传输,将协议缓冲区用于服务定义和编码,从而提供高效的传输和快速处理。
了解 OpenConfig
OpenConfig 是网络行业的一项协作项目,旨在转向一种更加动态、可编程的方法来配置和管理多供应商网络。OpenConfig 支持使用供应商中立的服务定义和数据模型来管理和配置网络。服务定义定义了在网络设备上执行的常见操作,数据模型定义了针对通用网络协议或服务的网络设备的配置和操作状态。
拥有多供应商网络的运营商可以从使用行业标准模型和规范中获益匪浅。OpenConfig 旨在让运维人员能够使用一组数据模型和操作来配置和管理支持 OpenConfig 计划的所有网络设备。OpenConfig 工作组为基于 gRPC 的接口制定了规范,用于管理网络设备上的配置、操作和遥测流,与其他传统网络管理协议相比,这些接口具有优势。
基于 gRPC 的服务概述
gRPC 是一个开源的远程过程调用 (RPC) 框架,最初由 Google 开发。gRPC 使用 HTTP/2 进行传输,并支持现代安全机制和双向流。gRPC 使用协议缓冲区数据格式来定义服务和编码数据。Protocol Buffers 与语言无关,并支持多种不同语言的绑定,这使得运营商能够轻松地将基于 gRPC 的服务集成到现有的管理应用程序中。
OpenConfig 工作组为基于 gRPC 的网络管理协议定义了规范。基于 gRPC 的网络服务包括:
-
gRPC 网络管理接口 (gNMI) — 用于配置管理和流式遥测的单一服务。
-
gRPC 网络操作接口 (gNOI) — 用于操作管理的微服务套件。
-
gRPC 路由信息库接口 (gRIBI) — 支持外部应用程序以编程方式在目标设备上的路由表中添加或删除条目的服务。
图 1 说明了不同服务的范围。
gNMI、gNOI 和 gRIBI 概述
gNMI 为网络元素的状态管理提供单一服务。gNMI 使用供应商中立的数据模型,用于为常见网络协议或服务定义网络设备的配置和运行状态。gNMI 客户端可以检索和修改网络设备的配置以及流式传输操作数据。运营商通过订阅感兴趣的特定数据对象来监控网络。gNMI 还支持 变更 流式传输,这对于时间敏感型运维至关重要。
有关在 Junos 设备上使用 gNMI 进行配置管理和遥测流式处理的更多信息,请参阅:
gNMI 处理状态管理,而 gNOI 处理操作管理。gNOI 是一组基于 gRPC 的微服务,用于在网络设备上执行常见操作。每个服务定义都定义了管理应用程序可以在设备上执行的 RPC,以执行一组操作,例如,重新启动设备或升级软件。有关支持的 gNOI 服务列表,请参阅 gNOI 服务概述。
gRIBI 提供单一服务来管理网络设备的路由信息库(RIB,也称为路由表)和转发信息库(FIB,也称为转发表)。管理应用可以在设备上执行 gRIBI RPC,以便从设备的 RIB 或 FIB 中检索、添加、修改或删除路由。有关受支持的 gRIBI RPC 的更多信息,请参阅 gRIBI。
gNMI、gNOI 和 gRIBI 使用 gRPC 进行传输,gRPC 服务器与 gRPC 客户端之间的连接通过 SSL 加密的 gRPC 会话进行。例如, 图 2 展示了 gRPC 客户端和服务器之间的简单连接。瞻博网络支持仅服务器身份验证和 gRPC 会话的相互身份验证,后者使用 X.509 证书对设备或应用进行身份验证。证书可以由证书颁发机构 (证书颁发机构) 签名或自签名。
gNMI、gNOI 和 gRIBI 定义用于管理网络设备的服务。每个服务定义在原型定义文件中定义该特定服务的操作 (RPC) 和数据结构(消息)。数据结构是使用协议缓冲区定义的,这是一种用于序列化结构化数据的开源、语言中立的数据格式。您可以使用 protoc 或等效的编译器来编译您选择的语言的原型文件。管理应用程序可以使用编译文件中的代码在网络设备上执行请求的操作。 表 1 概述了包含每个服务接口的原型定义文件的 GitHub 存储库。
| 接口 | GitHub 存储库 |
|---|---|
| gNMI |
|
| gNOI |
|
| gRIBI |
基于 gRPC 的网络服务提供了其他网络管理协议(如 NETCONF 和 RESTCONF)的替代方案和优势。由于可以编译多种不同语言的原型定义文件,因此可以轻松地将服务与现有管理应用程序集成,以管理多供应商网络。此外,与 JSON 和 XML 等其他序列化格式相比,使用协议缓冲区进行数据序列化通常可提供更高效的传输和更快的处理速度。