Project Header

AWANTA SDN Emulator

This project provides an emulator designed to simulate a small, fully connected mesh network with n nodes. The primary purpose of this emulator is to demonstrate and analyze network path changes under varying conditions. Our emulator performs a trace-driven simulation, leveraging real-world latency data obtained from RIPE Atlas nodes. By injecting these latency traces during iperf tests conducted between the start and destination nodes, we can replicate realistic network conditions and observe the effects on performance.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  • Mininet
  • Ryu SDN Controller
  • Python 3.7+

Installation

  • Mininet

Download Mininet Framework

Follow this quickstart guide
http://mininet.org/download/

Python Drivers

$ pip install mininet
  • Ryu SDN
    Follow the installation setup here
    https://ryu-sdn.org/
    
  • Python 3.7+
    Download python 3.7+ binaries from here
    https://www.python.org/downloads/
    

Running the Mininet Emulator

To run with the given topology, please run this command.

$ sudo python run_topology.py -topo <custom_topology_class>

Custom Topology

For example, create a custom mininet topology class under network_manager/custom_topologies and register it under a name of your choice under network_manager/custom_topologies/init.py in the topology_map variable.

For an illustration a full_mesh_topology class has been created and is used by default when no topology is given in the command line interface.

$ sudo python3 -topo full_mesh_topology

Please do note that mininet requires sudo access, so when running these commands, don’t forget to use sudo.

Running the Ryu Controller

To start the ryu controller, install the ryu package from pip or build it from source. And run the controller file.

$ ryu-manager --observe-links modules/emulator/controller.py

The controller has a configuration file controller.conf, which contains the trace_manager to use and the routing strategy to use. These variables are passed through the .conf file because ryu controller does not allow command line arguments in the shell.

Updated: