Using the SDK libraries, you can create your own, value-added features for JUNOS platforms. The SDK lets you quickly integrate your features and technology without your needing to fully understand the underlying architecture of the JUNOS code base.
One version of the SDK runs on the Routing Engine (RE SDK) and a second version adds the ability to run on the MultiServices PIC (Services SDK, formerly called MP SDK). Although we conceptually divide the functionality into an RE SDK and Services SDK, certain functions, or even entire libraries, can be applicable to either or both versions.
The JUNOS SDK consists of two parts: the set of Application Programming Interfaces (APIs) presented to application developers, and the development environment in which to build and package the applications. Both of these are encapsulated in a software package that a developer can unpack on a build machine. The build machine must provide a FreeBSD environment through VMware (Although the SDK should run on native FreeBSD, only a VMware-provided environment is supported).
Once you have unpacked the software, you can use the resultant build environment and APIs to write JUNOS applications (in either C or C++), which can then be packaged and signed for installation on a Juniper M-series or T-series router. Application Examples.
The end product of the SDK build process is a package that your customers install on the router. This package contains the daemons, shared libraries, installation scripts, and other files necessary for your particular value-added functionality. For example, the JUNOS software places many of its daemons, such as rpd, mgd, and so forth, in a
jroute package. Similarly, if you were the SDK developer for the Acme Corporation, you could create a
jacme_corp package that contains
jacme_app2 daemons. (Details about building SDK packages are in Build and Packaging Procedure.)
The remainder of this page provides links to SDK architectural and functionality overview topics.