/pICA-emu

Primary LanguagePythonMIT LicenseMIT

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.