Add system design for neutron dynamic routing

This patch add document about neutron dynamic routing
system design.

Change-Id: Idf6fa7bb9202f1f40ae669a9980f624f2c855294
Partially-Implements: blueprint bgp-spinout
Partial-Bug: #1560003
This commit is contained in:
Na 2016-05-16 05:45:06 -07:00 committed by Na Zhu
parent 8375c51f70
commit 8304964d4f
1 changed files with 103 additions and 1 deletions

View File

@ -25,4 +25,106 @@
System Design
=============
TODO: Coming Soon
Introduction
------------
Neutron dynamic routing enables advertisement of self-service (private) network
prefixes to physical network devices that support dynamic routing protocols
such as routers, thus removing the conventional dependency on static routes.
It advertises three classes of routes:
* Host routes for floating IP addresses hosted on non-DVR routers, the nexthop is
the centralized router.
* Host routes for floating IP addresses hosted on DVR routers, the nexthop is
the appropriate compute node.
* Prefix routes for directly routable tenant networks with address scopes, the
nexthop is the centralized router, the same for DVR and CVR.
For details refer to `Route Advertisement <../functionality/route-advertisement.html>`_.
Neutron dynamic routing consists of `service plug-in <http://docs.openstack.org/developer/neutron/devref/plugin-api.html>`_
and agent. The service plug-in implements the Networking service extension and
the agent manages dynamic routing protocol peering sessions. The plug-in communicates
with the agent through RPC.
Architecture
------------
The following figure shows the architecture of this feature::
Neutron dynamic Routing System Architecture
+---------------------------------------------------------------+
| Dynamic Routing plug-in |
| +---------------------------------------------------------+ |
| | Dynamic Routing API/Model | |
| +---------------------------------------------------------+ |
| | Dynamic Routing Agent Scheduler | |
| +---------------------------------------------------------+ |
| | |
+------------------------------|--------------------------------+
|
|
+-----------+
| RPC |
+-----------+
|
|
+----------------------|-------------------------+
| |
| |
+---------------------------+ +---------------------------+
| Dynamic Routing Agent1 | | Dynamic Routing Agent2 |
| | | |
| +---------------------+ | | +---------------------+ |
| | Driver Manager | | | | Driver Manager | |
| +---------------------+ | | +---------------------+ |
| | Common Driver API | | | | Common Driver API | |
| +---------------------+ | | +---------------------+ |
| | | | | |
| +---------+-----------+ | | +---------+-----------+ |
| | Ryu | Other | | | | Ryu | Other | |
| | Driver | Drivers | | | | Driver | Drivers | |
| +---------+-----------+ | | +---------+-----------+ |
| | | |
+---------------------------+ +---------------------------+
Dynamic Routing Plug-in
~~~~~~~~~~~~~~~~~~~~~~~
Using dynamic routing plugin one can enable/disable the support of dynamic routing protocols
in neutron.
Dynamic Routing API
~~~~~~~~~~~~~~~~~~~
Dynamic routing API provides APIs to configure dynamic routing. API's for below mentioned dynamic
protocols are supported.
BGP
+++
Three kinds of APIs are available for BGP functionality.For details refer to the
`API document <./api.html>`_.
* BGP Speaker APIs to advertise Neutron routes outside the Openstack network.
* BGP Peer APIs to form peers with the remote routers.
* BGP DRAgentScheduler APIs to schedule BGP Speaker(s) to one or more hosts running the
dynamic routing agent.
.. note::
BGP is the only dynamic routing protocol currently supported.
Dynamic Routing Model
~~~~~~~~~~~~~~~~~~~~~
Dynamic routing model maintains the database and communicates with the dynamic routing agent.
Dynamic Routing Agent Scheduler
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dynamic routing agent scheduler, is responsible for scheduling a routing entity. For details refer
to `Agent Scheduler <./agent-scheduler.html>`_.
Dynamic Routing Agent (DR Agent)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dynamic routing can reside on hosts with or without other Networking service agents.
It manages and configures different dynamic routing stack through
`Common Driver API <./drivers.html>`_.
.. note::
Currently, only integration with `Ryu <http://ryu.readthedocs.io/en/latest/library_bgp_speaker.html>`_
is supported. Future releases will add the support for Quagga, Bird, etc.