BGP dynamic routing api documentation
This is for how to use the BGP dynamic routing API. Change-Id: I235e2def28c307cd5b4ba10374674a166a953e3a Partially-Implements: blueprint bgp-spinout Partial-Bug: #156000
This commit is contained in:
parent
6217344e28
commit
3644441146
|
@ -25,4 +25,465 @@
|
|||
API
|
||||
===
|
||||
|
||||
TODO: Coming Soon
|
||||
Introduction
|
||||
------------
|
||||
Neutron dynamic routing project adds the support for dynamic routing protocols
|
||||
in neutron. Using the ReST interface, a cloud administrator can define routing
|
||||
peers and advertise neutron routes outside the OpenStack domain.
|
||||
|
||||
.. note::
|
||||
Currently, only the support for BGP dynamic routing protocol is available.
|
||||
|
||||
Data Model
|
||||
----------
|
||||
New data models are defined for supporting routing protocols. Below models are defined for
|
||||
different protocols.
|
||||
|
||||
BGP
|
||||
~~~
|
||||
|
||||
BGP Speaker
|
||||
+++++++++++
|
||||
* ``id``
|
||||
The uuid of BGP Speaker.
|
||||
* ``name``
|
||||
The name of BGP Speaker.
|
||||
* ``local_as``
|
||||
The local AS value, ranges from 1 to 65535.
|
||||
* ``ip_version``
|
||||
The ip address version for BGP Speaker. 4 by default.
|
||||
* ``peers``
|
||||
The remote peer connection which supports BGP.
|
||||
* ``networks``
|
||||
The tenant networks connected to the BGP Speaker.
|
||||
* ``advertise_floating_ip_host_routes``
|
||||
Whether to enable or disable the advertisement of floating ip host routes by
|
||||
the BGP Speaker. True by default.
|
||||
* ``advertise_tenant_networks``
|
||||
Whether to enable or disable the advertisement of tenant network routes by
|
||||
the BGP Speaker. True by default.
|
||||
|
||||
BGP Peer
|
||||
++++++++
|
||||
* ``id``
|
||||
The uuid of BGP peer.
|
||||
* ``name``
|
||||
The name of BGP peer.
|
||||
* ``peer_ip``
|
||||
The IP address of BGP peer.
|
||||
* ``remote_as``
|
||||
The remote AS value, ranges from 1 to 65535.
|
||||
* ``auth_type``
|
||||
The authentication algorithm. Supported algorithms: none and md5, none by
|
||||
default.
|
||||
* ``password``
|
||||
The authentication password for the specified authentication type.
|
||||
|
||||
|
||||
ReST Interface
|
||||
--------------
|
||||
Different ReST interface are exposed for realizing different dynamic protocol
|
||||
functionality.
|
||||
|
||||
.. note::
|
||||
Only an administrator have the access to the exposed API's.
|
||||
|
||||
|
||||
BGP
|
||||
~~~
|
||||
|
||||
BGP Speaker
|
||||
+++++++++++
|
||||
|
||||
Create
|
||||
''''''
|
||||
Issue a ``POST`` request to ``/v2.0/bgp-speakers`` with following JSON-encoded
|
||||
data to create a BGP Speaker: ::
|
||||
|
||||
{
|
||||
"bgp_speaker":{
|
||||
"ip_version":4,
|
||||
"local_as":"1000",
|
||||
"name":"bgp-speaker"
|
||||
}
|
||||
}
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"bgp_speaker":{
|
||||
"peers":[
|
||||
],
|
||||
"name":"bgp-speaker",
|
||||
"tenant_id":"34a6e17a48cf414ebc890367bf42266b",
|
||||
"local_as":1000,
|
||||
"advertise_tenant_networks":true,
|
||||
"networks":[
|
||||
],
|
||||
"ip_version":4,
|
||||
"advertise_floating_ip_host_routes":true,
|
||||
"id":"5e08db80-db77-4b5c-a56d-dbca0b284f2c"
|
||||
}
|
||||
}
|
||||
|
||||
Return code: 201
|
||||
|
||||
List
|
||||
''''
|
||||
Issue a ``GET`` request to ``/v2.0/bgp-speakers`` to retrieve this list of available
|
||||
BGP Speakers. ::
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"bgp_speakers":[
|
||||
{
|
||||
"peers":[
|
||||
],
|
||||
"name":"bgp-speaker-1",
|
||||
"tenant_id":"34a6e17a48cf414ebc890367bf42266b",
|
||||
"local_as":1001,
|
||||
"advertise_tenant_networks":true,
|
||||
"networks":[
|
||||
],
|
||||
"ip_version":4,
|
||||
"advertise_floating_ip_host_routes":true,
|
||||
"id":"5e08db80-db77-4b5c-a56d-dbca0b284f2c"
|
||||
},
|
||||
{
|
||||
"peers":[
|
||||
],
|
||||
"name":"bgp-speaker",
|
||||
"tenant_id":"34a6e17a48cf414ebc890367bf42266b",
|
||||
"local_as":1000,
|
||||
"advertise_tenant_networks":true,
|
||||
"networks":[
|
||||
],
|
||||
"ip_version":4,
|
||||
"advertise_floating_ip_host_routes":true,
|
||||
"id":"b759b2a1-27f4-4a6b-bb61-f2c9a22c9902"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
Show
|
||||
''''
|
||||
Issue a ``GET`` request to ``/v2.0/bgp-speakers/<bgp-speaker-id>`` to retrieve the
|
||||
detail about a specific BGP Speaker. ::
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"bgp_speaker":{
|
||||
"peers":[
|
||||
],
|
||||
"name":"bgp-speaker",
|
||||
"tenant_id":"34a6e17a48cf414ebc890367bf42266b",
|
||||
"local_as":1000,
|
||||
"advertise_tenant_networks":true,
|
||||
"networks":[
|
||||
],
|
||||
"ip_version":4,
|
||||
"advertise_floating_ip_host_routes":true,
|
||||
"id":"b759b2a1-27f4-4a6b-bb61-f2c9a22c9902"
|
||||
}
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
Update
|
||||
''''''
|
||||
Issue ``PUT`` request to ``/v2.0/bgp-speakers/<bgp-speaker-id>`` to update a
|
||||
specific BGP Speaker. Following attributes can be updated.
|
||||
|
||||
* ``name``
|
||||
The name of BGP Speaker.
|
||||
* ``advertise_floating_ip_host_routes``
|
||||
Whether to enable or disable the advertisement of floating ip host routes by
|
||||
the BGP Speaker. True by default.
|
||||
* ``advertise_tenant_networks``
|
||||
Whether to enable or disable the advertisement of tenant network routes by
|
||||
the BGP Speaker. True by default.
|
||||
|
||||
Delete
|
||||
''''''
|
||||
Issue ``DELETE`` request to ``/v2.0/bgp-speakers/<bgp-speaker-id>`` to delete
|
||||
a specific BGP Speaker. ::
|
||||
|
||||
No reponse body
|
||||
|
||||
Return code: 204
|
||||
|
||||
BGP Peer
|
||||
++++++++
|
||||
|
||||
Create
|
||||
''''''
|
||||
Issue a ``POST`` request to ``/v2.0/bgp-peers`` with following JSON-encoded data
|
||||
to create a BGP peer: ::
|
||||
|
||||
{
|
||||
"bgp_peer":{
|
||||
"auth_type":"none",
|
||||
"remote_as":"1001",
|
||||
"name":"bgp-peer",
|
||||
"peer_ip":"10.0.0.3"
|
||||
}
|
||||
}
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"bgp_peer":{
|
||||
"auth_type":"none",
|
||||
"remote_as":"1001",
|
||||
"name":"bgp-peer",
|
||||
"tenant_id":"34a6e17a48cf414ebc890367bf42266b",
|
||||
"peer_ip":"10.0.0.3",
|
||||
"id":"a7193581-a31c-4ea5-8218-b3052758461f"
|
||||
}
|
||||
}
|
||||
|
||||
Return code: 201
|
||||
|
||||
List
|
||||
''''
|
||||
Issue a ``GET`` request to ``/v2.0/bgp-peers`` to retrieve the list of available
|
||||
BGP peers. ::
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"bgp_peers":[
|
||||
{
|
||||
"auth_type":"none",
|
||||
"remote_as":1001,
|
||||
"name":"bgp-peer",
|
||||
"tenant_id":"34a6e17a48cf414ebc890367bf42266b",
|
||||
"peer_ip":"10.0.0.3",
|
||||
"id":"a7193581-a31c-4ea5-8218-b3052758461f"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
Show
|
||||
''''
|
||||
Issue a ``GET`` request to ``/v2.0/bgp-peers/<bgp-peer-id>`` to retrieve the detail about a
|
||||
specific BGP peer. ::
|
||||
|
||||
Reponse body:
|
||||
|
||||
{
|
||||
"bgp_peer":{
|
||||
"auth_type":"none",
|
||||
"remote_as":1001,
|
||||
"name":"bgp-peer",
|
||||
"tenant_id":"34a6e17a48cf414ebc890367bf42266b",
|
||||
"peer_ip":"10.0.0.3",
|
||||
"id":"a7193581-a31c-4ea5-8218-b3052758461f"
|
||||
}
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
Update
|
||||
''''''
|
||||
Issue ``PUT`` request to ``/v2.0/bgp-peers/<bgp-peer-id>`` to update
|
||||
a specific BGP peer. Following attributes can be updated.
|
||||
|
||||
* ``name``
|
||||
The name of BGP peer.
|
||||
* ``password``
|
||||
The authentication password.
|
||||
|
||||
|
||||
Delete
|
||||
''''''
|
||||
Issue ``DELETE`` request to ``/v2.0/bgp-peers/<bgp-peer-id>`` to delete
|
||||
a specific BGP peer. ::
|
||||
|
||||
No response body
|
||||
|
||||
Return code: 204
|
||||
|
||||
|
||||
BGP Speaker and Peer binding
|
||||
++++++++++++++++++++++++++++
|
||||
|
||||
Add BGP Peer to a BGP Speaker
|
||||
'''''''''''''''''''''''''''''
|
||||
Issue a ``PUT`` request to ``/v2.0/bgp-speakers/<bgp-speaker-id>/add-bgp-peer``
|
||||
to bind the BGP peer to the specified BGP Seaker with following JSON-encoded data: ::
|
||||
|
||||
{
|
||||
"bgp_peer_id":"a7193581-a31c-4ea5-8218-b3052758461f"
|
||||
}
|
||||
|
||||
Response body: ::
|
||||
|
||||
{
|
||||
"bgp_peer_id":"a7193581-a31c-4ea5-8218-b3052758461f"
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
Remove BGP Peer from a BGP Speaker
|
||||
''''''''''''''''''''''''''''''''''
|
||||
Issue a ``DELETE`` request with following data to ``/v2.0/bgp-speakers/<bgp-speaker-id>/remove-bgp-peer``
|
||||
to unbind the BGP peer: ::
|
||||
|
||||
{
|
||||
"bgp_peer_id":"a7193581-a31c-4ea5-8218-b3052758461f"
|
||||
}
|
||||
|
||||
No response body
|
||||
|
||||
Return code: 200
|
||||
|
||||
|
||||
BGP Speaker and Network binding
|
||||
+++++++++++++++++++++++++++++++
|
||||
|
||||
Add Network to a BGP Speaker
|
||||
''''''''''''''''''''''''''''
|
||||
Issue a ``PUT`` request with following data to ``/v2.0/bgp-speakers/<bgp-speaker-id>/add_gateway_network``
|
||||
to add a network to the specified BGP speaker: ::
|
||||
|
||||
{
|
||||
"network_id":"f2269b61-6755-4174-8f64-5e318617b204"
|
||||
}
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"network_id":"f2269b61-6755-4174-8f64-5e318617b204"
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
Delete Network from a BGP Speaker
|
||||
'''''''''''''''''''''''''''''''''
|
||||
Issue a ``DELETE`` request with following data to ``/v2.0/bgp-speakers/<bgp-speaker-id>/remove_gateway_network``
|
||||
to delete a network from a specified BGP speaker. ::
|
||||
|
||||
No response body
|
||||
|
||||
Return code: 200
|
||||
|
||||
BGP Speaker Advertised Routes
|
||||
+++++++++++++++++++++++++++++
|
||||
|
||||
List routes advertised by a BGP Speaker
|
||||
'''''''''''''''''''''''''''''''''''''''
|
||||
Issue ``GET`` request to ```/v2.0/bgp-speakers/<bgp-speaker-id>/get_advertised_routes``
|
||||
to list all routes advertised by the specified BGP Speaker. ::
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"advertised_routes":[
|
||||
{
|
||||
"cidr":"192.168.10.0/24",
|
||||
"nexthop":"10.0.0.1"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
BGP Speaker and Dynamic Routing Agent interaction
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Add BGP Speaker to a Dynamic Routing Agent
|
||||
''''''''''''''''''''''''''''''''''''''''''
|
||||
Issue a ``POST`` request to ``/v2.0/agents/<bgp-agent-id>/bgp-drinstances`` to
|
||||
add a BGP Speaker to the specified dynamic routing agent. The following is
|
||||
the request body: ::
|
||||
|
||||
{
|
||||
"bgp_speaker_id": "5639072c-49eb-480a-9f11-953386589bc8"
|
||||
}
|
||||
|
||||
No response body
|
||||
|
||||
Return code: 201
|
||||
|
||||
List BGP speakers hosted by a Dynamic Routing Agent
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
Issue a ``GET`` request to ``/v2.0/agents/<bgp-dragent-id>/bgp-drinstances`` to
|
||||
list all BGP Seakers hosted on the specified dynamic routing agent. ::
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"bgp_speakers":[
|
||||
{
|
||||
"peers":[
|
||||
],
|
||||
"name":"bgp-speaker",
|
||||
"tenant_id":"34a6e17a48cf414ebc890367bf42266b",
|
||||
"local_as":1000,
|
||||
"advertise_tenant_networks":true,
|
||||
"networks":[
|
||||
],
|
||||
"ip_version":4,
|
||||
"advertise_floating_ip_host_routes":true,
|
||||
"id":"b759b2a1-27f4-4a6b-bb61-f2c9a22c9902"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
List Dynamic Routing Agents hosting a specific BGP Speaker
|
||||
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
Issue a ``GET`` request to ``/v2.0/bgp-speakers/<bgp-speaker-id>/bgp-dragents``
|
||||
to list all BGP dynamic agents which are hosting the specified BGP Speaker. ::
|
||||
|
||||
Response body:
|
||||
|
||||
{
|
||||
"agents":[
|
||||
{
|
||||
"binary":"neutron-bgp-dragent",
|
||||
"description":null,
|
||||
"admin_state_up":true,
|
||||
"heartbeat_timestamp":"2016-05-17 03:05:12",
|
||||
"availability_zone":null,
|
||||
"alive":true,
|
||||
"topic":"bgp_dragent",
|
||||
"host":"yangyubj-virtual-machine",
|
||||
"agent_type":"BGP dynamic routing agent",
|
||||
"resource_versions":{
|
||||
},
|
||||
"created_at":"2016-05-09 07:38:00",
|
||||
"started_at":"2016-05-11 09:06:13",
|
||||
"id":"af216618-29d3-4ee7-acab-725bdc90e614",
|
||||
"configurations":{
|
||||
"advertise_routes":0,
|
||||
"bgp_peers":0,
|
||||
"bgp_speakers":1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Return code: 200
|
||||
|
||||
|
||||
Delete BGP Speaker from a Dynamic Routing Agent
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''
|
||||
Issue a ``DELETE`` request to ``/v2.0/agents/<bgp-agent-id>/bgp-drinstances/<bgp-speaker-id>``
|
||||
to delete the BGP Speaker hosted by the specified dynamic routing agent. ::
|
||||
|
||||
No response body
|
||||
|
||||
Return code: 204
|
||||
|
||||
Reference
|
||||
---------
|
||||
None
|
Loading…
Reference in New Issue