Giter Site home page Giter Site logo

mptcp_test_bed's Introduction

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

mptcp_test_bed's People

Contributors

ruicunham avatar tomascosta29 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.