GithubHelp home page GithubHelp logo

dsg-upc / share-spare-network-capacity Goto Github PK

View Code? Open in Web Editor NEW
0.0 6.0 0.0 538 KB

ISCNC 2017: Experimentation with TCP flavours, LEDBAT and linux tc for sharing spare network capacity

Python 31.44% Shell 20.28% C 47.01% Makefile 1.27%
tcp ledbat traffic-shaping python27 shell fabric

share-spare-network-capacity's Introduction

Experiments with fab

Fab is run the router between the client and the server. It depends on local router info so it can run only there for the moment. Specifically inside the directory home/xarokk/roc/tunneling. As currently configured fab support the following commands:

xarokk@Cellsim:~/roc/tunneling$ fab --list
Available commands:

    clear_borrowing
    clear_codel
    clear_ipip
    clear_limit
    clear_sfq
    clear_tcplp
    clear_tcpvegas
    delete_nat
    restore_nat
    run_exp          Experiment traffic and background traffic from client, if mix chosen
    setup_borrowing
    setup_codel
    setup_ipip
    setup_limit
    setup_sfq
    setup_tcplp
    setup_tcpvegas
    sync             Sync exp result folders from client to router

When running an experiment the parameters are:

  • exp: name of experiment. Should be similar to the corresponding command you used for setup. For example to run the TCP-LP experiment the code is tcplp
  • mixed: mix or no dependind if you want just the primary traffic or both primary and secondary
  • exp_no: The number of the experiment. For new set of experiments is good to give a name in front. Like delay_1
  • duration: the duration of the experiments. Typically used 60s
  • delay(optional): '' or delay depending if you want the primary traffic to have a random delay (10-50ms) between requests or not. Default is delay

Experiment workflow

Below are explained all the steps. For combining check also the script run_all.sh (it assumes the limit is already installed)

Setup limit

Setup limit in server of router withe setup_limit command using role router or server. Example:

xarokk@Cellsim:~/roc/tunneling$ fab -R server setup_limit
[[email protected]] Executing task 'setup_limit'
[[email protected]] sudo: ./tc_bandwidth_server.bash start
[[email protected]] out: sudo password:
[[email protected]] out: Starting bandwidth shaping: done
[[email protected]] out: 


Done.
Disconnecting from [email protected]... done.

IMPORTANT: In the setup it is not normal if the output has errors. Sometimes it happens with tcplp and tcpvegas. Contact for degub.

Setup experiment

Use the existing commands. For example:

xarokk@Cellsim:~/roc/tunneling$ nano fabfile.py
xarokk@Cellsim:~/roc/tunneling$ fab setup_ipip
[[email protected]] Executing task 'setup_ipip_router'
[[email protected]] sudo: ./ipip-client.sh
...

Done.
Disconnecting from [email protected]... done.
Disconnecting from [email protected]... done.

Run Experiment

Use command with the corresponding arguments and wait for 3 mins until the experiment is done for sure:

xarokk@Cellsim:~/roc/tunneling$ fab run_exp:exp=ipip,mixed=mix,expno=1,duration=60s; sleep 3m

These experiments will be performed with

Sync Experiments

It needs to be run after one or all the experiment to put the data in the router in the folder /home/xarokk/manos/exps You need to provide the usual password.

xarokk@Cellsim:~/roc/tunneling$ fab sync

Clear Setup

Use the existing commands. For example:

xarokk@Cellsim:~/roc/tunneling$ fab clear_ipip
[[email protected]] Executing task 'clear_ipip_router'
...
Done.
Disconnecting from [email protected]... done.
Disconnecting from [email protected]... done.

IMPORTANT: In the clear it is normal if the output has errors in tcplp and tcpvegas. Don't worry about them. Everythin went fine.

Clear limit

Clear limit in server of router withe clear_limit command using role router or server. Example:

xarokk@Cellsim:~/roc/tunneling$ fab -R server clear_limit
[[email protected]] Executing task 'clear_limit'
[[email protected]] sudo: ./tc_bandwidth_server.bash stop
[[email protected]] out: sudo password:
[[email protected]] out: Stopping bandwidth shaping: done
[[email protected]] out: 


Done.
Disconnecting from [email protected]... done.

Plotting

If the results are synced locally in anyway from the directory /home/xarokk/manos/exps then use can used the srcipt plot.py to generate results but it needs customization for considering only new results. The script should be located in the folder where the experiment folders are. For example:

    manos@laptop:~/CSCWD/exps$ ls
    baseline                     borrowing_router_codel_1     codel                 sfq_router
    baseline_router              borrowing_router_codel_both  codel_router          sfq_router_nodelay
    borrowing                    borrowing_router_sfq_1       codel_router_nodelay  tcplp
    borrowing_codel_1_router     borrowing_router_sfq_both    ipip                  tcplp_router
    borrowing_codel_both         borrowing_sfq_1_router       ipip_router           tcpvegas
    borrowing_codel_both_router  borrowing_sfq_both           plot.py               tcpvegas_router
    borrowing_router             borrowing_sfq_both_router    sfq                   tunneling

share-spare-network-capacity's People

Contributors

emmdim avatar rocmeseguer avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

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.