summaryrefslogtreecommitdiffhomepage
path: root/doc/source/using_with_openstack.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/source/using_with_openstack.rst')
-rw-r--r--doc/source/using_with_openstack.rst264
1 files changed, 9 insertions, 255 deletions
diff --git a/doc/source/using_with_openstack.rst b/doc/source/using_with_openstack.rst
index 60f1a4bf..badb0446 100644
--- a/doc/source/using_with_openstack.rst
+++ b/doc/source/using_with_openstack.rst
@@ -3,262 +3,16 @@
************************************************************************
Using Ryu Network Operating System with OpenStack as OpenFlow controller
************************************************************************
-This section describes how to setup openstack (nova, quantum) and
-ryu-manager.
-It is assumed that kvm with libvirt is used and each host machines that run
-nova-compute/nova-network has two physical NICs.
-It would be possible to deploy it with single NIC machines as described at
-the last section.
-NOTE: How to use nova isn't described in this document.
+Ryu cooperates with OpenStack using Quantum Ryu plugin. The plugin is
+available in the official Quantum releases.
-Overview
-========
+For more information, please visit http://github.com/osrg/ryu/wiki/OpenStack .
+We described instructions of the installation / configuration of OpenStack
+with Ryu, and we provide pre-configured VM image to be able to easily try
+OpenStack with Ryu.
-Ryu is designed/implemented with for production use in mind, so it cooperates
-very well with `OpenStack <http://www.openstack.org/>`_ .
-With nova and quantum OVS plugin,
-Ryu provides L2 segregation of Multi-tenants without any switch feature/settings
-like VLAN. So it's very easy to use/experiment/deploy this segregation as
-the below figure.
+----
- .. image:: /images/logical-view.png
-
-
-
-Physical machine setup
-----------------------
-The following figure depicts how physical hosts are connected and each daemons
-are deployed.
-
- .. image:: /images/physical-view.png
-
-Although the nova-api, nova-scheduler, nova-network and related openstack
-daemons are installed in each own physical machines in the above picture,
-they can be installed on a physical machine which also runs nova-compute.
-Each host machine has two nics and one is connected to management LAN
-and other is connected to deployment LAN.
-
-
-How to install/setup
-====================
-If you are not familiar with installing/setting up nova/quantum/openvswitch
-from the source, please refer to OpenStack document and get back here again.
-[
-`OpenStack docs <http://docs.openstack.org/>`_ ,
-`Nova <http://www.openstack.org/projects/compute/>`_ ,
-`Quantum <http://docs.openstack.org/incubation/>`_ ,
-`OpenvSwtich and Quantum Part 1 <http://openvswitch.org/openstack/2011/07/25/openstack-quantum-and-open-vswitch-part-1/>`_ ,
-`OpenvSwtich and Quantum Part 2 <http://openvswitch.org/openstack/2011/07/25/openstack-quantum-and-open-vswitch-part-1/>`_ ,
-`OVS Quantum Plugin Documentation <http://openvswitch.org/openstack/documentation/>`_
-]
-
-* Install ryu and run ryu-manager
- * install ryu from the source code on the hosts on which you run
- * nova-compute,
- * quantum-server and
- * ryu-manager.
-
- This is because quantum-server and ova quantum agent which runs on
- nova-compute node needs ryu-client library to communicate ryu-manager.
-
- Type in ryu source directory::
-
- % python ./setup.py install
-
- * edit /etc/ryu/ryu.conf on the host on which you run ryu-manager
- if necessary
-
- No configuration is needed on hosts that runs quantum and ovs quantum
- agent.
-
- * run ryu network os::
-
- % ryu-manager
-
-
-* get nova source and quantum source from github
- * They are a bit modified from openstack master tree. They are available
- at github for convinience
-
- * https://github.com/osrg/nova/tree/ryu
- * https://github.com/osrg/quantum/tree/ryu
-
- clone them by typing the followings in an appropriate directory::
-
- % git clone git://github.com/osrg/nova.git
- % git clone git://github.com/osrg/quantum.git
-
- If you prefer https, try those::
-
- % git clone https://github.com/osrg/nova.git
- % git clone https://github.com/osrg/quantum.git
-
-
-* Install nova and quantum as usual.
- (And other Openstack related component if necessary. e.g. glance)
-
- Each daemons can be installed in a single machine or in different machines.
- Please refer to Openstack documentation for details.
- You may want to set up multiple nova-compute nodes for interesting use case.
-
-* Setup nova daemons. (Edit nova.conf)
- Specifically configure nova-network and nova-compute
-
- * configure nova-network
- * --fixed_ranges=<setup here>
- * --network_size=<setup here>
- * --network_manager=nova.network.quantum.manager.QuantumManager
- * --quantum_connection_host=<quantum server ip address>
- * --firewall_driver=quantum.plugins.ryu.nova.firewall.NopFirewallDriver
- * --quantum_use_dhcp
-
- NOP firewall driver is newly introduced for demonstrating Ryu
- capability.
- If you want, other existing firewall driver can be specified.
- But such specification don't have any effect in fact
- because ryu directly controls packets to VM instance via OVS bypassing
- netfilter/iptables.
-
- * --linuxnet_interface_driver=quantum.plugins.ryu.nova.linux_net.LinuxOVSRyuInterfaceDriver
- * --linuxnet_ovs_ryu_api_host=<IP address of ryu server>:<Ryu rest API port>
- * set up OVS on each nova-compute node
-
- If Ubuntu is used, you can install it from packages as
- openvswitch-datapath-dkms, openvswitch-common, openvswitch-switch
- If you already use bridge, you may need to edit /etc/modules to load
- openvswitch kernel module, openvswitch_mod and brcompat_mod, before
- bridge module and reboot to unload bridge module.
-
- And then create ovs bridge::
-
- # ovs-vsctl add-br <bridge name: usually br-int>
-
- And if you connect NIC to OVS bridge.::
-
- # ovs-vsctl add-port <bridge name:br-int> <ether interface: e.g. eth<N>>
-
- * configure each nova-compute
- * --libvirt_type=kvm
- * --libvirt_ovs_integration_bridge=<OVS bridge:br-int>
- * --libvirt_vif_type=ethernet
- * --libvirt_vif_driver=quantum.plugins.ryu.nova.vif.LibvirtOpenVswitchOFPRyuDriver
- * --libvirt_ovs_ryu_api_host=<IP address of ryu server>:<Ryu rest API port>
-
-* install quantum server and have quantum to use OVS pluging
- * Edit [PLUGIN] section of /etc/quantum/plugins.ini
- * provider = quantum.plugins.ryu.ryu_quantum_plugin.RyuQuantumPlugin
-
- * Edit [DATABASE] and [OVS] section of /etc/quantum/plugins/ryu/ryu.ini
-
- * [DATABASE] section
-
- * sql_connection = <sql connection to your db>
-
- * [OVS] section
-
- * integration-bridge = <OVS bridge name: br-int>
- * openflow-controller = <ryu-manager IP address>:<ryu openflow port: default 6633>
- * openflow-rest-api = <ryu-manager IP address>:<RYU reset API port: default 8080>
-
- * Run quantum server
-
-* install quantum OVS agent on each nova-compute node
- * Edit /etc/quantum/plugins/ryu/ryu.ini
- * copy the ryu_quantum_agent.py into nova-compute/network node.
-
- The agent isn't installed by setup.py so that you have to copy it manually.
- ryu_quantum_agent.py is located at
- <quantum source base>/quantum/plugins/ryu/agent/ryu_quantum_agent.py
-
- * Run ryu agent::
-
- # ryu_quantum_agent.py -v /etc/quantum/plugins/ryu/ryu.ini
-
-* Then as usual openstack nova operation, create user, project, network and
- run instances.
-* Enjoy!
-
-
-Testing
-=======
-Yay, now you have ryu network Operating System set up.
-You would want to really they are L2-segregated.
-
-* create multi projects and run instances.
-* ping/traceroute between them.
-* tcpdump in the instances
-
-The routing between gateway(gw-xxx) of each tenants are disabled
-by nova.network.linux_net.LinuxOVSOFInterfaceDriver by installing iptables
-rule on nova-network host::
-
- # iptable -t filter -A nova-network-FORWARD --in-interface gw-+ --out-interface gw-+
-
-Thus pinging/tracerouting between VMs in distinct tenants doesn't work.
-If you drop the above rule by::
-
- # iptable -t filter -D nova-network-FORWARD --in-interface gw-+ --out-interface gw-+
-
-You will see ping/tracerout works. Please notice that the packets go through
-gw-xxx and gw-yyy, not directly.
-
- .. image:: /images/trace-route.png
-
-
-Caveats
-=======
-* Run the following daemons in this order
- #. Run Ryu network Operating System
- #. Run quantum with Ryu plugin
- #. Run quantum Ryu agent
- #. run your guest instance
-
- For now, ryu-manager doesn't have persistent store, so if it's rebooted,
- all the necessary information must be told again from quantum server/agent.
-
-* nova-manage network delete doesn't work
-
- At this moment, quantum doesn't implement network delete fully yet.
- If you issue the command, it fails. And you need to fix nova/quantum DB
- by hand using SQL.
-
-
-Appendix
-========
-In the above, two physical NIC deployment is described.
-Some people may want to use those settings with single NIC machine or even
-with single machine.
-It would be possible as the following pictures, but we haven't tested those
-setting. If you success it, please report it.
-
-single NIC setup
-----------------
-If your host machines have only single NIC, it would be possible to use
-Ryu network Operating System with Linux bridge. However we haven't tested such
-setups.
-
- .. image:: /images/compute-node.png
-
-
-All-in-One Setup
-----------------
-You can also setup in single physical host as the following picture.
-
- .. image:: /images/minimul-setup.png
-
-You can setup the above environment quickly using DevStack.
-
- #. Install Ubuntu 11.10 (Oneiric)
-
- #. Download Ryu enabled DevStack from github
- ::
-
- % git clone git://github.com/osrg/devstack.git
-
- #. Start the install
- ::
-
- % cd devstack; ./stack.sh
-
- It will take a few minutes.
+* OpenStack: http://www.openstack.org/
+* Quantum: https://github.com/openstack/quantum/