Skip to content

Soheil-ab/natcp

Repository files navigation

NATCP v1.0

Here is the first version of NATCP/NACubic as appeared in "Toward Optimal Performance with Network Assisted TCP at Mobile Edge <USENIX HotEdge'19>" paper (https://www.usenix.org/conference/hotedge19/presentation/abbasloo).

Installation Guide

Here we will provide you with detailed instructions to test NATCP over Mahimahi.

Getting the Source Code:

Note: NATCP/NACubic is implemented on Linux kernel 4.13.1.

Get the source code:

cd ~
git clone https://github.com/Soheil-ab/natcp.git
cd natcp

Installing Required Tools

General Note: Installing any of the following tools/schemes, depending on your machine, might require other libraries (in addition to what have been mentioned here). So, if you get any errors mentioning that something not being found when you try to make, install them using apt.

1.2 Install Mahimahi (http://mahimahi.mit.edu/#getting)

```sh  
cd ~/natcp/
sudo apt-get install build-essential git debhelper autotools-dev dh-autoreconf iptables protobuf-compiler libprotobuf-dev pkg-config libssl-dev dnsmasq-base ssl-cert libxcb-present-dev libcairo2-dev libpango1.0-dev iproute2 apache2-dev apache2-bin iptables dnsmasq-base gnuplot iproute2 apache2-api-20120211 libwww-perl
git clone https://github.com/ravinet/mahimahi 
```

1.2 Patch Mahiamhi and make it ready for NATCP/NACubic

```
cd ~/natcp/mahimahi/
patch p1 < mahimahi.natcp.patch
./autogen.sh && ./configure && make
sudo make install
sudo sysctl -w net.ipv4.ip_forward=1
```
  1. Install iperf3

    sudo apt-get remove iperf3 libiperf0
    wget https://iperf.fr/download/ubuntu/libiperf0_3.1.3-1_amd64.deb
    wget https://iperf.fr/download/ubuntu/iperf3_3.1.3-1_amd64.deb
    sudo dpkg -i libiperf0_3.1.3-1_amd64.deb iperf3_3.1.3-1_amd64.deb
    rm libiperf0_3.1.3-1_amd64.deb iperf3_3.1.3-1_amd64.deb

Installing Other Schemes

BBR, Westwood, and Cubic are already part of the patch. To install Sprout and Verus follow the following instructions:

  1. Build Sprout (http://alfalfa.mit.edu/)

    sudo apt-get install libboost-math-dev libboost-math1.54.0 libprotobuf8 libprotobuf-dev 
    cd ~/natcp/alfalfa
    ./autogen.sh
    ./configure --enable-examples && make	
  2. Build Verus (https://github.com/yzaki/verus)

    Required packages: libtbb libasio libalglib libboost-system

    sudo apt-get install build-essential autoconf libtbb-dev libasio-dev libalglib-dev libboost-system-dev
    cd ~/natcp/verus
    autoreconf -i
    ./configure && make

Patching NATCP Kernel: Install the prepared debian packages.

Simply install the debian packages of the patched kernel:

cd ~/natcp/linux-patch
sudo dpkg -i linux-image*
sudo dpkg -i linux-header*
sudo reboot 

Verify the new kernel

uname -r

You should see something like 4.13.1-natcp.v1.0. If not follow the instructions on https://github.com/Soheil-ab/C2TCP-IFIP and bring the 4.13.1-natcp.v1.0 image to the top of the grub list. For instance, you can use grub-customizer application.

Build NATCP's Server-Client App

Simply run the following:

cd ~/natcp/
./build.sh

Running The Evaluation

For the simplicity, first we disable password-timeout of sudo command:

sudo visudo

Now add following line and save it:

Defaults    timestamp_timeout=-1	

We have put required commands to run evaluation and generate the results for differnet schemes in one script. Here, we run NATCP, NACubic, Cubic, BBR, TCP Westwood using the TMobile-LTE-driving.downlink trace file with following command: (For more information on how to use the script, please check comments in "run.sh" and "evaluate.sh" scripts)

cd ~/natcp/
./evaluate.sh 1 1 1 0 0 0 1 5000 7

If everything goes fine, you should see the results. If you have any questions or issues feel free to contact us ab.soheil@nyu.edu

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published