跳至主要内容

什么是 gNMI(gRPC 网络管理接口)?

什么是 gNMI(gRPC 网络管理接口)?

gNMI(gRPC 网络管理接口)是一种网络管理协议,利用 gRPC 对网络设备进行配置及状态数据检索。gNMI 为遥测和网络自动化相关的消息传递提供了一种标准化方法。与 SNMP 或 NETCONF 等传统协议不同,gNMI 利用现代远程过程调用 (RPC) 框架,支持实时流式遥测并提供高效的配置管理。

gRPC 网络管理接口(gNMI)的关键组件有哪些?

gNMI 不再依赖各种不同的协议来检索操作数据,而是提供一个基于标准化应用程序编程接口(API)的框架,从而简化对网络设备数据的访问。这使组织能够克服网络效率低下的问题,降低开销,并通过单一解决方案查看网络设备的操作数据。

在 gNMI 架构中,您会遇到以下术语:

  • 客户端:指运行 gRPC 客户端软件的网络管理系统
  • 服务器:指运行 gRPC 服务器的网络设备,例如路由器、交换机和负载均衡器

客户端和服务器均使用以下 gNMI 组件来发送和接收消息。

gNMI 服务定义

gNMI 使用 gRPC 来定义用于与网络设备收发数据的关键服务。尽管 gRPC 允许软件定义多种自定义函数,但 gNMI 仅使用 Get、Set、Capabilities 和 Subscribe 作为其核心函数。

路径寻址

客户端发送消息请求时,会使用基于 YANG 建模的路径结构来指定目标设备。YANG 是一种用于网络管理协议的数据建模语言。YANG 文件描述了网络设备的结构模式、配置和层级关系。此外,客户端还可以使用一种称为路径通配符的引用方法,从同一设备检索多个元素。

通知消息

每当成功处理更新或删除操作时,gNMI 服务器都会发送通知消息。在遥测订阅中,设备会实时持续发送消息流。

原子事务

gNMI 支持配置更新的原子事务。原子事务意味着只有当所有参数都成功处理时,更新才被视为成功。如果一个或多个参数更新失败,服务器将不会发生任何更改。

gNMI 操作有哪些类型?

gNMI 利用这些核心功能来管理网络设备。

Capabilities 操作

Capabilities RPC 功能允许客户端获取服务器的网络能力信息。例如,作为对 Capabilities 请求的响应,网络设备会提供其使用的 gNMI 版本、数据编码方式以及支持的数据模型。客户端在后续交互中发送操作请求时,会使用这些参数。

Get 操作

Get 操作允许客户端实时查看服务器目标设备的配置或状态数据。接收到请求后,服务器会处理该请求并返回包含所请求数据的消息。

Set 操作

Set 操作允许客户端更新、替换或删除服务器上的特定配置。可以在单个请求中设置多个配置值,服务器必须在单个事务中处理这些值。如果服务器在处理任何值时遇到问题,它会放弃更改并恢复到原始值。

Subscribe 操作

Subscribe 操作是指客户端注册对特定网络参数的关注,以便进行持续监控。在发送 SUBSCRIBE 请求时,客户端可以指定遥测流传输的采样间隔和条件。

gNMI 是如何工作的?

gNMI 协议提供了一种基于 gRPC 的网络管理方法,用于遥测数据流传输以及配置路由器、交换机和其他网络设备的机制。gRPC 是一种先进的远程过程调用(RPC)框架,与某些类似协议相比,它能实现更快的网络通信。借助 gRPC,客户端可以像调用本地函数一样调用服务器函数。gNMI 使用 gRPC 作为其通信基础,连接集中式管理中心与网络设备。

以下是 gNMI 流程的各个层级。

gRPC 传输层

gRPC 传输层支持 gNMI 兼容客户端与服务器之间的双向流式传输。客户端可以连接到多个服务器,从而在一个位置获取并汇总各种运行数据。此外,客户端还可以将配置数据发送到相应的服务器或网络设备。默认情况下,所有 gNMI 通信均通过 TLS 加密的 HTTP/2 连接进行。这有助于保护网络配置数据,防止未经授权的各方访问。

数据编码

网络设备利用 gRPC 的协议缓冲区(Protobuf)进行二进制编码,或者使用 JSON(包括 JSON_IETF),通过 gNMI 高效传输结构化数据。协议缓冲区支持快速序列化,生成的数据包比 JSON 更小,尽管 JSON 数据类型具有更好的人类可读性。

订阅操作

gNMI 使用 gRPC 从网络设备流式传输遥测数据。客户端软件无需轮询每台设备以获取其状态,而是可以订阅特定网络参数的遥测数据流。

以下是数据流式传输过程中的消息交互示例:

  • 客户端向网络交换机发送功能请求
  • 网络交换机返回其数据模型、数据编码方式及其他功能
  • 客户端发送 gNMI 订阅 RPC,指定需要监控的交换机运行状态及消息发送的时间间隔
  • 客户端按指定的时间间隔接收交换机的运行状态信息

