On this page:
The Cloud  Lab Manual
2025-06-03 (19a48c0)

The CloudLab Manual🔗

The CloudLab Team

This document is also available as a single page

Acceptable Use Policy

CloudLab is a "meta-cloud"—that is, it is not a cloud itself; rather, it is a facility for building clouds. It provides bare-metal access and control over a substantial set of computing, storage, and networking resources; on top of this platform, users can install standard cloud software stacks, modify them, or create entirely new ones.

The current CloudLab deployment consists of more than 33,000 cores in over 1800 allocatable nodes distributed across three sites at the University of Wisconsin, Clemson University, and the University of Utah. CloudLab interoperates with existing testbeds including GENI and Emulab, to take advantage of hardware at dozens of sites around the world.

The control software for CloudLab is open source, and is built on the foundation established for Emulab, GENI, and Apt. Pointers to the details of this control system can be found on CloudLab’s technology page.

Get started!

    1 Getting Started

      1.1 Next Steps

    2 CloudLab Users

      2.1 Register for an Account

        2.1.1 Join an existing project

        2.1.2 Create a new project

        2.1.3 Setting up SSH access

        2.1.4 Setting up X11

    3 CloudLab and Repeatable Research

      3.1 CloudLab For Artifact Evaluation

        3.1.1 For Authors

        3.1.2 For AEC Chairs

        3.1.3 For AEC Members

    4 Creating Profiles

      4.1 Creating a profile from an existing one

        4.1.1 Copying a Profile

        4.1.2 Creating the Profile

        4.1.3 Updating a profile

      4.2 Creating a profile with a GUI

      4.3 Capturing Disk Images for Profiles

      4.4 Repository-Based Profiles

        4.4.1 Updating Repository-Based Profiles

        4.4.2 Branches and Tags in Repository-Based Profiles

      4.5 Creating a profile from scratch

      4.6 Sharing Profiles

      4.7 Versioned Profiles

    5 Basic Concepts

      5.1 Profiles

        5.1.1 On-demand Profiles

        5.1.2 Persistent Profiles

      5.2 Experiments

        5.2.1 Extending Experiments

      5.3 Projects

      5.4 Physical Resources

      5.5 Virtual Machines

    6 CloudLab for Classes

      6.1 Creating Your Project on CloudLab

      6.2 Having Students Join Your Project

      6.3 Project-Based Classes

      6.4 Assignment-Based Classes

    7 Resource Reservations

      7.1 What Reservations Guarantee

      7.2 How Reservations May Affect You

      7.3 Making a Reservation

      7.4 Using a Reservation

      7.5 Who Shares Access to Reservations

    8 Describing a profile with python and geni-lib

      8.1 A single XEN VM node

      8.2 A single physical host

      8.3 Two XenVM nodes with a link between them

      8.4 Two ARM64 servers in a LAN

      8.5 A VM with a custom size

      8.6 Set a specific IP address on each node

      8.7 Specify an operating system and set install and execute scripts

      8.8 Profiles with user-specified parameters

      8.9 Add storage to a node

      8.10 Debugging geni-lib profile scripts

    9 Virtual Machines

      9.1 Xen VMs

        9.1.1 Controlling CPU and Memory

        9.1.2 Controlling Disk Space

        9.1.3 Setting HVM Mode

        9.1.4 Dedicated and Shared VMs

    10 Storage Mechanisms

      10.1 Overview of Storage Mechanisms

      10.2 Node-Local Storage

        10.2.1 Specifying Storage in a Profile – Local Datasets

        10.2.2 Allocating Storage in a Running Experiment

        10.2.3 Persisting Local Data

      10.3 Image-backed Datasets

      10.4 Remote Datasets

      10.5 NFS Shared Filesystems

      10.6 Storage Type Summary (TL;DR)

      10.7 Example Storage Profiles

        10.7.1 Creating a Node-local Dataset

        10.7.2 Creating an Image-backed Dataset from a Node-local Dataset

        10.7.3 Using and Updating an Image-backed Dataset

        10.7.4 Creating a Remote Dataset

        10.7.5 Using a Remote Dataset on a Single Node

        10.7.6 Using a Remote Dataset on Multiple Nodes via a Shared Filesystem

        10.7.7 Using a Remote Dataset on Multiple Nodes via Clones

    11 The Control Network

      11.1 Overview

      11.2 Ensuring your experiment nodes use the correct interfaces

        11.2.1 Common causes of control network misuse

        11.2.2 Empirically verifying interface use

      11.3 What to do if you get a Control Network Violation email

      11.4 Why is it so important to avoid the control network?

      11.5 When can I use the control network?

    12 Advanced Topics

      12.1 Disk Images

      12.2 RSpecs

      12.3 Public IP Access

        12.3.1 Dynamic Public IP Addresses

      12.4 Markdown

      12.5 Introspection

        12.5.1 Client ID

        12.5.2 Control MAC

        12.5.3 Manifest

        12.5.4 Private key

        12.5.5 Profile parameters

      12.6 User-controlled switches and layer-1 topologies

      12.7 Portal API

    13 Hardware

      13.1 CloudLab Utah

      13.2 CloudLab Wisconsin

      13.3 CloudLab Clemson

      13.4 Apt Cluster

      13.5 Mass

      13.6 OneLab

    14 CloudLab Kubernetes Tutorial

      14.1 Objectives

      14.2 Prerequisites

      16.4 Logging In

      14.4 Building Your Own Kubernetes Cluter

      14.5 Exploring Your Experiment

        14.5.1 Experiment Status

        14.5.2 Profile Instructions

        14.5.3 Topology View

        14.5.4 List View

        14.5.5 Manifest View

        14.5.6 Graphs View

        14.5.7 Actions

        14.5.8 Web-based Shell

        14.5.9 Serial Console

      14.6 Exploring Kubernetes

        14.6.1 Kubernetes Dashboard

        14.6.2 Kubernetes Dashboard

      14.7 Terminating the Experiment

      14.8 Taking Next Steps

    15 CloudLab OpenStack Tutorial

      15.1 Objectives

      15.2 Prerequisites

      16.4 Logging In

      15.4 Building Your Own OpenStack Cloud

      15.5 Exploring Your Experiment

        15.5.1 Experiment Status

        15.5.2 Profile Instructions

        15.5.3 Topology View

        15.5.4 List View

        15.5.5 Manifest View

        15.5.6 Graphs View

        15.5.7 Actions

        15.5.8 Web-based Shell

        15.5.9 Serial Console

      15.6 Bringing up Instances in OpenStack

      15.7 Administering OpenStack

        15.7.1 Log Into The Control Nodes

        15.7.2 Reboot the Compute Node

      15.8 Terminating the Experiment

      15.9 Taking Next Steps

    16 CloudLab Chef Tutorial

      16.1 Objectives

      16.2 Motivation

      16.3 Prerequisites

      16.4 Logging In

      16.5 Launching Chef Experiments

      16.6 Exploring Your Experiment

        16.6.1 Experiment Status

        16.6.2 Profile Instructions

        16.6.3 Topology View

        16.6.4 List View

        16.6.5 Manifest View

        16.6.6 Actions

      16.7 Brief Introduction to Chef

      16.8 Logging in to the Chef Web Console

        16.8.1 Web-based Shell

        16.8.2 Chef Web Console

      16.9 Configuring NFS

        16.9.1 Exploring The Structure

      16.10 Apache Web Server and ApacheBench Benchmarking tool

        16.10.1 Understanding the Internals

      16.11 Final Remarks about Chef on CloudLab

      16.12 Terminating Your Experiment

      16.13 Future Steps

    17 Citing CloudLab

    18 Getting Help