Welcome to Seattle Testbed!
Seattle Testbed is a free, open-source platform for networking and
distributed systems research.
This repository contains the Seattle documentation, including
An introduction to Seattle Testbed follows below. For Seattle source code,
please visit our organization page at https://github.com/SeattleTestbed
What is Seattle Testbed?
Seattle Testbed is a free, community-driven network testbed for
education and research. It offers a large deployment of computers
spread across the world. You can use our Clearinghouse
website to share resources with other users, or obtain resources for your own
project. Seattle operates on resources donated by users and institutions.
The global distribution of the Seattle network provides the ability to use it
in application contexts that include cloud/fog computing, peer-to-peer
networking, ubiquitous/mobile computing, and distributed systems.
Seattle runs on end-user systems in a safe and contained manner, with support
for several platforms. Users install and run Seattle with minimal impact on
system security and performance. Sandboxes are established on the user's
computer to limit the consumption of resources such as CPU, memory, storage
space, and network bandwidth. Programs are only allowed to operate inside of
a sandbox, ensuring that other files and programs on the computer are kept
private and safe. This allows researchers and students to safely run code without
impacting performance or security.
For more information, please check out our
overview movie.
For a less technical overview of Seattle check out
the Seattle homepage.
If you would like to contribute to Seattle, please head over to
our GitHub organization page.
Features
- Community-driven and free.
- Scalable architecture.
- Non-intrusive and safe for end users.
- Already installed on tens of thousands of computers around the world.
- Provides access to systems behind a wide array of network technologies.
- Easy to learn, based on a subset of Python.
- Simple and clean programs:
- A UDP ping client is just six lines of code. A UDP ping server is just four lines.
- A Chord implementation requires about 300 lines of code.
- Cross-platform support:
- Windows (XP or newer)
- Mac OS X
- Linux
- Many BSD variants
- Portable devices (Android tablets and phones)
- WiFi routers running OpenWrt
Is Seattle for me?
Seattle is ideal for students, researchers, and companies that want to
prototype and test code on testbeds that have varying scale, diversity, and
topologies. The same code may easily be run on a variety of operating
systems, architectures, and network environments in order to understand the
performance and dynamics of a distributed system. Seattle is also ideal for
studying the wide-area characteristics of the Internet. For example, path
transitivity, latency and bandwidth variations, as well as availability can
all be characterized with Seattle.
Users needing direct access to hardware or support for low-level languages
should look elsewhere. Seattle forgoes these capabilities to ensure safety
and performance isolation for end users.
What makes Seattle different?
There is a wide variety of other platforms and testbeds readily available,
each with an equally expansive set of project goals. Related projects
include the following:
- PlanetLab is similar to Seattle in that it offers a platform composed of donated resources from around the world. However, PlanetLab nodes are dedicated to PlanetLab, while Seattle computers are not dedicated to the platform. In addition, PlanetLab's computers and network connectivity are very homogeneous. Seattle aims to be more widely distributed and to support broader resource diversity.
- SatelliteLab is useful for studying network characteristics and aims to bring heterogeneity to PlanetLab. However, due to the reliance on PlanetLab nodes for forwarding traffic, SatelliteLab has fidelity limitations and is not able to scale to the diversity and size of Seattle.
- Emulab provides emulated network environments for researchers to conduct experiments. While emulation allows more control of network hardware and topology, it does not capture the behavior of the Internet. Running Seattle allows more realistic experimentation at larger scales by running on the Internet.
- BOINC and HTCondor also allow users to donate resources. However, the emphasis is on computational power, with a preference toward using a few supercomputers rather than a large group of cheaper PCs. Seattle places more emphasis on the diversity of the networks and systems used, as computational power is not the main goal.
- Amazon's EC2 is a paid service that provides operating-system virtual machines. Seattle instead relies on donated resources and provides programming-language virtual machines.
- Google's AppEngine executes programs written in a constrained version of Python and supports high-level abstractions (such as global non-relational storage). It is useful for building locality-oblivious web applications that fit the HTTP request/response protocol model. However, its transparent handling of scalability and locality make it unsuitable for those wishing to teach or otherwise address these fundamental topics of distributed systems. AppEngine is run on Google-controlled resources instead of donated resources.
- The Tor Project is a widely used platform that protects users from Internet surveillance. While some users have built Seattle applications for this purpose, simply installing Seattle does not provide any direct privacy benefits.
- ...and many others: FIWARE, Splay, Reservoir, OpenNebula, Eucalyptus, Fabric, ...
How do I learn more?
Learn the basics:
Check out the portal pages for in-depth information:
If you have questions about Seattle, send an email to jcappos@nyu.edu
or visit the Seattle-users Google group (seattle-users@googlegroups.com,
https://groups.google.com/forum/#!forum/seattle-users).