Introduction§
In this lab you will obtain a user account on CloudLab and create a simple network. This lab is meant as an introduction to the process of creating and executing a network within the CloudLab world. In later labs, CloudLab will be used to prototype network architectures and to experiment with network performance.
Goals§
- To get you involved with a simulation environment that supports research and development in the field of networking.
- To do a controlled pass through creating and exercising a network within the CloudLab environment.
References§
Logistics§
- Each student should complete this assignment individually.
- Ask questions on Piazza if you run into trouble with anything.
Assignment§
Background and Sign Up§
- Go to CloudLab and read the front-page description.
- Use this link to request an account: https://www.cloudlab.us/signup.php?pid=CS330-F25
- Under "Project Information," it should already have selected "Join Existing Project" and filled in: CS330-F25
- If you have an opportunity to specify an SSH key file (SSH = "secure shell" — a way to connect to remote computers with a secure, encrypted connection), please do so. 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 a CloudLab user.
- While you are waiting for an account:
- Work 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.
- Read the Basic Concepts section of the CloudLab manual to learn the basics of "Profiles" and "Experiments," which will be important for the next steps.
Run an Experiment§
- Log in to CloudLab.
- Start a new experiment.
- Select the "CS330-F25-Lab0" profile, listed under the "CS330-F25" project. This profile specifies a set of nodes and the link(s) between them for your experiment.
- Most options can be left at their defaults.
- In step 3 (Finalize), give your instance a descriptive name and select the "APT Utah" cluster.
- In step 4 (Schedule), set a reasonable duration for your experiment. The default is 16 hours. Set it longer only if you know you plan to keep nodes active for a day or more.
- After you create the experiment, you can get an image of your network topology (for the lab report) from the CloudLab 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.
- 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 CloudLab account, you can log in to any node using SSH.
- From a terminal window (e.g. Terminal on Macs, Windows Terminal, Git Bash, ...), 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 CloudLab.
- From a terminal window (e.g. Terminal on Macs, Windows Terminal, Git Bash, ...), log in by running the
- 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 you have received several ping responses. (FYI, this is a way to force most command line programs to end, though it won't always be clean and you should prefer quitting normally if the program provides a way to do so.)
- Include a transcript of your ping command and its output in the lab report. [Verify you have exported or copied the transcript and saved it before closing your terminal!]
- 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 file in each release is a source code release).
- Then, use scp to copy it to a node. This will require an SSH key registered with CloudLab. 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-[version].tar.gz [username]@[hostname]: (the final ":" is important). This needs to be run on your own ("local") computer, not on a CloudLab node ("remote"), because it needs to access the file you downloaded locally in order to transfer it.
- This will only work if you have added an SSH key to your CloudLab 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 CloudLab interface, under your username.
- When it completes, you should be able to verify that it worked by logging into the node via SSH, running ls -la, and verifying that the file is listed there now.
- Include a transcript of the transfer in the lab report. How fast did it complete? What was the reported rate of data transfer?
- 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§
CloudLab 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.
Discussion Questions§
- Where, physically and geographically, 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?
- About how long did you spend on this assignment?
- Did you encounter any particular difficulty along the way?
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 Canvas.