Giter Club home page Giter Club logo

pica-emu's Introduction

License: MIT

1. pICA Emulator

1.1. Table of Contents

1.2. Description

This application emulate the Progressive Independent Component Analysis (pICA) in the network, it is based on the comnetsemu. A pICA demonstrator can be accessed on pICA-Demo.

1.3. Requirements

Please install vagrant and Virtualbox on the host OS to build the testbed VM.

1.4. Getting Started

Please run follow steps to setup the emulator. Assume the source directory of pICA-emu project is ~/pICA-emu.

1.4.1. Option1: Install in a Vagrant managed VM (Highly Recommended)

  1. Create the testbed VM using Vagrant on your host OS.

    cd ~/pICA-emu || exit
    vagrant up testbed

    Then run vagrant ssh testbed to login into the VM. Following steps should be run inside the VM.

  2. Install docker-ce and add docker into user group

    cd ~/comnetsemu/util
    bash ./install.sh -d
    
    sudo groupadd docker
    sudo gpasswd -a vagrant docker
    newgrp docker
    sudo systemctl start docker
    
    cd /home/vagrant/comnetsemu/test_containers || exit
    sudo bash ./build.sh
  1. Upgrade ComNetsEmu Python module and all dependencies automatically inside VM

    cd ~/comnetsemu/util
    bash ./install.sh -u
  2. Run test to make sure the ComNetsEmu is installed correctly (optional).

    cd ~/comnetsemu
    sudo make test

    Only run following steps when all tests passed without any errors. Otherwise, please create issues on Github from Zuo Xiang.

1.4.2. Option2: Install on user's custom VM or directly on host OS (Ubuntu20.04)

  1. Install the comnetsemu and simpleemu on your host OS.
    cd ~/pICA-emu/emu-installer || exit
    bash ./install.sh
  2. Run test to make sure the ComNetsEmu is installed correctly (optional).
    cd ~/comnetsemu
    sudo make test
    Only run following steps when all tests passed without any errors. Otherwise, please create issues on Github from Zuo Xiang.

1.5. Install docker image of pICA

  1. Build the docker image of pICA.
    cd /vagrant
    sudo bash ./build_docker_images.sh
    For ARM64 users, please run
    cd /vagrant
    sudo bash ./build_docker_images_arm64.sh
    After this step, you should see the image with name pica_dev when running docker image ls. You should change your work path inside the VM for following steps.

1.6. Run pICA in the Emulator

  1. Run the topology in the folder /vagrant/emulator:

    cd /vagrant/emulator
    sudo python3 ./topo.py

    You should see the prompt mininet> when the network configuration is finished. And five terminals are popped up, you can identify client, server, VNF, swich, and a controller by looking at the host name (e.g., @client) in the shell.

    The number of VNFs is defined as 2 in topo.py. For an arbitary number of VNFs, please define the value of n_vnf in topo_n_vnf.py and run topo_n_vnf.py instead of topo.py.

  2. Please firstly run server.py inside the server's shell, then the rest. The default work mode is compute-and-forward (cf). With the flag sf on the client, the work mode will be changed to store-and-forward. With the flag data_id on the client, an integer value is expected to set the id of test data set. With the flag n_test on the client, an integer value is expected to set the evaluation rounds.

    # in the server terminal
    sudo python3 ./server.py
    
    # in the vnf terminal
    sudo python3 ./vnf.py
    
    # in the client terminal
    sudo python3 ./client.py cf data_id n_test

1.7. Citation

If you like our repository, please cite our papers.

``` 
@Article{wu2022picaextension,
    author  = {Wu, Huanzhuo and Shen, Yunbin and Xiao, Xun and Nguyen, Giang T. and Hecker, Artur and Fitzek, Frank H.-P.},
    title   = {Accelerating Industrial IoT Acoustic Data Separation with In-Network Computing},
    doi     = {10.1109/JIOT.2022.3176974},
    pages   = {1--15},
    groups  = {my_paper},
    journal = {IEEE Internet of Things Journal},
    year    = {2022},
    }
```

1.8. About Us

We are researchers at the Deutsche Telekom Chair of Communication Networks (ComNets) at TU Dresden, Germany. Our focus is on in-network computing.

1.9. License

This project is licensed under the MIT license.

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.