订阅模式

gNMI 支持周期性订阅和基于变化的订阅。

  • 周期性订阅允许网络设备按预设的时间间隔发送状态更新。
  • 基于变化的订阅则在监控的参数发生变化时触发更新消息。例如,设备可以在路由表发生变化时实时流式传输这些变更信息。这对于时间敏感型操作至关重要。

gNMI 有哪些优势?

以下是 gNMI 为组织带来的益处。

网络设备的厂商中立性

gNMI 是一项开放标准,采用 YANG 数据模型(包括来自 OpenConfig 工作组或特定厂商的模型)。得益于 YANG 标准化,组织可以使用单一协议管理来自不同厂商的设备。

性能效率

与其他协议(如 SNMP)相比,gNMI 在使用 Protobuf 进行数据编码时效率更高。gNMI 基于 HTTP/2 传输数据,允许设备在发送消息后保持连接开启状态。

实时遥测

利用现代网络设备进行创新的组织可以借助 gNMI 的低延迟、高吞吐量数据交换能力来提升网络可见性。gNMI 客户端软件无需轮询设备以获取更新,而是能够实时收集网络数据。

配置管理中的事务完整性

gNMI 事务支持原子操作。在更新网络配置时,要么所有参数都更新成功,要么全部不更新。这使网络管理员能够避免因状态变更中断而导致的配置错误。通过这些原子操作,您可以安装、修改或删除网络设备配置。

可扩展性

组织在利用传统网络管理方法扩展其网络基础设施时,会面临运营方面的挑战。随着网络中设备数量的增加,网络运维团队可以利用 gNMI 来应对配置、管理及故障排查方面的复杂性。gNMI 专为通过“推送(push)”遥测模式处理高流量负载而设计。与传统的 SNMP 相比,组织能够更快速地将网络管理能力扩展至大规模网络环境。

什么是 gNMI-gateway?

gNMI-gateway 是一款用于 gNMI 和 OpenConfig 遥测数据的网关,充当网络设备与遥测监控及数据可视化系统(如 Prometheus 和 Apache Kafka)之间的中介。gNMI-gateway 既负责在网络中接收 gNMI 数据,也负责分发这些数据,从而有助于提升系统的可扩展性。gNMI-gateway 采用模块化设计,因此可以部署为分布式、高可用且容错的架构,以处理流式数据。

gNMI 与 NETCONF 相比如何?

NETCONF 是一种网络配置管理协议,它使用基于 SSH 的 XML 来发送配置数据。NETCONF 可以使用订阅或轮询模式,即由客户端发送请求消息,网络设备进行响应。NETCONF 采用暂存模型来支持测试和回滚操作。

与此同时,gNMI 利用 HTTP/2 上的 gRPC 协议来传输配置和遥测数据。通常,由于 Protobuf 的数据量小于 XML,gNMI 传输的数据包也较小,因此缩短了服务器的响应时间。

NETCONF 更适合对安全性有严格要求、关键性的网络管理系统;而 gNMI 则更适合从现代网络设备进行简单、实时的网络遥测数据流传输。

gNMI 与 SNMP 相比有何不同?

简单网络管理协议(SNMP)是一种起源于 1988 年的协议,用于从网络设备获取运行数据。传统的 SNMP 依靠轮询方式从设备获取网络数据,这种方式可能效率较低且难以扩展。

相比之下,gNMI 是一种专为可扩展性而构建的现代网络管理协议。与 SNMP 不同,gNMI 采用“推送”模式,即由网络设备主动向客户端推送运行数据。gNMI 通过经 TLS 加密的 HTTP/2 通道传输数据,并使用二进制编码;而 SNMP 通常使用用户数据报协议(UDP),尽管它也支持 TCP。SNMP 仍广泛应用于传统网络监控领域,而 gNMI 则为高容量的实时流式网络提供了灵活性。

AWS 如何满足您的 gNMI 需求?

AWS 提供可与支持 gNMI 的基础设施集成的网络自动化和流式遥测服务:

  • Amazon CloudWatch 是一项智能可观测性服务,支持您监控并优化整个技术栈,从而针对应用程序和基础设施提供可付诸行动的见解。
  • AWS IoT Core 可帮助您轻松可靠地连接、管理和扩展物联网设备机群,且无需预置或管理服务器。
  • AWS Lambda 是一种无服务器运行时环境,可与 AWS 及第三方实时数据来源原生集成;它支持您处理实时数据,而无需承担管理流式客户端库或学习专用数据处理框架的额外负担。

立即创建免费账户,开始在 AWS 上使用网络自动化。

Browse all cloud computing concepts

Browse all cloud computing concepts content here:

正在加载
正在加载
正在加载
正在加载
正在加载

Did you find what you were looking for today?

Let us know so we can improve the quality of the content on our pages