--- /dev/null
+=== OpenStack with Virtual Tenant Network
+This section describes using OpenDaylight with the VTN manager feature providing network service for OpenStack. VTN manager utilizes the OVSDB southbound service and Neutron for this implementation. The below diagram depicts the communication of OpenDaylight and two virtual networks connected by an OpenFlow switch using this implementation.
+
+.OpenStack Architecture
+image::vtn/OpenStackDeveloperGuide.png["OpenStack Architecture",width=500]
+
+==== Configuration
+Please see the https://wiki.opendaylight.org/view/Release/Lithium/VTN/User_Guide/OpenStack_Support[VTN OpenStack support guide on the wiki] for details on use and configuration.
+
+===== OpenStack Configuration Details
+Follow the below steps to configure DevStack with OpenDaylight:
+
+.Control Node
+. Disable nova network and enable Neutron.
+. Enable service odl-compute. (Optionally, you can enable odl-server also, which will download and deploy OpenDaylight in the particular node.)
+. Set ODL_MGR_IP with IP Address of OpenDaylight.
+. Make all network types as local, as there is no support for VLAN in Lithium.
+. Add the OpenDaylight Neutron URL for DevStack to post requests.
+
+.Compute Node
+. To configure compute node follows the steps 2, 3 and 4 described in Control Node above.
+. Very few services are enabled like Neutron, n-cpu and rabbit.
+. The Neutron URL is not needed to be set in compute node.
+. The control node services are added as the service hosts for various services.
+
+For more details: Please refer to https://wiki.openstack.org/wiki/NeutronDevstack
+
+==== Implementation details
+
+===== VTN Manager:
+Install *odl-vtn-manager-neutron* feature which provides the integration with Neutron interface.
+
+ feature:install odl-vtn-manager-neutron
+
+It subscribes to the events from Open vSwitch and also implements the Neutron requests received by OpenDaylight.
+
+===== Functional Behavior
+
+.StartUp:
+* The ML2 implementation for OpenDaylight will ensure that when Open vSwitch is started, the ODL_IP_ADDRESS configured will be set as manager.
+* When OpenDaylight receives the update of the Open vSwitch on port 6640 (manager port), VTN Manager handles the event and adds a bridge with required port mappings to the Open vSwitch at the OpenStack node.
+* When Neutron starts up, a new network create is POSTed to OpenDaylight, for which VTN Manager creates a Virtual Tenant Network.
+* *Network and Sub-Network Create:* Whenever a new sub network is created, VTN Manager will handle the same and create a vbridge under the VTN.
+* *VM Creation in OpenStack:* The interface mentioned as integration bridge in the configuration file will be added with more interfaces on creation of a new VM in OpenStack and the network is provisioned for it by the VTN Neutron feature. The addition of a new port is captured by the VTN Manager and it creates a vbridge interface with port mapping for the particular port. When the VM starts to communicate with other VMs, the VTN Manger will install flows in the Open vSwitch and other OpenFlow switches to facilitate communication between them.
+
+NOTE:
+ To use this feature, VTN feature should be installed
+
+==== Reference
+
+https://wiki.opendaylight.org/images/5/5c/Integration_of_vtn_and_ovsdb_for_helium.pdf
VTN Manager features, enable OpenStack to work in pure OpenFlow environment in which all switches in data plane are OpenFlow switch.
==== Requirements
-To use OpenDaylight Controller (ODL) as Network Service Provider for Openstack.
+To use OpenDaylight as Network Service Provider for OpenStack.
==== Components
* OpenDaylight Controller.
*Network Settings*
- Checked the output of ifconfig -a, two interfaces were listed eth0 and eth1 as indicated in the image above.
-- We had connected eth0 interface to the Network where ODL Controller is reachable.
+- We had connected eth0 interface to the Network where OpenDaylight is reachable.
- eth1 interface in both servers were connected to a different network to act as data plane for the VM's created using the OpenStack.
- Manually edited the file : sudo vim /etc/network/interfaces and made entries as follows
- reboot both nodes after the user and network settings to have the network settings applied to the network
- Login again and check the output of ifconfig to ensure that both interfaces are listed
-==== ODL Settings and Execution
+==== OpenDaylight Settings and Execution
===== vtn.ini
* VTN uses the configuration parameters from 'vtn.ini' file for the OpenStack integration.
* These values will be set for the OpenvSwitch, in all the participating OpenStack nodes.
*** The value can be "standalone" or "secure".
*** Please use "secure" for general use cases.
-==== Start ODL Controller
+==== Start OpenDaylight
* Please install the feature *odl-vtn-manager-neutron* that provides the integration with Neutron interface.
- install odl-vtn-manager-neutron
+feature:install odl-vtn-manager-neutron
-TIP: After running ODL Controller, please ensure ODL Controller listens to the ports:6633,6653, 6640 and 8080
+TIP: After running OpenDaylight, please ensure OpenDaylight listens to the ports:6633,6653, 6640 and 8080
-TIP: Please allow the ports in firewall for the devstack to be able to communicate with ODL Controller.
+TIP: Please allow the ports in firewall for the devstack to be able to communicate with OpenDaylight.
-NOTE: 6633/6653 - OpenFlow Ports
-
-NOTE: 6640 - OVS Manager Port
-
-NOTE: 8282 - Port for REST API
+NOTE:
+* 6633/6653 - OpenFlow Ports
+* 6640 - Open vSwitch Manager Port
+* 8282 - Port for REST API
==== Devstack Setup
* Execute the command 'sudo ovs-vsctl show' in the control node terminal and verify if the bridge 'br-int' is created.
* The output of the ovs-vsctl show will be similar to the one seen in control node.
===== Additional Verifications
-* Please visit the ODL DLUX GUI after stacking all the nodes, http://<ODL_IP_ADDRESS>:8181/dlux/index.html. The switches, topology and the ports that are currently read can be validated.
+* Please visit the OpenDaylight DLUX GUI after stacking all the nodes, http://<ODL_IP_ADDRESS>:8181/dlux/index.html. The switches, topology and the ports that are currently read can be validated.
-TIP: If the interconnected between the OVS is not seen, Please bring up the interface for the dataplane manually using the below comamnd
+TIP: If the interconnected between the Open vSwitch is not seen, Please bring up the interface for the dataplane manually using the below comamnd
ifup <interface_name>
-TIP: Some versions of OVS, drop packets when there is a table-miss, So please add the below flow to all the nodes with OVS version (>=2.1)
+TIP: Some versions of Open vSwitch, drop packets when there is a table-miss, So please add the below flow to all the nodes with Open vSwitch version (>=2.1)
ovs-ofctl --protocols=OpenFlow13 add-flow br-int priority=0,actions=output:CONTROLLER
.Ping
image::vtn/Instance_ping.png[Ping,width=600]
-
===== Verification of Control and Compute Node after VM creation
-The output of sudo ovs-vsctl command after VM creation
-[source]
- [stack@icehouse-compute-odl devstack]$ sudo ovs-vsctl show Manager "tcp:192.168.64.73:6640"
- is_connected: true
- Bridge br-int
- Controller "tcp:192.168.64.73:6633"
- is_connected: true
- fail_mode: secure
- Port "tapa2e1ef67-79"
- Interface "tapa2e1ef67-79"
- Port "tap5f34d39d-5e"
- Interface "tap5f34d39d-5e"
- Port "tapc2858395-f9"
- Interface "tapc2858395-f9"
- Port "tapa9ea900a-4b"
- Interface "tapa9ea900a-4b"
- Port "tapc63ef3de-53"
- Interface "tapc63ef3de-53"
- Port "tap01d51478-8b"
- Interface "tap01d51478-8b"
- Port "tapa0b085ab-ce"
- Interface "tapa0b085ab-ce"
- Port "tapeab380de-8f"
- Interface "tapeab380de-8f"
- Port "tape404538c-0a"
- Interface "tape404538c-0a"
- Port "tap2940658d-15"
- Interface "tap2940658d-15"
- Port "ens224"
- Interface "ens224"
- ovs_version: "2.3.0"
- <code>[stack@icehouse-controller-odl devstack]$ sudo ovs-vsctl show
- Manager "tcp:192.168.64.73:6640"
- is_connected: true
- Bridge br-int
- Controller "tcp:192.168.64.73:6633"
- is_connected: true
- fail_mode: secure
- Port "tap71790d18-65"
- Interface "tap71790d18-65"
- Port "ens224"
- Interface "ens224"
- ovs_version: "2.3.0"
-
-NOTE:In the above scenario more nodes have been created in the compute node
+* Every time a new VM is created, more interfaces are added to the br-int bridge in Open vSwitch.
+* Use *sudo ovs-vsctl show* to list the number of interfaces added.
+* Please visit the DLUX GUI to list the new nodes in every switch.
+
+==== Using the DLUX GUI
+For more information see <<_using_the_opendaylight_user_interface_dlux,the chapter on DLUX>> above.
===== References
* http://devstack.org/guides/multinode-lab.html