- 1. pICA Emulator
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.
Please install vagrant
and Virtualbox
on the host OS to build the testbed VM.
Please run follow steps to setup the emulator. Assume the source directory of pICA-emu
project is ~/pICA-emu
.
-
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. -
Install
docker-ce
and add docker into user groupcd ~/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
-
Upgrade ComNetsEmu Python module and all dependencies automatically inside VM
cd ~/comnetsemu/util bash ./install.sh -u
-
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.
- Install the comnetsemu and simpleemu on your host OS.
cd ~/pICA-emu/emu-installer || exit bash ./install.sh
- Run test to make sure the
ComNetsEmu
is installed correctly (optional).Only run following steps when all tests passed without any errors. Otherwise, please create issues on Github from Zuo Xiang.cd ~/comnetsemu sudo make test
- Build the docker image of pICA.
For ARM64 users, please run
cd /vagrant sudo bash ./build_docker_images.sh
After this step, you should see the image with namecd /vagrant sudo bash ./build_docker_images_arm64.sh
pica_dev
when runningdocker image ls
. You should change your work path inside the VM for following steps.
-
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 ofn_vnf
intopo_n_vnf.py
and runtopo_n_vnf.py
instead oftopo.py
. -
Please firstly run
server.py
inside the server's shell, then the rest. The default work mode iscompute-and-forward
(cf
). With the flagsf
on the client, the work mode will be changed tostore-and-forward
. With the flagdata_id
on the client, an integer value is expected to set the id of test data set. With the flagn_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
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},
}
```
We are researchers at the Deutsche Telekom Chair of Communication Networks (ComNets) at TU Dresden, Germany. Our focus is on in-network computing.
- Huanzhuo Wu - huanzhuo.wu@tu-dresden.de or wuhuanzhuo@gmail.com
- Yunbin Shen - yunbin.shen@mailbox.tu-dresden.de or shenyunbin@outlook.com
This project is licensed under the MIT license.