This page lists a number of resources useful for experimental
networking research.
Testbeds
Below is a selection of prominent testbeds that are still active
as of today and currently used for networking research.
Core networking
- CloudLab:
a general-purpose testbed that offers researchers free, bare-metal
access to extensive computing, storage, and networking resources.
We have created a CloudLab project named
cs538
for CS 538 students to use. Click
this link
and submit a request to join if your class project could benefit from
resources on CloudLab. We ask that you use these resources
responsibly by requesting only what you need for this class
and releasing them promptly when they are no longer required. - Emulab:
a network testbed that enables researchers to create emulated networks
using configuration files to define network topologies,
link characteristics (e.g., latency, loss, and bandwidth), etc.
It is the "predecessor" of CloudLab and has adopted the same interface
and user management system, so you may access it with your CloudLab
credentials.
- FABRIC:
a wide-area network testbed consisting of nodes interconnected by
high-speed optical links around the globe.
It provides access to cutting-edge programmable network technologies
such as OpenFlow and P4.
- OpenNetLab:
a distributed network testbed in Asia for researchers to collect
real networking data over wired, Wi-Fi, and cellular links,
and train machine learning models for various network tasks.
- Puffer:
a video streaming platform that offers live TV service to hundreds of
thousands of real users. It accepts and deploys novel algorithms
broadly related to video streaming from researchers (as pull requests),
comparing them with other algorithms in the wild through large-scale
random controlled trials.
- Commercial cloud services like Amazon AWS, Google Cloud Platform,
and Microsoft Azure allow users to rent virtual machines, configure
virtual networks, and deploy experiments at various data centers
worldwide. However, these data centers are well-provisioned
with high-speed networks, so they obviously don't represent
the typical user's vantage point.
Mobile and wireless
- Colosseum:
a wireless network testbed with a number of software-defined radios.
It provides a configurable and repeatable RF (radio frequency) environment,
and supports experimentation with Open RAN (Radio Access Network).
- Powder:
an urban-scale, end-to-end software-defined platform supporting
a broad range of wireless and mobile-related research.
Its primary use case is enabling 5G network experiments with
open-source 5G software stacks that are compliant with Open RAN.
- Microsoft's
5G testbed: an enterprise-scale, high-fidelity 5G testbed purposely
built for Open RAN research. It is composed of production-grade radio
units, specialized RAN servers, and commercial 5G software,
representing the industry's cutting-edge approach to Open RAN.
Contact the authors to check if access is still available.
Decommissioned testbeds
Maintaining a reliable, operational, and large-scale testbed is highly
challenging for various reasons. Many testbeds that were once
widely used in the community have reached the end of their service, such as
PlanetLab,
GENI,
PhoneLab,
and Pantheon.
Simulators and emulators
Network simulators and emulators provide a controlled environment
for development and testing. Compared with real testbeds,
experiments conducted in simulation and emulation are more repeatable,
scalable, and cost-efficient. In the meantime, however, they can be
overly simplistic and may not accurately capture real-world scenarios.
What's the difference between network simulators and emulators?
Network simulators aim to reproduce the performance of a network by
creating an abstract model of relevant network elements. They do not
interact with real network equipment, applications, or traffic. In
contrast, network emulators mimic the operation of real networks and
can interface with actual hardware and software. Generally, network
emulation is considered more realistic than simulation, though
real-world experiments are always preferred when feasible.
Below is a list of common network simulators and emulators:
- ns-3: a widely used network
simulator for general-purpose network simulation.
It is a "discrete-event" simulator, meaning it keeps track of
events (e.g., packet arrivals and departures) scheduled for specified
simulation times and executes these events sequentially in time order.
- OMNeT++: another discrete-event
network simulator featuring a modular, component-based architecture
that allows users to build network models from reusable components.
It also offers good visualization support to users.
- Mininet: a network emulator that
creates a virtual network of hosts, switches, controllers, and links
on a single Linux machine, with each host running in its own network
namespace. Mininet is particularly convenient for
Software-Defined Networking (SDN) experiments.
- KatharĂ¡: a network emulator
based on Docker containers. In the KatharĂ¡ environment, each network
device is implemented as a container, and each interconnection link
is emulated with a virtual network.
- Mahimahi: an easy-to-use,
composable network emulator for emulating various link conditions.
It includes a suite of tools, each of which spawns a lightweight
shell to apply a user-specified network condition, such as
added network delay, random packet loss, and bandwidth traces
for replay.
- tc:
a Linux command-line utility for configuring traffic control settings
in the kernel. It is useful for quickly introducing network latency,
packet loss, and bandwidth limit on a network interface.