GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Soheil-ab/natcp

BranchesTags
Open more actions menu

Latest commit

 

History

2 Commits
2 Commits

Folders and files

NameName
Last commit message
Last commit date
alfalfa
alfalfa
 
 
feedback
feedback
 
 
linux-patch
linux-patch
 
 
src
src
 
 
verus
verus
 
 
README.md
README.md
 
 
basetime
basetime
 
 
build.sh
build.sh
 
 
client
client
 
 
evaluate.sh
evaluate.sh
 
 
mahimahi.natcp.patch
mahimahi.natcp.patch
 
 
mm-del
mm-del
 
 
mm-thr
mm-thr
 
 
natcp.sh
natcp.sh
 
 
run-iperf
run-iperf
 
 
run-iperf-codel
run-iperf-codel
 
 
run-sprout
run-sprout
 
 
run-verus
run-verus
 
 
run.sh
run.sh
 
 
server
server
 
 
set-bbr.sh
set-bbr.sh
 
 
setup.sh
setup.sh
 
 
wired48
wired48
 
 

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 [email protected]

About

No description, website, or topics provided.

Resources

Readme
Activity

Stars

7 stars

Watchers

1 watching

Forks

1 fork
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.