You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Niko PLP 757e776e1f Merge commit '46d37bf23a5d16e084677eee6440f3658e8a9715' 9 months ago
..
library Merge commit '92b9407ccd6b5510c1d0403e79188aff9c64c9ba' 9 months ago
test_linux Merge commit 'b27419fd24fa0872febcda63dd89e081b4bc3765' 9 months ago
test_macos Merge commit '46d37bf23a5d16e084677eee6440f3658e8a9715' 9 months ago
test_plain Merge commit 'b27419fd24fa0872febcda63dd89e081b4bc3765' 9 months ago
tests Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago
.gitignore Merge commit 'b27419fd24fa0872febcda63dd89e081b4bc3765' 9 months ago
CODE_OF_CONDUCT.md Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago
CONTRIBUTING.md Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago
LICENSE Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago
README.md Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago
ippcp.mk Merge commit 'b27419fd24fa0872febcda63dd89e081b4bc3765' 9 months ago
ippcp_db_bench_env.cc Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago
ippcp_provider.cc Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago
ippcp_provider.h Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago
security.md Merge commit '081ffa92ee05d06c98eab5222656d7b6b34fb042' as 'librocksdb-sys/rocksdb' 10 months ago

README.md

Intel® Integrated Performance Primitives Cryptography Plugin for RocksDB* Storage Engine

ippcp is an encryption provider for RocksDB that is based on Intel's Integrated Performance Primitives for Cryptography (IPPCP). IPPCP is a lightweight cryptography library that is highly optimized for various Intel CPUs. It's used here to provide AES-128/192/256 encryption, with a CTR mode of operation, for RocksDB.

Prerequisite

There is a dependency on ipp cryptograhy library (ippcp) which needs to be installed. Please refer below link for installtion. https://www.intel.com/content/www/us/en/develop/documentation/get-started-with-ipp-crypto-for-oneapi-linux/top.html

Once Installed source /opt/intel/oneapi/ippcp/latest/env/var.sh

Build

The code first needs to be linked under RocksDB's "plugin/" directory. In your RocksDB directory, run:

$ pushd ./plugin/
$ git clone https://github.com/intel/ippcp-plugin-rocksdb.git ippcp

Next, we can build and install RocksDB with this plugin as follows:

$ popd
$ make clean && ROCKSDB_PLUGINS=ippcp make -j48 release

Testing

LIB_MODE=shared make -j release

  • Go to the tests directory of ippcp plugin and build as mentioned below:
cd plugin/ippcp/tests/
mkdir build
cd build
cmake -DROCKSDB_PATH=<rocksdb_install_directory> -DIPPCRYPTOROOT=<ippcp_install_directory> ..
make run

Tool usage

For RocksDB binaries (such as the db_bench we built above), the plugin can be enabled through configuration. db_bench in particular takes a --fs_uri where we can specify "dedupfs" , which is the name registered by this plugin. Example usage:

$ ./db_bench --benchmarks=fillseq --env_uri=ippcp_db_bench_env --compression_type=none

Application usage

The plugin's interface is also exposed to applications, which can enable it either through configuration or through code. Example available under the "examples/" directory.