Trema
Trema is an open-source framework for developing OpenFlow-based Software Defined Networking (SDN) controllers, originally released by NEC for researchers and developers building and testing SDN control applications.
- OpenFlow controller framework for building SDN control applications (network control platform)
- Provides libraries and runtime for packet-in handling, flow rule management, and topology control (SDN controller toolkit)
- Supports modular controller applications written mainly in C and Ruby with event-driven processing (application framework)
- Includes debugging, logging, and testing utilities for OpenFlow controller behavior (observability and test tooling)
- Targets academic, experimental, and prototype SDN environments using the OpenFlow protocol (research and development platform)
More About Trema
Trema is an OpenFlow-based SDN controller framework designed to provide a programmable environment for building custom network control applications. It focuses on the problem space of separating the control plane from the data plane and giving developers a structured toolkit to implement OpenFlow controller logic without having to build protocol handling, event loops, and message parsing from scratch.
At its core, Trema supplies an OpenFlow controller runtime and associated libraries (network control platform) that manage communication with OpenFlow-enabled switches. The framework handles OpenFlow message parsing and dispatch, and exposes events such as packet-in notifications, switch connections, and topology changes to user-developed applications. This allows developers to implement logic for installing, updating, and removing flow entries on switches based on arbitrary policies and packet-processing rules.
The project supports controller applications written primarily in C and Ruby (application framework), using an event-driven architecture. Developers write callbacks that respond to OpenFlow events, and Trema orchestrates the event loop, network I/O, and message encoding/decoding. This structure is intended to simplify implementation of SDN use cases such as learning switches, L2/L3 forwarding, access control policies, Traffic Engineering (TE) algorithms, and experimental control-plane protocols.
Trema also includes utilities for debugging, logging, and testing controller behavior (observability and test tooling). Typical tooling includes facilities to trace OpenFlow messages, log controller events, and run controller applications in controlled environments. This supports iterative development and experimentation, particularly in academic or lab contexts where new SDN algorithms and control strategies are evaluated.
In enterprise or institutional environments, Trema is mainly used as a development and experimentation framework rather than as a general-purpose production controller. Network and systems engineers can prototype OpenFlow policies, test integration with OpenFlow-enabled switches, and evaluate SDN architectures using Trema’s controller runtime. Because it focuses on OpenFlow (network control protocol), it fits into network Research and Development (R&D), proof-of-concept, and education environments where fine-grained control of flows and packet handling is required.
From a taxonomy perspective, Trema is categorized as an SDN/OpenFlow controller framework (network control platform) and a controller application development toolkit (developer framework). Its emphasis on modular applications, language bindings, and event-driven processing positions it as a tool for building and testing custom SDN controllers that interact with OpenFlow switches in both simulated and real networks.