=======
Drivers
=======

The BGPVPN service plugin supports the following drivers:

.. toctree::
   :maxdepth: 1

   bagpipe/index
   opencontrail/index
   opendaylight/index
   nuage/index

The API is consistent across drivers, but not all drivers support all parts of
the API. Refer to the Driver Compatibility Matrix to determine what is
supported with each driver.

Driver Compatibility Matrix
---------------------------

+----------------------------------------------++----------------------------------------------------+
|               API                            ||                        Driver                      |
+---------------------+------------------------++-----------++--------------++--------------++-------+
|      Object         |     Attribute          || Neutron   || OpenContrail || OpenDaylight || Nuage |
|                     |                        || (bagpipe) ||              ||              ||       |
|                     |                        ||           ++-------+------++-------+------++       |
|                     |                        ||           ||v1 [#]_|  v2  ||   v1  |  v2  ||       |
+=====================+========================++===========++=======+======++=======+======++=======+
|      bgpvpn         |    base object         ||   ✔       ||  ✔    |  ✔   ||  ✔    | ✔    ||   ✔   |
+---------------------+-------+----------------++-----------++-------+------++-------+------++-------+
|                     |       |     L3         ||   ✔       ||  ✔    |  ✔   ||  ✔    | ✔    ||   ✔   |
|                     | type  +----------------++-----------++-------+------++-------+------++-------+
|                     |       |     L2         ||   ✔       ||       |  ✔   ||       | ✔    ||       |
|                     +-------+----------------++-----------++-------+------++-------+------++-------+
|                     |    route_targets       ||   ✔       ||  ✔    |  ✔   ||  ✔    | ✔    ||   ✔   |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
|                     |    import_targets      ||   ✔       ||  ✔    |  ✔   ||  ✔    | ✔    ||   ✔   |
|                     +------------------------++-----------++-------+------++-------+------++-------+
|                     |    export_targets      ||   ✔       ||  ✔    |  ✔   ||  ✔    | ✔    ||   ✔   |
|                     +------------------------++-----------++-------+------++-------+------++-------+
|                     | route_distinguishers   ||           ||              ||  ✔    | ✔    ||   ✔   |
|                     +------------------------++-----------++-------+------++-------+------++-------+
|                     |         vni            ||   ✔       ||              ||       | ✔    ||       |
|                     +------------------------++-----------++-------+------++-------+------++-------+
|                     |     local_pref         ||   ✔       ||              ||              ||       |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
| network_association |    base object         ||   ✔       ||  ✔    |  ✔   ||  ✔    | ✔    ||       |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
| router_association  |    base object         ||   ✔       ||       |  ✔   ||  ✔    | ✔    ||   ✔   |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
|                     | advertise_extra_routes ||           ||              || [#]_         ||       |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
| port_association    |    base object         ||   ✔       ||              ||              ||       |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
|                     |  advertise_fixed_ips   ||   ✔       ||              ||              ||       |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
|                     |     routes:prefix      ||   ✔       ||              ||              ||       |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
|                     |     routes:bgpvpn      ||   ✔       ||              ||              ||       |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+
|                     |    routes:local_pref   ||   ✔       ||              ||              ||       |
+---------------------+------------------------++-----------++-------+------++-------+------++-------+

.. [#] OpenContrail driver v1 has been deprecated in favor of the production
   ready `driver v2`_. Warning, **no** migration path is planned.
.. [#] The behavior corresponding to advertise_extra_routes ``True``, is
       supported as the default with ODL, for both v1 and v2 drivers,
       without support in the API for turning it off.
.. _driver v2: https://github.com/Juniper/contrail-neutron-plugin/tree/master/neutron_plugin_contrail/plugins/opencontrail/networking_bgpvpn
