In Chapter 5, Getting Started with OpenDaylight, we introduced OpenDaylight as an open source SDN project that supports SDN protocols such as OpenFlow and OVSDB. In a cloud environment, ODL interacts with OpenStack Neutron to provide the network abstractions necessary for flexible and scalable application deployment. In the previous chapter, we also discussed the OpenDaylight and OpenStack integration in brief.
In this chapter, we will delve deeper into the integration of the ODL and OpenStack environment. Being an SDN solution, OpenDaylight integrates with OpenStack Neutron and handles the network provisioning requests. While Neutron is designed to support various virtual networking technologies, the integration with ODL is implemented using Open vSwitch-based virtual networking. This is because ODL uses OpenFlow and OVSDB protocols to configure virtual networks on the OpenStack compute nodes.
We will cover the following topics in this chapter:
As more and more applications are hosted on cloud-based infrastructure, there is a growing need for building networks that are independent of the underlying network hardware. This promise is realized using SDN technologies such as OpenDaylight. However, as a standalone SDN platform, ODL can provide only a subset of the capabilities needed for a cloud infrastructure.
OpenStack can be considered as a collection of services that leverage underlying networks, hypervisor hosts, and storage devices to create an open cloud platform. As introduced in Chapter 1, OpenStack Networking in a Nutshell, Neutron is the OpenStack service that handles network provisioning requests from cloud users. Therefore, in order to leverage ODL in a cloud infrastructure, it must integrate with OpenStack Neutron.
Neutron can provide networking services to OpenStack users using a combination of virtual and physical networking platforms. For example, Open vSwitch (OVS) is the most popular virtual switch in an OpenStack deployment. Other examples of virtual switches are Linux bridge, vRouter from OpenContrail, and so on. The plugin and driver-based architecture of Neutron ensures that OVS works with physical network hardware from different vendors.
The following diagram shows OpenStack Networking components without OpenDaylight:
Figure 1: OpenStack Networking without ODL
As shown in Figure 1, when the user creates OpenStack Networking entities such as a network or subnet using the GUI, the request is first processed by the Horizon service on the controller node. The request is then delegated to the Neutron service. In this setup, Neutron is configured to use the ML2 Plugin with OVS Driver. The network provisioning request is handled by the OVS Driver, which sends messages to OVS Agent running on the compute nodes. The OVS agent then configures the virtual network on the compute node using Open vSwitch. The virtual machines are then bound to these OVS bridges in order for data traffic to flow through.
The following diagram shows how OpenStack Networking looks when ODL is integrated:
Figure 2: OpenStack Networking with OpenDaylight
As seen in Figure 2, Neutron is now the configured ODL Driver instead of OVS Driver. The OpenDaylight ML2 driver uses REST APIs to send messages to the ODL controller. The ODL controller then uses OVSDB and OpenFlow protocols to directly configure the OVS bridges and ports on the compute node.
In this scenario, the OVS agents on the compute nodes are no longer needed. Also, each OVS system on the compute nodes is directly managed and controlled by the ODL controller, so Neutron only needs to communicate with OpenDaylight's Neutron REST API.
3.141.45.33