Added documentation and install guides for the PoC

Change-Id: Ic77e173c173833baa86c47a828fd11f05b77bbee
This commit is contained in:
Eran Gampel 2015-02-11 16:13:44 +02:00
parent d64b4407ee
commit bda541f819
3 changed files with 3585 additions and 7 deletions

View File

@ -1,15 +1,47 @@
===============================
dragonflow
===============================
SDN based Virtual Router add-on for Neutron OpenStack
* Free software: Apache license
* Documentation: http://docs.openstack.org/developer/dragonflow
* Homepage: http://launchpad.net/dragonflow
* Documentation: http://goo.gl/rq4uJC
* Source: http://git.openstack.org/cgit/stackforge/dragonflow
* Bugs: http://bugs.launchpad.net/dragonflow
Overview
--------
Dragonflow is an implementation of a fully distributed virtual router for OpenStack Neutron, which is based on a Software-Defined Network Controller (SDNC) design.
The main purpose of Dragonflow is to simplify the management of the virtual router, while improving performance, scale and eliminating single point of failure and the notorious network node bottleneck.
Currently this project is available as a proof of concept (PoC) patch on top of Neutron.
We are working to make it available soon as a standalone agent.
Being the first release, support on the southbound interface is limited to Open vSwitch (OVS) with OpenFlow v1.3 stack (implemented using the RYU project, embedded in the Neutron L3 service plugin).
How to Install
--------------
here https://github.com/stackforge/dragonflow/tree/master/doc/source
Prerequisites
-------------
Install DevStack with Netron Ml2 as core plugin
Install OVS 2.3.1 or newer
Install Ryu (see "How to Install")
Features
--------
* TODO
* APIs for routing IPv4 East-West traffic
* Performance improvement for inter-subnet network by removing the amount of kernel layers (namespaces and their TCP stack overhead)
* Scalability improvement for inter-subnet network by offloading L3 East-West routing from the Network Node to all Compute Nodes
* Reliability improvement for inter-subnet network by removal of Network Node from the East-West traffic
* Simplified virtual routing management
* Supports all type drivers GRE/Vxlan/VLAN
TODO
----
* Separate the Dragonflow virtual router from the L3 service plug-in, making it a stadnalone agent (will enable multi-controller scalability and decouple from Neutron project)
* Add support for North-South L3 IPv4 distribution (SNAT and DNAT)
* Remove change impact on Neutron L2 Agent by switching to OVSDB command for bootstrap sequence (set-controller and install arp responder)
* Add support for IPv6

File diff suppressed because it is too large Load Diff

View File

@ -1 +1,82 @@
.. include:: ../../README.rst
Note Currently in the PoC implementation the SDN controller is embedded into the L3 service plugin so there is no need to run/ deploy the L3 Agent.
Prerequisite
------------
1) Clone the devstack into the controller node and into all the compute nodes
``cd /opt/stack``
``git clone https://git.openstack.org/openstack-dev/devstack``
- Install multi node devstack instalation using Neutron ML2 core plugin
- Here's a sample devstack multi-node installation configuration file
2) Git-Checkout the last merged label
``cd /opt/stack/neutron/``
``git checkout 51a6260266dc59c066072ca890ad9c40b1aad6cf``
3) Apply the L3 controller patch
- Download from this folder
``git apply --whitespace=nowarn l3_controller.patch``
Setup
-----
1) Enable the Controller L3 service plugin
- Make the following changes in ``neutron.conf``:
- Comment-out loading of the ``L3RouterPlugin``
- Add the ``neutron.services.l3_router.l3_cont_dvr_plugin.ControllerL3ServicePlugin`` to the service plugin list
**neutron.conf**
``[default]``
``#service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin``
``service_plugins=neutron.services.l3_router.l3_cont_dvr_plugin.ControllerL3ServicePlugin``
- Make the following change in ``ml2_conf.ini``:
- Enable the L3 Controller
**ml2_conf.ini**
``[agent]``
``enable_l3_controller = True``
2. Remove deployment of L3 Agent or DVR Agent from the Network Node (make sure the L3 Agent is not running)
**Note: This will disable north-south traffic, allowing you only to test east-west**
`(TODO) explain how to remove L3/DVR Agent`
3. Installing Ryu on Controller Node
- Cloning the Ryu project
``git clone git://github.com/osrg/ryu.git``
- Apply the folowing change to enable Ryu to run in Library mode (instead of a standalone controller)
Replace `register_cli_opts` to `register_opts` in the following files:
``ryu/controller/controller.py``
``ryu/app/wsgi.py``
Run the following commands:
``sed -i 's/register_cli_opts/register_opts/g' ryu/controller/controller.py``
``sed -i 's/register_cli_opts/register_opts/g' ryu/app/wsgi.py``
``% cd ryu; python ./setup.py installl``