pep-dna
PEP-DNA: a Performance Enhancing Proxy for Deploying Network Architectures
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 4 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.1%) to scientific vocabulary
Repository
PEP-DNA: a Performance Enhancing Proxy for Deploying Network Architectures
Statistics
- Stars: 9
- Watchers: 2
- Forks: 4
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
PEP-DNA
PEP-DNA: a Performance Enhancing Proxy for Deploying Network Architectures
Explore the Wiki »
View Tutorials
·
Report Bug
·
Request Feature
Table of Contents
Introduction
PEP-DNA is a Performance Enhancing Proxy designed specifically for Deploying new
Network Architectures. It is implemented in the Linux kernel and can be
installed wherever a translation needs to occur between a new architecture and
TCP/IP domains. PEP-DNA is currently able to interconnect a TCP connection with
(i) another TCP connection, (ii) the Recursive InterNetwork Architecture (Visit
http://pouzinsociety.org to read more about RINA), and (iii) a Content-Centric
Networking domain
(https://named-data.net/publications/van-ccn-bremen-description/). This
README.md file provides information on repeating and replicating the results
of the PEP-DNA paper published. For more information on how to use PEP-DNA in
different scenarios, check the
Tutorials on the Wiki pages.
Build instructions
We have tested PEP-DNA with the current stable distribution of Ubuntu and Debian, with kernel versions between 4.1.x to 5.4.x. In order to run all the experiments described in the paper, PEP-DNA needs to be built with RINA and CCN support. We use the RINA stack, which is available at https://github.com/IRATI/stack, and CCN-lite, which can be found at https://github.com/cn-uofbasel/ccn-lite, to build RINA and CCN network. To facilitate the installation process, we include the RINA stack and CCN-lite in this repository.
Note that a user with sudo privileges is required to load PEP-DNA and RINA kernel modules apply other commands.
Prerequisites
First, install the user-space dependencies which are required to build RINA.
sh
sudo apt-get update
sudo apt-get install build-essential autoconf automake libtool pkg-config git
g++ libssl-dev libelf-dev protobuf-compiler libprotobuf-dev socat python python3
openjdk-8-jre openjdk-8-jdk linux-headers-$(uname -r)
Next, use the following to install the requirements for CCN-lite:
sh
sudo apt-get install cmake libssl-dev pkg-config libssl-dev libcmocka-dev
doxygen
Install libnl-3-dev for Netlink sockets support.
sh
sudo apt-get install libnl-3-dev
Additional tools are required to configure Linux hosts, run the experiments and collect information.
sh
sudo apt-get install sysstat ethtool cpufrequtils httping httperf apache2
Installation
- Clone the repository (We recommend to clone the repo in the home directory so that it matches the path used in the scripts.)
sh
cd ~
git clone https://github.com/kr1stj0n/pep-dna.git
- Build and install RINA's kernel-space and user-space software
sh
cd ~/pep-dna/rina-stack
sudo ./configure
sudo -E make install
- Build CCN-lite
- Set environment variable `$CCNL_HOME` and add the binary folder of CCN-lite to your `$PATH`:
```sh
cd ~/pep-dna/ccn-lite
export CCNL_HOME="`pwd`"
export PATH=$PATH:"$CCNL_HOME/bin"
```
To make these variables permanent, add them to your shell's `.rc` file, e.g. `~/.bashrc`.
- Build CCN-lite using `cmake`:
```sh
cd $CCNL_HOME
mkdir build && cd build
cmake ..
make
```
- Configure and install PEP-DNA
sh
cd ~/pep-dna/pepdna
./configure --with-rina --with-ccn --with-local-receiver
make all
sudo -E make install
To configure PEP-DNA with RINA support or CCN suport --with-rina or
--with-ccn flags needs to be used. Use --with-debug to build PEP-DNA with
DEBUG flag. Note that building in debug mode will reduce the performance
of the proxy and print detailed logging in the /var/log/kern.log file. When PEP-DNA
runs at the same host as the receiver, a.k.a the TCP server,
it needs to be configured with ---with-local-receiver flag in order to enable full transpacency at this case.
Configure the proxy using --with-local-sender if PEP-DNA is running at the same host as the sender, a.k.a TCP client.
More details about the building process can be found at the Wiki section. For our experiments, the commands
above are sufficient.
All the testing applications and scripts used to run the experiments, collect
the results and plot the graphs are located in
https://github.com/kr1stj0n/pep-dna/tree/main/pepdna/utils/apps.
Run the following commands to install them to /usr/bin/.
sh
cd ~/pep-dna/pepdna/utils/apps
make all
sudo -E make install
Publications
- 29th International Conference on Network Protocols (IEEE ICNP 2021)
- Paper: [https://github.com/kr1stj0n/pep-dna/raw/main/pepdna/papers/icnp-nipaa21.pdf]
- The talk in the NIPAA'21 Workshop: [https://youtu.be/Yve_HPlU4hc?t=8615]
- DOI: [https://doi.org/10.1109/ICNP52444.2021.9651953]
- 12th International Conference on Network of the Future (NoF 2021)
- Technical Report
- Extended paper: [http://urn.nb.no/URN:NBN:no-91886]
Reproducibility
We aim to make our work entirely reproducible and encourage interested
researchers to test the code and replicate the reported experimental
results. The PEP-DNA implementation and documentation needed to reproduce all
the experiments described in the paper are available in this public
repository. The tools we developed to the run the experiments were installed at
Step 4 of the previous section. The scripts for automated testing, analysis and
plotting of the generated data are located at
https://github.com/kr1stj0n/pep-dna/tree/main/pepdna/utils/scripts/ alongside
with a detailed README_scripts.md file. Read the README_scripts.md file for
a detailed explanation on how to set the variables for your own testbed
environment, run all the experiments and plot the generated dataset.
For more step-by-step examples on how to use PEP-DNA in different scenarios, please refer to the Wiki pages.
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/udp-support) - Commit your Changes (
git commit -m 'Added UDP support') - Push to the Branch (
git push origin feature/udp-support) - Open a Pull Request
License
Distributed under the GPL License. See LICENSE in
https://github.com/kr1stj0n/pep-dna/tree/main/pepdna/ for more information.
Contact
Kristjon Ciko - kristjoc@ifi.uio.no
Project Link: https://github.com/kr1stj0n/pep-dna
Acknowledgements
Owner
- Login: kristjoc
- Kind: user
- Repositories: 1
- Profile: https://github.com/kristjoc
Citation (CITATION.cff)
# YAML 1.2
---
authors:
-
family-names: Ciko
given-names: Kristjon
orcid: "https://orcid.org/0000-0002-7362-2471"
cff-version: "1.1.0"
license:
message: "If you use this software, please cite it using these metadata."
repository-code: "https://github.com/kr1stj0n/pep-dna.git"
title: "PEP-DNA: A Performance Enhancing Proxy for Deploying Network Architectures"
...
GitHub Events
Total
- Watch event: 2
Last Year
- Watch event: 2
Dependencies
- ubuntu 14.04 build