8 releases (2 stable)
new 1.0.1 | Apr 1, 2025 |
---|---|
1.0.0 | Mar 31, 2025 |
0.5.0 | Oct 21, 2024 |
0.4.0 | Oct 4, 2024 |
0.3.3 | Aug 26, 2024 |
#626 in Command line utilities
357 downloads per month
250KB
4.5K
SLoC
Tenjin SDN
Features
- High performance and memory safety through Rust
- Support for OpenFlow 1.0 and 1.3
- Asynchronous operation with Tokio
- Built-in example controllers
- Command-line interface for quick testing
- Mininet integration for network emulation
Quick Start
As a Command-Line Tool
- Install Rust and Cargo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Install Tenjin:
cargo install tenjin_sdn
- Run the example controller:
tenjin run
As a Library
- Add Tenjin to your project:
cargo add tenjin_sdn
- Add Tokio for async support:
cargo add tokio
- Use in your code:
use tenjin_sdn::{example, openflow::ofp13::ControllerFrame13};
#[tokio::main]
async fn main() {
let controller = example::Controller13::new();
controller.listener("127.0.0.1:6633");
}
Usage Guide
Command-Line Interface
Basic Usage
# Run default controller (OpenFlow 1.3)
tenjin run
# Run OpenFlow 1.0 controller
tenjin run ctrl10
# Run on specific ports
tenjin run --port 6653
tenjin run --port 6653,6633
For more options:
tenjin run --help
Network Emulation with Mininet
OpenFlow 1.3
sudo mn --controller=remote,ip=127.0.0.1 --mac --switch=ovsk,protocols=OpenFlow13 --topo=tree,2
OpenFlow 1.0
sudo mn --controller=remote,ip=127.0.0.1 --mac --switch=ovsk,protocols=OpenFlow10 --topo=tree,2
Advanced Installation
Minimal Installation
For faster compilation, you can install only the features you need:
cargo install tenjin_sdn --no-default-features
To include example controllers, add the example
feature:
cargo install tenjin_sdn --no-default-features -F example
Binary Installation
Using cargo-binstall for pre-compiled binaries:
cargo binstall tenjin_sdn
Dependencies
~5–14MB
~171K SLoC