Release of OpenFlow 1.3 support for OpenDaylight’s AD-SAL
OpenDaylight, thus far, has supported OpenFlow 1.3 only through Model-driven SAL. However, MD-SAL can be unwieldy at times. We solve this issue by releasing a set of bundles and source code that enable OpenDaylight users to use AD-SAL for controlling OpenFlow 1.3 switches as well as OpenFlow 1.0 switches.
Our plugin implementation allows you to use the same application built for OpenFlow 1.0 for OpenFlow 1.3 as well. Download our distribution and you will see that the original samples/SimpleForwarding application will work fine with OpenFlow 1.3. For more details on how to run OpenFlow 1.3 switches and to learn more about the protocol, visit this page.
- Complete distribution: We offer a complete OpenDaylight distribution based on Hydrogen release with OpenFlow 1.3 support. Download this pre-built zip file and execute the following commands
$ unzip controller-0.1.0-*-sdnhub.zip $ cd sdhub-odl $ ./run.sh
- Our repository service: We make available a nexus repository service from which you can download the jar files for running the above mentioned features.
- Release repository: We also put together a controller repository which has Maven pom.xml that pulls the jar files for our plugins, OFBroker and JOpenFlow from our repository service, and all other Hydrogen modules from the official OpenDaylight repository service. To use that, run the following commands:
$ git clone https://bitbucket.org/sdnhub/odl-controller.git sdnhub-odl $ cd sdnhub-odl/distribution $ mvn clean install $ cd target/controller-sdnhub/sdnhub-odl/ $ ./run.sh
To test the release, start mininet with support for OpenFow 1.3 using the following command (Note that this requires a patch to make it pass on the options to the Open vSwitch) and run pingall to let the controller learn about all hosts:
$ sudo mn --topo tree,2 --mac --switch ovsk,protocols=OpenFlow13 --controller remote,10.0.2.2 mininet> pingall
- Navigate to http://<controller-ip-address>:8080 to open the web interface, then use the following credentials to log in:
- User: admin
- Password: admin
You should now see a topology like the one on the right. The label OF13 shows that the plugin is working.
- You can now run our complete tutorial with just making a small change to the pom.xml to include the new modules
As shown in the figure on the right, 3 different modules are required to make our implementation work. The AD-SAL relies on two different plugins to support the two different versions of OpenFlow. Based on the version of OpenFlow supported by a connecting switch, the OFBroker module picks the appropriate plugin to handle the OpenFlow protocol handshake. The plugins, in turn, use the JOpenFlow repository for speaking the OpenFlow 1.3 wire protocol and the OpenFlowJ repository to speak the OpenFlow 1.0 protocol.
- AD-SAL plugins: The two plugins with extensions to make it coexist within the same controller. Here are the Maven required artifact-id and group-id for including in the appropriate pom.xml:
<dependency> <groupId>org.sdnhub.odl</groupId> <artifactId>protocol_plugins.openflow13</artifactId> <version>0.1.0-SNAPSHOT</version> </dependency>
<dependency> <groupId>org.sdnhub.odl</groupId> <artifactId>protocol_plugins.openflow10</artifactId> <version>0.1.0-SNAPSHOT</version> </dependency>
- OFBroker: The module that decides which plugins should handle the OpenFlow protocol connection. Here are the Maven required artifact-id and group-id of the OFBroker:
<dependency> <groupId>org.sdnhub.odl</groupId> <artifactId>ofbroker</artifactId> <version>0.1.0-SNAPSHOT</version> </dependency>
- JOpenFlow: This is the OpenFlow 1.3 wire protocol library modeled after the openflowj repository. The protocol_plugins.openflow13 bundle automatically embeds this library, so you will not have to list it in your dependencies.
Build all the modules using the following commands:
$ git clone https://bitbucket.org/sdnhub/jopenflow.git $ cd jopenflow $ mvn clean install -Dmaven.test.skip=true $ cd .. $ git clone https://bitbucket.org/sdnhub/adsal_of_plugin.git $ cd adsal_of_plugin $ mvn clean install -Dmaven.test.skip=true $ cd .. $ git clone https://bitbucket.org/sdnhub/ofbroker.git $ cd ofbroker/ofbroker $ mvn clean install -Dmaven.test.skip=true
- The software works for all existing features of the AD-SAL. However, we have a few open items on adding support for OF1.3’s extensible matches and additional SetField actions in SAL and FlowProgrammer.
- The ofbroker explicitly disables the legacy OpenFlow bundle so as to avoid conflict between different implementations.
- Our release UI is similar to that of the OpenDaylight toolkit.
On additional release notes specific to what is supported on the OF1.3 wire protocol, please visit the release notes of JOpenFlow.
Support and discussion
Visit the AD-SAL OF plugins forum.