The topology creator (
reserve.py) and experiment runner (
runexp.py) in this repository create a topology
and run a limited experiment on it. The root repositories for this project will contain more advanced experiments
over time. This limited experiment evaluates the effect of packet reordering on packet delivery time, and also
resource usage in the network function (queue depth, and thus memory usage).
reserve.py script creates a single remote management endpoint and an arbitrary number of remote sites
with a configured number of sensors for those sites. Packets between these sites traverse a commodity transport
that is unreliable and that unreliability is configurable (latency and reordering). The basic topology
configuration is as shown below:
You can configure the number of packets-per-second (pps) sent by each sensor, the number of sites and sensors, the latency in the network, and the reordering applied to those packets. The default GENI VTS reordering is applied using netem, which sends packets before their typical delay, so that delay is broken up across the network to make the mean delivery time still match your requested latency while offering reordering.
The reordering applied delay is by default 10% of the overall requested delay, which means that the interarrival time from the sensors must be less than the delay in order to cause reodering in the same flow (e.g. if 10% of your delay is 100ms and you send packets twice a second, reordering within the same flow will not occur).