Server virtualization and cloud computing technologies have created an unprecedented need for network adaptability, expandability, and flexibility. An approach to solving those problems that has been attracting attention is SDN (software-defined networking), which enables configuration of networks and the programming of network functions by operating software .
The network configuration function is divided into a data plane for handling data transfers and a control plane for handling control of the data plane. In the conventional approach, the two planes are tightly linked within individual network devices, so interworking between the control planes of the devices is necessary when constructing a single network with multiple network devices.
In the SDN approach, on the other hand, the data plane and control plane are separated, and their independence is maintained by specifying an application programming interface (API). Using the API to develop programs according to purpose and use enables higher independence of data plane control. A program that uses this kind of API is called an SDN application.
2. Ryu SDN Framework
Ryu SDN Framework (Ryu) is a framework that provides the libraries and tools that are required in order to develop SDN applications (Fig. 1 and Fig. 2). The framework facilitates development by providing the basic functions for controlling the data plane and the functions that are common to SDN applications. The functions that are features of Ryu are described in the following subsections.
Fig. 1. Overview of Ryu SDN Framework.
Fig. 2. Ryu public site (http://osrg.github.io/ryu/).
2.1 OpenFlow controller function
OpenFlow is a set of API specifications for the control plane and the data plane formulated by the Open Networking Foundation (ONF); it has been attracting broad attention as the most important API specifications for implementing the SDN approach. OpenFlow switch is the term used for the data plane that conforms to the specifications, and OpenFlow controller similarly refers to the control plane. SDN applications can be implemented by using these functions.
Ryu has the OpenFlow controller function, so SDN applications that use OpenFlow switches can easily be developed using Ryu. Although various versions of the OpenFlow API specifications exist, Ryu is compatible with a greater variety of versions than other OpenFlow controllers (versions 1.0, 1.2, 1.3, and 1.4), so more OpenFlow switches can be used.
The functions of the most recent version, 1.4, which was released in the fall of 2013, are explained as follows and presented in Fig. 3.
Fig. 3. Functions of OpenFlow version 1.4.
(1) Bundle function: This function is for setting multiple commands for an OpenFlow switch at the same time. In the previous versions, it was necessary to confirm the setting of each command individually on the application side. This bundle function facilitates development by making it possible to set multiple commands together as a bundle.
(2) Eviction function: This function enables processing to be done when memory overflow occurs in OpenFlow switches. The memory capacity for storing the switch settings can vary with the type of machine. In the previous versions, it was necessary to implement the required processing on the application side for each type of machine in order to prevent memory overflow. This eviction function facilitates development of applications through automatic selection of the eviction command based on the priorities set by the application.
(3) Optical port information collection function: This enables OpenFlow switches to have 10-Gbit/s or 40-Gbit/s broadband optical ports in the same way as other network devices. With previous versions, it was not possible to obtain the signal wavelength and strength or other information that is specific to optical ports, and it was necessary to use special functions outside the OpenFlow specifications for specific device types to obtain such information. OpenFlow switches that work with this function can obtain the information that is specific to an optical port in the same way as for an ordinary Ethernet port, reducing the machine-specific implementation required in application development.
2.2 Functions for cooperating with existing network devices
It has been difficult to replace all of the network devices in an existing network with new OpenFlow switches. An OpenFlow switch can transmit various types of data in the same way as the existing network devices, so it is also possible to construct a network in which the devices of the existing network co-exist with OpenFlow switches. For example, when expanding an existing network or dealing with devices that have complex management settings, a practical approach would be to partially and gradually introduce OpenFlow switches by using an SDN application. Ryu provides functions for such introductions of OpenFlow switches in an existing network.
2.2.1 Obtaining management information
Even in existing networks, it is generally common to collect data such as the amount of traffic flow, link status, and other kinds of information from network devices that are compatible with SNMP (Simple Network Management Protocol), NetFlow, sFlow, etc., via network management systems, monitoring systems, or other such means, and to perform total, overall management of the data. The same kinds of information concerning OpenFlow switches can also be collected by the OpenFlow controller function. Ryu provides a function for collecting information from conventional network devices as well as from OpenFlow devices to avoid splitting the management system into two systems when a network configuration includes both OpenFlow switches and conventional network devices. Using Ryu to develop the management system makes it possible to collect information on various network devices other than OpenFlow switches and to perform total, integrated management. When the existing system is taken as the parent system, the functions of the Ryu OpenFlow controller can be called from the existing system so that information collection and total management that includes OpenFlow switches can be performed.
Some users use provisioning tools for implementing automatic changes in network device ports and bandwidth settings, for example, and also for entering settings. The NETCONF (Network Configuration Protocol) specifications are intended to provide a common procedure for such tasks for conventional network devices.
ONF is also addressing the issue of a common procedure for entering settings, which is not covered by OpenFlow specifications, by establishing the OF-CONFIG (OpenFlow Management and Configuration Protocol) specifications. Ryu accommodates both OF-CONFIG and NETCONF in the switch settings management function, so it is also possible to develop provisioning tools for unified settings changes for OpenFlow switches and existing network devices. The Ryu OF-CONFIG function can also be called from existing provisioning tools.
2.2.3 Exchange of routing data
The exchange of routing information based on the Border Gateway Protocol (BGP) is often used for overall cooperative operation of existing network devices as a single network. For example, data can be efficiently transferred by synchronizing the routing information possessed by network devices in different locations. Because Ryu conforms to the BGP specifications, it is possible, for example, to receive the routing information that is exchanged among existing network devices and send that data to OpenFlow switches. Also, changes made to routing information on the OpenFlow switch side can be sent to existing network devices via Ryu. Thus, when OpenFlow switches coexist with an existing network, routing information can be synchronized by the same mechanism as used previously, and obstacles to the introduction of OpenFlow switches can be reduced.
2.3 Sample applications
Ryu mainly provides tools and libraries that facilitate SDN application development, but sample applications that are easily referenced are also included. The examples include applications that implement firewalls and routers of the kinds that are familiar to most of us as well as applications that implement functions that are often used when constructing networks, such as link aggregation and spanning trees.
3. Efforts to achieve widespread adoption
In addition to developing Ryu, the NTT laboratories are actively encouraging the wider use of this platform. By making Ryu known and available to many people and obtaining feedback on it that can be used to develop an even better platform, we hope to contribute to the overall development of SDN/OpenFlow.
3.1 OSS development
Ryu is open source software (OSS). The source code is published and can be downloaded and used freely under an Apache license . Anyone can incorporate Ryu into their products, commercial or otherwise, and some products that incorporate Ryu are already on the market . The platform was published in 2012, and development has been vigorous ever since, with participation by switch vendors, network providers, systems integrators, academic organizations, and various others.
3.2 Wider use of OpenFlow specifications
The OpenFlow specifications do not necessarily define all functions as essential, and there are some functions whose application depends on the switch. There are also cases in which specific conditions must be satisfied for proper operation, even when conformance to OpenFlow specifications has been achieved. Currently, specific development may be needed for each particular switch because of ambiguities in the OpenFlow specifications themselves.
We are taking advantage of the high degree of Ryu conformity to the OpenFlow controller function specifications to develop a tool for checking the degree of conformance to OpenFlow switch specifications. We are using that tool to test the connection to various OpenFlow switches and are publishing the results on the Ryu website  (Fig. 4). Those who are developing SDN applications can understand the basic characteristics of various OpenFlow switches by browsing the published results.
Fig. 4. Test results for the OpenFlow switch (http://osrg.github.io/ryu/certification.html).
This tool is also provided together with Ryu and is being used by many switch developers. Using this tool from the beginning of switch development can raise the level of product conformance with the specifications and aid in product quality management.
3.3 Documentation and publications
Although there was little documentation right after Ryu was published as OSS, more and more documentation is being made available. Currently, an e-book that compiles that documentation is being distributed (Fig. 5). Like the software, the book is also in open development, so interested persons are welcome to access it from any handy terminal.
Fig. 5. E-book reference for Ryu (http://osrg.github.io/ryu/resources.html#books).