Skip to content

The following repository consists of experiment scripts to emulate mptcp in the linux network namespaces. It uses the upstream version mptcp implementaion in the linux kernel.

Notifications You must be signed in to change notification settings

abhinaba-fbr/mptcp_linux_kernel_experiments

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

mptcp_linux_kernel_experiments

The following repository consists of experiment scripts to emulate mptcp in the linux network namespaces. It makes use of the upstream version mptcp implementaion in the linux kernel.

Topology (4-Node.sh):

MPTCP_4node drawio (1)

Pre-requisites:

  • Ubuntu 22.10 machine (kernel version 5.19 or above) with iproute2 installed
  • Install build-essential, git, iperf, iperf3 packages in the Ubuntu machine
    sudo apt install build-essential git iperf iperf3
  • Install mptcpd for userspace path management

Experiment - 1 (using mptcp-tools and ip mptcp):

  • Step-1: Clone the GitHub repository containing mptcp-tools (Note: installation is not required)
    git clone https://github.com/pabeni/mptcp-tools
  • Step-2: Copy 4-Node.sh file to the Ubuntu machine (it is fine to keep this file anywhere in the system)
  • Step-3: Run the 4-Node.sh file
    sudo sh 4-Node.sh
  • Step-4: Open two terminals or two tabs in the same terminal.
  • Step-5: On any one of the terminals/tabs, run the iperf or iperf3 server in h2 (Note: first change directory to mptcp-tools/use_mptcp, and then run the iperf/iperf3 server).
    cd mptcp-tools/use_mptcp 
    sudo ./use_mptcp.sh ip netns exec h2 iperf -s
  • Step-6: On the second terminals/tab, run the iperf or iperf3 client in h1 (Note: first change directory to mptcp-tools/use_mptcp, and then run the iperf/iperf3 client).
    cd mptcp-tools/use_mptcp
    sudo ./use_mptcp.sh ip netns exec h1 iperf -c 10.0.1.2

Experiment - 2 (using mptcpize and ip mptcp):

  • Step-1: Run the following command to install mptcpize
    sudo apt install mptcpize
  • Step-2: Copy 4-Node.sh file to the Ubuntu machine (it is fine to keep this file anywhere in the system)
  • Step-3: Run the 4-Node.sh file
    sudo sh 4-Node.sh
  • Step-4: Open two terminals or two tabs in the same terminal.
  • Step-5: On any one of the terminals/tabs, run the iperf or iperf3 server in h2
    sudo mptcpize run ip netns exec h2 iperf -s
  • Step-6: On the second terminals/tab, run the iperf or iperf3 client in h1.
    sudo mptcpize run ip netns exec h1 iperf -c 10.0.1.2

Expected output:

The speed of data transfer between ‘h1’ and ‘h2’ should be more than 10Mbps.

Analysis using Wireshark:

Repeat Step 4. Before you do Step 5, do the following sub-steps:

  • Step 4a: Open additional two terminals/tabs (so now the total is: 4 terminals/tabs)
  • Step 4b: Run wireshark on the client h1.
    sudo ip netns exec h1 wireshark
  • Step 4c: Select first interface eth1a from the list of interfaces in wireshark.
  • Step 4d: Similarly run wireshark on the second interface eth2a of client h1.

Complete Step 5 and 6.

NOTE: Experiments on other varients of network topologies are present in folder Variants. Its description is present in their respective scripts.

About

The following repository consists of experiment scripts to emulate mptcp in the linux network namespaces. It uses the upstream version mptcp implementaion in the linux kernel.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages