Juniper Networks Announces Intent to Acquire HTBASE

Acquisition will bolster Juniper’s Contrail Enterprise Multicloud Solutions

SUNNYVALE, Calif., Nov. 29, 2018 (GLOBE NEWSWIRE) — Juniper Networks(NYSE: JNPR), an industry leader in automated, scalable and secure networks, today announced the company’s intent to acquire HTBASE, which has developed a highly unique and disruptive platform for software-defined enterprise multicloud. HTBASE offers a single layer of compute, networking and storage across public and private clouds as well as the edge, greatly simplifying how multicloud environments are managed and easing application migration across multiple clouds. This acquisition will bring multicloud storage to Juniper’s strong network and compute orchestration capabilities of its Contrail Enterprise Multicloud.

HTBASE’s unique value is its platform’s ability to make the complete infrastructure layer (compute, storage and networking) transparent to applications, without impacting the operating system or architecture. This allows for very easy migration of enterprise workloads and leverage of multicloud without porting or lock-in on a single infrastructure stack. We believe that Juniper customers will benefit from HTBASE’s extensible platform and their composable system which enables software elements to be reused and extended to make the whole of Contrail more powerful for whatever the multicloud brings.

“Companies are moving more workloads from on-premises to the cloud to keep up with the need for agility and more flexibility. It’s up to us to make this transition not only achievable, but more importantly, to focus on making the move to the multicloud simple,” said Rami Rahim, CEO of Juniper Networks. “Juniper is betting big on multicloud and the momentum is mounting every day. Together with HTBASE, we have an opportunity to shape a new and emerging market that will deliver significant value with a unique line of products to customers worldwide.”

The acquisition is expected to close in the fourth quarter of 2018, subject to customary closing conditions.

Additional Resources:

About Juniper Networks

