Skip to content

ishtiyaque/Addra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Addra: A system for metadata private voice calls

Addra is a system that allows its users to make voice calls among each other without revealing the metadata (e.g., participants, time, and duration of the call) associated with each call. For details see our paper. This repository contains code for the communication phase of Addra. Please note that, it is a research prototype and not suitable for production use.

Environemt setup

The codebase is tested on Ubuntu 18.04 and 20.04. Addra uses a master-worker architecture for its server. To run experiments, one needs a machine for Addra client, a machine for master, and a number of machines for workers. Please refer to the paper to get an idea of how performance of Addra varies with number of workers.

To set up the environment in each of the machines used, first clone this repositry:

git clone https://github.com/ishtiyaque/Addra.git

Then run the following commands:

cd Addra
./env_setup.sh

Build

The codebase contains code for each of client, master, and worker. Please compile and build the necessary part in each machine.

Build client:

cd Addra/src/client/
cmake .
make

Build master:

cd Addra/src/server/master/
cmake .
make

Build worker:

cd Addra/src/server/worker/
cmake .
make

Run

First, run master:

cd Addra/src/server/master/
bin/master -s <size of packet> -m <number of users> -a <number of actual clients> -r <number of subrounds> -w <number of workers> -p <master public ip> -l <master local ip>

Then, run client:

cd Addra/src/client/
bin/client -s <size of packet> -m <number of users> -a <number of actual clients>  -r <number of subrounds> -p <master public ip> -c <client public ip>

Then, run each of the workers:

cd Addra/src/server/worker/
bin/worker -s <size of packet> -m <number of users> -a <number of actual clients> -r <number of subrounds> -w <number of workers>  -l <master local ip> -c <client public ip> -t <number of threads> -i <worker id>

The options are explained below:

-s The size of each voice packet in bytes. Each packet is sampled every 480ms. The experiments in our paper uses 96 bytes.
-m The number of total users in Addra.
-a The number of users that are generated by the client machine. The rest (m - a) are simulated by the server.
-r Number of subrounds for which Addra runs. A subround starts every 480ms.
-w Total number of worker processes. It is recommended to deploy each worker process in a separate machine. Worker processes are CPU and memory hungry.
-p Public IP address of the master through which a client from a different network may connect.
-l Local IP address used by the master to connect with workers in the same local network. Please note that it is possible to have the same 
address for public and local IP.
-c Public IP address of the client
-t Number of threads used by a worker. If a single worker is deployed in a machine, it is advisable to use t as the number of cores in the machine. Otherwise, needs to be adjusted accordingly.
-i Unique id of each worker where 0 <= i < number of workers.

Citing Addra

To cite Addra in an academic paper, please use the following BibTeX entry:

@inproceedings{ahmad2021addra,
  title={Addra: Metadata-private voice communication over fully untrusted infrastructure},
  author={Ahmad, Ishtiyaque and Yang, Yuntian and Agrawal, Divyakant and El Abbadi, Amr and Gupta, Trinabh},
  booktitle={15th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 21)},
  pages = {313--329},
  year={2021}
  month = jul,
}

About

A system for making voice calls without revealing metadata

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published