# Installation

## Networking-bagpipe installation

The details related to how a package should be installed may depend on your environment.

If possible, you should rely on packages provided by your Linux and/or OpenStack distribution.

If you use `pip`, follow these steps to install networking-bagpipe:

- identify the version of the networking-bagpipe package that matches your Openstack version:

  - Liberty: most recent of 3.0.x

  - Mitaka: most recent of 4.0.x

  - Newton: most recent of 5.0.x

  - Ocata: most recent of 6.0.x

  - Pike: most recent of 7.0.x

  - Queens: most recent of 8.0.x

  - (see https://releases.openstack.org/index.html)

- indicate pip to (a) install precisely this version and (b) take into account Openstack upper constraints on package versions for dependencies (example for Queens):

      $ pip install -c https://releases.openstack.org/constraints/upper/queens

## BaGPipe for Neutron L2

### Installation in a devstack test/development environment

- install devstack (whether stable/x or master)

- enable the devstack plugin by adding this to `local.conf`:

  - to use branch `stable/x` (e.g. stable/queens):

        enable_plugin networking-bagpipe https://git.openstack.org/openstack/networking-bagpipe.git stable/X

  - to use the development branch:

        enable_plugin networking-bagpipe https://git.openstack.org/openstack/networking-bagpipe.git master

- enable bagpipe ML2 by adding this to `local.conf`:

      ENABLE_BAGPIPE_L2=True

- for multinode setups, configure BaGPipe-BGP on each compute node, i.e. you need each BaGPipe-BGP to peer with a BGP Route Reflector:

  - in `local.conf`:

        # IP of your route reflector or BGP router, or fakeRR:
        BAGPIPE_BGP_PEERS=1.2.3.4

  - for two compute nodes, you can use the FakeRR provided in BaGPipe-BGP

  - for more than two compute nodes, you can use GoBGP (sample configuration) or a commercial E-VPN implementation (e.g. vendors participating in EANTC interop testing on E-VPN)

### Deployment

On Neutron servers, the following needs to be done, based on an ML2/openvswitch configuration as a starting point:

- installing `networking-bagpipe` python package (see Networking-bagpipe installation)

- in ML2 configuration (`/etc/neutron/plugins/ml2.ini`):

  - adding the `bagpipe` mechanism driver (additionally to the `openvswitch` driver which will still handle `flat` and `vlan` networks)

  - before Queens release (i.e. if networking-bagpipe < 8) use the `route_target` type driver as default

  - result:

        [ml2]
        # tenant_network_types = route_target  # before queens only!
        mechanism_drivers = openvswitch,bagpipe

You need to deploy a BGP Route Reflector, that will distribute BGP VPN routes among compute and network nodes. This route reflector will need to support E-VPN and, optionally, RT Constraints. One option, among others is to use GoBGP (sample configuration).

On compute node (and network nodes if any) the following needs to be done, based on and ML2/openvswitch configuration as a starting point:

- installing `networking-bagpipe` python package (see Networking-bagpipe installation)

- configuring Neutron OpenvSwitch agent for bagpipe `/etc/neutron/plugins/ml2.ini`:

  - enabling `bagpipe` agent extension

  - before Queens release (i.e. if networking-bagpipe < 8), disable VXLAN:

  - configuring the AS number and range to use to allocate BGP Route Targets for tenant networks

  - result:

        [agent]
        extensions = bagpipe

        [vxlan]
        # for a release strictly before OpenStack Queens (networking-bagpipe < 8)
        # enable_vxlan = False

        [ml2_bagpipe_extension]
        as_number = 64512

- configuring BaGPipe-BGP:

  - setting `local_address` to the compute node address (or the name of one of its interfaces e.g. ‘eth0’)

  - adding the Route Reflector IP to `peers`

  - selecting the EVPN dataplane driver corresponding to your agent in (`/etc/bagpipe-bgp/bgp.conf`):

    - `ovs` for the openvswitch agent:

        [DATAPLANE_DRIVER_EVPN]
        dataplane_driver = ovs

## BaGPipe for BGPVPN

Information on how to use `bagpipe` driver for networking-bgpvpn is provided in BGPVPN bagpipe driver documentation.

## BaGPipe for networking-sfc

To enable the use of networking-bagpipe driver for networking-sfc, the following needs to be done:

- enable `bagpipe` driver for the `networking-sfc` service plugin, in `/etc/neutron/neutron.conf` and configure its parameters (see SFC):

  >     [sfc]
  >     drivers = bagpipe

- BaGPipe-BGP lightweight BGP VPN implementation, configured to use `ovs` as dataplane driver for IPVPNs, and `linux` as dataplane driver for EVPN (`/etc/bagpipe-bgp/bgp.conf`):

  >     [DATAPLANE_DRIVER_IPVPN]
  >     dataplane_driver = ovs

  >     [DATAPLANE_DRIVER_EVPN]
  >     dataplane_driver = linux

### In a devstack

To experiment with sfc driver in a devstack, the following is can be added in your local.conf (replace stable/X with stable/queens for e.g. Openstack Queens release) :

>     enable_plugin networking-sfc https://git.openstack.org/openstack/networking-bagpipe.git
>     # enable_plugin networking-sfc https://git.openstack.org/openstack/networking-bagpipe.git stable/X
>     enable_plugin networking-bagpipe https://git.openstack.org/openstack/networking-bagpipe.git
>     # enable_plugin networking-bagpipe https://git.openstack.org/openstack/networking-bagpipe.git stable/X

>     BAGPIPE_DATAPLANE_DRIVER_EVPN=linux
>     BAGPIPE_DATAPLANE_DRIVER_IPVPN=ovs

>     [[post-config|$NEUTRON_CONF]]

>     [sfc]
>     drivers = bagpipe

>     [[post-config|/$NEUTRON_CORE_PLUGIN_CONF]]

>     [agent]
>     extensions = bagpipe_sfc

this page last updated: 2026-08-21 16:58:22

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug