Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

JET Overview

Juniper Extension Toolkit (JET), an evolution of the Junos SDK, provides a modern, programmatic interface for developers of third-party applications on Junos devices. It focuses on providing a standards-based interface to the Juniper Networks Junos operating system (Junos OS) for customizing management and control plane functionality.

JET also includes a virtual machine (VM) packaged as a vagrant file, libraries, and other tools to enable developers to write on-device JET applications.

Benefits of JET

  • Provides APIs to interact with any device running Junos OS.

  • Supports API development in multiple languages.

  • Provides tools to develop applications that run on Junos devices.

  • Uses an event notification method that enables JET applications to respond to selected system events.

JET Architecture

JET is a framework that enables developers to create applications that extend the functionality of Junos OS. For example, a JET application might extend the Junos CLI by adding a new operational command to show application-specific states. JET applications can run on devices running Junos OS or on another device in your operating environment and connect over the network to a device running Junos OS.

JET applications interact with Junos OS through request-response and notification services over standards based transport channels. Figure 1 illustrates the request-response and notification services.

Figure 1: JET Request-Response and Notification ServicesJET Request-Response and Notification Services

Table 1 describes the request-response and notification services.

Table 1: JET Applications Interact with Junos OS Through Services

Service

Description

Request-response—An application can issue a request and wait for the response from Junos OS.

JET services daemon (jsd), which runs on Junos OS, provides the request-response service. When jsd receives a request (by default on TCP port 32767), it creates a new session to service the JET application. The session remains alive as long as the client and server are both up and communicating with each other. Over the lifetime of a session, jsd can execute any number of APIs. jsd can support a maximum of 8 active client sessions and execute APIs from these sessions in parallel.

Note:

For secure communications with jsd, use RSA certificates, specifically TLSv1.2 (minimum).

Notifications—An application can receive asynchronous notifications of events happening on Junos OS.

JET provides a publish-subscribe based messaging protocol and a notification broker. JET applications can register with the notification broker and inform the broker about the topics of interest to receive messages. The broker is responsible for distributing messages to the interested clients based on the topic of the message. Junos OS daemons publishing the events (such as eventd) connect to the broker as a publisher and publish the events.

JET utilizes Message Queue Telemetry Transport (MQTT) protocol (see https://mqtt.org/) method to implement the notification service.

JET and gRPC

Starting in Junos OS Release 16.2R1, JET supports the gRPC framework for remote procedure calls (RPCs). JET uses gRPC for cross-language services as a mechanism to enable request-response service. gRPC also provides a mechanism to define APIs that are programming language agnostic. For more information, see https://www.grpc.io/.

Release History Table
Release
Description
16.2R1
Starting in Junos OS Release 16.2R1, JET supports the gRPC framework for remote procedure calls (RPCs).