Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

(info)

This project assumes you are familiar with how to access GENI, design, deploy, login to, and test a topology of your own. Please refer to this tutorial if you need a refresher.

Table of Contents

Table of Contents
excludeTable of Contents

Introduction

In this project, we will create a simple topology where we can design and implement a real queueing system. The goal is to demonstrate Little's Law as we play with queue parameters and observe traffic flow.

Design Topology

In order to implement a queue and to observe its effect on network traffic, we first need:

...

Once we finish our design, let's select an aggregate on which to deploy our GENI resources – make sure it's an InstaGENI aggregate. Recall that we can view the utilization of the various InstaGENI aggregates by visiting this page.

Discover How Resources are Connected

With GENI, we can ask for links between resources, such as VMs. These appear as network interfaces on the VMs. If a VM has more than one link, it is important to note the network interface belonging to each link. This can be done by observing the unique IP subnets GENI assigns to each link. In our simple topology, we have two links – one between host-1 and switch and another between host-2 and switch.

...

After this, we should be able to ping between host-1 and host-2. Verify that you can do this before proceeding.

Run Experiment without a Queue on the Switch

First, let's run an iperf test to establish a baseline. iperf essentially pumps either TCP or UDP packets into the network – whatever we specify – to test the network performance. TCP will attempt to completely saturate the network link without losing any data; UDP, on the other hand, will send data at a defined rate from the source without care for whether or not the data actually makes it to the recipient. We'll use UDP for this experiment to gain better control over the data rate.

...

We'll see host-1 starts to send data to host-2. The transfer will show us an update every second (-i 1) and will terminate after 10 seconds (-t 10). On host-1 and host-2, we can see the number of packets that failed to make it from host-1 to host-2. We should see that all packets make it – (0 lost)/(total transferred).

Question(s)

Please limit your responses to at most three sentences each, but be specific.

  1. What do the results tell us about the utilization of the queueing system on the switch?
  2. What is the service rate of the switch? You do not have to give an exact answer.

Setup Queue on the Switch

Let's make things more interesting and setup a queue that we can control on the switch. 

...

Quickly discussing the parameters of interest to us, "rate XBps" specifies the service rate in X bytes/second, "burst YB" specifies the queue length as Y bytes. (Ignore the "limit 1512" parameter.) We can manipulate these parameters to achieve a desired network performance.

Question(s)

Please limit your responses to at most three sentences each, but be specific.

  1. We want to control the flow of traffic with our queue from host-1 to host-2. Explain why we installed the queue on the interface leading from switch to host-2 and not the arriving link on switch from host-1? Hint: What is the "server" or resource of the queueing system our packets are trying to access at the switch VM with respect to host-1-to-host-2 traffic flow?

Run Experiments with a Queue on the Switch

Experiment 1

Let's check the performance of our network between host-1 and host-2 after having added the queue.

...

Check the results in the iperf server. We should see much worse performance than we did without the queue.

Questions(s)

Please limit your responses to at most three sentences each, but be specific.

  1. How many packets were successfully received by the server? Explain why this makes sense given a packet size of 1512 bytes, a queue length of 1512 bytes, and a service rate of 1512 bytes/second.
  2. Are there any unaccounted for packets in your observation to (1) above? If so, where do you think the error lies?
  3. Is the queueing system stable given the present configuration? Explain.
  4. Assuming the queueing system cannot be changed from the given configuration, what can be done to increase the reliability of data transfer (i.e. eliminate lost packets) between host-1 and host-2?

Experiment 2

We've observed a very poor-performing queuing system in Experiment 1. Let's try to tune the performance to increase the throughput between host-1 and host-2. Let's double the size of our queue:

...

Once again, run iperf on host-1 and host-2 as we did in Experiment 1, and record the results reported by the server on host-2.

Question(s)

Please limit your responses to at most three sentences each, but be specific.

  1. What can you observe about the number of successfully transmitted packets as the queue size increases? Explain your observation.
  2. Is the queueing system stable given the largest configured queue size of 6048 bytes?

Experiment 3

Now, we're going to see how the service rate impacts the queueing system performance. Double the service rate:

...

Once again, run iperf on host-1 and host-2 as we did in Experiment 1, and record the results reported by the server on host-2.

Question(s)

Please limit your responses to at most three sentences each, but be specific.

  1. What can you observe about the number of successfully transmitted packets as the service rate increases? Explain your observation.
  2. Is the queueing system stable given the largest configured service rate of 6048 bytes/second

Experiment 4

Now, we're going to combine an increased service rate with an increased queue size:

...

Once again, run iperf on host-1 and host-2 as we did in Experiment 1, and record the results reported by the server on host-2.

Question(s)

Please limit your responses to at most three sentences each, but be specific.

  1. What can you observe about the number of successfully transmitted packets? Explain your observation.
  2. Is the queueing system stable?
  3. We've seen how an improperly tuned queueing system can impact the throughput of a data transfer. Given what you know about the max arrival rate (hint: check the iperf client), and a packet size of 1512 bytes, set a minimal queue size and service rate of the queueing system to achieve stability. Show all your work and evaluate the performance of your improved queueing system using iperf. Please provide the results of your experiment(s).

Experiment 5

Now, we're going to reverse our data transfer to send packets from host-2 to host-1.

...

Check the results in the iperf server.

Question(s)

Please limit your responses to at most three sentences each, but be specific.

  1. Do you observe any lost packets transmitting data in the reverse direction? Please explain your reasoning.
  2. How could we create a queue to control the performance of the reverse data transfer?

Submission

On the due date indicated in the calendar, please submit a hard copy of your responses to the questions posed inline above.