Skip to content

The software-defined networking framework written in Rust, offering high performance and memory safety. It can be used as both a framework and a command line tool.

License

Notifications You must be signed in to change notification settings

Arikato111/Tenjin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tenjin SDN

version download license size issue last-commit

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

  1. Install Rust and Cargo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. Install Tenjin:
cargo install tenjin_sdn
  1. Run the example controller:
tenjin run

As a Library

  1. Add Tenjin to your project:
cargo add tenjin_sdn
  1. Add Tokio for async support:
cargo add tokio
  1. 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");
}
  1. if you would like to create your own Controller, you need to install etherparse.
cargo add etherparse

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

About

The software-defined networking framework written in Rust, offering high performance and memory safety. It can be used as both a framework and a command line tool.

Topics

Resources

License

Stars

Watchers

Forks

Packages