Introduction§

In this lab you will obtain a user account on Emulab and create a simple network. This lab is meant as an introduction to the process of creating and executing a network within the Emulab world. In later labs, Emulab will be used to prototype network architectures and to experiment with network performance.

Goals§

References§

Logistics§

Assignment§

Background and Sign Up§

  1. Go to Emulab and read the front-page description.
  2. Use this link to request an account: https://www.emulab.net/portal/signup.php?pid=CS330-F21
    • Under "Project Information," it should already have selected "Join Existing Project" and filled in: CS330-F21
    • I don't believe you have to specify an SSH key file (SSH = "secure shell" — a way to connect to remote computers with a secure, encrypted connection), but it will be needed for parts of this and later experiments. You can follow the instructions for generating a new key in the linked tutorial. Do this on whatever computer you would like to do your labs from (you can generate multiple keys on multiple computers if you like).
    • You will receive an email when you are approved as an Emulab user.
  3. While you are waiting for an account:
    • Go through one of the tutorials linked in Unix and the Command Line to familiarize yourself with or refresh your memory of using the command line.
    • Look over the Emulab FAQ to know what sorts of answers you can find there when you have a question. Pay particular attention to the "Using the Testbed," and "How do I ..." sections.
    • Read the Basic Concepts section of the Emulab manual to learn the basics of "Profiles" and "Experiments," which will be important for the next steps.

Run an Experiment§

  1. Log in to Emulab via the Portal.
  2. Start a new experiment.
    • Select the "CS330-F21-Lab0" profile, listed under the "CS330-F21" project. This profile specifies a set of nodes and the link(s) between them for your experiment.
    • All of the other options can be left at their defaults.
  3. After you create the experiment, you can get an image of your network topology (for the lab report) from the Emulab web interface. It should be visible in the experiment status page after you create the experiment. If you need to get back to it, go to the experiment's page under "Experiments>My Experiments" and select the "Topology View" tab. Include this image in your lab report to provide visual context for your descriptions.
  4. Once the experiment is fully running (its state is "ready" and all of the nodes are green in the topology view with a status of "ready" when you mouseover them), log in to one of the nodes using SSH. You can do this in one of a few ways:
    • In the web interface itself, if you click on a node in the topology view and select "Shell," it will open a command line shell on that node in a tab within the experiment page.
    • If you have added an SSH key to your Emulab account, you can log in to any node using SSH.
      • Mac OS has SSH installed by default, and on Windows, it may be present in newer versions of Windows or it can be installed as part of Git for Windows (which is also used in the SSH key tutorial Emulab links to) or using Cygwin — let me know if you would like help with that.
      • From a terminal window (Terminal on Macs; Windows Terminal, Git Bash, or Cygwin's Bash shell on Windows), log in by running the ssh [username]@[host name] command given for a node in the experiment's "List View." The host names used there are the public names of the hosts, accessible from anywhere on the internet. This command will only work from a computer where you have an SSH key you've registered with Emulab.
  5. Verify connectivity between your nodes.
    • From whichever node you log in to, ping the other node in the topology by running ping hostname, where "hostname" is the internal node name, such as node2.
    • Press CTRL-C to stop ping after a few seconds.
    • Include a transcript of all of your ping commands in the lab report.
  6. Transfer a file to one of your nodes over the internet.
    • On your local machine, download a copy of the latest iperf source code (the .tar.gz files are source code releases).
    • Then, use scp to copy it to a node. This will require an SSH key registered with Emulab. The scp manpage is here, or you can run man scp to get help. The basic command you'll use should be something like scp iperf-3.10.1.tar.gz [username]@[hostname]: (the final ":" is important). This needs to be run on your own ("local") computer, not on an Emulab node ("remote"), because it needs to access the file you downloaded locally in order to transfer it.
    • scp will be available if you have installed/used SSH via any of the methods given earlier.
    • This will only work if you have added an SSH key to your Emulab account, because scp connects over the SSH protocol. If you have not yet added an SSH key, you can do so by going to "Manage SSH Keys" in the menu in the top right corner of the Emulab interface, under your username.
    • Include a transcript of the transfer in the lab report. How fast did it complete? What was the reported rate of data transfer?
  7. When you are done, terminate your experiment to avoid wasting resources. You can do this from the My Experiments page in the user dashboard.

Advice§

Emulab is a shared resource used by many schools and research labs. Thus, for future exercises, you might have to schedule your time to ensure that you can get sufficient resources. The FAQ has some answers related to obtaining resources as well.

Lab Report§

Refer to the Technical Report Guidelines and Suggestions when writing lab reports. It provides guidelines and best practices for writing technical reports like these.

I will specify anything that needs to be specifically included in the report in each lab, and there will also be discussion questions to answer for each lab.

This particular report is fairly simple. The assignment above indicates some specific details to include. Please write enough to make it clear what is what, but you don't need to write up long descriptions. Writing more than is needed often makes writing worse; avoid being overly verbose.

All lab reports should be submitted as PDF files. Write them up in your favorite word processor, make a web page, use Latex, do whatever, but save or print it to a PDF and submit that on Moodle.

Discussion Questions§

  1. Where are the computers you were accessing when running this experiment? Why do they exist, and why have they been made available for you and others to use?
  2. About how long did you spend on this assignment?
  3. Did you encounter any particular difficulty along the way?