On this page:
The Emulab Manual
2018-06-27 (436e2b4)

The Emulab Manual

Eric Eide,
Robert Ricci,
Jacobus (Kobus) Van der Merwe,
Leigh Stoller,
Kirk Webb,
Jon Duerig,
Gary Wong,
Keith Downie,
and Mike Hibler

Emulab is a network testbed, giving researchers a wide range of environments in which to develop, debug, and evaluate their systems. The name Emulab refers both to a facility and to a software system. The primary Emulab installation is run by the Flux Research Group, part of the School of Computing at the University of Utah. There are also installations of the Emulab software at more than two dozen sites around the world, ranging from testbeds with a handful of nodes up to testbeds with hundreds of nodes. Emulab is widely used by computer science researchers in the fields of networking and distributed systems. It is also designed to support education, and has been used to teach classes in those fields.

Emulab is a public facility, available without charge to most researchers worldwide. If you are unsure if you qualify for use, please see our policies document, or ask us. If you think you qualify, you can apply to start a new project.

    1 Getting Started

      1.1 Next Steps

    2 Emulab Users

      2.1 Register for an Account

        2.1.1 Join an existing project

        2.1.2 Create a new project

    3 Emulab and Repeatable Research

    4 Creating Profiles

      4.1 Creating a profile from an existing one

        4.1.1 Preparation and precautions

        4.1.2 Cloning a Profile

        4.1.3 Copying a Profile

        4.1.4 Creating the Profile

        4.1.5 Updating a profile

      4.2 Creating a profile with a GUI

      4.3 Repository-Based Profiles

        4.3.1 Updating Repository-Based Profiles

        4.3.2 Branches and Tags in Repository-Based Profiles

      4.4 Creating a profile from scratch

      4.5 Sharing Profiles

      4.6 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 Virtual Machines

      5.5 Physical Machines

    6 Transitioning from the “Classic” Interface to the “Portal”

      6.1 New and Improved Features of the Portal Interface

        6.1.1 Profiles

        6.1.2 Web-based Interaction with Nodes

        6.1.3 Disk Images

        6.1.4 Versioning

        6.1.5 Experiment Extensions

        6.1.6 Resource Reservations

      6.2 Classic Features Not Currently Supported in the Portal

      6.3 Converting an Emulab experiment to a Profile

    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

    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 temporary local disk space to a node

      8.10 Creating a reusable dataset

      8.11 Debugging geni-lib profile scripts

    9 Advanced Topics

      9.1 Disk Images

      9.2 RSpecs

      9.3 Public IP Access

        9.3.1 Dynamic Public IP Addresses

      9.4 Markdown

      9.5 Introspection

        9.5.1 Client ID

        9.5.2 Control MAC

        9.5.3 Manifest

        9.5.4 Private key

        9.5.5 Profile parameters

      9.6 User-controlled switches and layer-1 topologies

    10 Hardware

      10.1 Emulab Cluster

    11 Planned Features

      11.1 Improved Physical Resource Descriptions

    12 Getting Help