Full-Stack OpenFlow Framework in Ruby
Cucumber Ruby
Latest commit e1b9a6c Jul 5, 2016 @yasuhito yasuhito committed on GitHub Merge pull request #431 from otahi/make_trema_dual_licensed_mit_gplv2
PR: make Trema dual licensed under the MIT or GPL Version2 licenses


Welcome to Trema

Build Status Code Climate Coverage Status Dependency Status

Trema is an OpenFlow controller programming framework that provides everything needed to create OpenFlow controllers in Ruby. It provides a high-level OpenFlow library and also a network emulator that can create OpenFlow-based networks for testing on your PC. This self-contained environment helps streamlines the entire process of development and testing.


  • Ruby 2.0.0 or higher (RVM).
  • Open vSwitch (apt-get install openvswitch-switch).


See https://relishapp.com/trema/trema/docs for links to documentation for all APIs.

Sample Code

Study sample code for implementation examples of Trema features. Each sample code project is executable source example of how to write a OpenFlow controller using Trema Ruby API.


Special thanks to all contributors for submitting patches. A full list of contributors including their patches can be found at:



Trema is released under the GNU General Public License version 2.0 or MIT License: