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:
parent
8375c51f70
commit
8304964d4f
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue