The OFSwitch13 module enhances the ns-3 Network Simulator with Software-Defined Networking (SDN) support. Despite the fact that the ns-3 already has a module for simulating OpenFlow switches, it provides a very outdated protocol implementation (OpenFlow version 0.8.9, from 2008). Alternatively, OFSwitch13 supports OpenFlow protocol version 1.3, bringing both a switch device and a controller application interface to the ns-3 simulator, as depicted in the figure below. With OFSwitch13, it is possible to interconnect ns-3 nodes to send and receive traffic using the existing CSMA and virtual network devices. The controller application interface can be extended to implement any desired control logic to orchestrate the network. The communication between the controller and the switch is realized over standard ns-3 protocol stack, devices and channels. The OFSwitch13 module relies on the external BOFUSS library for OFSwitch13. This library provides the switch datapath implementation, the support for converting OpenFlow messages to/from wire format, and the dpctl utility tool for configuring the switch from the command line.
The OFSwitch13 module architecture.
Note that OFSwitch13 is not an extension of the available ns-3 OpenFlow model. They share some design principles, but they are completely independent modules. Please, refer to the module documentation for design details, including tutorials on how to port simulation scripts from the existing ns-3 OpenFlow module to this new one.
If you feel comfortable, please include a reference in your work to the paper describing this module: Luciano Jerez Chaves, Islene Calciolari Garcia, and Edmundo Roberto Mauro Madeira. OFSwitch13: Enhancing ns-3 with OpenFlow 1.3 support. In: Proceedings of the 8th Workshop on ns-3 (WNS3), p. 33-40. ACM, 2016.
Instructions on how to download, compile and use the module can be found in the documentation. You can also check the API doxygen and the GitHub repository for implementation details. The latest OFSwitch13 release is version 5.2.2, which is compatible with ns-3.38 and ns-3.39 (check the release notes file for backward compatibility).
This module is current maintained mainly by Luciano Jerez Chaves. It also received contributions from Vítor Marge Eichemberger, Islene Calciolari Garcia, and Arthur Boechat Mazzi. We would like to thank Eder Leão Fernandes for helping us on the integration with the BOFUSS library.
Feel free to subscribe to our mailing list at Google groups and provide some feedback, give us suggestions, interact with other users, or to just say hello!