4-node Experiment on Three Different Infrastructures

This reference experiment is on how the same experiment is executed on three different infrastructures using the same experiment runner, runexp.py. The experiment topology is composed of three client nodes, one web server, connected with a bridge. Each client retrieves (using curl) a large file from the web server (running nginx) while capturing packets on their data plane using tcpdump.

The infrastructures are:

There is a topology creator for the VTS and CL infrastructures, reserve-vts.py and reserve-ig.py, respectively. RPi infrastructure is setup by physical connections to bridges.

The basic topology configuration is as shown below:

../_images/4-node-multi-topo.png

Topology in Infrastructures

Each infrastructure may have its unique way of creating a topology. Some may be on virtualized platforms and some may be bare metal. The network isolation principles may also vary from one to another. Therefore, this particular reference experiment illustrates the reservation and setup information for three infrastructures where two are isolated networks on virtualized platforms, namely VTS and CloudLab, and the last one, RPi-3 nodes, is composed of bare metal resources that are neither shared nor virtualized.

VTS Topology Reservation

reserve-vts.py takes a number of arguments, most of which are optional.

--site

Site to deploy topology, as a site name (vts-gpo, etc.)

--slice

Slice name

--project

Project name (typically the geni-lib default)

--context-path

Path to context JSON, if not default location

--delete

Delete any pre-existing sliver with same slice name

--config-path

SSH Config file location for constructed topology

--uhexpurl

URL for uhexp repository

--uhexpbranch

Branch in supplied repository

Only slice is a required argument if you have a properly set up geni-lib context. You can use the URL and branch to supply your own modification to the experiment.

The common execution of reserve-vts.py for this reference experiment will simply be:

$ reserve-vts.py --slice slicename

CloudLab Topology Reservation

reserve-ig.py takes a number of arguments, most of which are optional.

--site

Site to deploy topology, as a site name (ig-gpo, etc.)

--site-url

Site URL to deploy topology

--slice

Slice name

--project

Project name (typically the geni-lib default)

--context-path

Path to context JSON, if not default location

--delete

Delete any pre-existing sliver with same slice name

--config-path

SSH Config file location for constructed topology

--uhexpurl

URL for uhexp repository

--uhexpbranch

Branch in supplied repository

--image

Image to be deployed on nodes

--user

User name in GENI/CloudLab context

Only slice and user is a required argument if you have a properly set up geni-lib context and current default builds the topology at the University of Hawaii InstaGENI rack. You can use the URL and branch to supply your own modification to the experiment.

The common execution of reserve-ig.py for this reference experiment will simply be:

$ reserve.py --slice slicename --user username

Experiment Execution

runexp.py takes only the infrastructure as an argument for this reference experiment.

--infra

Infrastructure to run this experiment on

A typical run of the experiment on the RPi-3 network would be:

$ runexp.py --infra rpi