This project is expected to run in the Mininet-WiFi virtual machine, because we utilise WiFi simulation of it.
To get everything work as expected, please make sure your system is up to date by running the following commands:
sudo apt update
sudo apt upgradeYou will also need to install Ryu and sFlow-RT on the Mininet-WiFi VM, because we use Ryu as SDN controller. Installation steps are shown below.
To install Ryu on Mininet-WiFi VM:
# Seems Ryu only works with Python 3:
# https://stackoverflow.com/questions/21170521/function-annotations-giving-error-in-python
# Better upgrade setuptools first.
# I ran into some trouble and the struck through answer in the following link somehow helped me:
# https://github.com/googleapis/google-cloud-python/issues/3757#issuecomment-321028963
sudo pip3 install --upgrade setuptools
# Install Ryu
pip3 install --user ryu
# Newest version of eventlet (updated several days ago) causes some error. Install an older version instead:
# https://stackoverflow.com/questions/67409452/gunicorn-importerror-cannot-import-name-already-handled-from-eventlet-wsgi
pip3 install eventlet==0.30.2Please refer to pip installation guide if pip3 doesn't work on your VM.
# Download and extract sFlow-RT
wget https://inmon.com/products/sFlow-RT/sflow-rt.tar.gz
tar -xvzf sflow-rt.tar.gz
# Insteall mininet-dashboard app for sFlow-RT
sflow-rt/get-app.sh sflow-rt mininet-dashboard
# Start sFlow-RT
./sflow-rt/start.sh
First, go to the project directory. The program needs to be run from the project directory to operate properly.
Next, to start the topology, issue command:
sudo python topo.py --remoteThe --remote option instructs Mininet to use a remote controller on 127.0.0.1 port 6653 (default configuration).
If you wish to run with Mininet's default controller, just rip off the --remote option.
Also, you'll need to run the controller program:
ryu-manager controller.py