/mptcp_test_bed

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

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

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