Giter Site home page Giter Site logo

wmsdn's Introduction

======================================
Wireless Mesh Software Defined Network
======================================

A collection of scripts for running wireless mesh networks using OpenFlow/OpenvSwitch.

http://netgroup.uniroma2.it/wmSDN/


Installation steps (tested on  Ubuntu 12.04)
============================================

# install CORE:
wget http://downloads.pf.itd.nrl.navy.mil/core/packages/4.5/core-daemon_4.5-0ubuntu1_precise_amd64.deb
sudo dpkg -i core-daemon_4.5-0ubuntu1_precise_amd64.deb
sudo apt-get install -f


# get wmSDN
sudo apt-get install git
git clone https://github.com/netgroup/wmSDN.git
cd wmSDN
git submodule init
git submodule update


# build and install olsrd
cd olsrd
make && make libs
sudo make install_libs
cd ..


# build openvswitch
cd openvswitch
sudo apt-get install automake libtool libssl-dev
./boot.sh
./configure
make
# build the kernel module
./configure --with-linux=/lib/modules/`uname -r`/build
make
sudo rmmod openvswitch
sudo insmod ./datapath/linux/openvswitch.ko
cd ..


# prepare POX
cd pox/ext
ln -sv ../../controller/*.py .
cd ../pox/openflow
ln -s ../../../controller/other_modules/of_json.py .
cd ../lib
ln -s ../../../controller/other_modules/utill.py .
cd ../../..
sudo apt-get install python-networkx


# check that the directories in the scripts exist and
# change them as needed.
# e.g. change all occurrencies of /home/user to the home 
# directory of the current user
grep openvswitch scripts/*.sh

# install iperf
apt-get install iperf

# install NS3
cd ~
wget http://www.nsnam.org/release/ns-allinone-3.17.tar.bz2
tar xf ns-allinone-3.17.tar.bz2
cd ns-allinone-3.17/
sudo apt-get install build-essential
sudo apt-get install gcc g++ python python-dev
sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl
sudo apt-get install vtun lxc
sudo apt-get install flex bison libfl-dev
sudo apt-get install tcpdump
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install sqlite sqlite3 libsqlite3-dev
./build.py --enable-tests
cd ..


Usage
=====

# start the emulation
cd ~/ns-allinone-3.17/ns-3.17/
sudo ./waf shell
cd ~/wmSDN/emulation
cat coreconf.py #check the paths 
# start the actual emulation
core-cleanup.sh && python -i ./ns3SDN.py -d 7200

# on another shell
cd ~/wmSDN/emulation
./starthosts.sh && ./startovs.sh

# now the emulation should be up and running

# TOPOLOGY
# --------
#                    (controller)
#                         |
# (server)---(n1)  (n2)  (n3)  (n4)  (gw6)-+
#                         |                +---(client)
#                       (gw5)--------------+
#
#

# to get into one of the nodes, e.g. n2
source bashrc
corevcmd n2

# olsr writes into routing table 198
ip route show table 198

# see the flow table
source .bashrc
of_flows

# monitor active flows
of_watch_active_flows

# get some flow table stats
of_rule_stats

# exit the node's shell
exit


# starting the controller
cd ~/wmSDN/emulation
source bashrc
corevcmd controller
cd ~/wmSDN/pox
./pox.py gw_switch_olsrd


# PROGRESSIVE IPERF TEST
# a new iperf flow starts every 20 seconds
# from the client node to the server node
# try with and without the controller running
mkdir ~/iperftestresults
cd ~/wmSDN/emulation
# optionally enable TCP Reno
sudo ./tcp_reno.sh
./progressive_iperf.sh ~/iperftestresults
less ~/iperftestresults/iperf_s_11.log


# GATEWAY FAILOVER TEST
# two iperf flows are started, each flowing through a
# different gateway.
# Then, at t=180s one of the gateway fails and the 
# controller moves both flows to the running gateway.
# At t=360s the gateway comes up again, and the controller 
# re-balances the flows through both gateways.
# make sure the controller is running during the test.
mkdir ~/failovertestresults
cd ~/wmSDN/emulation
# optionally enable TCP Reno
sudo ./tcp_reno.sh
./failover_test.sh ~/failovertestresults
less ~/failovertestresults/iperf_s_11.out
less ~/faiolvertestresults/iperf_s_12.out


Contacts
========
 * wmSDN home page: http://netgroup.uniroma2.it/wmSDN/
 * wmSDN mailing list: https://groups.google.com/forum/#!forum/wmsdn
 * Claudio Pisa <[email protected]>


wmsdn's People

Contributors

cl4u2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wmsdn's Issues

ovs-appctl

Hello,

I am using the same idea as WMSDN.
In this case, to define different instances of OpenvSwitch, I configured them as follows:
ovs-vsctl --db=unix:$(pwd)/db.sock add-br br*

However, I have a problem in using ovs-appctl in each switch to trace packets.

Do you have any suggestion for defining the address for ovs-appctl for each OpenvSwitch?

about latest version?

Hai,

I am new to this tools. Is it possible to use latest version of NS3 and Ubuntu?

do you have any information for this update?

# build openvswitch erroe

While Building openvswith i am getting error in
../genetlink.inc:127:6: error: conflicting types for ‘genl_notify’
void genl_notify(struct sk_buff skb, struct net *net, u32 portid, u32 group,
and
Leaving directory `/home/ravi/Downloads/wmSDN/openvswitch'
make: *
* [all] Error 2

please provide the solution for same... further process depends on it without it i am not able to proceed to next step as you mention in file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.