Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Guide That Contains This Content
[+] Expand All
[-] Collapse All

    Juniper Networks Plug-In for OpenStack Neutron

    Note: Please check the plug-in download page for the latest version of this document.

    What is New in This Version?

    In this release, the Juniper Networks plug-in for Neutron is based on Modular Layer 2 (ML2) and provides support for aggregate interfaces (LAG/MC-LAG) from OpenStack Compute/Network Nodes to Juniper Networks switches. It also provides L3 orchestration (RVI and VRRP) on Juniper Networks switches.

    Plug-In Overview

    The Juniper Networks plug-in for OpenStack Neutron enables you to orchestrate physical network configurations. The plug-in supports NETCONF/DMI to configure the physical network.

    OpenStack release supported: Havana

    To orchestrate the physical networks, the plug-in requires you to specify the Juniper Networks switch port to node (compute and network) NIC mapping information or use LLDP.

    This plug-in supports the following Juniper Networks switching platforms running Junos OS Release 11.4R1.6 or later. For more information about these platforms, see .

    • All EX Series switches
    • All QFX Series switches

    Pre-requisites for Using the Plug-In

    Before you use the plug-in:

    1. Install and configure OpenStack Neutron with the ML2 plug-in with tenant_network_type VLAN and Open vSwitch mechanism driver.
    2. Install the ncclient Python library for NETCONF client (see ) on the Neutron server.

    Installing the Juniper Networks Driver for ML2 and the L3 Service Plug-In

    To install the Juniper Networks driver for Neutron ML2 plug-in and the L3 service plug-in:

    1. Download and install the plug-in package using the operating system installer:
      dpkg -i python-neutron-plugin-juniper_x.x-xxx_all.deb

    Configuring the Plug-in

    This section describes:

    1. Configuring the ML2 Plug-In
    2. Configuring the Neutron L3 Service Plug-In
    3. Adding Device Configuration

    Configuring the ML2 Plug-In

    Before you begin configuring the ML2 plug-in, ensure that:

    • The Neutron server is running the ML2 plug-in.
    • The Open vSwitch mechanism driver is configured in the ML2 configuration.

    Note: The Juniper Networks driver works with VLANs; please check the OpenStack Neutron documentation for details about the VLAN configurations with ML2 architecture.

    To configure the Juniper Networks ML2 driver:

    1. Update the ML2 configuration file /etc/neutron/plugins/ml2/ml2_conf.ini.
          type_drivers = vlan
          mechanism_drivers = openvswitch,juniper
          tenant_network_types = vlan

    Configuring the Neutron L3 Service Plug-In

    To configure the Neutron L3 Service plug-in:

    1. Update the Neutron configuration file /etc/neutron/neutron.conf file with the following:
      service plugins = L3Plugin

    Adding Device Configuration

    Before you use the driver, ensure that you:

    • Add jnpr_device CLI in the Juniper Networks devices.
    • Configure the mapping between NIC and bridge using jnpr_nic_mapping CLI.
    • Add switch-port to host-NIC mapping using jnpr_switchport_mapping CLI for all compute and network nodes.

    Table 1 describes the CLIs.

    Table 1: Device Configuration CLIs




    You can use this CLI to add, remove, or list Juniper Networks devices. For example, jnpr_device add -d device_name -c device_class -u username -p password


    You can use this CLI to add, remove, or list NIC to bridge mapping. For example, jnpr_nic_mapping add -H hostname -b bridge_name -n nic


    You can use this CLI to add, remove, or list host NIC to switch port mapping. For example:

    • jnpr_switchport_mapping add -H host1 -n eth1 -p ge-0/0/1 -s switch1
    • jnpr_switchport_mapping add --lldp switch1

      Note: To use this CLI, you must ensure that LLDP is running on all nodes and switch1 is added to the database using the jnpr_device CLI.

    • jnpr_switchport_mapping add --file mapping_file.txt

    Use the jnpr_* CLI to configure the Juniper Networks driver with the Juniper Networks device and with the node connectivity information. Use --help with the CLI to view the full help/usage text.

    Optional Steps

    This section describes:

    1. Adding Pre-defined VLAN Names
    2. Starting the Neutron Server Using the Juniper Networks Configuration

    Adding Pre-defined VLAN Names

    You can add pre-defined VLAN names for vlan_id to name association. The names must be defined in the /etc/neutron/juniper_vlan_names.conf file.

        1000 = custom_vlan_name_1000
        1001 = custom_vlan_name_1001

    Starting the Neutron Server Using the Juniper Networks Configuration

    The Juniper Networks driver is pre-configured with default values and works without any configuration file. However, if you want to modify the configuration option, you must create the configuration file /etc/neutron/plugins/ml2/drivers/juniper.ini.

    To start the Neutron server using the Juniper Networks driver, you must pass the driver configuration file as a parameter to the server. Add --config-file /etc/neutron/plugins/ml2/drivers/juniper.ini to the daemon options.

    The configuration options (with default values) available are:

    # Netconf request timeout
    TIMMEOUT = 300
    # VLAN description set by the driver
    VLAN_DESCRIPTION = "vlan for openstack"
    # File describing pre-defined VLAN names
    vlan_config_file = /etc/neutron/juniper_vlan_names.conf

    Additional Information

    For more information about the plug-in, write to .

    Published: 2014-06-25