From 6e78541edcb49d7a788ca19f1f6cbeee10ca1d11 Mon Sep 17 00:00:00 2001 From: Na Date: Wed, 18 May 2016 04:57:52 -0700 Subject: [PATCH] Add drivers document for neutron dynamic routing This patch add document about neutron dynamic routing drivers. Change-Id: Iccba29b89ef542a973efe4a10a0b8fef2365f745 Partially-Implements: blueprint bgp-spinout Partial-Bug: #156000 --- doc/source/design/drivers.rst | 78 ++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/doc/source/design/drivers.rst b/doc/source/design/drivers.rst index 308cff94..557e5c18 100644 --- a/doc/source/design/drivers.rst +++ b/doc/source/design/drivers.rst @@ -25,4 +25,80 @@ Drivers ======= -TODO: Coming Soon +Introduction +------------ +The Neutron dynamic routing drivers are used to support different dynamic +routing protocol stacks which implement the dynamic routing functionality. + +As shown in the following figure, the drivers are managed by `DRAgent <./agent-scheduler.html>`_ +through a "Driver Manager" which provides consistent APIs to realize the +functionality of a dynamic routing protocol:: + + Neutron Dynamic Routing Drivers + +-------------------------------+ + | DRAgent | + | | + | +-------------------------+ | + | | Driver Manager | | + | +-------------------------+ | + | | Common Driver API | | + | +-------------------------+ | + | | | + | | | + | +------------+------------+ | + | | Ryu | Other | | + | | Driver | Drivers | | + | +------------+------------+ | + | | + +-------------------------------+ + +.. note:: + In the first release, only the integration with Ryu is supported. Later release will + have support for Quagga, Bird etc. Besides, BGP is the only protocol supported now + but support for more dynamic routing protocols might come in the future. + + +Configuration +------------- +Driver configurations are done in a separate configuration file. + +BGP Driver +~~~~~~~~~~ +There are two configuration parameters related to BGP which are specified in ``bgp_dragent.ini``. + +* bgp_speaker_driver, to define BGP speaker driver class. Default is Ryu + (neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver.RyuBgpDriver). +* bgp_router_id, to define BGP identity (typically an IPv4 address). Default is + a unique loopback interface IP address. + +Common Driver API +----------------- +Common Driver API is needed to provide a generic and consistent interface +to different drivers. Each driver need to implement the provided +`base driver class `_. + + +BGP +~~~ +Following interfaces need to be implemented by a driver for realizing BGP +functionality. + ++--------------------------------+-----------------------------------------+ +|API name |Description | ++================================+=========================================+ +|add_bgp_speaker() |Add a BGP Speaker | ++--------------------------------+-----------------------------------------+ +|delete_bgp_speaker() |Delete a BGP speaker | ++--------------------------------+-----------------------------------------+ +|add_bgp_peer() |Add a BGP peer | ++--------------------------------+-----------------------------------------+ +|delete_bgp_peer() |Delete a BGP peer | ++--------------------------------+-----------------------------------------+ +|advertise_route() |Add a new prefix to advertise | ++--------------------------------+-----------------------------------------+ +|withdraw_route() |Withdraw an advertised prefix | ++--------------------------------+-----------------------------------------+ +|get_bgp_speaker_statistics() |Collect BGP Speaker statistics | ++--------------------------------+-----------------------------------------+ +|get_bgp_peer_statistics() |Collect BGP Peer statistics | ++--------------------------------+-----------------------------------------+