GithubHelp home page GithubHelp logo

visheshnp / fog-computing Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 549 KB

C++ 75.93% Shell 1.83% CMake 3.12% Python 16.44% Protocol Buffer 2.68%
peer-to-peer distributed-systems vivaldi proxy-coordinates google-mock google-test

fog-computing's Introduction


README

To login into the machines - subscription: Network Coordinates (65220f37-3215-4898-b18d-363c624d6cbe) Machines named: i:1 to 7 vivaldi-test-i username: vivaldi-test-i ssh key name: vivaldi-test-i_azure

Installing libraries:

This will install the software packages required along with protobuf and libzmq

To install dependencies on the machine, login into the machine and run script:

sudo sh install_dependencies.sh

or use this:

ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i vivaldi-test-i vivaldi-test-i@ip_addr "sudo sh install_dependencies.sh"

Configuration:

config.ini defines the node mappings and the ip addresses. ip addresses have to be public so that we can ssh into the machines. ip addresses have to be private ones so that they can contact each other. The number of nodes have to match the number of mappings given, ssh keys given and the ip addresses. The mappings determine which nodes interact with each other. The ip:port tuple given as the central repo is used for running the central repo on only one.

Running scripts:

python exec_nodes.py

Running this: Copies the code from the current src folder to the remote machines. Compiles the code on the remote machine. Runs the central repository server on one of the nodes.

Collecting log data from each node:

python exec_kill.py

Running this kills the central repo and the peer to peer tasks running on the remote machines. Post which, it gathers the logged data. Ensure that the name given here for the log files matches the one given while running the scripts.

Plotting graphs:

The files would be present in a folder The folder would have n folders for n nodes. Each folder would contain one coordinates file and x number of rtt files. Where x is the number of nodes the current node talks to.

python plot_final.py python rtt_plot.py

Graphs:

Around 6 tests with 5 different VM's were conducted to test the performance in various scenarios. The delay for every link beween every node is set to 60 ms. The description of the scenario along with graphical results and explanation is as follows :-

  1. All 5 VM's start with random coordinates generated as a hash of its nodeId. After 50000 iterations, the nodes converge to a pentagon shaped figure as shown below. The RTT graphs depict the variation between the actual RTT(blue) calculated using timestamps and measured RTT(red) using the Vivaldi algorithm (time(ms) vs iterations/100).

    Measurements between nodes (2,3) and (4,5) are depicted below.

  2. All 5 VM's start with same coordinates. After 70000 iterations, the nodes converge to a pentagon shaped figure as shown earlier.

Measurements between nodes (2,3) and (4,5) are depicted below.

  1. The mapping of the 5 nodes is changed, and each node talks to a different set of nodes. For this test, the mapping is as follows :-

    1 -> 2,3,4

    2 -> 1,4,5

    3 -> 1,4,5

    4 -> 1,2,3

    5 -> 2,3

The nodes converge in a different manner as shown below. It can be observed that since nodes 2,3 have the same mapping, they appear to be overlapping in position on the coordinates map (near 20,20).

The RTT measurements between nodes (1,4) , (3,2) and (5,3) are as follows :-

  1. Out of the 5 nodes, 2 nodes were allowed to update while the other 3 remained static.

In this experiment,the 5 nodes took about 80000 iterations to converge to the pentagon shape. The RTT measurements between nodes (1,4) and (2,5) are as shown.

  1. Only 3 nodes were considered, and they all started with initial random coordinates. The nodes converge to something close to an equilateral triangle as shown below.

The RTT measurements between nodes (1,2) and (2,3) are as follows :-

  1. Only 2 nodes were considered, and they all started with initial random coordinates. The 2 nodes position themselves as shown below and the RTT graph is as follows :-

fog-computing's People

Contributors

visheshnp avatar

Watchers

 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.