Juniper Software Architecture

It is very important to begin by talking about the Junos software architecture, so we know it is based on which Operating System.

The Junos kernel (which is the core of the Operating System) is based on FreeBSD Unix. This means that in case you have had any experience with Unix/Linux previously, you may find that configuring Juniper Junos appliances is very easy as you had experience with Unix/Linux command line.

As you may know, I already have taught courses from different brands on my online school, and most of the vendors that I taught are based on Unix or Linux Kernel. For example, MikroTik RouterOS, which is one of the vendors that I use a lot and I am a Certified Trainer for it, is based on Linux Kernel.

The other thing that you should know about the software architecture of Junos is that Junos functionality is based on multiple software processes which run its own protected memory. What does it mean? Say that you open the command line to configure the Juniper device, then this command line has its own process on the CPU different than other processes for other tasks on the router, and it allocates for it a protected memory, so it runs. For instance, say that you are on the CLI (Command line interface), and you have on your router SNMP and routing updates running, then each of these tasks will have its own process and own protected memory in a way that in case one of the tasks will stop working then the others will not be affected. To make it clearer, say that your CLI has stopped working, this doesn’t mean that your SNMP and your routing updates aren’t working anymore – they will keep working and only your CLI is the one not working. This makes Juniper very resilient to problems.

Let me show you where you can find the processes on the Juniper CLI:

<root@Juniper> show system processes


0  ??  WLs    0:00.00 [swapper]

1  ??  ILs    0:00.12 /packages/mnt/jbase/sbin/init —

2  ??  DL     0:00.05 [g_event]

3  ??  DL     0:00.83 [g_up]

4  ??  DL     0:02.54 [g_down]

5  ??  DL     0:00.00 [thread taskq]

6  ??  DL     0:00.00 [kqueue taskq]

7  ??  DL     0:00.00 [mastership taskq]

8  ??  DL     0:00.00 [em0 taskq]

9  ??  DL     0:00.00 [em1 taskq]

10  ??  RL    45:30.53 [idle]

11  ??  WL     0:01.58 [swi7: clock sio]

12  ??  WL     0:00.00 [swi6: vm]

The PID represents the process ID, and the command represents the task that it is responsible for. For example, the process ID 11 is responsible for the clock, process ID 10 is responsible for idle, and so forth.

Course Content


Submit a Comment

Your email address will not be published. Required fields are marked *