Skip to content
This repository was archived by the owner on Feb 7, 2024. It is now read-only.
/ mptcp_test_bed Public archive

An environment to easily test MPTCP in different network topologies and scenarios

License

Notifications You must be signed in to change notification settings

MPTCP-Lab/mptcp_test_bed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MPTCP Test Bed

Contents

  1. Overview
  2. How to Use
  3. Configuration
    1. Topology Configuration File
    2. Configuration Options
      1. Node Options
      2. Link Options

Overview

This project aims to provide an easy to set up environment to test MPTCP in different network topologies and scenarios. Since MPTCP usually requires some previous configuration related to routing and path managing for each host, recreating the same configurations multiple times in order to conduct tests can become a time consuming task. With this in mind, this project allows to describe a topology using TOML, and then instantiate a CORE session with routing and endpoints configured in all nodes.

For path managing configuration it's possible to use ip mptcp or Intel's daemon mptcpd. As for routing rules, the configuration is conducted as described in multipath-tcp.org.


How to Use

  1. Create your topology and add it to the topologies folder
  2. Run the script with the topology argument (no file extension): python3 testbed.py <topology>
  3. Connect to the new created session in the CORE GUI

Configuration

Topology Configuration Files

Each topology consists of two configuration files:

nodes.toml:

[<node1>]
model = "PC"

[<node2>]
model = "router"

# ...

links.toml:

[<link1>]
edges = ["<node1>", "<node2>"]

[<link2>]
edges = ["<node3>", "<node4>"]

# ...

See examples for more details.

Configuration Options

Node options

Option Description Default Value
model The node type ("PC", "router", "switch") "router"
files List of files to be copied to the node (The files must be contained in files folder) [ ]
services Services to run on the node [ ] (CORE's default)
    When model="PC", the following suboptions are available:
    Option Description Default Value
    path_manager The path manager to be used in this node ("ip_mptcp", "mptcpd") "ip_mptcp"
      When path_manager="mptcpd", the following suboptions are available:
      Option Description Default Value
      add_flags Flags for announced adresses "subflow,signal"
      notify_flags Address notification flags "existing"
      load_plugins Plugins to load " " (Loads all plugins"
      plugins_conf_dir Plugins configuration path (Specific flag for this mptcpd version) Default config path

      For more information about these flags see mptcpd documentation

When model="wlan", the following suboptions are available:
Option Description Default Value
range Wlan range None (CORE's default)
bandwidth Wlan bandwidth None (CORE's default)
delay Wlan delay None (CORE's default)
jitter Wlan jitter None (CORE's default)
error Wlan error percentage None (CORE's default)

Link options

Option Description Default Value
node1 Host name of link endpoint 1 Required Field
node2 Host name of link endpoint 2 Required Field
bandwidth Link bandwidth None (CORE's default)
delay Link delay None (CORE's default)
dup Link duplication rate None (CORE's default)
loss Link loss percentage None (CORE's default)
jitter Link jitter None (CORE's default)
use_mptcp If this link should be considered to configure a MPTCP endpoint when connected to a "PC" node true

About

An environment to easily test MPTCP in different network topologies and scenarios

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published