Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp> --- Changes v5 -> v6: - adjust for code change
Changes v3 -> v4: - clarification - some more devstack variables --- doc/source/openstack.rst | 1 + doc/source/tunneling_with_openstack.rst | 312 +++++++++++++++++++++++++++++++ 2 files changed, 313 insertions(+) create mode 100644 doc/source/tunneling_with_openstack.rst diff --git a/doc/source/openstack.rst b/doc/source/openstack.rst index ec1b9b1..5c973ca 100644 --- a/doc/source/openstack.rst +++ b/doc/source/openstack.rst @@ -10,3 +10,4 @@ Ryu provides tenant isolation feature in OpenStack. using_with_openstack.rst step_by_step.rst how_l2_segregation_works.rst + tunneling_with_openstack.rst diff --git a/doc/source/tunneling_with_openstack.rst b/doc/source/tunneling_with_openstack.rst new file mode 100644 index 0000000..dea3b43 --- /dev/null +++ b/doc/source/tunneling_with_openstack.rst @@ -0,0 +1,312 @@ +.. _tunneling_with_openstack: + +******************************* +Using tunneling with OpenStack +******************************* +This section describes how to setup openstack (nova, quantum) and ryu-manage +with tunneling enabled. + +Overview +======== + +* install necessary components + + Todo: when the modifications are upstreamed, drop them. + + * patched ryu + * openstack + + * patched quantum + Todo: Once the patch is merged, remove this entry. + * patched devstack + If you use devstack, it needs patch. + Todo: Once the patch is merged, remove this entry. + + * other openstack component(nova, ...) can be used from the upstream as is +* setup configuration appropriately +* run those component +* start guest instance as you like. +* enjoy + +If you have not tried openstack, it is strongly recommended to try normal +openstack setup with quantum OVS plugin at first. + + +Avaiable repository +------------------- +Unfortunately several components needs patches at the moemnt. +For convenience, they are avaiable at github as follows. +Todo: when the modifications are upstreamed, drop them. + +Note: you may want to check if configuration files of them. + +* git://github.com/yamahata/ryu.git ryu-gre-tunnel-nov-21-2012 +* git://github.com/yamahata/quantum.git ryu-gre-tunnel-nov-21-2012 +* git://github.com/yamahata/devstack.git ryu-gre-tunnel-nov-21-2012 + +Other component of openstack can be used from the upstream. +Probably openstack Folsom stable tree would be safe choice. + +Devstack way +============ +It is recommended to use devstack. +Note: the patched openvswitch needs to be installed in advance in all nodes. + +#. download the patched devstack from the above git repo +#. edit localrc depending on your environment + + Please see the next section for detailed parameters. + + .. simple code:: + + # git clone git://github.com/yamahata/devstack.git ryu-gre-tunnel-sep-26-2012 + # cd devstack + # vi localrc + edit localrc appropriately. + My localrc is included in the repository for your information. + +#. run devstack:: + + # ./stack.sh + +#. wait stack.sh to finish and use openstack as usual + +devstack localrc +---------------- +See stack.sh for details and other optional variables. + +* services + * all-in-one node case + * ENABLED_SERVICES="g-api,g-reg,key,nova,n-api,n-crt,n-obj,n-cpu,-n-net,n-sch,n-novnc,n-xvnc,n-cauth,horizon,mysql,rabbit,quantum,q-agt,q-l3,q-dhcp,q-svc,ryu,r-svc,cinder,c-api,c-vol,c-sch" + * compute only node case + * ENABLED_SERVICES="n-cpu,quantum,q-agt" + +* nova virt driver stuff + * LIBVIRT_TYPE=kvm + +* quantum stuff + * Q_PLUGIN=ryu + + We'd like to use ryu plugin + * Q_HOST + + ip address on which qemutum server is running + * Q_ADMIN_USERNAME + + quantum admin user name + * Q_AUTH_STRATEGY + + quantum authentication strategy + * QUANTUM_REPO=git://github.com/yamahata/quantum.git + * QUANTUM_BRANCH=ryu-gre-tunnel-nov-21-2012 + +* ryu stuff + * RYU_APPS=ryu.app.gre_tunnel,ryu.app.quantum_adapter,ryu.app.rest_quantum,ryu.app.rest,ryu.app.rest_conf_switch,ryu.app.rest_tunnel,ryu.app.tunnel_port_updater + * RYU_REPO=git://github.com/yamahata/ryu.git + * RYU_BRANCH=ryu-gre-tunnel-nov-21-2012 + +* optional available setting + * quamtum ryu plugin + IP address on which ryu-manager is running. + + * RYU_API_HOST + * RYU_OFP_HOST + + +localrc example for all in one node +----------------------------------- +This is an example for all in one node.:: + + ENABLED_SERVICES="g-api,g-reg,key,nova,n-api,n-crt,n-obj,n-cpu,-n-net,n-sch,n-novnc,n-xvnc,n-cauth,horizon,mysql,rabbit,quantum,q-svc,q-agt,q-l3,q-dhcp,ryu,r-svc,cinder,c-api,c-vol,c-sch" + + # password + MYSQL_USER=mysql + MYSQL_PASSWORD=mysql + RABBIT_PASSWORD=rabbit + SERVICE_TOKEN=service_token + SERVICE_PASSWORD=service_password + ADMIN_PASSWORD=admin + + # nova + # when kvm fails, automatically falls back to qemu + LIBVIRT_TYPE=kvm + + # quantum + Q_PLUGIN=ryu + QUANTUM_REPO=git://github.com/yamahata/quantum.git + QUANTUM_BRANCH=ryu-gre-tunnel-sep-28-2012 + + # ryu + RYU_REPO=git://github.com/yamahata/ryu.git + RYU_BRANCH=ryu-gre-tunnel-sep-28-2012 + RYU_APPS=ryu.app.gre_tunnel,ryu.app.quantum_adapter,ryu.app.rest,ryu.app.rest_conf_switch,ryu.app.rest_tunnel,ryu.app.tunnel_port_updater + + +localrc example for compute only node +------------------------------------- +This is an example for compute only node. You have to run all-in-one node +in advance.:: + + ENABLED_SERVICES="n-cpu,quantum,q-agt,ryu" + + # Change SERVICE_HOST according to your environment + # this is the IP address of all-in-one node + SERVICE_HOST=172.17.60.198 # set this IP address on your environment + + # use same ip address for all services + Q_HOST=$SERVICE_HOST + RYU_API_HOST=$SERVICE_HOST + RYU_OFP_HOST=$SERVICE_HOST + MYSQL_HOST=$SERVICE_HOST + RABBIT_HOST=$SERVICE_HOST + GLANCE_HOSTPORT=$SERVICE_HOST:9292 + KEYSTONE_AUTH_HOST=$SERVICE_HOST + KEYSTONE_SERVICE_HOST=$SERVICE_HOST + + # password + MYSQL_USER=mysql + MYSQL_PASSWORD=mysql + RABBIT_PASSWORD=rabbit + SERVICE_TOKEN=service_token + SERVICE_PASSWORD=service_password + ADMIN_PASSWORD=admin + Q_PLUGIN=ryu + + # nova + # when kvm fails, automatically falls back to qemu + LIBVIRT_TYPE=kvm + + # quantum + Q_PLUGIN=ryu + QUANTUM_REPO=git://github.com/yamahata/quantum.git + QUANTUM_BRANCH=ryu-gre-tunnel-sep-28-2012 + + # ryu + RYU_REPO=git://github.com/yamahata/ryu.git + RYU_BRANCH=ryu-gre-tunnel-sep-28-2012 + RYU_APPS=ryu.app.gre_tunnel,ryu.app.quantum_adapter,ryu.app.rest,ryu.app.rest_conf_switch,ryu.app.rest_tunnel,ryu.app.tunnel_port_updater + + +common localrc example for both all-in-one node and compute only node +--------------------------------------------------------------------- +As localrc is simple bash script, by using shell function same localrc can +be used for both all-in-one node and compute-only node. +This is just a example, you can customize for you requirement.:: + + # Check if this host is all-in-one node or compute-only node + # just use hostname because it's quite easy. it would be possible to use + # IP address or whatever you like. + SERVICE_HOST_NAME=host-name-of-all-in-one-node + HOST_NAME=$(hostname) + if [ "$HOST_NAME" = "$SERVICE_HOST_NAME" ]; then + ENABLED_SERVICES="g-api,g-reg,key,nova,n-api,n-crt,n-obj,n-cpu,-n-net,n-sch,n-novnc,n-xvnc,n-cauth,horizon,mysql,rabbit,quantum,q-agt,q-l3,q-dhcp,q-svc,ryu,r-svc,cinder,c-api,c-vol,c-sch" + else + # for compute-only node + ENABLED_SERVICES="n-cpu,quantum,q-agt" + fi + + # Change SERVICE_HOST according to your environment + # this is the IP address of all-in-one node + SERVICE_HOST=172.17.60.198 # set this IP address on your environment + + # use same ip address for all services + Q_HOST=$SERVICE_HOST + RYU_API_HOST=$SERVICE_HOST + RYU_OFP_HOST=$SERVICE_HOST + MYSQL_HOST=$SERVICE_HOST + RABBIT_HOST=$SERVICE_HOST + GLANCE_HOSTPORT=$SERVICE_HOST:9292 + KEYSTONE_AUTH_HOST=$SERVICE_HOST + KEYSTONE_SERVICE_HOST=$SERVICE_HOST + + # password + MYSQL_USER=mysql + MYSQL_PASSWORD=mysql + RABBIT_PASSWORD=rabbit + SERVICE_TOKEN=service_token + SERVICE_PASSWORD=service_password + ADMIN_PASSWORD=admin + + # nova + # when kvm fails, automatically falls back to qemu + LIBVIRT_TYPE=kvm + + # quantum + Q_PLUGIN=ryu + QUANTUM_REPO=git://github.com/yamahata/quantum.git + QUANTUM_BRANCH=ryu-gre-tunnel-sep-28-2012 + + # ryu + RYU_REPO=git://github.com/yamahata/ryu.git + RYU_BRANCH=ryu-gre-tunnel-sep-28-2012 + RYU_APPS=ryu.app.gre_tunnel,ryu.app.quantum_adapter,ryu.app.rest,ryu.app.rest_conf_switch,ryu.app.rest_tunnel,ryu.app.tunnel_port_updater + + +Manual way +========== +#. download the patched openvswitch from the above git repo and install it. +#. download the ryu repository from the above git repo +#. run ryu-manager with the following + + :: + + # git clone git://github.com/yamahata/ryu.git ryu-gre-tunnel-sep-28-2012 + # cd ryu + # ./bin/ryu-manager --app_lists=ryu/app/gre_tunnel.py --app_lists=ryu/app/quantum_adapter.py --app_lists=ryu/app/rest_quantum.py --app_lists=ryu/app/rest.py --app_lists=ryu/app/rest_conf_switch.py --app_lists=ryu/app/rest_tunnel.py --app_lists=ryu/app/tunnel_port_updater.py --quantum_url=http://localhost:9696 --quantum_admin_auth_url=http://localhost:5000/v2.0/ --quantum_controller_addr=tcp:172.16.3.33:6633 + + The point is to run the following ryu network applications. + + * gre_tunnel + * quantum_adapter + * tunnel_port_updater + * rest + * rest_conf_switch + * rest_tunnel + + Here is the configurations for quantum adapter + + * --int_bridge + + the name of integration bridge of quantum which is same to + the value of integration_bridge in quantum/plugin/ryu/ryu.ini + * --quantum_url + + URL for connecting to quantum + * --quantum_url_timeout + + timeout value for connecting to quantum in seconds + * --quantum_admin_username + + username for connecting to quantum in admin context + * --quantum_admin_password + + password for connecting to quantum in admin context + * --quantum_admin_tenant_name + + tenant name for connecting to quantum in admin context + * --quantum_admin_auth_url + + auth url for connecting to quantum in admin context + * --quantum_auth_strategy + + auth strategy for connecting to quantum in admin context + keystone or noauth + * --quantum_controller_addr + + openflow mehod:address:port to set controller of + This option must be specified as no default value is set. +#. necessary quantum settings + + * nova/nova.conf + * libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver + * quantum/plugin/ryu.ini + * openflow_rest_api + * quantum/quantum.conf + * core_plugin = quantum.plugins.ryu.ryu_quantum_plugin.RyuQuantumPluginV2 + * interface_driver = quantum.agent.linux.interface.OVSVethInterfaceDriver +#. install/run other openstack daemons as you want + Please refer to openstack document for details. +#. don't forget to run quantum agent depending on your setup + * quantum-ryu-agent + * quantum-dhcp-agent + * quantum-l3-agent -- 1.7.10.4 ------------------------------------------------------------------------------ Keep yourself connected to Go Parallel: TUNE You got it built. Now make it sing. Tune shows you how. http://goparallel.sourceforge.net _______________________________________________ Ryu-devel mailing list Ryu-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ryu-devel