Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

gRPC 隧道概述

gRPC 隧道充当客户端-服务器协议,通过默认路由实例或配置的路由实例将会话从目标拨出到 TCP 客户端。如果未选择配置路由实例,gRPC 隧道将使用默认路由实例。

可以为每个 gRPC 隧道会话配置源地址,以拨出与隧道服务器的连接。如果未配置源地址,内核将选择可以到达隧道服务器的源地址。

有关 gRPC 隧道的详细信息,请参阅 https://github.com/openconfig/grpctunnel

gRPC 隧道有三个主要实体:

  • 目标 — 表示网络设备。目标是 gRPC 客户端。

  • 隧道服务器 — 一个软件实体,它是一个异机应用程序,用于管理订阅和目标注册。隧道服务器是 gRPC 服务器。

  • 隧道客户端 — 执行客户端任务的软件实体。隧道客户端可以是独立包含在隧道服务器中。隧道客户端也是一个 gRPC 客户端。

使用 gRPC 隧道会话的好处:

  • 从服务器端建立连接时,可克服一系列复杂的防火墙配置。

  • 无需任何作要求即可访问各种 TCP 服务器应用,如 gNMI-gNOI、SSH 或 NETCONF-SSH。

gRPC 隧道架构

gRPC 隧道是基于 TCP 的应用程序在 gRPC 消息中进行通信的通用基础结构。

通常,TCP 客户端会启动与 TCP 服务器或目标的连接。Junos 设备充当运行 TCP 服务器应用程序(如 gNMI-gNOI、SSH 和 NETCONF-SSH)的目标。如果客户端无法访问服务器,常见原因可能是:

  • 服务器遇到复杂的防火墙配置,防火墙会阻止入站连接。

  • 服务器运行到实施网络地址转换 (NAT) 的路由器。

  • 服务器会遇到任何其他作要求,这会阻止外部连接。

当 TCP 客户端无法访问目标时,可以配置 gRPC 隧道会话以在 TCP 客户端和目标之间建立连接。gRPC 隧道会话在目标拨出到 TCP 客户端的相反方向上建立连接。

要使用 gRPC 隧道会话,需要将隧道客户端添加到运行 grpc 隧道进程的目标侧,并执行所有与 gRPC 隧道相关的配置。在 TCP 客户端,添加了隧道服务器。

您必须在 grpc-tunnel [edit system services] 层次结构中包含配置语句,才能配置 gRPC 隧道会话。

gRPC 隧道安全

gRPC 隧道是一种拨出模型,设备根据配置启动连接。gRPC 隧道位于使用 TLS 证书的安全 gRPC 通道上。

示例:配置 gRPC 隧道

概述

本节介绍在此示例中配置目标所需的步骤。目标是包含 gRPC 隧道配置的 Junos OS 设备。

要求

此示例使用以下软件和硬件组件:

  • Junos OS 或 Junos Evolved 22.4 或更高版本(适用于路由和交换设备)

  • 一台主机设备作为隧道客户端

  • 一台主机设备作为隧道服务器

拓扑学

图 1 显示了此示例中使用的拓扑。

图 1:gRPC 隧道设置 gRPC tunnel setup

根据目标设备的 Junos 配置,它会向隧道服务器拨出一个 grpc 隧道。目标设备通过注册流 RPC 向隧道服务器注册自身。

当客户端向特定目标请求 TCP 会话时,隧道服务器将充当中间人,并连接到隧道服务器上上述注册的目标会话。

如果目标支持请求的类型,设备将拨出一个名为“隧道流 RPC”的新隧道。此过程通过隧道服务器在客户端和目标之间建立 gRPC 隧道。隧道客户端现在可以访问目标上的预期 TCP 应用程序。

注意:

隧道服务器和网络设备之间只能存在一个寄存器流,但同一对可以存在多个隧道流。

配置 gRPC 隧道

CLI 快速配置

配置此示例的方法是将以下命令复制到文本文件中,调整特定于网络的详细信息,然后将其复制到 [编辑] 层次结构级别的 CLI 中。

分步过程

按照以下步骤在目标设备中配置 gRPC 隧道。

  1. 在 gRPC-tunnel 下配置服务器。

    1. 配置隧道服务器的 IPv4 或 IPv6 地址或主机名。

    2. 配置隧道服务器侦听的端口号。

    3. 使用 tls 语句配置凭据。

    4. 指定要访问的目标应用程序。可用的选项有 sshnetconf-ssh gnmi-gnoi

  2. (可选)设置 重试间隔 (以秒为单位)。如果无法访问 tunnel-server,则目标设备会在重试间隔后重试连接。

  3. (可选)

    设置 路由实例。如果未设置路由实例,则 gRPC 隧道将使用默认路由实例。
  4. (可选)

    设置 源地址。如果未设置源地址,内核将选择可以到达隧道服务器的源地址。
  5. (可选)在 grpc-tunnel 下配置 target-string-option

    1. 使用 pattern 语句创建受支持选项的有序列表。

    2. 使用 custom-string 语句定义一个自定义字符串,当语句 模式 包含 custom 作为选项之一时发送该字符串。

    3. 如果在模式中选择了多个选项,请使用 delimiter 语句。默认情况下, | 使用(管道符号)。

注意:

最多可以配置 10 个隧道服务器。

结果

显示目标设备上的配置结果。输出仅反映此示例中添加的功能配置。