dde0dd7553
The api-ref was saying that some BGPVPN features where in development for the Queens release. This change updates these notes. Change-Id: Ibec3fcebadade4471c682935127c0a7b9623684c
249 lines
7.0 KiB
PHP
249 lines
7.0 KiB
PHP
=================
|
|
Port Associations
|
|
=================
|
|
|
|
Port associations are available if the ``bgpvpn-routes-control`` extension
|
|
is available.
|
|
|
|
Associating or disassociating a BGPVPN to a Port is done by manipulating a
|
|
Port association API resource as a sub-resource of the BGPVPN resource.
|
|
|
|
The semantic behind this API call is a form of policy-based routing: the
|
|
traffic from the given Port will be processed according to dataplane lookups
|
|
specific to this Port. This means, in particular that Ports belonging to a
|
|
given neutron network will possibly see a different L2 or L3 connectivity if
|
|
they have different BGPVPN associations.
|
|
|
|
When, a port association is defined for a given port, and at the same time,
|
|
a network association is defined for the port's network, both associations are
|
|
considered simultaneously active and the connectivity will be established
|
|
between the port and the BGPVPNs in both associations. This is true also in
|
|
the case where multiple associations are made, and for a router associations
|
|
of a router connected to the port's network.
|
|
|
|
Port routes
|
|
===========
|
|
|
|
Additionally to providing Port-level granularity in the definition of BGPVPN
|
|
connectivity, port associations also provide a way to control the
|
|
advertisement of routes other than only the fixed IPs of neutron ports.
|
|
|
|
So-called static routes are defined as follows: to indicate that prefix
|
|
20.1.0.0/16 is reachable via port A and should be advertised
|
|
accordingly in BGPVPN X, a port association is defined between port A
|
|
and BGPVPN X, with the ``routes`` attribute set to ``[ {'type': 'prefix',
|
|
'prefix': '20.1.0.0/16'} ]``.
|
|
|
|
Route leaking of the routes of a given BGPVPN into another BGPVPN belonging
|
|
to the same tenant, is supported similarily: to indicate that all the prefixes
|
|
advertised to BGPVPN Y are reachable via port A (i.e. the routes tagged with at
|
|
least an RT belonging to ``route_targets`` or ``import_targets`` of BGPVPN Y),
|
|
and that they should be leaked into BGPVPN X, a port association is defined
|
|
between port A and BGPVPN X, with the ``routes`` attribute set to
|
|
``[ {'type': 'bgpvpn', 'bgpvpn_id': <uuid of BGPVPN Y>} ]``.
|
|
|
|
Control of BGP LOCAL_PREF attribute
|
|
===================================
|
|
|
|
The BGP LOCAL_PREF for a specific route can be controlled to take a different
|
|
value than the one defined in the BGPVPN ``local_pref`` attribute, by
|
|
adding a ``'local_pref': VALUE`` in a route in the ``routes`` attribute (see
|
|
example in port association Update request).
|
|
|
|
List Port Associations
|
|
======================
|
|
|
|
.. rest_method:: GET /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/port_associations
|
|
|
|
Lists port associations for a given BGP VPN.
|
|
|
|
Use the ``fields`` query parameter to control which fields are
|
|
returned in the response body. Additionally, you can filter results
|
|
by using query string parameters. For information, see `Filtering
|
|
and Column Selection <https://wiki.openstack.org/wiki/Neutron/APIv2
|
|
-specification#Filtering_and_Column_Selection>`__.
|
|
|
|
Normal response codes: 200
|
|
|
|
Error response codes: 401, 403, 404
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- bgpvpn_id: bgpvpn-id-path
|
|
- fields: fields
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- port_associations: bgpvpn-port_associations
|
|
- id: bgpvpn-port_association_id
|
|
- port_id: bgpvpn-port_id
|
|
- project_id: project_id
|
|
- routes: bgpvpn-routes
|
|
- advertise_fixed_ips: bgpvpn-advertise_fixed_ips
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: samples/bgpvpn/port_associations/port_association-list-response.json
|
|
:language: javascript
|
|
|
|
Create Port Association
|
|
=======================
|
|
|
|
.. rest_method:: POST /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/port_associations
|
|
|
|
Creates a port association for a given BGP VPN
|
|
|
|
Normal response codes: 201
|
|
|
|
Error response codes: 400, 401, 404
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- bgpvpn_id: bgpvpn-id-path
|
|
- port_association: bgpvpn-port_association
|
|
- port_id: bgpvpn-port_id
|
|
- routes: bgpvpn-routes-request
|
|
- advertise_fixed_ips: bgpvpn-advertise_fixed_ips-request
|
|
|
|
Request Example
|
|
---------------
|
|
|
|
.. literalinclude:: samples/bgpvpn/port_associations/port_association-create-request.json
|
|
:language: javascript
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- port_association: bgpvpn-port_association
|
|
- id: bgpvpn-port_association_id
|
|
- port_id: bgpvpn-port_id
|
|
- project_id: project_id
|
|
- routes: bgpvpn-routes
|
|
- advertise_fixed_ips: bgpvpn-advertise_fixed_ips
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: samples/bgpvpn/port_associations/port_association-create-response.json
|
|
:language: javascript
|
|
|
|
Show Port Association details
|
|
=============================
|
|
|
|
.. rest_method:: GET /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/port_associations/{port_association_id}
|
|
|
|
Shows details for a port association.
|
|
|
|
Normal response codes: 200
|
|
|
|
Error response codes: 401, 403, 404
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- bgpvpn_id: bgpvpn-id-path
|
|
- port_association_id: bgpvpn-port_association_id-path
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- port_association: bgpvpn-port_association
|
|
- id: bgpvpn-port_association_id
|
|
- port_id: bgpvpn-port_id
|
|
- project_id: project_id
|
|
- routes: bgpvpn-routes
|
|
- advertise_fixed_ips: bgpvpn-advertise_fixed_ips
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: samples/bgpvpn/port_associations/port_association-show-response.json
|
|
:language: javascript
|
|
|
|
Update a Port Association
|
|
=========================
|
|
|
|
.. rest_method:: PUT /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/port_associations/{port_association_id}
|
|
|
|
Updates a port Association.
|
|
|
|
Normal response codes: 201
|
|
|
|
Error response codes: 400, 401, 403, 404
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- bgpvpn_id: bgpvpn-id-path
|
|
- port_association_id: bgpvpn-port_association_id-path
|
|
- port_association: bgpvpn-port_association
|
|
- routes: bgpvpn-routes-request
|
|
- advertise_fixed_ips: bgpvpn-advertise_fixed_ips-request
|
|
|
|
Request Example
|
|
---------------
|
|
|
|
.. literalinclude:: samples/bgpvpn/port_associations/port_association-update-request.json
|
|
:language: javascript
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- port_association: bgpvpn-port_association
|
|
- id: bgpvpn-port_association_id
|
|
- port_id: bgpvpn-port_id
|
|
- project_id: project_id
|
|
- routes: bgpvpn-routes
|
|
- advertise_fixed_ips: bgpvpn-advertise_fixed_ips
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: samples/bgpvpn/port_associations/port_association-update-response.json
|
|
:language: javascript
|
|
|
|
|
|
Delete Port Association
|
|
=======================
|
|
|
|
.. rest_method:: DELETE /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/port_associations/{port_association_id}
|
|
|
|
Deletes a port association.
|
|
|
|
Normal response codes: 204
|
|
|
|
Error response codes: 401, 403, 404
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- bgpvpn_id: bgpvpn-id-path
|
|
- port_association_id: bgpvpn-port_association_id-path
|
|
|
|
Response
|
|
--------
|
|
|
|
There is no body content for the response of a successful DELETE request.
|