summaryrefslogtreecommitdiff
path: root/doc/source/bagpipe/index.rst
blob: 561e510d227a1cfdace58203805be307b350cb66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
..
 This work is licensed under a Creative Commons Attribution 3.0 Unported
 License.

 http://creativecommons.org/licenses/by/3.0/legalcode

==============
BaGPipe driver
==============

Introduction
------------

The **BaGPipe** driver for the BGPVPN service plugin is designed to work jointly with the openvswitch
ML2 mechanism driver.

It relies on the use of the bagpipe-bgp BGP VPN implementation on compute node
and the MPLS implementation in OpenVSwitch.

Architecture overview
---------------------

The bagpipe driver for the BGPVPN service plugin interacts with the openvswitch agent on each
compute node, which is extended to support new RPCs to trigger the local configuration on compute
nodes of BGP VPN instances and of their MPLS dataplane.

  .. blockdiag:: overview.blockdiag

Limitations
-----------

On DHCP ports, Router interface ports, external network ports, etc.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

No connectivity will be setup with BGP VPNs for DHCP ports or Router
interface ports, or other network specific ports. This improves the load on network nodes by
avoiding them to import/export a significant amount of routes, without limiting BGP VPN
deployment scenarios because no useful traffic would be exchanged between a router or DHCP
interface of a network associated to a BGP VPN.

Similarly, the driver will not bind a port on an external network. This behavior will be
revisited once a use case is well identified.

How to use ?
------------

On an Openstack Installation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[TBC (package installation + config)]

In devstack
~~~~~~~~~~~

* follow the instruction in README.rst

* ``local.conf``:

  * add the following to enable the BaGPipe driver for the BGPVPN service plugin::

     NETWORKING_BGPVPN_DRIVER="BGPVPN:BaGPipe:networking_bgpvpn.neutron.services.service_drivers.bagpipe.bagpipe.BaGPipeBGPVPNDriver:default"

  * enable networking-bagpipe_, which contains code for agent extensions::

     enable_plugin networking-bagpipe git://git.openstack.org/openstack/networking-bagpipe.git
     # enable_plugin networking-bagpipe git://git.openstack.org/openstack/networking-bagpipe.git stable/ocata

  * enable the ``openvswitch`` and ``l2population`` ML2 mechanism drivers::

     Q_PLUGIN=ml2
     Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch,l2population

  * and activate the agent ARP responder (you need to enable l2population too for the ARP responder to be enabled)::

     [[post-config|/$Q_PLUGIN_CONF_FILE]]

     [agent]
     l2_population=True
     arp_responder=True

* on a control node, if you want to run the Fake Route-Reflector there (relevant only for a multinode setup)::

     enable_service b-fakerr

* on compute nodes:

  * the compute node Neutron agent is the Neutron openvswitch agent, with the ``bagpipe_bgpvpn`` agent extension:

    * install networking-bagpipe_  (the code to interact with ``bagpipe-bgp`` comes from there)::

        enable_plugin networking-bagpipe git://git.openstack.org/openstack/networking-bagpipe.git
        # enable_plugin networking-bagpipe git://git.openstack.org/openstack/networking-bagpipe.git stable/ocata

    * define ``Q_AGENT=openvswitch`` in ``local.conf``  (optional, this is actually the default now)

    * the ``bagpipe_bgpvpn`` agent extension is automatically added to the agent configuration by the devstack plugin

  * bagpipe-bgp will be installed automatically (part of networking-bagpipe since Pike, or as a submodule before)

  * you need to enable and configure bagpipe-bgp, typically with a peering to a BGP Route-Reflector or BGP router(s)::

        enable_service b-bgp

        BAGPIPE_DATAPLANE_DRIVER_IPVPN=mpls_ovs_dataplane.MPLSOVSDataplaneDriver
        # BAGPIPE_DATAPLANE_DRIVER_IPVPN=ovs # simpler config available > after Ocata

        # IP of your route-reflector or BGP router, or fakeRR
        # BAGPIPE_BGP_PEERS defaults to $SERVICE_HOST, which will point to the controller in a
        # multi-node devstack setup
        #BAGPIPE_BGP_PEERS=1.2.3.4,2.3.4.5

.. _networking-bagpipe: https://docs.openstack.org/developer/networking-bagpipe