Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

开发设备外 JET 应用程序

概述

您可以使用 JET 开发设备外运行的应用程序。这使您可以利用网络上所有设备上的 JET 优势。为方便开发,您可以使用自己选择的语言注销设备 JET 应用程序。要开发设备外应用程序:

  1. 下载和编译 IDL 文件。

  2. 使用您选择的语言开发应用程序。

  3. 打包应用程序。

  4. 在外部服务器上部署应用程序包或直接从 JET VM 运行应用程序。

图 1 显示了设备外应用程序开发工作流程。

图 1:设备外 JET 应用程序工作流程 Off-Device JET Application Workflow

开发和打包您的应用程序

开发应用程序之前,请确保您已按照 “设置 JET 虚拟机 ”中的说明设置 JET 虚拟机并下载 IDL 文件。

  1. 编译计划以您选择的语言使用的 proto 定义文件。

    在此示例中,我们使用 Python。我们将这些文件编译为管理、身份验证和常用基本类型的 API。

    您已为每个指定的 API 编译了 Python 和 gRPC 模块。

  2. 使用您选择的语言开发应用程序。

    如果您正在开发依赖于 C 或 C++ 模块的应用程序或正在开发签名的应用程序,则必须使用 JET VM 进行 JET 应用程序开发。

    注意:

    从 Junos OS 21.1R1 版和 Junos OS Evolved 版本 22.3R1 开始,不再支持 Python 2.7。改用 Python 3。

    生成客户端存根后,您可以使用存根编写应用程序。有关生成 gRPC 客户端存根、使用存根编写应用程序以及使用所选语言从 IDL 文件中生成代码的详细信息,请 参阅 https://www.grpc.io/docs/

  3. 使用 JSON 打包应用程序。有关详细信息,请参阅 JET 应用程序包

准备部署您的应用程序

在外部服务器上或直接从 JET 虚拟机运行您的应用程序。在外部服务器上部署应用程序之前,您需要配置与 Junos OS 的 JET 交互。

配置与 Junos OS 的 JET 交互

要运行设备外应用程序,您需要启用 request-response Junos OS 或 Junos OS Evolved 上的配置。使用 request-response 服务时,客户端应用程序会发出请求,并同步等待 Junos 服务器的响应。使用本节配置在安全套接字层 (SSL) 模式下运行的请求响应服务的 JET 服务进程 (jsd)。这提高了安全性并支持基于 SSL 的 API 连接。

注意:

目前,JET 支持传输层安全 (TLS) 版本 1.2 进行证书交换,并支持多种加密算法,但不支持相互身份验证。这意味着客户端可以对服务器进行身份验证,但服务器无法使用 SSL/TLS 证书对客户端进行身份验证。对于客户端身份验证,请使用身份验证服务 API 中的 LoginCheck() 过程。

  1. 通过在本地添加和配置证书名称,允许 jsd 使用 SSL。证书必须是 RSA 证书。不支持 ECDSA 和 DSA SSL 证书。

    此方法与 Junos OS 中其他基于 SSL 的服务(如 xnm-ssl)相同。跟踪您在生成证书时指定的证书名称条目。您将将其用于下一 HOST_OVERRIDE 节 Python 应用程序示例中的选项。在此示例中,证书名称为 router

    注意:

    如果证书更新了同一标识符,则不会对 jsd 进行更改。您需要使用 jsd 层次结构中的新标识符配置证书,或执行 jsd 重新启动以反映所做出的更改。

  2. 将 SSL 证书 .pem 文件复制到 Junos 设备。

    例如:

  3. 将证书加载到 Junos 设备上的密钥链中。例如,如果 SSL 证书的本地名称为 sslcert

  4. 为加载证书启用 SSL 支持。

    例如:

  5. (可选)指定将使用 SSL 的特定 IP 地址或端口。SSL 使该地址或端口成为安全通道。

    如果将地址设置为 0.0.0.0,设备会在所有端口上使用 SSL。例如,要在所有端口的 gRPC 端点上启用 SSL 支持,以及默认 TCP 端口 51051:

  6. 指定可连接到 jsd 的请求响应的最大同时连接数。数字越高,对客户端性能的影响就越高。

    您已配置 jsd,用于在 SSL 模式下运行请求响应服务。您已准备好部署 JET 设备外应用程序。

  7. 指定要使用的脚本。

    注意:

    从 Junos OS 21.1R1 版和 Junos OS Evolved 版本 22.3R1 开始,Python 2.7 不再支持, set system scripts language python 语句将弃用。请改为使用 语 set system scripts language python3 句。

示例:Python JET 应用程序

使用此示例开发写在 Python 中的设备外 JET 应用程序。对于 gRPC 支持的其他语言,您可以遵循相同的指导。此 Python JET 应用程序以 XML 格式运行命令 get-system-uptime-information

在此示例中 HOST_OVERRIDE ,选项使用在证书生成期间指定的证书名称。请参阅 准备部署应用程序

注意:

瞻博网络支持以下两种表格,用于解说 XML 打开和关闭标记: <xml-tag/><xml-tag></xml-tag>

Junos OS 版本 18.4R1 和更高版本

如果您使用 Junos OS 版本 18.4R1 或更高版本,请将本节中显示的 Python 应用程序示例用作指南。

如果您使用 Python 3 编写应用程序,请将 PASS 关键字包含在脚本的例外块中。

Junos OS 版本 18.4R1 之前

如果您在 18.4R1 之前使用 Junos OS 版本,请将本部分中的 Python 应用程序示例用作指南。