uniper Networks simplifies the complexities of networking with products, solutions and services in the cloud era to transform the way we connect, work and live. We remove the traditional constraints of networking to enable our customers and partners to deliver automated, scalable and secure networks that connect the world. Additional information can be found at Juniper Networks ( or connect with Juniper on TwitterLinkedIn and Facebook.

Juniper Networks, the Juniper Networks logo and Junos are registered trademarks of Juniper Networks, Inc. and/or its affiliates in the United States and other countries. Other names may be trademarks of their respective owners.

Media Relations:

Juniper Networks
Leslie Moore
(408) 936-5767
[email protected]

Forward-Looking Statements

Statements in this press release concerning Juniper Networks’ business, strategy and focus; the results and improvements made possible by HTBASE’s technology, including as combined with Juniper Networks solutions; the impact of the acquisition on our ability to use software automation and intelligence to deliver a smarter network and more simplified operations to our customers; and our overall future prospects are forward-looking statements that involve a number of uncertainties and risks. Actual results or events could differ materially from those anticipated in those forward-looking statements as a result of several factors, including our ability to close the contemplated acquisition and integrate the acquired company and its technology and other factors listed in our most recent report on Form 10-K and subsequent quarterly reports on Form 10-Q filed with the Securities and Exchange Commission. All statements made in this press release are made only as of the date of this press release. Juniper Networks undertakes no obligation to update the information in this press release in the event facts or circumstances subsequently change after the date of this press release.

Statement of Product Direction

In this press release, we may disclose information related to our development and plans for future products, features or enhancements (“SOPD”). SOPD information is subject to change at any time, without notice. Except as may be set forth in definitive agreements, we are not providing any assurances, or assuming any responsibility, that future products, features or enhancements will be introduced. Except as may be set forth in definitive agreements, customers should not base purchasing decisions upon reliance of timeframes or specifics outlined in an SOPD, because we may delay or never introduce the future products, features or enhancements.

Advanced Threat Prevention Appliance Comprehensive threat and malware detection, consolidated security analytics, and quick threat mitigation.


The Juniper Advanced Threat Prevention Appliance (JATP) detects malware, understands behavior, and mitigates threats with just one touch. It leverages security data from multiple sources in your network—no matter the vendor—and works with any firewall or security information and event management (SIEM) device to deliver fast, flexible, and automated responses to malicious activity.

Its unique architecture eliminates the need for time-consuming, one-off customizations. You can easily create custom data collectors right in the JATP interface. Once defined, data seamlessly flows into the JATP threat behavior timeline, empowering security teams to quickly see what happened and when, all in a single, comprehensive view.

JATP provides:

  • Fast, flexible, and automated defense against malicious activity, working alongside any firewall or SIEM device.
  • Insight into threat behavior at every step of the life cycle to pinpoint high-priority threats and reduce false positives.
  • Easy-to-use interface to collect and correlate threat intelligence from any security source.
  • Effective mitigation of lateral propagation.
  • Flexible deployment options with physical and virtual form factors.
  • Minimization of vendor lock-in.

JATP is available in two models:

1. Juniper ATP400

The powerful 1 RU JATP400 delivers up to 50,000 object detonations per day. It’s purpose-built for organizations that need distributed detection of web, email, and lateral threats across the enterprise.

2. Juniper ATP700

For larger, centralized environments with high-performance security demands, the 2 RU JATP700 delivers 128 GB of memory and up to 130,000 object detonations per day.

What is Juniper?


This tutorial is designed to get you acclimated with Juniper as a programming language. We hope that by the end of this guide, you’ll feel comfortable with getting started with your first Juniper projects.

All coding samples can be found here:

What is Juniper?

Juniper is a functional reactive programming language tailored specifically for programming the Arduino chip.

The purpose of Juniper is to provide a functional reactive programming platform for designing Arduino projects. FRP’s high-level approach to timing-based events fits naturally with Arduino, with which programming almost entirely revolves around reacting to realtime events. Additionally, since C++ is a very low-level language, Juniper is intended to have better readability on a higher level. Juniper transpiles to Arduino C++, which is then compiled to an Arduino executable.

We designed this language because we believed that FRP was better suited for the Arduino’s problem space than C++, thanks to its alternative style and methodology of coding.

Guided Tutorials

Hello World (sort of)

As is customary with coding tutorials for new languages, we’re going to show to the Juniper “Hello World!” function. Except instead of a computer outputting “Hello World!”, the Arduino chip, with an LED component attached, is going to blink the LED on and off every second.

Take a look at this coding sample here:

This is quite daunting if you’ve never worked in this language before (and even more so, if you’ve never worked in a function programming language before), so let’s break it down, piece by piece.

At line 1, we have the keyword module. Modules are declared files used for storing portions of code. The equivalent in Python would be .py files, and in C++ would be namespaces. Every file used for code in Juniper is a module. At line 2, we have the open() declaration. open() is the equivalent to import in Python, or using in C++. It allows you to use to the declarations and definitions for other data types, functions, and variables that are exported by other modules. So Prelude, Io, and Time are references to other existing modules in the Juniper standard library, with resources used in this module. For almost every module you write you should open Prelude.

Moving onto lines 4-7, we declare certain variables to be used later in this module. let as a keyword allows for the declaration of a new variable. You are essentially saying, “Let this variable be set to this value as we do everything else.” The word after the let is the name of the variable. On the right of the equals sign we have the initial value we are assigning to the variable. So, in this sample code, the variable boardLed is initially set to 13 (in this code, boardLed represents which pin on the Arduino chip the LED is connected to). tState is used as a place to record when the timer for the chip last emitted a value, and ledState is used to hold the current pin state of the LED (if it is on or off). These references will be automatically managed by the Time:every and Signal:foldP functions, which will be explained later. See the Datatypes section of this tutorial to learn more about the ref keyword and types used in this section.

At lines 9-17 we have our first function. As in other languages, functions are sets of procedures that take in values as arguments of input, and return a value at the end. The funkeyword denotes the beginning of a function declaration, and the next keyword is the new function name, followed by a set of parenthesis including function parameters (though in this coding sample none of our declared functions have parameters). After a colon, we have the return type of the function (note: same format as declaring variable types in this way!), an equals sign, and then within the next set of parentheses (or, if your function only has one expression, parentheses are not needed) the function definition. Juniper now supports full type inference, so explicitly giving the return type and parameter types is no longer necessary. Within this function, you can declare other variables using let, but the function’s last expression must always be the return value of the function. In the case of our first sample function, we declare the function blink() with return type unit (see later in the tutorial for information about the unit type in the Datatypes section), with two new variable declarations within before a final system call for Io:digOut. The purpose of digOut is to do a write to a Arduino board pin of a given label, and the given write value. In this case, we pass boardLed as the pin of the LED, and an ledSig value for what we wish to write to it. This function also returns a unit, and this unit is returned by the blink() function.

Note: Many times in this tutorial you’ll see or be using ‘Io:’ before an actual function name. This denotes that you are currently using a function from another module, in this case the IoModule. This applies to any module you create and open as well. Indicate the module name first, then a colon, then the function or variable you’re using from that module.

The setup() function later also functions is a very similar fashion–it is intended to return a unit type, and the Io:setPinMode() function also returns a unit. This function is intended to set a pin on the Arduino chip as a location for input (like a button) or output (like a sound system or display). It takes in as arguments the relevant board pin and the intended pin mode (input(), output(), or inputPullup(), just as they work with regular Arduino programming), and sets the pin mode. While the unit type will be explained later, notice how the two example uses of it in this code are for functions that mutate the state of the Arduino chip, and need not return anything of actual value. The use case is similar to that of the void type in C++.

Let’s now take a step back to look at Line 12, because this will be a crucial part of functional programming for the Arduino: folding in time. If you’re not familiar with functional programming too much, folding is a common operation where you accumulate a single variable based on a function acting on an initial value for it, and each successive element in a list. For example, one can sum up a list of numbers by setting the function to an addition operation, the initial value to 0, and the list to said list of numbers. In functional reactive programming, we have the foldP operation, which folds based on a signal that updates by events, rather than a list of values. This way, as events happen, the accumulator variable changes by events in time. In this case, the function is set to a lambda (which will be explained in the next paragraph), the initial accumulator to ledState (our initial setting for power to the LED), and the signal to timerSig, which is defined as a timing event triggered every 1000 milliseconds a few lines earlier.

So, briefly, what is a lambda? Well, generally, we declare functions as their own entities, but we don’t always have to! In functional programming, having access to first-class functions is a major benefit, where functions are also treated as values that can appear and disappear on the spot. We use the fn keyword to define a lambda, follow-up by a set of parentheses including the function parameters, and then the function body after an arrow (->) symbol. For example, in line 13, we pass a lambda function into the foldP, where the first argument is intended to be an event that traveled along the signal, and the second argument is the current accumulator. It returns the new accumulator value. Our lambda takes in the timer signal event (if there is a new one), and the last led pin state as lastState. It then returns Io:toggle(lastState), which simply returns the opposite digital state of the one given.

So, to sum up this use of foldP, given a timer signal that triggers an event every 1000 milliseconds, an initial value of the initial ledState pin state (which, in this example, is low voltage), and a lambda we build to simply toggle the pin state by events triggered, we fold in time by checking whenever this blink() function is called if a new event has been triggered by our timer signal (1000 milliseconds/1 second has passed). If it has, we toggle the pin state. At the end of our blink() function, we the do a digital write to our pin with this new ledState.

Now, let’s put it all together as we come to our main() function on line 22! As with many other programming the languages, the main() function is the one which the compiler uses as the function that’s always set to run at the start of a program. Our version of main returns a unit. main() starts by running our setup function set the LED as an output location. We then create a while loop (with while true, it will run endlessly until the Arduino is turned off) that will nonstop call our blink() function, which everytime it is run will check for an update on the timer signal. When it does (one second has passed), the LED is blinked on or off, depending on the previous state.

And there you have it! Our first program! I hope we didn’t scare you off, because this is quite the daunting Hello World example, but once you understand the methodology, and begin to get acclimated to functional programming on the Arduino platform, you’ll find that as projects get bigger, the code becomes more intuitive to write than the C++ equivalent versions. The code is more readable, and events are handled more in line with how most of our minds work through these Arduino projects. It also composes really well, which means that very little will adding new components to a project require all-out restructuring of your code.

Further in this tutorial we’ll go more in depth on the different concepts in this language, many of which that we’ve begun to explore in this first example project.

Note: Beginning in Juniper 2.2, the Signal:toggle function can be used in place of the Signal:foldP function, which significantly reduces the number of lines in this code. This change places it on par with the simplicity of the basic Arduino blink example. However, in the interest of learning, we have decided to keep the more complex foldP example in this tutorial.

Hello World Part 2: Another Component

This coding sample is very similar to our first Hello World program, except this time, our LED state responds to a button press instead of a fixed time. Instead of a full walkthrough of the code this time, we will instead simply observe the differences in code:

  • We’ve added another variable for our button’s state called bState, along with the button pin number. We’ve also included an edgeState variable, to be explained later.
  • The blink() function has been renamed to button().
  • Rather than a timer signal, the button signal is simply declared as a digital read-in of the button pin’s state.
  • We debounce the signal from the button automatically using Button:debounce(buttonSig, bState), and create a new signal from this using the Io:fallingEdge() function, taking in this new debounced signal and the edgeState variable. This new signal only triggers new events when the button is pressed, not when it is let go.
  • The foldP call is modified according to the above changes in variables.
  • The setup() function initializes the buttonPin as a source of input, and does an initial digital write to the LED.
  • main() calls button() instead of blink(), according to the changes above.

Download Juniper JunOS Olive Image for GNS3

In order to download Juniper JunOS Olive 12.1R1.9 image for GNS3, click the following link and complete the downloading process.

Download Juniper JunOS Olive Image for GNS3 (VirtualBox platform)

This image is based on VirtualBox platform. However, you can also convert it to make it compatible with the VMware platform.

Note: The above-mentioned Juniper JunOS Olive Image is only for the learning and practice purposes. It is not recommended to use for the commercial purposes. Refer the Vendor’s official legal terms and conditions for more information.

Once you have downloaded the Juniper JunOS Olive image, now it’s time to add this image to GNS3. For this, you visit the following link that will guide you how to add and use Juniper Router in GNS3.

How to add and use Juniper Router in GNS3

Further, if you are new to Juniper, VirtualBox, and GNS3 platforms, the following links are highly recommended for you.

  1. GNS3 Step by Step Tutorials
  2. VirtualBox Step by Step Tutorials
  3. Juniper Router Configuration Step by Step Tutorials

In this article, we have explained how to download Juniper JunOS Olive 12.1R1.9 Image for GNS3 and how to use it to perform Juniper router configuration. Hope, you would share it with others too.

How To Add Juniper Router (JunOS) in GNS3

In the previous posts, we have explained a lot, how to use GNS3 to perform Cisco hands-on lab exercises. Along with Cisco, nowadays Juniper also getting popularity in the routing platform. However, Juniper has its own internetworking operating system (IOS) called JunOS. It is based on Linux/Unix platform. In order to perform the hands-on lab exercises in GNS3 that require Juniper routers, you need to add Juniper router IOS images in GNS3.

Before you could add a Juniper router in GNS3, first, you need to download and install Oracle VirtualBox on your local system.
Alternatively, you can also use VMware Workstation Player. However, in this guide, we will use Oracle VirtualBox.  

Once you have downloaded and installed your virtualization software, next, download the JunOS Olive VM image. You can download it from the various sources on the Internet, or you may use the following link to download the JunOS VM image file.

Adding Juniper IOS (JunOS) in GNS3

1. Once you have downloaded the JunOS VM image, next, open the Oracle VirtualBox console. Click File and select Import Appliance to import an existing VM.

2. On the Import Virtual Appliance window, click the Browse icon, navigate to the location where you have downloaded the JunOS image file, select it, and then click Next.

3. On the Appliance settings page, accept the default resource values or adjust them as per your requirement, and then click Import as shown in the following figure. The importing process will begin. It may take 10-15 minutes. Wait until it completes.

4. Once the VM is imported, select it and click Start to power on.

5. If the following error occurs, click Change Network Settings. If the following error does not occur, skip the next step (step 6) and move on the GNS3 console.

6. On the JunOS Olive – Settings window, make sure that Microsoft KM-TEST Loopback Adapter is selected, and then click OK. We assume that you have alreadyinstalled a loopback adapter on your system.

7. Now, the VM will start. Leave the VM VirtualBox console active and switch to GNS3 console.

8. On the GNS3 console, click Edit, and select Preferences. On the Preferences window, select VirtualBox VMs in the left pane, and then select New in the right pane.

9. On the VirtualBox Virtual Machine page, ensure that JunOS Olive VM (Juniper router IOS image) is selected. If not, select manually and click Finish and close the Preferences window.

10. In the GNS3 console, drag JunOS Olive router in the work view area. Right-click JunOS Olive and select Configure to configure it.

11. On the Node Properties dialog box, select the Network tab, and set the number of adapters as per your requirement.

12. Select the Allow GNS3 to use any configured VirtualBox adapter check box and click OK.

13. Switch to the JunOS VirtualBox console. At the login prompt, type root as username and press Enter. The Password is blank.

14. At the next prompt, type cli and press Enter. In the following example, root is the username and JunOS% is the hostname.

15. In the preceding figure, you can see that you have the JunOS console where you can execute JunOS commands that are used to configure Juniper routers.

That’s all you need to do to add Juniper router in GNS3. You can add as many Juniper routers as you wish depending on your local system resource’s capacity. Hope, it will help you to begin the Juniper hands-on exercises. Please like and share if you find it helpful. You may also subscribe us to get daily new post updates.

Basic Juniper Router Configuration – JunOS Commands

Similar to Cisco routers, Juniper routers are also used to perform the routing functions on networks. Before you should start to learn the routing and switching configuration through the Juniper routers, first, you need to be familiar with basic Juniper Router Configuration commands. Here, we are going to explain the step by step Juniper Router Configuration guide.

We hope you have already added Juniper Router in GNS3 and created a topology. If not yet, visit the following link to add Juniper Router in GNS3.

This article will help to understand the most Basic Juniper Router Configuration commands for the beginners who are new to juniper devices.

Juniper Router CLI Commands Modes

Similar to Cisco IOS CLI modes, JunOS also has different command modes to perform different types of configuration tasks. The major JunOS CLI command modes are:

  1. Operational mode: You can compare this mode to the Privileged mode of Cisco IOS. It is used to display the current status of the Juniper device. In this mode, the JunOS commands are used to monitor and troubleshoot the Juniper devices and their network connectivity.
  2. Configuration mode: The configuration mode of Juniper router is almost similar to the Global Configuration mode of Cisco IOS. You use this mode to define all the properties of the Juniper devices. It includes interfaces configuration, general routing information configuration, routing protocols configuration, user access configuration, and various other system and hardware properties configurations.

Basic Juniper Router Configuration Command and Tasks
The following are some of the basic Juniper router configuration tasks that every network administrator should know:

How To Login to Juniper Router

Working with JunOS is almost similar to working with the CLI interface of Linux/UNIX-based operating systems. To login into JunOS Command mode, simply type username and password. The default login credentials for JunOS Olive are: username as root and password is blank.

Login: root

Note: If you face to login into JunOS Olive, please visit the official Website.

How To enter JunOS CLI Mode

Once you logged into JunOS CLI mode, type CLI and press Enter to switch into CLI mode.

[email protected]% cli

How To Switch into JunOS Configuration Mode

As discussed earlier, configuration mode allows you to configure most of the basic JunOS configuration tasks. In order to switch to JunOS configuration mode, type the configure command and press Enter.

root> configure



To exit from the current mode, use the exit command.


How To Check the Current Configurations of a Juniper Router

To check the current configuration settings on a Juniper Router, execute the following command at the Operational CLI mode.

root> show configuration

Viewing configurations command starting with the specific group of commands use the following command syntax. For example, to show all the command of Operation CLI mode starting with “set” prefix, execute the following command.

root> show configuration | display set

How To View the Interface Information on a Juniper Router

To show all the available interfaces on a Juniper Router you are using, use the following command.

root# show interfaces

How To View the Status of a Specific Interface on a Juniper Router

To view the status of a specific interface information on Juniper Router running on JunOS, use the following command syntax.

root# show interfaces

For example, to view the interface configuration information of emo interface, use the following command.

root> show interfaces em0

How To Set IPv4 address on a Juniper Router

To configure an appropriate IPv4 address on a Juniper Router, use the following command syntax.

root# set interfaces <interface name> unit <unit number> family inet <IP address>/mask

For example, use the following command to set IPv4 address on the em0 interface.

root# set interfaces em0 unit 0 family inet

How To Change the Hostname of a Juniper Router

Use the following JunOS CLI command syntax to set the desired hostname for a Juniper Router.

root# set system host-name <type-name>

For example, to change the current hostname to JunOSR1 hostname, use the following command.

root# set system host-name JunOSR1

How To Set Password on a Juniper Router

To set the desired root password for your Juniper Router, execute the following JunOS CLI command.

root# set system root-authentication plain-text-password

New password: [email protected]
Retype new Password: [email protected]

Note: Password will not be displayed.

How To Save JunOS Configuration Permanently

Whatever you do on a Juniper or Cisco router, the current configuration is stored on the temporary memory called RAM. However, if the power supply fails, your configuration will be lost. So, it is important to save your configuration at the regular time intervals. On a Juniper router, the commit command is used to save the current configuration as permanently. Refer the following figure.

root# commit

How To View Routing Table (Routes) on a Juniper Router

The following command is used to view the all the routes on a Juniper Router running on the JunOS.

root> show route

How To Configure Static Route on a Juniper Router

Configuring the static route on a Juniper Router is pretty simple. For example, to add route with as the default gateway, use the following JunOS CLI command.


root# set routing-options static route <Network/Prefix Length> next-hop <Gateway Address>


root# set routing-options static route next-hop

Login To and Logout From JunOS CLI Interface

Take a look at the following figure to understand the command used in the given output.

In this article, we have explained the Basic Juniper Router Configuration Commands used to configure basic tasks for a Juniper Router. Don’t hesitate to share this nice article to your friends.


When you activate a new configuration, the Junos OS software automatically keeps an archive of the previous active configuration. This automatic backup mechanism lets you return quickly to a previous configuration using the rollback command. In addition, you can copy configurations from the router to a file server. If needed, you can manually reload and restore the configuration file onto the router.


To return to a configuration that the Junos OS software has automatically archived, use the rollback command in configuration mode:

[email protected]# rollback 1
load complete

This rollback command loads the previous configuration but stops short of activating it. If you need to change what’s in the configuration, you can modify it. To see what statements are in the configuration, use the configuration mode show command:

[email protected]# show

The show command displays all the statements in a configuration one screen at a time. To see the next screen, press Enter or the spacebar.

When you’re ready to activate the configuration, use the commit command:

[email protected]# commit
commit complete


In addition to archiving the last version of the configuration, the Junos OS software stores the last 50 active configurations. These files are on the router’s flash and hard disks, so you can restore the configuration saved in a particular file.

Use help with the rollback command to list the full archive:

[email protected]# rollback ?
Possible completions:
 <[Enter]>         Execute this command
 0             2007-10-31 12:34:56 PST by fred via cli
 1             2007-10-31 12:30:03 PST by fred via cli
 2             2007-10-30 14:23:44 PST by fred via cli
48            2007-09-03 08:00:03 PST by root via cli
49            2007-09-03 07:45:21 PST by root via cli
 |             Pipe through a command

Pick the configuration by date and time and specify the number in the rollback command to load that configuration:

[email protected]# rollback 2
load complete

Verify that the change is what you want by using the show command, and then activate it with the commit command:

[email protected]# show
[email protected]# commit
commit complete


You can manually archive configuration files by copying them to a file server on your network, following these steps:

1. Use the Junos OS file copy operational mode command to copy the active configuration, the file juniper.conf.gz, in the router’s /config directory:

[email protected]> file copy /config/juniper.conf.gz server1:/homes/fred/tmp
[email protected]’s password:
juniper.conf.gz 100% 2127 2.1KB/s 00:00

2. Once the file is on the server, rename.

3. If you need to return to that active configuration, copy it back to the router’s home directory by using the file copy command:

[email protected]> file copy server1:/homes/fred/tmp/juniper.conf.gz-20071031
[email protected]’s password:
juniper.conf.gz-20071031 100% 2127 2.1KB/s 00:00

4. Look at the files in your home directory to make sure the file arrived safely:

[email protected]> file list

5. Change from operational mode to configuration mode by using the configure command, load the configuration file with the load command, and review it with the show command.

6. Finally, activate the configuration file using the commit command:

[email protected]> configure
Entering configuration mode
[email protected]# load juniper.conf.gz-20071031
load complete
[email protected]# show
[email protected]# commit
commit complete


How engineers design a network operating system impacts the reliability, security, scalability and performance of not just the devices, but also the overall network, particularly in large-scale systems. The operating system must handle the many different processes essential to running today’s global networks, while also assuring fair sharing of resources so that no process or service can starve out others.

The architecture of the Junos operating system cleanly divides the functions of control, services, and forwarding into different planes. The control and services planes include many different processes that run in different modules of the operating system.

The explicit division of responsibility allows the software to run on different engines of processing, memory, and other resources. This division of labor is what enables Junos to run all types of platforms in all matter of sizes, from a small box in a home office to the largest boxes in the world handling terabits of data every second.

The Junos OS software architecture features three functional processing planes:

  • The control plane runs on what is known as the Routing Engine (RE) of the Juniper device.
  • The packet forwarding plane runs on a separate Packet Forwarding Engine (PFE) in larger Juniper platforms.
  • The services plane provides specialized processing, such as for quality classification and security.

Do you want faster platforms in your network? That’s like asking if you’d like to have today off (with pay, of course). Yes, it would be good to have the network go a little faster. Faster, faster, faster is a constant drumbeat for networks.

In over ten years of product delivery, Juniper has scaled the throughput of its fastest devices from 40GB per second to multiple terabits per second with a fast expanding set of services. The use of separate processors for the RE, the PFE, and services cards has been the essential architecture element to each performance breakthrough.

In particular, separation lets the PFE and services throughput follow in lock-step with the increasing speeds of the custom Application-Specific Integrated Circuits (ASICs) on which the PFE and services run in the largest platforms.

Separating the engines also reduces interdependencies between them. Not only does this separation help preserve the operation of each when another is experiencing problems, it also gives the Juniper engineers more ways to provide system redundancy and failover. For example, you find dual REs in some platforms, whereas the EX Series Ethernet Switches offer a capability called Virtual Chassis to provide redundancy, among other benefits.

Juniper Tutorial

Import a Juniper Vmware VirtualBox Host in GNS3 – Run Juniper in GNS3

Now we will make a very simple design of topology shown below.


Now before making the topology in GNS we have to workout some of the backend task.

Download this first

Download Junos Olive Vmdk Version 
Downlaod VirtualBox 

Import a Juniper Vmware VirtualBox host in GNS3

Follow the steps to import the JunosOlive into VitualBox and further Export the Vmware machine to GNS3. Have a look.

First we need to import the Vmware machine to VirtualBox. Simply double click to it. In the settings select HostOnly virtual network adapter to attach the VM.

After importing click to run the VM. Once it get up open the GNS3 and do the following steps

Run Juniper in GNS3

In GNS open preferences from edit tab dropdown. Select VirtualBox VM and create a new.

Now select the local server and remote serve. Before that need to enable the Virtual Network(VMnet Host Only Adapter).

Now select Virtual Machine from VM list and finish the task.

Now its time to fire up Juniper. Look at the topology once again.


Now come the configuration one by one.


Amnesiac (ttyd0)

login: root

— JUNOS 12.1R1.9 built 2012-03-24 12:52:33 UTC

[email protected]%

[email protected]% cli

root> edit

Entering configuration mode


root# exit

Exiting configuration mode

root> show interfaces terse

Interface             Admin Link Proto    Local                 Remote

cbp0                   up    up

demux0              up    up

dsc                     up    up

em0                    up    up

gre                     up    up

ipip                    up    up

irb                     up    up

lo0                     up    up

lo0.16384            up    up   inet           –> 0/0

lo0.16385            up    up   inet           –> 0/0

                                   inet6    fe80::a00:270f:fc6e:236d

lsi                     up    up

mtun                    up    up

pimd                    up    up

pime                    up    up

pip0                    up    up

pp0                     up    up

tap                     up    up

root# set interfaces em0 unit 0 family inet address



root# set system root-authentication plain-text-password ?

Possible completions:

  <[Enter]>            Execute this command

+ apply-groups         Groups from which to inherit configuration data

+ apply-groups-except  Don’t inherit configuration data from these groups

  encrypted-password   Encrypted password string

  load-key-file        File (URL) containing one or more ssh keys

> ssh-dsa              Secure shell (ssh) DSA public key string

> ssh-rsa              Secure shell (ssh) RSA public key string

  |                    Pipe through a command


root# …ication plain-text-password encrypted-password ?

Possible completions:

  <encrypted-password>  Encrypted password string


root# …ication plain-text-password encrypted-password Admin.123

New password:

Retype new password:




root# commit check

configuration check succeeds


root# commit

commit complete



MikroTik 6.28
MikroTik Login: admin

  MMM      MMM       KKK   TTTTTTTTTTT      KKK
   OOOOOO      TTT     III  KKK  KKK
  MikroTik RouterOS 6.28 (c) 1999-2015

You have 23h38m to configure the router to be remotely accessible,
and to enter the key by pasting it in a Telnet window or in Winbox.
Turn off the device to stop the timer.
See for more details.
Current installation "software ID": TWIQ-YM3K
Please press "Enter" to continue!
apr/05/2016 13:09:53 system,error,critical router was rebooted without proper shu
apr/05/2016 13:23:27 system,error,critical router was rebooted without proper shu
[[email protected]] > password
new-password: *********
confirm-new-password: *********
[[email protected]] >
[[email protected]] /interface> print
Flags: D - dynamic, X - disabled, R - running, S - slave
 #     NAME                                TYPE       ACTUAL-MTU L2MTU  MAX-L2MTU MAC-ADDRESS
 0  R  ether1                              ether            1500                  00:00:AB:56:3F:00
 1  R  ether2                              ether            1500                  00:00:AB:3E:C6:01
[[email protected]] /interface>..
[[email protected]]> ip
[[email protected]] /ip> address
[[email protected]] /ip address> add address interface ether1
[[email protected]] /ip address> ..
[[email protected]] /ip> ..
[[email protected]] >


Now configuration is complete. Test the network now.

Juniper Snap
MicroTik Snap

Thank you for joining me on Juniper Knowledge base.

Can You Learn Juniper Routers Without Hardware? Let’s Try.

To learn various things in the world, you don’t have to use one method, for example, I share here, studying Juniper routers without hardware / physical, here we use Qemu and GNS3 for network simulation.

Just for information, here I am not an advertisement or from one of Juniper’s employees, here only sharing so that my friends can learn Juniper without buying hardware, maybe if those who already know the hardware price, one router can buy Avanza even for the high end version hehehehe. and do not forget if you are also good at Juniper certification, let me be good at it.

before we go on I will give a little basic understanding of the software that I use.

What’s the JUNIPER router?

Juniper Networks is one of the world’s leading manufacturers of routers such as Cisco, Mikrotik, and Alcatel. Juniper itself has products such as switches, routers and security devices such as firewalls.

What is Qemu?

Qemu is an application on Linux to run a Simulation OS, or often referred to as Virtual PC.

What is Gns3?

GNS3 is a GUI-based computer network simulation software similar to Cisco Packet Tracer.

Before starting the following we must prepare:

1. A PC / laptop that has a minimum CPU core i3 RAM of 4 GB, due to running it playing in processors and RAM.

2. Ubuntu for the OS, for our PC (qemu installed, gns3), why is ubuntu? because it’s easy (answers are not solid, unclear and, inconsequential) peace  
– install qemu: sudo apt-get install qemu  
– install gns3: sudo apt-get install gns3

3. prepare juniper OS / junos can be downloaded directly on the official website

4. The format that we download is still in the form of .ova and in the qemu format used .img, extract the first junos file that we have downloaded.

5. The extracted file is still in the .vmdk format and of course, qemu can’t read it. because we will create a .img file, we use the qcow2 format for the image. Qcow2 is an expandable image format, so he will only use the storage containing data from the image.

6. After completing preparing the juniper os file format we continue to configure it in the gns3.  
– Start gns3 0.8.7 and create a new project. Edit -> Preferences -> Search -> Qemu General Settings. click test settings, if according to the bar below, qemu is ready to use.

– Further configuration parameters for Junos OS. Edit -> Preferences -> Qemu -> JunOS

### -smp 2 is required for configuring 2 vm cpu if not all interfaces are not detected

– Continue, open the initial interface bro3 and there is an option to the left, select juniper router, just drag it bro … and please give a name.

– The next step is dragging the router icon, right-click on the router icon and select start, until it changes color in the topology column, Sumarry becomes green icon.

-Last stepp, already I want to configure the router right click again and select the console, wait until the router has finished booting. after that it has become a virtual juniper router. the function is the same as the original juniper router, there are only a few features that are reduced by wong gretongan. . . !!! hehehe, but yeah it’s good for learning right. can learn routing, TCP / IP configuration, firewall. and many more functions from this juniper router. please oprek more.

The end of the word if there is a mistake in the word / writing apologize profusely, because this writer is also a human who does not escape from wrong and is still both learning.

Thank you, happy learning and keep trying.