Skip to content

dimstav23/GDPRuler

Repository files navigation

GDPRuler

Repository structure

sev_demo: Folder containing documentation for setting up an ubuntu based AMD SEV VM and perform proof tests.

policy_compiler: Folder containing the policy compiler.

configs: Folder containing sample configs for data owner, data controller, data processor (3rd party) and regulator.

controller: Folder containing the core code of the data controller.

KVs: Folder containing the KVs submodules.

scripts: Folder containing python wrapper scripts for all considered bare-metal execution variants.

sev-tool: Submodule providing AMD SEV functionalities

ycsb_trace_generator: Submodule containing a modified version of GDPRBench (YCSB-based) to produce workload traces

Build instructions

0. Dev environment

To enter the development environment with all the required dependencies, use:

$ nix develop

1. Make sure you have fetched all the submodules:

$ git submodule update --init --recursive

2. Build the GDPR controller:

$ cd controller
$ cmake -S . -B build -D CMAKE_BUILD_TYPE=Release
$ cmake --build build

Useful options:

  • Enable/disable the encryption with -D ENCRYPTION_ENABLED=ON/OFF (defaults to ON)
  • Enable/disable AddressSanitizer with -D ASAN_ENABLED=ON/OFF (defaults to OFF)
  • Enable/disable ThreadSanitizer with -D TSAN_ENABLED=ON/OFF (defaults to OFF)

3. Compile redis (to build the redis-server binary):

$ cd KVs/redis
$ make BUILD_TLS=yes MALLOC=libc
# Optional command to test the success of the installation
$ make test

Native sample execution

1. Create the workload traces (~5-10mins):

$ cd ycsb_trace_generator
$ bash workload_generator.sh

This will create the trace files for the workloads in the workload_traces directory.

2. Run the KV server.

  • For redis:
$ cd KVs/redis/src
$ ./redis-server --protected-mode no
  • For rocksdb:
$ cd controller/build
$ ./rocksdb_server [port] [db_file_location]

3. Run the controller.

For the native passthrough controller:

$ python3 scripts/native_ctl.py --db [redis/rocksdb]

For the native GDPR controller:

$ python3 scripts/GDPRuler.py --db [redis/rocksdb]

For more command line options, please consult scripts/native_ctl.py and scripts/GDPRuler.py.

4. Run the client(s) with a desired workload:

$ python3 scripts/client.py --workload [workload_trace_name] --clients [num_of_clients] --config [user_config/user_config_directory]

For more command line options, please consult scripts/client.py.

VM Setup instructions

For instructions on how to set up the client and server SEV VMs, please consult the respective README.

VM sample execution

TODO @dimstav23

Releases

No releases published

Packages

No packages published